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'
答案 0 :(得分:3)
将输出文本分为单词。将单词划分为三元组。计算三重频率,并与已知良好文本语料库的文本中的三倍频率进行比较(EG所有来自某些邮件列表的文章讨论您打算进行OCR的内容,减去标题行)。
当我说“三元组”时,我的意思是:
是的,母鸡,我,说,三,rip,ipl,ple,les,i,mea,ean...所以“i”在这个简短的例子中的频率为2,而其他的频率都是1。
如果您使用预期语言对大型文档执行每个三元组的频率计数,则在猜测字符串是否使用相同语言时应该可以合理准确。
当然,这是启发式的。
我在密码更改程序中使用了类似的方法来检测英文密码。虽然没有完美的“明显的密码拒绝”,但它的效果还不错。
答案 1 :(得分:1)
检查词典中的单词?
当然,对于像外语或代码这样的东西,这会产生误报。一般来说问题是难以处理的(例如this代码或乱码?:))。唯一(几乎)完美的方法是使用它作为启发式标记某些部分供人工审查。