OCR 的字距算法

Posted

技术标签:

【中文标题】OCR 的字距算法【英文标题】:Word distance algorithm for OCR 【发布时间】:2014-05-10 15:02:15 【问题描述】:

我正在处理 OCR 输出,我正在其中搜索特殊单词。

由于输出不干净,我根据低于特定阈值的字距查找与我的输入匹配的元素。

但是,我觉得 Levenshtein 距离或 Hamming 距离并不是最好的方法,因为 OCR 似乎总是犯同样的错误:I 代表 1,0 代表 O,Q 代表 O……以及这些“经典” 例如,错误似乎不如“A for K”重要。因此,这些距离不关心角色外观的差异量(低/高)。

是否有任何专门为 OCR 制作的字距算法,我可以使用它更适合我的情况?还是我应该根据字符的视觉差异经验性地实现我的自定义词距?

【问题讨论】:

如果你读过 tesseract 源代码,你会看到它特别处理了很多这样的情况 你在 64 位 JVM 上使用 tesseract ocr 吗? @manu 不,我使用 ABBYY FineReader。 那么您正在使用试用版 @manu 不,这不是试用版。为什么问?付费版有什么我应该知道的隐藏内容吗? 【参考方案1】:

Levenshtein 距离允许您为每个替换对指定不同的成本(http://en.wikipedia.org/wiki/Levenshtein_distance#Possible_modifications,第五项)。因此,您可以通过或多或少地强调常见错误来调整它以适应您的需求。

【讨论】:

我将根据 char 值对两个字符串之间的每个 levenshtein 操作的成本在 0 和 1 之间进行尝试。那应该给我一个双倍的距离。 这个问题你解决了吗?让我知道你没有。我为 ABBYY 工作,随时准备为您提供帮助。【参考方案2】:

如果您想要一个用于字母不匹配的自定义成本函数,您可以查看 Needleman–Wunsch 算法 (NW)

***http://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm NW算法相关的OCR论文http://oro.open.ac.uk/20855/1/paper-15.pdf

【讨论】:

这是一本好书。使用 Needleman-Wunsch 在具有两个不同 OCR 输出的第一遍中查找分类名称。然后使用这些名称在所有文档的第二遍中找到这些难词。它可以工作。

以上是关于OCR 的字距算法的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 调整 UIBarButtonItem 的字距

Android 4.2.1 错误的字距调整(间距)

Firefox 和 Chrome 中 Verdana 的字距调整错误为 15 像素

构建用于调整字体中字符的字距和间距的软件[关闭]

PHP:直接利用 Unicode 字形和 Open Type 字体 (otf) 的字距调整表的优势来创建 PDF 作为服务器响应

OCR算法改进