Android의 OCR 라이브러리tess-two(실습 편 1)
의 목적
tess-two를 사용하여 실제 텍스트 검사를 진행합니다.참고Making a Simple OCR Android App using Tesseract.
실험 중에는 카메라를 사용할 필요가 없기 때문에 수중에 있는 책의 이미지를 미리 찍어 왼쪽 상단에 있는 ISBN 코드를 읽어 보았다.
프로젝트 준비
※ 이번 샘플은 공유 라이브러리 사본이 필요 없습니다.언제 필요할지 몰라
sample.assets에 jpg로 추가
→ https://gist.github.com/Nunocky/5d43d0ec4b2270927446
해설
한정된 사용이라면 정말 간단해요.
MainActivity.java
AssetManager assetManager = getResources().getAssets();
InputStream is = assetManager.open(TARGET_IMAGE);
Bitmap bitmap = BitmapFactory.decodeStream(is);
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(EXSTORAGE_PATH, "eng");
baseApi.setImage(bitmap);
baseApi.setRectangle(56, 81, 230, 22);
String recognizedText = baseApi.getUTF8Text();
baseApi.end();
Log.d(TAG, "Recognized: " + recognizedText);
그게 다야.setRectangle이 지정한 범위를 GIMP로 적절히 조사했습니다.
baseApi.init에서trained 데이터를 지정할 때 assets를 직접 지정할 수 없기 때문에 onCreate로 외부 저장 장치 (pr pareTrained File IfNotExist 방법) 로 복사합니다.멋있지는 않지만 일단 이렇게 하면 돼.
또한, "traineddata는tessdata 아래에 놓여 있다", "init에 전달된 디렉터리는tessdata의 한 위에 지정된다"는 규칙이 있다.traineddata를tessdata 이외의 곳에 두어도 다음과 같은 Exception이 발생한다.
java.lang.IllegalArgumentException: Data path must contain subfolder tessdata!
※ javadoc로 적혀 있다. 조금만 더 가늘게 적으면 init에 건네주는 목록은 빗장으로 끝난다.그래서 엑스토라지.PATH는 이렇게 쓰지만 사선을 쓰지 않아도 아무런 영향이 없다.도서관 쪽에서 보충했나봐요.
실행
Jolly Good.
다음은요?
각양각색의 의문이 있다.
Reference
이 문제에 관하여(Android의 OCR 라이브러리tess-two(실습 편 1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nunocky/items/35770ffc719d55ba0078텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)