OCR 정의 조사 내용

들어갈 내용
어떤 모델에서 어떻게 구현했는지
무엇을 어떻게 인식하는지
전처리 필요 + 문자 검출 무슨 모델 통해서 할지 (text-recognition)

OCR 정의

OCR(Optical Character Recognition, 광학 문자 인식)은 이미지 내에서 텍스트의 위치를 찾고 인식하여 기계가 읽을 수 있는 인코딩된 텍스트로 변환하는 기술이다.
Optical character recognition, 광학 문자인식
이미지에서 글자 위치를 찾고 인식하여 컴퓨터 텍스트로 변환하는 기술
텍스트 이미지를 기계가 읽을 수 있는 텍스트 포맷으로 변환하는 과정
이미지를 텍스트 문서로 변환하여 내용을 텍스트 데이터로 저장
광학 문자 인식(OCR)은 이미지에서 입력되거나 필기 또는 인쇄된 텍스트를 머신으로 인코딩된 텍스트로 변환하는 데 사용되는 기본 기술
사람이 쓰거나 기계로 인쇄한 문자의 영상을 이미지 스캐너로 획득하여 기계가 읽을 수 있는 문자로 변환하는 것

모델과 구현

우리 서비스는 OCR 기술 구현을 위해 EasyOCR을 채택하였다. 2020년에 출시되어 현재까지도 업데이트 되고 있는 EasyOCR은 문자 영역 인식과 문자 인식 기능을 모두 지원하는 프레임워크이다. 해당 프레임워크는 크게 Detection과 Recognition 부분으로 나눌 수 있는데, Detection은 CLOVA AI의 CRAFT 모델로 구현되었고, Recognition은 CRNN 모델을 기반으로 특징 추출을 위한 ResNet 알고리즘, 시퀀스 레이블링을 위한 LSTM 그리고 디코딩을 위한 CTC를 이용하여 구현되었다.

EasyOCR

문자 영역 인식(Detection), 문자 인식(Recognition)을 손쉽게 수행 할 수 있도록 하는 Python 패키지
font-dependent printed character reader based on a template matching algorithm
문자 영역 인식(Detection) + 문자 인식(Recognition)기능을 모두 하는 프레임워크
2020년 출시 후 현재까지 지속적 업데이트
특징
80개 이상의 언어 지원
모든 딥러닝 부분은 PyTorch 기반
사용 가능한 네트워크
Pre-trained 모델
모델은 크게 Detection과 Recognition으로 구분
CRAFT 모델에서 전체 이미지 중 텍스트에 해당되는 부분을 잘라서 CRNN에게 전달하면 텍스트 인식 수행
Text Detection: CLOVA AI의 CRAFT
Recognition: CRNN 모델 = ResNet(특징 추출) → LSTM(시퀀스 레이블링) → CTC(디코딩)
Recognition의 training pipeline(인식 훈련 파이프라인): CLOVA AI의 deep-text-recognition-benchmark 기반 수정 버전
Greedy Decoder로 추론하여 결과 텍스트 생성
아웃풋 시퀀스에서 생성된 각각의 확률 분포에서 가장 값이 높은 토큰 선택
Beam search: Greedy Decoding과 모든 경우의 수를 고려하는 방법의 타협점, 해당 시점에서 유망한 빔의 개수만큼 (이하 K) 골라서 진행
Output으로 OCR 수행결과와 텍스트의 Bounding Box 좌표를 얻을 수 있음
한번에 여러 종류의 언어 인식 가능
회색 부분 커스텀 가능

Pororo OCR

Platform Of neuRal mOdels for natuRal language prOcessing
한국어에 좀 더 최적화, 오디오 처리도 함께 지원
Text Detection: NAVER Clova AI의 CRAFT(Character Region Awareness for Text Detection) 모델
Recognition: CLOVA AI에서 제공하는 deep-text-recognition-benchmark라는 오픈소스 프로젝트를 이용
EasyOCR에서 사용하고 있는 기본 모델과 동일한 네트워크 구조('None-VGG-BiLSTM-CTC')를 갖는 Pre-trained Model을 이용

인식 과정

EasyOCR의 인식 과정

인식 과정
1.
이미지 입력
텍스트를 추출하고자 하는 이미지를 입력
2.
이미지 전처리
Resizing, Binarization, Grayscale Conversion, Noise Reduction, Rotation 작업을 통해 이미지 전처리
3.
텍스트 인식 (Text Recognition)
a.
CRAFT 모델이 전체 이미지 중 Bounding-Box를 통해 텍스트에 해당되는 부분을 잘라서 CRNN에게 전달
b.
CRNN 모델이 전달받은 이미지에서 특징 추출, 해당 특징을 이용하여 이미지의 텍스트 시퀀스를 예측하고 텍스트로 변환
4.
텍스트 출력
모델을 통해 추출한 텍스트 데이터 반환

[AWS] OCR의 작동 방식

Naver CLOVA OCR 인식 과정

레퍼런스 출처