2014-03-31 25 views
2

我正在使用OCR输出,并且正在搜索其中的特殊字词。用于OCR的字距算法

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

但是,我觉得Levenshtein距离或汉明距离并不是最好的方式,因为OCR总是会犯同样的错误:I为1,0,O为O,Q为O ......并且这些“例如,“经典”错误似乎不如“A for K”重要。因此,这些距离不关心字符外观差异的大小(低/高)。

是否有任何字距离算法,专门为OCR,我可以使用,将更好地适合我的情况?或者,我应该根据人物的视觉差异凭经验实施我的自定义单词距离吗?

+0

如果你曾经阅读过tesseract源代码,你会发现它特殊的处理案例很多 –

+0

你在64位JVM上使用tesseract ocr吗? – manu

+0

@manu不,我使用ABBYY FineReader。 – zenbeni

回答

2

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

+0

对于每个两个字符串之间的每个levenshtein动作,取决于char值,我将尝试使用0到1之间的代价。这应该给我一个双倍的距离。 – zenbeni

+0

你解决了这个问题吗?让我知道你没有。我为ABBYY工作并随时准备为您提供帮助。 –

1

我想要的字母不匹配的自定义成本函数,你可以看看EMBOSS软件包(NW)

+0

这是一个很好的阅读。使用Needleman-Wunsch通过两种不同的OCR输出在第一遍中查找分类名称。然后使用这些名称在所有文档的第二遍中查找这些难以处理的单词。它可以工作。 – zenbeni