Deep Learning/OCR

[#00] OCR? 딥러닝을 이용해 문자 인식하기 - 개념 정리

족제비다아 2021. 3. 23. 17:27

OCR - Optical Character Recognition


 OCR은 사람이 직접 입력하지 않고 스캐너를 통해 이미지 형태로 읽어들여 데이터의 내용을 분석하고 그림 영역과 글자 영역으로 구분한 후 글자 영역의 문자들을 일반 문서 편집기에 수정, 편집이 가능한 텍스트의 형태로 변환하여 주는 자동 입력 시스템이다.

 기존에 거울이나 렌즈 등의 광학 기술을 이용한 광학 문자 인식과 스캐너 및 알고리즘에 의한 디지털 문자 인식은 별개의 영역이엇으나 최근 들어서 광학 문자 인식이라는 말이 디지털 문자 인식을 포함하는 것으로 간주되었다. (위키백과)

 

https://aicompare.medium.com/optical-character-recognition-ocr-which-solution-to-choose-cd4f829c4e5

 

OCR 과정 (Text Detection - Text Recognition)


전처리(pre-processing)

  - 글자들이 잘 보여질 수 있게 밝기나 색과 같은 영상의 메타데이터를 변화시킨다.

 

문자 검출(Text Detection)

  - 글자들이 존재하는 위치를 찾아내고 이들을 bounding box로 묶는다.

  - bounding box로 묶인 글자들은 인식 모델의 입력으로 들어간다.

  - Text Detection에서는 보통 CNN(Convolutional Neural Network)계열의 모델을 주로 쓰는 것 같다.

 

Text Detection - IC17 dataset

문자 인식(Text Recognition)

  - bounding box 안에 글자가 어떤 내용인지 알아낸다.

  - 보통 RNN(Recurrent Neural Network)계열의 모델을 주로 쓰는 것 같다.

  - 최근 들어 Attention Network도 사용

 

Text Recognition

알아두면 좋을 정보들


OCR에서 인식하는 글자는 크게 인쇄체(printed)필기체(handwritten)로 나뉜다.

 

OCR 관련 대표 학술대회: ICDAR(International Conference on Document Analysis and Recognition)

  - 여기서 Robust Reading Competition이라는 OCR 관련 대회가 2년마다 열림

  - 영어 데이터셋은 이런 곳에서 쉽게 구할 수 있다.

 

한글 데이터셋은 AI hub에서 제공하는 것을 이용하면 좋을 것 같다.(꽤나 많은 양의 데이터가 있다.)

 

내가 보고 참고한 한글 OCR 프로젝트 블로그 글 

 

OCR 관련 아이디어


OCR 관련 최근 흐름을 익히기에 2019 Naver Deview 영상과 자료를 찾아보면 도움이 많이 된다.

  - 특히 OCR 데이터셋 평가 방법에 대해 알 수 있어서 좋았다.

 

Naver Clova에서 OCR 관련 연구를 잘 진행하고 있어 해당 기술을 찾아보면 좋을 것 같다.

  [Text Detection] - CRAFT

  [Text Recognition] - deep-text-recognition-benchmark

  [OCR evaluation method] - CLEval

 

CRAFT 를 이용한 Text Detection 예시 결과


IC17-MLT pretrained 모델을 이용하였다. 데이터셋 안에 한국어가 포함되어 있어서 쉽게 검출할 수 있었다. 

 

CRAFT example