2

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'
4

2 回答 2

3

将输出文本分成单词。将单词分成三组。计算三重频率,并与来自已知良好文本语料库的文本的三重频率进行比较(例如,来自某个邮件列表的所有文章讨论您打算使用 OCR 做什么,减去标题行)。

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

whe, hen, i, say, tri, rip, ipl, ple, les, i, mea, ean

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

如果您对使用预期语言的大型文档的这些三元组中的每一个进行频率计数,则应该可以相当准确地猜测字符串是否使用相同的语言。

当然,这是启发式的。

我在密码更改程序中使用了类似的方法来检测英文密码。它工作得很好,尽管没有完美的“明显的密码拒绝器”这样的东西。

于 2012-04-16T20:11:02.373 回答
1

对照字典查单词?

当然,这会对诸如外来短语或代码之类的东西产生误报。一般来说,这个问题是棘手的(例如,这段代码是乱码还是乱码?:))。唯一(几乎)完美的方法是将其用作启发式方法来标记某些部分以供人工审查。

于 2012-04-16T19:44:11.473 回答