2014-10-20 114 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"); 
      } 
     } 
    } 
} 

唯一的问题是,如果你也想验证对用户定义的字典中的单词。我不相信这些拼写检查框架中包含这些内容,因此您可能需要手动检查这些词语。