答案1
超立方体
截至 2020 年,最好的开源 OCR 软件是超立方体4以其新的LSTM神经网络OCR模型。其 OCR 性能比版本 3 中使用的先前 OCR 模型要好得多。
示例(output.pdf
为扫描的德语文档生成带有文本层的 PDF 文件):
$ echo page-*.png > input.list
$ tesseract --oem 1 -l deu input.list output pdf
(--oem 1
启用 LSTM 引擎)
将识别的文本打印到标准输出:
$ tesseract --oem 1 -l deu page page-0001.png stdout
列出已安装的语言:
$ tesseract --list-langs
以可下载的形式提供对多种语言/脚本的支持训练数据集,例如甚至还有 Fraktur 的数据集。
通过新的 LSTM 模型,Tesseract 从奥克罗普斯研究项目。
即使在高质量的输入图像上,Tesseract 版本 3 的性能也相对较差,即它经常错误地检测灰尘像素中的单个字符(在任何文本上下文之外),并且很容易在众所周知的单词中引入单个字符错误。
楔形文字
楔形文字OCR 性能并没有那么糟糕,但它没有得到积极维护(最后一次发布于 2011 年,版本 1.1)并且很容易崩溃并存在其他一些问题:
您可以像这样禁用布局算法:
$ cuneiform --singlecolumn -l ger -f text -o foo.txt image-0001
(-l
指定源文档的语言)
奥克拉德
奥克拉德示例调用:
$ ocrad -F utf8 image-0001
文本默认打印到标准输出。
在商业文档中,它遗漏了一个带下划线的单词,而 cuneiform/tesseract/gocr 却没有。
Ocrad 手册包含有关使用的算法,例如:
5) 检测字符并将其按行分组。
6) 识别字符(非常临时;每个字符一种算法)。
7) 纠正一些歧义(将 l.OOO 转换为 1.000 等)。
GOCR
GOCR示例调用:
$ gocr image-0001
文本默认打印到标准输出。
GOCR 文档没有包含有关 OCR 使用哪些模型/方法的详细信息。
硬件
萨内对某些自动文档进纸 (ADF) 扫描仪有很好的支持,例如愿景和富士通那些。
Sane 中包含一个scanimage
命令行程序,您可以使用它来构建脚本化扫描管道(参见例如我的adf2pdf.py
脚本)。
答案2
我找到了一个StackOverflow 上有类似的问题和Asprise OCR SDK,链接之一商业的产品,拥有 Linux 版本。
答案3
... OCR 不仅仅是“仅字符识别”。图像处理、预处理 - 页面/布局分析以查找文本、图像、表格或条形码。为了识别,你必须处理不同的字体、大小和语言。这很重要,因为要获得好的结果,您必须使用词典和语言定义。最后,人们期望有比文本更多的导出选项(例如 XML、RTF 或可搜索的 PDF)。 SDK 有一些商业选项,但它们并不便宜而且免费。
最近我发现一个ABBYY 适用于 Linux 的 CLI OCR。有 100 页的免费试用版。
答案4
如果你有预算的话我强烈推荐适用于 Linux 的 ABBYY FineReader Engine CLI。我们公司已经在我们的网络应用程序中使用它一年了,我们计划更新许可证。非常好的识别质量,命令行界面,多语言识别。