2016-07-15 18 views
0

我的應用程序涉及通過手機攝像頭掃描並檢測文本。我的申請只涉及有效的英文單詞。 我有一份354,000有效的英文單詞列表,可以將我的掃描單詞與之進行比較。Android,Java - 實時將修復OCR語言的有效英語詞典

由於我的應用程序不斷檢測文本,我需要這個功能非常快。我已經應用Levenshtein距離技術。對於每一個字,我:

  1. 存儲文本文件的內容爲使用Scanner
  2. 計算萊文斯坦字的距離與每個354K字
  3. 返回對應的最小距離字的Arraylist<String>

問題是它非常慢。沒有應用這個,我的應用程序設法在70到100毫秒左右超過20個單詞。當我包含這個修復程序時,我的應用程序需要1分鐘(60000ms)以上的單個詞。

我想知道這種技術是否合適,給我的情況。如果不是,我應該採用哪種其他測試方式?任何幫助將不勝感激。我知道這是可能的,看看Android鍵盤如何能夠立即糾正我們錯誤鍵入的單詞。

其他失敗的努力:

  • 哈羅距離。 (相似)
  • Android內部SpellCheckerSession服務。 (不適合我的情況下,結果收到通過回調是問題。)
+0

@Andy削減名單是不是不幸的選項。有沒有可以在這裏合併的散列或映射技術? –

+1

我並不一定是「完全放棄單詞」的意思,我的意思是說,你需要一種分割列表的方式,以便你不搜索不可能匹配的單詞。例如,我假設你對這個詞有多長時間會有一些想法 - 你能僅檢查那個長度爲+/- 1的詞嗎? –

+0

@安迪說即使我把某個單詞列表縮小到十分之一,這還意味着每個單詞6秒。而智能手機鍵盤能夠即時完成。我真的很想知道這種技術 –

回答

0

我的解決方案,工程:我創建了一個MySQL表,並上傳在它有效的英語單詞列表 。它解決了問題中提到的所有問題。

這是我的Android應用程序供參考: Optical Dictionary & Vocabulary Teacher