- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我试图通过组合来自三个不同 OCR 系统(tesseract、cuneinform、ocrad)的输出来改进 OCR 过程的结果。我已经进行了图像预处理(歪斜校正、去 Blob 处理、阈值处理等)。我不认为这部分可以改进更多。通常要识别的文本长度在 1 到 6 个单词之间。文本的语言是未知的,而且它们经常包含幻想的词。我在 Linux 上。首选语言是 Python。
通常每个结果都有一两个错误。但是他们在不同的字符/位置有错误。错误可能是它们识别了错误的字符或包含了不存在的字符。他们通常不会忽略一个角色。
示例可能如下所示:
Xorem_ipsum
lorXYm_ipsum
lorem_ipuX
X 是识别错误的字符,Y 是文本中不存在的字符。空格被替换为“_”以提高可读性。
在这种情况下,我会尝试合并不同的结果。在三对之间重复使用“最长公共(public)子串”算法,我能够得到给定示例的以下结构
or m_ipsum
lor m_ip u
orem_ip u
但是我现在卡在这里了。我无法将这些部分组合成一个结果。
你有吗
最佳答案
这完全取决于您使用的 OCR 引擎以及您期望获得的结果质量。您可能会发现,通过选择质量更高的 OCR 引擎来为您提供置信度和边界框,首先会为您提供更好的原始结果,然后提供可用于确定正确结果的额外信息。
使用 Linux 会限制您可用的 OCR 引擎。与 Windows 下可用的商业 OCR 引擎相比,我个人认为 Tesseract 的评分为 6.5/10。
http://www.abbyy.com/ocr_sdk_linux/overview/ - 虽然 SDK 可能并不便宜。
http://www.rerecognition.com/ - 可作为 Linux 版本使用。许多其他公司都在使用该引擎。
与 Tesseract OCR 相比,上述所有引擎都应为您提供置信度、边界框和更好的结果。
https://launchpad.net/cuneiform-linux - 楔形文字,现已开源并在 Linux 下运行。这可能是您正在使用的三个引擎之一。如果没有,您可能应该考虑添加它。
您可能还想看看 http://tev.fbk.eu/OCR/Products.html更多选项。
您能否提供一两个典型图像样本以及来自引擎的 OCR 结果。还有其他方法可以改进 OCR 识别,但这取决于图像。
关于algorithm - OCR纠错: How to combine three erroneous results to reduce errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3683051/
我是一名优秀的程序员,十分优秀!