도움말 Kaggle에 TensorFlow과 그레이트 배리어 리프 (Great Barrier Reef)를 보호하기 도전에 참여

광학 문자 인식(OCR)

광학 문자 인식(OCR)은 컴퓨터 비전과 기계 학습 기술을 사용하여 이미지에서 문자를 인식하는 프로세스입니다. 이 참조 앱은 TensorFlow Lite를 사용하여 OCR을 수행하는 방법을 보여줍니다. 그것은의 조합을 사용하여 텍스트 감지 모델텍스트 인식 모델 텍스트 문자를 인식하는 OCR 파이프 라인 등을.

시작하다

TensorFlow Lite를 처음 사용하고 Android로 작업하는 경우 시작하는 데 도움이 될 수 있는 다음 예제 애플리케이션을 탐색하는 것이 좋습니다.

안드로이드 예시

당신은 안드로이드 이외의 플랫폼을 사용하고, 또는 이미 잘 알고 있다면 TensorFlow 라이트 API를 , 당신의 모델을 다운로드 할 수 있습니다 TF 허브 .

작동 방식

OCR 작업은 종종 2단계로 나뉩니다. 먼저 텍스트 감지 모델을 사용하여 가능한 텍스트 주변의 경계 상자를 감지합니다. 둘째, 처리된 경계 상자를 텍스트 인식 모델에 공급하여 경계 상자 내부의 특정 문자를 결정합니다(텍스트 인식 전에 Non-Maximal Supression, 원근 변환 등도 수행해야 함). 우리의 경우 두 모델 모두 TensorFlow Hub에서 가져온 것이며 FP16 양자화 모델입니다.

성능 벤치마크

성능 벤치 마크 번호는 설명 된 도구를 사용하여 생성됩니다 여기에 .

모델명 모델 사이즈 장치 CPU GPU
텍스트 감지 45.9MB 픽셀 4(안드로이드 10) 181.93ms* 89.77ms*
텍스트 인식 16.8MB 픽셀 4(안드로이드 10) 338.33ms* 해당 없음**

* 4개의 스레드가 사용되었습니다.

** 이 모델은 실행하기 위해 TensorFlow 작업이 필요하므로 GPU 대리자를 사용할 수 없습니다.

입력

텍스트 검색 모델은 4-D 받아 float32 입력 (1, 320, 320, 3)의 텐서.

문자 인식 모델은 4-D 받아 float32 입력 (1, 31, 200, 1)의 텐서.

출력

텍스트 검출 모델 복귀 4 D float32 바운딩 박스와 같은 모양의 텐서 (1, 80, 80, 5), 4-D는 float32 검출 점수 같은 형상 (1,80, 80, 5)의 텐서.

텍스트 인식 모델은 2-D 반환 float32 알파벳 목록 '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'에 매핑 인덱스로 (48 일) 모양의 텐서를

제한 사항

  • 현재 문자 인식 모델은 그래서 영어가 지원되는 영어 문자와 숫자와 합성 데이터를 사용하여 훈련한다.

  • 모델은 야생에서 OCR에 충분히 일반적이지 않습니다(예: 낮은 조명 조건에서 스마트폰 카메라로 찍은 임의의 이미지).

그래서 우리는 TensorFlow Lite로 OCR을 수행하는 방법을 보여주기 위해 3개의 Google 제품 로고만 선택했습니다. 당신은 즉시 사용 가능한 생산 수준의 OCR 제품을 찾고 있다면, 당신은 고려해야 구글 ML 키트 . 아래에 TFLite를 사용하는 ML Kit는 대부분의 OCR 사용 사례에 충분해야 하지만 TFLite로 고유한 OCR 솔루션을 구축하려는 경우가 있습니다. 몇 가지 예는 다음과 같습니다.

  • 사용하려는 고유한 텍스트 감지/인식 TFLite 모델이 있습니다.
  • 특별한 비즈니스 요구 사항(예: 거꾸로 된 텍스트 인식)이 있고 OCR 파이프라인을 사용자 지정해야 합니다.
  • ML Kit에서 다루지 않는 언어를 지원하려는 경우
  • 대상 사용자 기기에 Google Play 서비스가 반드시 설치되어 있어야 하는 것은 아닙니다.

참고문헌