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

标签 java android statistics tesseract linguistics

因此,我正在开发一个简单的移动应用程序项目(主要是为了好玩),该项目使用 Android 上的 OCR 库(tesseract)来扫描相机图片,对文本执行一些操作,然后将其返回给用户。

我想知道是否有人知道一种方法来以编程方式(或统计方式)判断一串字符是否构成实际单词,或者它是否只是无意义的。 (我目前只针对英语,仅供引用)

例如,OCR 可能会读取图片并可能返回

返回字符串 =“敏捷的棕色狐狸。”

或者,它可能会读取另一张图片并返回

返回字符串 = "$._- %/hj @;+__~"

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

最佳答案

运行一些字符频率和一些其他统计数据。我会寻找空白的频率和位置、单词的大小以及符号的频率,这些是我希望或不会在我希望用户拍照的内容中找到的。

如果您需要大量文本,可以检查字母表上的频率,看看它们是否与已知的英语字符频率相匹配。如果您正在等待收据,请寻找比平常更多的数字。

最后,您可以让用户决定这是否真的是他们想要的。所有分析都可能只是警告用户“我们不相信这就是您想要的”警告,他们可以忽略。

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

关于java - 如何判断一串字符是否可以构成可理解的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305727/

相关文章:

java - 如何使 JScrollPane 在 JFrame 中居中?

java - Android 如何修剪字符串中的多行?

Android 客户端似乎没有发送证书(尝试相互身份验证)

algorithm - 选择满足特定属性的随机数组元素

java - 没有确定主要方法?

java - 如何使用 PHP 执行 java -jar 文件,并将 .jar 创建的文件加载到服务器?

java - 在 Java JTree 上显示数据库中的数据

android - Ionic 应用程序以 API 级别 25 为目标,并且必须至少以 API 级别 26 为目标

elasticsearch - 按比例计算修整平均值

javascript - InfluxDB 写入事件监听器/触发器