2014-10-20 160 views
0

我的目標是驗證OCR結果。Android:訪問系統字典

Android提供了一個SpellCheckerSession接口來檢查單詞建議。該功能應該由本地化字典備份。有沒有辦法訪問該字典?我自己加載一個巨大的UserDictionary,並保持其中數十個適當的本地化並不是一個好主意。

我一遍又一遍地掃描了文檔,但是我一定錯過了一些東西。這是一個理想的情況(不幸的是不存在):

Dictionary d = SystemDictionary.forLocale("fr-ca"); 
d.contains(word); 

回答

1

我想要做類似的事情。我提出的解決方案是使用SpellCheckerSession,並檢查它是否與onGetSentenceSuggestions中的完全匹配。

public class SpellChecker implements SpellCheckerSessionListener { 
    public SpellChecker(Activity a) 
    { 
     final TextServicesManager tsm = (TextServicesManager) a.getSystemService(
       Context.TEXT_SERVICES_MANAGER_SERVICE); 
       SpellCheckerSession scs = tsm.newSpellCheckerSession(null, null, this, true); 
       TextInfo[] tia = {new TextInfo("trewgjj"), new TextInfo("great")}; 
       scs.getSentenceSuggestions(tia, 3); 
    } 
    @Override 
    public void onGetSuggestions(SuggestionsInfo[] results) { 
     // TODO Auto-generated method stub 
    } 
    @Override 
    public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] results) { 
     for (int i = 0; i < results.length; ++i) { 
      // Returned suggestions are contained in SuggestionsInfo 
      for (int j = 0; j < results[i].getSuggestionsCount(); ++j) { 
       SuggestionsInfo si = results[i].getSuggestionsInfoAt(j); 
       if ((si.getSuggestionsAttributes() & SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY) != 0) 
        Log.d("", "EXACT MATCH FOUND"); 
      } 
     } 
    } 
} 

唯一的問題是,如果你也想驗證對用戶定義的字典中的單詞。我不相信這些拼寫檢查框架中包含這些內容,因此您可能需要手動檢查這些詞語。