因此,我正在开发一个简单的移动应用程序项目(主要是为了好玩),该项目使用 Android 上的 OCR 库(tesseract)来扫描相机图片,对文本执行一些操作,然后将其返回给用户。
我想知道是否有人知道一种方法来以编程方式(或统计方式)判断一串字符是否构成实际单词,或者它是否只是无意义的。 (我目前只针对英语,仅供引用)
例如,OCR 可能会读取图片并可能返回
返回字符串 =“敏捷的棕色狐狸。”
或者,它可能会读取另一张图片并返回
返回字符串 = "$._- %/hj @;+__~"
显然,返回的第一个字符串是单词,第二个字符串只是乱码。我想知道是否有人有办法轻松区分良好返回和无意义返回。
最佳答案
运行一些字符频率和一些其他统计数据。我会寻找空白的频率和位置、单词的大小以及符号的频率,这些是我希望或不会在我希望用户拍照的内容中找到的。
如果您需要大量文本,可以检查字母表上的频率,看看它们是否与已知的英语字符频率相匹配。如果您正在等待收据,请寻找比平常更多的数字。
最后,您可以让用户决定这是否真的是他们想要的。所有分析都可能只是警告用户“我们不相信这就是您想要的”警告,他们可以忽略。
我使用这些概念来解决 a Project Euler problem关于了解文本何时被正确解密。
关于java - 如何判断一串字符是否可以构成可理解的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305727/