광학 문자 인식(OCR)

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

시작하다

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

안드로이드 예시

Android 이외의 플랫폼을 사용하거나 이미 TensorFlow Lite API 에 익숙한 경우 TF Hub 에서 모델을 다운로드할 수 있습니다.

작동 원리

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

성능 벤치마크

성능 벤치마크 수치는 여기 에 설명된 도구로 생성됩니다.

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

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

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

입력

텍스트 감지 모델은 (1, 320, 320, 3)의 4차원 float32 Tensor를 입력으로 받습니다.

텍스트 인식 모델은 (1, 31, 200, 1)의 4차원 float32 Tensor를 입력으로 받습니다.

출력

텍스트 감지 모델은 (1, 80, 80, 5) 모양의 4차원 float32 float32 (1,80, 80, 5)를 감지 점수로 반환합니다.

텍스트 인식 모델은 알파벳 목록 '0123456789abcdefghijklmnopqrstuvwxyz'에 대한 매핑 인덱스로 모양(1, 48)의 2차원 float32 텐서를 반환합니다.

제한 사항

  • 현재의 텍스트 인식 모델 은 영문자와 숫자가 합성된 데이터를 사용하여 학습되므로 영어만 지원됩니다.

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

그래서 우리는 TensorFlow Lite로 OCR을 수행하는 방법을 보여주기 위해 3개의 Google 제품 로고만 선택했습니다. 바로 사용할 수 있는 프로덕션 등급 OCR 제품을 찾고 있다면 Google ML Kit 를 고려해야 합니다. 아래에 TFLite를 사용하는 ML Kit는 대부분의 OCR 사용 사례에 충분해야 하지만 TFLite를 사용하여 고유한 OCR 솔루션을 구축하려는 경우가 있습니다. 몇 가지 예는 다음과 같습니다.

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

참고문헌