Linux 系统上的 OCR

Linux 系统上的 OCR

我一直发现光学字符识别技术在开源系统上落后。我也看过奥克罗普斯项目从婴儿期起。我已经尝试过我所听说的 Linux 上最好的 OCR 引擎,超立方体,并发现它严重缺乏商业文件。还有其他更有前景的 OCR 实现吗?解读笔迹这一更有希望的目标又如何呢? *nix 系统在这个领域有什么可能?

答案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。我们公司已经在我们的网络应用程序中使用它一年了,我们计划更新许可证。非常好的识别质量,命令行界面,多语言识别。

相关内容