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

ffscu2ro  于 2023-02-03  发布在  Linux
关注(0)|答案(4)|浏览(223)

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

tesseract infile outfile -l eng myconfig

*infile包含要处理的图像路径列表
*myconfig包含用于指定输出类型的Tesseract首选项(tessedit_create_text 1tessedit_create_pdf 1

这就剩下了 * outfile.pdf * 和 * outfile.txt ,后者包含用于在图像之间分隔文本的页面分隔符。
然而,我真正想要做的是,使用相同的对应图像名称,在每个图像的基础上输出多个TXT文件。例如,Image1.jpg.txt,Image2.jpg.txt,Image3.jpg.txt...
tesseract是否有原生支持这种行为的选项?我知道我可以循环遍历图像文件列表并逐个图像地执行tesseract,但这并不理想,因为我还必须第二次运行tesseract来生成合并的PDF。相反,我希望同时运行这两个选项,以减少总体执行时间。
我还意识到,我可以在页面分隔符上将合并的TXT文件拆分为多个文本文件,但这样我就不得不引入不太优雅的代码来Map和重命名所有这些拆分的文件,以对应于它们原始的图像名称:
将0001.txt重命名为Image1.jpg.txt...*
我可以随意使用Python 3和Linux命令。

31moq8wy

31moq8wy1#

您可以准备一个批处理文件,该文件循环输入图像并同时输出到txtpdf--更有效,只需一次OCR操作而不是两次。然后,您可以将输出的.txt文件拆分为多个页面。
tesseract inimagefile outfile txt pdf

k3fezbri

k3fezbri2#

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

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

ls *.jpg | tesseract - yourFileName txt pdf

其中:

    • 您的文件名**:是输出文件的名称。
    • 文本PDF**:是输出格式,* 您也可以只使用其中一种 *。

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

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

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

其中:

    • 对于 . jpg格式的文件*:遍历所有JPG文件(您可以根据格式更改扩展名)
  • $FILE*:是图像文件的名称,例如001.jpg
  • *${文件::-4}**:是图像的名称,但不带扩展名,例如001.jpg将为001,因为我们删除了最后4个字符。

我们需要这样来命名文本文件为相应的名称,例如。

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

dwbf0jvd3#

由于Tesseract似乎不能处理这个问题,我刚刚开发了一个函数,将页面分隔符上合并的TXT文件拆分为多个文本文件。尽管从我的观察来看,我不确定Tesseract是否能通过同时将批量图像转换为PDF和TXT(而不是运行两次-一次用于PDF,一次用于TXT)来加快运行速度。

zvokhttg

zvokhttg4#

谢谢大家!
顺便说一句,我用的是4.1.1。
而且我发现了另一个西班牙语的Trainedata,它比标准的做得更好。实际上很好地识别了"o"字符。唯一的问题是处理时间,但我让PC工作了一夜。
老实说,我不知道新的trainedata文件是如何做得更好。https://github.com/tesseract-ocr/tessdata_best

相关问题