【发布时间】:2012-04-13 09:20:00
【问题描述】:
我看到了一些关于根据不同引擎的输出确定最佳 OCR 结果的问题,答案通常是“选择最佳引擎”。 但是,我想捕获几帧文本图像,可能会有临时遮挡或临时故障。 我正在使用 tesseract-ocr 和 python-tesseract。
考虑到最后 N 帧的 OCR 输出,我想确定什么是最好的结果(为简单起见,逐行)。
例如,对于 N=3,我们可以使用中值过滤:
ABXD
XBCX
AXCD
当3个字符中有2个相等时,多数人获胜,因此结果为ABCD。 但是,对于不同的字符串大小,这并不容易。如果我期望给定大小 M(如果扫描价格表,行通常是 XX.XX),我总是可以对大于 M 的字符串进行惩罚。
如果我们在谈论数字,中值滤波会很好用(计算机视觉中的简单背景减法),或者一些最小均方自适应滤波。
还有字符相似的问题:l 和1 可能非常相似,具体取决于字体。
我也在考虑使用每个字符串之间的字符串距离。例如,选择与其他字符串的距离之和最小的字符串。
以前有人解决过这种问题吗?有没有我应该知道的这类问题的已知算法?
【问题讨论】:
-
为了处理不同长度的字符串,您可以尝试查找最长的公共子字符串,例如对于
blended和blencled,LCS 是blen*ed,所以比赛在d和cl之间进行。无论如何,有趣的问题,太糟糕了,我没有更具体的东西:) -
@RafałDowgird LCS 不是
blen吗? -
不,LCS 可以跳过索引(在两个字符串中)。
标签: algorithm ocr string-matching fuzzy-comparison