Android:访问系统字典

时间:2014-10-20 20:04:50

标签: android localization spell-checking

我的目标是验证OCR结果。

Android提供了一个SpellCheckerSession界面来检查单词建议。该功能应该由本地化字典备份。有没有办法获得对该词典的访问权限?自己加载一个巨大的UserDictionary并保持其中几十个最新的正确本地化似乎不是一个好主意。

我一遍又一遍地扫描文档,但我必须遗漏一些东西。这是一个理想的场景(遗憾的是不存在):

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

1 个答案:

答案 0 :(得分: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"); 
            }
        }
    }
}

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