如何在 Linux 中从命令行使用 OCR?

Vil*_*age 39 command-line ocr

我有几千页的扫描书页。每个页面都单独保存为 JPG。文字清晰,但字体各不相同,页面确实包括图片和插图。

我需要创建出现在每个 JPG 文件中的所有单词的列表。是否有用于扫描列出出现的单词的图像的命令行工具?它不需要完美的扫描,只是一个估计。

Nic*_*mer 37

tesseract可能是这里最常用的解决方案。它在大多数软件包存储库中可用,例如,

sudo apt install tesseract-ocr
Run Code Online (Sandbox Code Playgroud)

并且可以与

tesseract input.png out.txt
Run Code Online (Sandbox Code Playgroud)


rie*_*333 20

安装imagemagick, pdftotextpoppler-utils在一些包管理器中命名的包中找到)和ocrmypdf。后者是一种快速(ocr 占用大量 CPU,并且配置为使用所有内核)、开源且经常更新的 OCR 软件。这种方法可能有点矫枉过正,因为它实际上试图为每个单词分配一个字符串,而不是仅仅标记一个单词,但我在寻找好的且易于使用的开源 OCR 软件时遇到了很多麻烦。然后,在您保存所有 JPG 的目录中:

$ convert *.jpg pictures.pdf
$ ocrmypdf pictures.pdf scanned.pdf
$ pdftotext scanned.pdf scanned.txt
$ wc -w scanned.txt
Run Code Online (Sandbox Code Playgroud)

  • fwiw,这使用下面提到的 Tesseract。 (2认同)

小智 11

将 image file.png 放大 480%,更改为灰度,用白色回填,锐化,然后使用 tesseract OCR 提取。除了非常大的字体和黑底白字外,它大部分时间对我来说都很好用。如果字体非常大,则只能放大 200% 或 300%。

 convert -colorspace gray -fill white  -resize 480%  -sharpen 0x1  file.png file.jpg
 tesseract file.jpg file
Run Code Online (Sandbox Code Playgroud)

结果在 file.txt 中。