为文件管理器上下文菜单编写 tesseract 脚本

为文件管理器上下文菜单编写 tesseract 脚本

文件管理器上下文菜单脚本有时比使用 GUI 实用程序更快地完成这项工作。因此,尽管我具有初级脚本编写技能,但我长期以来一直在文件管理器 Dolphin、Nautilus 和 Nemo 中使用数十个简单和更复杂的脚本。然而,这一次我陷入了一个非常简单的循环,使用 OCR 选定的图像文件超正方体海豚,它适用于许多其他脚本:

for filename in "${@}"; do
    tesseract -l eng "$filename" "${filename%.*}"
done

通常应该对选定的图像(或每个选定的图像)执行此操作,如下所示,这是一个在终端中运行的命令,给我一个名为“image.txt”的文本文件:

tesseract -l eng "image.png" "image"

有什么想法吗???

答案1

我认为这可能是由于一个错误超正方体。因此,替代解决方案可能是这样的:

for filename in "${@}"; do
name="${filename%.*}"
ext="${filename##*.}"
output="${name}-alpha.${ext}"
convert "$filename" -alpha off "$output"
mv "$output" "$filename"
dpi="$(identify -units "PixelsPerInch" -format "%x\n" "$filename" | xargs printf "%.*f\n" "0")"
ocrmypdf -l eng --image-dpi "$dpi" "$filename" "${name}.pdf"
pdftotext -q "${name}.pdf"
ocr_txt="$(cat "${name}.txt" | sed -e "s///g" -e "s/\t/ /g" -e "s/  / /g" -e "/^\s*$/d")"
kdialog --title "Image OCR Text" --msgbox "$ocr_txt"
rm "${name}.pdf" "${name}.txt"

完毕

这将根据 ocrmypdf 的要求删除任何透明度(alpha)通道;将图像 dpi 分辨率传递给它以获得更好的结果;然后使用 ocrmypdf 将图像转换为嵌入 OCR 文本层的 pdf;最后在对话框中显示该文本。

相关内容