linux - Tesseract 批量将图像转换为可搜索的 PDF 和多个相应的文本文件

标签 linux python-3.x ocr tesseract

我正在使用 tesseract 将图像列表批量转换为可搜索的 PDF 以及包含 OCRd 文本的 TXT 文件。

tesseract infile outfile -l eng myconfig
  • infile包含要处理的图像路径列表
  • myconfig 包含用于指定输出类型的 tesseract 首选项(tessedit_create_text 1tessedit_create_pdf 1)

这给我留下了 outfile.pdfoutfile.txt,后者包含用于分隔图像之间文本的页面分隔符。

然而,我真正想要做的是使用相同的对应图像名称在每个图像的基础上输出多个 TXT 文件。例如,Image1.jpg.txt、Image2.jpg.txt、Image3.jpg.txt...

tesseract 是否可以选择原生支持此行为?我意识到我可以循环遍历图像文件列表并在每个图像的基础上执行 tesseract,但这并不理想,因为我还必须再次运行 tesseract 来生成合并的 PDF。相反,我想同时运行这两个选项,从而减少总体执行时间。

我还意识到我可以将页面分隔符上合并的 TXT 文件拆分为多个文本文件,但随后我必须引入不太优雅的代码来映​​射和重命名所有这些拆分文件以对应于它们的原始图像名称:< em>将 0001.txt 重命名为 Image1.jpg.txt...

我正在使用 Python 3 和 Linux 命令。

最佳答案

将多个图像转换为单个 PDF 文件。

在 Linux 上,您可以列出所有图像,然后将它们通过管道传输到 tesseract

ls *.jpg | tesseract - yourFileName txt pdf

地点:

youFileName:是输出文件的名称。

txt pdf:是输出格式,您也可以仅使用其中一种

将图像转换为单独的文本文件

在 Linux 上,您可以使用 for 循环来遍历文件并对每个文件执行操作。

for FILE in *.jpg; do tesseract $FILE ${FILE::-4}; done

地点:

for FILE in *.jpg:循环遍历所有JPG文件(您可以根据您的格式更改扩展名)

$FILE:是图像文件的名称,例如001.jpg

${FILE::-4}:是图像的名称,但不带扩展名,例如001.jpg 将是 001,因为我们删除了最后 4 个字符。

我们需要它来将文本文件命名为相应的名称,例如

  • 001.jpg 将转换为 001.txt
  • 002.jpg 将转换为 002.txt

关于linux - Tesseract 批量将图像转换为可搜索的 PDF 和多个相应的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301142/

相关文章:

c# - 使用 Tesseract Engine 的 Tessnet2 - 为什么输出非常糟糕?

ocr - 使用谷歌云视觉识别垂直文本

javascript - 用于从网络读取和操作图像的客户端脚本(详细信息...)

linux - 错误 : Wildfly dead but pid file exists

linux - 应用增量 Linux 补丁

linux - 为什么在 Linux 中父进程被杀死后子进程仍然存在?

python - OrderedDict(Counter(s)) 它总是给出有序字典吗?

java - 为在 ubuntu 上使用 RunTime.exec() 运行的 Java 程序提供输入

python - 主循环,事件循环在DBus服务中的作用

python - 计算列表中子列表的特定索引中值的实例,但每个列表只计算一次