如何判断一串字符是否构成可理解的单词

How to tell if a string of characters makes intelligible words

所以,我正在开发一个简单的移动应用程序项目(主要是为了好玩),它使用 Android 上的 OCR 库 (tesseract) 来扫描相机图片,对文本进行一些处理,以及return 它给用户。

我想知道是否有人知道以编程方式(或统计方式)判断字符串是否构成实际单词或者它是否只是胡说八道的方法。 (我目前只针对英语,仅供参考)

例如,OCR 可能会读取图片,它可能 return

String returned = "The quick brown fox."

或者,它可能会读取另一张图片,然后 return

String returned = "$. _- %/ hj @;+__~"

显然,第一个字符串 returned 构成单词,第二个字符串只是乱码。我想知道是否有人有办法轻松区分好的 return 和无意义的 return。

一个简单的解决方案是拥有一个有效单词的字典,然后查看返回的单词是否在字典中。

运行 一些字符频率和一些其他统计数据。我会寻找我希望用户拍照的内容中出现和不希望出现的空格出现频率和位置、字词大小和符号出现频率。

如果您希望看到大量文本,可以检查字母表上的频率,看看它们是否与已知的英文字符频率匹配。如果您期待收到收据,请寻找比平时多得多的号码。

最后,您可以让用户决定它是否真的是他们想要的。所有分析都可以用 "We don't believe this is what you want" 警告警告用户,他们可以忽略。

我使用这些概念来解决a Project Euler problem关于了解文本何时被正确解密的问题。