Android、Java - 实时将 OCR 字词修复为有效的英语词典字词
Android, Java - Fix an OCR-ed word to a valid english dictionary word in real time
我的应用程序涉及扫描 phone 摄像头和检测文本。我的应用程序唯一关心的是有效的英文单词。
我有一个包含 ~354,000 个有效英语单词的列表,我可以将我扫描的单词与这些单词进行比较。
由于我的应用程序不断检测文本,因此我需要此功能非常非常快。我已经应用了 Levenshtein 距离技术。对于每个单词,我:
- 使用
Scanner
将文本文件的内容存储到 Arraylist<String>
- 用354k个词中的每一个计算词的编辑距离
- Return最小距离值对应的单词
问题是它非常非常慢。如果不应用它,我的应用程序会在大约 70 到 100 毫秒内设法识别 20 多个单词。当我包含这个修复例程时,我的应用程序需要超过 1 整分钟(60000 毫秒)来处理一个单词。
我想知道这种技术是否适合我的情况。如果没有,我应该使用其他什么测试方法?任何帮助将不胜感激。我知道这是可能的,看看 android 键盘如何能够立即纠正我们输入错误的单词。
其他失败的尝试:
- 哈罗距离。 (相似)
- Android 内部
SpellCheckerSession
服务。 (不适合我的情况。通过回调接收结果是个问题)
我的有效解决方案:
我创建了一个 MYSQL table 并在其中上传了有效英文单词列表。它解决了问题中提到的所有问题。
这是我的Android申请供参考:
Optical Dictionary & Vocabulary Teacher
我的应用程序涉及扫描 phone 摄像头和检测文本。我的应用程序唯一关心的是有效的英文单词。 我有一个包含 ~354,000 个有效英语单词的列表,我可以将我扫描的单词与这些单词进行比较。
由于我的应用程序不断检测文本,因此我需要此功能非常非常快。我已经应用了 Levenshtein 距离技术。对于每个单词,我:
- 使用
Scanner
将文本文件的内容存储到 - 用354k个词中的每一个计算词的编辑距离
- Return最小距离值对应的单词
Arraylist<String>
问题是它非常非常慢。如果不应用它,我的应用程序会在大约 70 到 100 毫秒内设法识别 20 多个单词。当我包含这个修复例程时,我的应用程序需要超过 1 整分钟(60000 毫秒)来处理一个单词。
我想知道这种技术是否适合我的情况。如果没有,我应该使用其他什么测试方法?任何帮助将不胜感激。我知道这是可能的,看看 android 键盘如何能够立即纠正我们输入错误的单词。
其他失败的尝试:
- 哈罗距离。 (相似)
- Android 内部
SpellCheckerSession
服务。 (不适合我的情况。通过回调接收结果是个问题)
我的有效解决方案: 我创建了一个 MYSQL table 并在其中上传了有效英文单词列表。它解决了问题中提到的所有问题。
这是我的Android申请供参考: Optical Dictionary & Vocabulary Teacher