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 的字距
Firefox 和 Chrome 中 Verdana 的字距调整错误为 15 像素
PHP:直接利用 Unicode 字形和 Open Type 字体 (otf) 的字距调整表的优势来创建 PDF 作为服务器响应