2016-07-15 1 views
0

내 응용 프로그램은 전화 카메라를 통해 스캔하고 텍스트를 검색하는 작업이 포함됩니다. 내 응용 프로그램과 관련된 유일한 단어는 유효한 영어 단어입니다. 나는 스캔 한 단어를 354,000 단어의 유효 영어 단어로 비교할 수 있습니다.Android, Java - 유효한 영어 사전 단어로 OCR-ed 단어를 실시간으로 수정하십시오.

내 응용 프로그램이 계속 텍스트를 감지하므로이 기능이 매우 빠르게 필요합니다. 나는 Levenshtein Distance 기술을 적용했다. 각 단어의 경우, I :

  1. 저장합니다 354K 단어
  2. 반환 최소 거리에 해당하는 단어의 각각 단어의 Scanner
  3. 계산 Levenshtein 거리를 사용하여 Arraylist<String>에 텍스트 파일의 내용 값

문제는 매우 느립니다. 이것을 적용하지 않고, 내 응용 프로그램은 70 ~ 100 밀리 초 내에 20 단어 이상을 관리합니다. 이 고정 루틴을 포함하면 내 응용 프로그램이 한 단어에 대해 1 분 (60000ms) 이상 소요됩니다.

내 경우에는이 기술이 적합한 지 궁금합니다. 그렇지 않은 경우, 다른 테스트 된 방법은 무엇입니까? 어떤 도움이라도 대단히 감사하겠습니다. 나는 이것이 가능하다는 것을 안다. 안드로이드 키보드가 잘못 입력 된 단어를 즉시 수정할 수있는 방법을 보았다.

다른 실패의 노력 :

  • JARO 거리. (유사)
  • Android 내부 SpellCheckerSession 서비스입니다. (내 경우에 맞지 않는 영수증 결과 콜백이 문제를 통해.) 작동
+0

@Andy이 목록을 아래로 절단하는 불행하게도 옵션을 선택하지 않습니다. 여기에 통합 할 수있는 해싱 또는 매핑 기술이있을 수 있습니까? –

+1

나는 반드시 단어를 완전히 버리는 것과 같이 "목록을 자르는"것을 의미하는 것은 아닙니다. 나는 목록을 구분하는 방법이 필요하다는 것을 의미합니다. 일치하지 않는 단어는 검색하지 않습니다. 예를 들어, 단어 길이에 대한 아이디어가 있다고 가정합니다. 길이가 +/- 1 인 단어 만 확인할 수 있습니까? –

+0

@ 앤디 만약 내가 어떻게 든 10 분의 1로 단어 목록을 좁히더라도, 그것은 여전히 ​​단어 당 6 초를 의미합니다. 반면 스마트 폰 키보드는 즉시 할 수 있습니다. 그 기술에 대해 정말로 알고 싶습니다. –

답변

0

내 솔루션 : 을 나는 MYSQL 테이블을 만들고 그 안에 유효한 영어 단어의 목록을 업로드합니다. 이 질문에서 다루는 모든 문제를 해결합니다.

여기 참조를 위해 내 안드로이드 응용 프로그램입니다 : Optical Dictionary & Vocabulary Teacher

관련 문제