OCR纠错:如何组合三个错误结果以减少错误

tob*_*obs 6 algorithm ocr error-correction

问题

我试图通过组合来自三个不同OCR系统(tesseract,cuneinform,ocrad)的输出来改进OCR过程的结果.我已经进行了图像预处理(去偏移,去斑,保持等).我不认为这部分可以进一步改进.通常,要识别的文本长度在1到6个字之间.文本的语言是未知的,并且通常它们包含幻想词.我在Linux上.首选语言是Python.

到目前为止我有什么

通常每个结果都有一两个错误.但是他们在不同的角色/位置上有错误.错误可能是他们识别错误的字符或者他们包含不存在的字符.他们不经常忽略一个角色.

示例可能以下列方式显示:

Xorem_ipsum
lorXYm_ipsum
lorem_ipuX
Run Code Online (Sandbox Code Playgroud)

AX是错误识别的字符,Y是文本中不存在的字符.空格被"_"替换以获得更好的可读性.

在这种情况下,我尝试结合不同的结果.重复使用三对之间的"最长公共子串"算法,我能够得到给定示例的以下结构

or m_ipsum
lor m_ip u
orem_ip u
Run Code Online (Sandbox Code Playgroud)

但是现在我被困住了.我无法将这些部分组合成结果.

问题

你有没有

  • 如何组合不同的常见最长子串?
  • 或者你有更好的想法如何解决这个问题?

And*_*ash 2

这完全取决于您所使用的 OCR 引擎以及您期望获得的结果的质量。您可能会发现,通过选择更高质量的 OCR 引擎,为您提供置信度和边界框,首先会为您提供更好的原始结果,然后提供可用于确定正确结果的额外信息。

使用 Linux 将限制您可用的 OCR 引擎。就我个人而言,与 Windows 下可用的商业 OCR 引擎相比,我对 Tesseract 的评价为 6.5/10。

http://www.abbyy.com/ocr_sdk_linux/overview/ - 不过 SDK 可能并不便宜。

http://irislinktest.iriscorporate.com/c2-1637-189/iDRS-14-------- 识别--图像预处理--Document-formatting-and-more.aspx - 适用于 Linux

http://www.rerecognition.com/ - 提供 Linux 版本。该引擎被许多其他公司使用。

上述所有引擎都应该为您提供比 Tesseract OCR 更好的置信度、边界框和结果。

https://launchpad.net/cuneiform-linux - Cuneiform,现已开源并在 Linux 下运行。这可能是您正在使用的三个引擎之一。如果没有,您可能应该考虑添加它。

您还可能需要查看http://tev.fbk.eu/OCR/Products.html了解更多选项。

您能否提供一两个典型图像样本以及引擎的 OCR 结果。还有其他方法可以提高 OCR 识别能力,但这取决于图像。