什么是最好、最简单的OCR解决方案?

我想扫描一大堆我四处散落的纸张,尽量避免麻烦。我希望使用Simple Scan将它们转换为图像,然后再使用OCR将其转换为文本。有没有一个带有图形用户界面的好用OCR应用程序,只需按下一个按钮就能给我良好的结果?

我们真的需要在这个线程中进行大量的重做工作。有太多旧的/过时的/...东西。没有一行测试。大部分都是复制粘贴的结果/列表。没有质量保证。 - Léo Léopold Hertz 준영
2018年,迄今为止最简单的OCR解决方案是使用在线OCR API:Google Vision OCR、Azure OCR或免费的OCR.space OCR API都提供高质量的OCR结果 - 当然,前提是您的应用程序/使用情况允许使用云解决方案。 - Nic Endo
9个回答

  • GOCR 是一个 OCR(光学字符识别)程序。它将扫描的文本图像转换为文本文件。

  • CLARA 是另一个很好的图形选项。

  • OCRAD 是一个 OCR,可以作为独立的控制台应用程序使用,也可以作为其他程序的后端。

  • KOOKA 一个KDE应用程序,但工作正常。此外,您还需要安装实际的OCR程序,如GOCR和OCRAD。安装Kooka和OCR程序后,您必须指定Kooka的OCR安装位置,以便它能够将JPEG转换为文本。

  • OCRFeeder 一个文档布局分析和光学字符识别系统。

  • Tesseract 命令行实用程序,非常简单易用。您可以从这里安装语言包tesseract-ocr-eng

请查看这个页面

注意:
要运行tesseract,请打开终端并输入以下内容。

tesseract imagefile.tif outputfile.txt

Tesseract只能读取TIFF文件 - 如果你有JPEG或PDF或其他格式的文件,你需要将其转换成TIFF格式。此外,文件名的扩展名必须是.tif,而不是.tiff,否则tesseract会出错。

1如果英语不是你的母语,有没有其他语言的扩展程序? - Vassilis
卡迪克,那是一个很棒的答案。您能否添加有关OCRFeeder的一些信息,以将其标记为被接受的答案? - Bou
@Vassilis 对不起,我听不懂你的意思? - karthick87
3@Vassilis:OCR系统是语言无关的,因为它们识别字符而不是单词。但是,如果你的字母表中包含非拉丁1字符(比如西里尔字母),那么OCR系统可能会漏掉这些字符。 - OpenNingia
1有时我需要转换带有非英语文本(希腊文)的图像,是否有扩展程序可以读取这些程序中的希腊字母? - Vassilis
1@Vassilis:你可以安装tesseract-ocr-*来添加你所需要的语言。 - karthick87
2@OpenNingia :语言可以很重要,即使只使用拉丁字母的书写系统。这有助于OCR区分模糊的字母。 - Frédéric Grosshans
17这样的问题/回答真的让askubuntu乱成一团。那个人问的是“什么是最好、最简单的OCR解决方案”,而不是“Linux上有哪些OCR应用程序”。这个解决方案不应该被接受!真的很混乱,也没有帮助。 - Alin Andrei
对于希腊语和许多其他语言,您可以使用正确的语言包来使用Tesseract。要拥有图形用户界面(GUI),您可以使用gscan2pdf,它可以使用您已安装的不同OCR系统。我建议添加它们的ppa或下载最新版本,因为Ubuntu在这个程序上落后很多。 - Victor
1@Vassilis http://manpages.ubuntu.com/manpages/precise/man1/tesseract.1.html ←在OPTIONS部分之后,它列出了很多语言。 - isomorphismes
3当前的Ubuntu tesseract(在Ubuntu 15.10上为3.04.00版本)对于PNG输入文件没有任何问题。它可以接受JPG文件,但是由于额外的压缩伪影,结果会比较差,这是可以预料的。 - Volker Siegel
分离程序的文件格式将是很好的。Tesseract无法处理PDF文件图像文件 %PDF-1.6 无法读取! - Léo Léopold Hertz 준영
关于gocr,如果能提供一个简短的例子就更好了。不过请不要使用gocr -i test.pdf这样的命令,因为文件太大了。 - Léo Léopold Hertz 준영
1你的列表中有许多损坏的包裹,如koodaclara,没有得到适当的维护。我们真的需要更好的答案! - Léo Léopold Hertz 준영
tesseract-ocr 是软件包的名称。 - Gabor
我在一个小样本文件上尝试了GOCR和Tesseract,并且发现Tesseract的错误要少得多。我唯一的小抱怨是它会在输出文件名后面添加“.txt”,将“foo”变成“foo.txt”,将“foo.txt”变成“foo.txt.txt”。 - Huw Walters
实际上,Tesseract支持多种输出格式:纯文本、hocr(HTML)、PDF、TSV和仅包含不可见文本的PDF。 参考链接 - jasonleonhard
这是我刚写的一个关于tesseract的封装。它可以自动将输入的PDF文件转换为一堆TIFF文件,然后使用tesseract对它们进行OCR从而生成可搜索的PDF文件。安装和使用信息可以在这里找到:https://askubuntu.com/questions/473843/how-to-turn-a-pdf-into-a-text-searchable-pdf/1187881#1187881。完成后会删除临时文件。使用非常简单:`pdf2searchablepdf input.pdf`。这将生成input_searchable.pdf文件。源代码在这里:https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF。 - Gabriel Staples
来看看轻量级的CROW,它还可以进行OCR文本的翻译。https://github.com/crow-translate/crow-translate - pymen

有几个流行的OCR命令行工具可以使用(我不确定它们是否有图形用户界面):
  • Tesseract (ReadMe, FAQ) (Python)

    还可用于:Tesseract .NET, Tesseract iOS

    Tesseract是一个OCR引擎,它在1985年至1995年间由HP Labs开发... 现在由Google维护。Tesseract可能是目前最准确的开源OCR引擎。

    使用方法:

    tesseract [inputFile] [outputFile] [-l optionalLanguageFile] [PathTohOCRConfigFile]
    
  • GOCR

    GOCR是一个开源字符识别工具。它可以将扫描图像转换为文本文件。 GOCR可以与不同的前端配合使用,非常容易移植到不同的操作系统和架构上。 它可以打开多种不同的图像格式,并且其质量每天都在不断提高。

  • OCRopus™ (FAQ) (使用Python、NumPy和SciPy编写)

    OCRopus是一个专注于使用大规模机器学习解决文档分析问题的OCR系统, 具有可插拔的布局分析、可插拔的字符识别、统计自然语言建模和多语言能力。

    OCRopus引擎基于两个研究项目:一个在90年代中期由美国人口普查局开发并部署的高性能手写识别器, 以及新颖的高性能布局分析方法。

    OCRopus的开发由Google赞助,最初用于高吞吐量、大容量的文档转换工作。 我们预计它也将成为许多其他应用程序的优秀OCR系统。

  • Tessnet2 (开源、OCR、Tesseract、.NET、DOTNET、C#、VB.NET、C++/CLI)

    Tesseract是一个C++开源OCR引擎。Tessnet2是一个.NET程序集, 提供非常简单的OCR方法。Tessnet2采用Apache 2许可证(与tesseract相同), 意味着您可以根据自己的需求使用它,包括商业产品中。

其他一些:ABBYY CLI OCR for LinuxAsprise OCR 更完整的列表,请查看维基百科上的光学字符识别软件列表 另请参阅GitHub上的wanghaisheng/awesome-ocr - 一个有前途的OCR资源精选列表

Gscan2PDF

多页PDF或扫描文档的OCR

这可能是最简单的方法。Gscan2pdf是一个图形化工具,不仅可以扫描文件,还可以导入文件并对其进行OCR。 从这里安装gscan2pdf Install gscan2pdf,可以通过Ubuntu软件中心或在终端中运行以下命令来安装:

sudo apt-get install gscan2pdf
  • 运行gscan2pdf
  • 导入PDF文件(Ctrl+O)
  • 可选步骤:工具 > 清理
  • 选择工具 > 保存OCR结果 (Ctrl+S)

Gscan2PDF可以使用可自定义的OCR引擎,默认为tesseract-ocr。

您可能需要选择适当的语言。在这种情况下,您需要安装tesseract-ocr-LANG软件包,其中LANG是三位字母ISO 639-2语言代码。目前在16.04版本上有108种语言可用。


我对这个软件无能为力。根本没有足够的检测。在推荐之前,如果能获得一些关于应用程序的测试样本就太好了。 - Léo Léopold Hertz 준영
gscan2pdf在16.04版本中至少没有Ctrl+i的快捷键选项。正确打开PDF文件后,会正确识别“要提取的页面”,但选择“确定”却没有任何反应。 - Mark D

只是因为它的功能非常出色,绝对应该在列表中:
gimageReader 示例来自屏幕截图:

enter image description here

它在软件仓库里(在18.10回答过,但我已经使用它很久了)。

4当我第一次启动gimageReader时,它给了我一个关于tesseract的“没有可用语言”的消息。"如何为tesseract安装新的语言包"的答案没有列出eng作为选项...但是我解决了!:) 在终端中运行sudo apt install tesseract-ocr-eng就解决了问题。如果这在gimageReader的帮助文件或github上的"README"中有记录就好了...或者其他地方。也许像这里一样。 - Dɑvïd

Linux智能OCR解决方案

免责声明 - 我与这个开源解决方案的开发密切相关

Lios可以使用扫描仪或相机将印刷品转换为文本。

它还可以从其他来源(如PDF、图像或包含图像的文件夹)中的扫描图像生成文本。

该程序对视力受损者具有完全的可访问性。

由于我与之密切相关,我希望得到反馈意见。


使用文档在哪里?lios并没有我期望的那么直观。 - a coder
项目已经迁移到这里 - Suzana
在服务器上仅通过命令行在无头模式下运行它是否可行? - Deadlock

最简单且最好的方法就是使用,它不会改变PDF文件。pypdfocr是一个Python模块链接在这里。
pypdfocr your_document.pdf

最后,您将获得另一个按照您要求具有可搜索文本的your_document_ocr.pdf文件。该应用程序不会改变图像的质量,只是通过添加覆盖文本略微增加文件大小。
我认为这个命令非常简单,不需要任何图形用户界面。也许安装pypdfocr会稍微冗长一些。
sudo apt install tesseract-ocr 
pip install pypdfocr 

2018年11月3日更新:

pypdfocr自2016年起不再受支持,我注意到由于未得到维护而出现了一些问题。可以使用类似的工具ocrmypdf(module)来完成相似的任务,用法如下:

ocrmypdf in.pdf out.pdf

安装方法:

pip install ocrmypdf

或者

apt install ocrmypdf

这是一个非常有趣的工具,尽管我认为OP想要的是一个生成文本文件的图形界面工具,而不是一个PDF制作工具。如果能包含项目网站就更好了。 - Andrea Lazzarotto
@AndreaLazzarotto 是的,我看到了,但是由于这个命令非常简单,我想很多人都可以使用终端来完成。所以我决定在这里提供解决方案。 - Eduard Florinescu
1巧合的是,最近我刚刚发现了一个叫做"ocrmypdf"的工具。你有没有试过?它非常好用哦!:) - Andrea Lazzarotto
@AndreaLazzarotto 看起来是一个不错的选择,你可能想发表一个回答;)我会试一试看它的效果如何:) - Eduard Florinescu
@AndreaLazzarotto 看起来在Ubuntu 16.04上安装ocrmypdf并不那么简单。 https://github.com/jbarlow83/OCRmyPDF/issues/118 - Eduard Florinescu
它在软件仓库里,至少对于17.10版本是这样的。我不清楚旧版本是否也有。 - Andrea Lazzarotto
@AndreaLazzarotto 是的,从16.10版本(包括)开始向上升级。 - Eduard Florinescu
1@EduardFlorinescu sudo apt install ocrmypdf非常好用。我不认为"不那么直接"的评论还是正确的。 - Lexible
1OCRMyPDF在输出中存在大量的文件膨胀问题(例如,600Kb ==> 3.3MB是一个典型的超过5倍大小增加的例子,无论使用-s--redo-ocr等选项)。 - Lexible

我刚刚在16.04上成功使用了pdfocr.rb。这个在Ubuntu wiki上有记录。 这里有一个ppa,但是16.04的仓库没有更新。不过,来自Github的上述Ruby脚本仍然可以在16.04上运行。
你可以从Github下载它。你需要安装以下软件包:
ruby tesseract-ocr pdftk exactimage

然后将pdfocr.rb设置为可执行文件并运行:
./pdfocf.rb -i source.pdf -o output.pdf

如果需要的话,您可以使用-l LANG参数。在这种情况下,您需要安装tesseract-ocr-LANG软件包,其中LANG是三个字母的ISO 639-2语言代码。目前,在16.04仓库中有108种语言可用。


gscan2pdf包含3种不同的OCR引擎。您可以直接将扫描结果导入程序,或者将PDF文件导入程序。我发现Tesseract引擎效果很好,而且非常易于使用。

OCRFeeder已被提及为众多选项之一,但我认为值得提及的是它满足您的要求的原因:

  • 它有一个图形用户界面(与其他答案中提到的一些应用程序不同)
  • 它易于使用(点击添加图片然后点击识别文档

此外,它还具有其他使其成为出色选择的特点: