如何忽略没有意义的OCR引擎的输出?

时间:2012-04-16 19:02:17

标签: algorithm nlp ocr tesseract

Tesseract OCR引擎有时会输出没有意义的文本,我想设计一个忽略任何没有意义的文本或单词的算法,下面是我想忽略的某种输出文本,我的简单解决方案是计算被识别的文本中用“”分隔的单词和包含太多单词的文本将是垃圾(提示:我正在扫描最多将包含40个单词的图像)任何想法都会有所帮助,谢谢。

 wo:>"|axnoA1wvw\
 ldflfig
 °J!9O‘ !P99W M9N 6 13!-|15!Cl ‘I-/Vl
 978 89l9 Z0 3+ 3 'l9.l.
 97 999 VLL lLOZ+ 3 9l!q°lN
 wo0'|axno/(@|au1e>1e: new;
 1=96r2a1ey\1 1uauud0|e/\e(]
 |8UJB){ p8UJL|\7'

2 个答案:

答案 0 :(得分:3)

将输出文本分为单词。将单词划分为三元组。计算三重频率,并与已知良好文本语料库的文本中的三倍频率进行比较(EG所有来自某些邮件列表的文章讨论您打算进行OCR的内容,减去标题行)。

当我说“三元组”时,我的意思是:

是的,母鸡,我,说,三,rip,ipl,ple,les,i,mea,ean

...所以“i”在这个简短的例子中的频率为2,而其他的频率都是1。

如果您使用预期语言对大型文档执行每个三元组的频率计数,则在猜测字符串是否使用相同语言时应该可以合理准确。

当然,这是启发式的。

我在密码更改程序中使用了类似的方法来检测英文密码。虽然没有完美的“明显的密码拒绝”,但它的效果还不错。

答案 1 :(得分:1)

检查词典中的单词?

当然,对于像外语或代码这样的东西,这会产生误报。一般来说问题是难以处理的(例如this代码或乱码?:))。唯一(几乎)完美的方法是使用它作为启发式标记某些部分供人工审查。