Artificial Intelligence/computer vision

OCR(Optical Charater Recognition)이란 무엇인가?

inee0727 2022. 6. 27. 21:56

 

OCR이란?

Optical Character Recognition의 줄임말로, 이미지 내의 글자를 자동으로 인식하는 인공지능 기술을 의미한다. 예를 들어, 카메라를 통해 자동차 번호를 인식한다거나, 신분증에서 개인 정보 텍스트를 인식하는 등의 기술이다. 최근 OCR은 딥러닝으로 인해 큰 발전을 이루고 있다.


전통적인 OCR 파이프라인

 

OCR은 처음부터 딥러닝을 기반으로 개발된 것은 아니다. 초기 OCR의 파이프라인은 위 그림과 같다. 텍스트 라인을 찾는 모듈, 텍스트를 단어로 나누는 모듈과 등 여러 모듈이 사용된다. 이것은 딥러닝을 사용한 모델과 비교하면 매우 복잡한 것이다.

 


딥러닝과 OCR

딥러닝의 발전은 OCR에 큰 영향을 끼쳤다. 딥러닝의 핵심이라고 할 수 있는 CNN(Convolutional neural networks)에서 그 이유를 찾을 수 있다. CNN에서는 이미지의 특징을 추출하여 분류하는데, 이를 통해 기존의 전통적인 OCR 구조에서 개발자가 직접 설정해 주어야 했던 feature 인식 모듈은 더 이상 필요하지 않게 된 것이다. 그 결과, 현재의 OCR은 딥러닝을 적용한 OCR은 글자의 영역을 탐지하는 모델(Text Detection Model)과 해당 영역에서 글자를 인식하는 모델(Text Recognition Model) 두 가지 단계로 구성되어 있다. 이처럼 OCR의 과정을 두 단계로 나누는 이유는 데이터를 다양하게 활용하여 원활한 학습이 가능하고, 자원의 효율성과 언어별 정확도 등을 향상시킬 수 있기 때문이다.

1. Pre-Processing

컴퓨터는 인간과 다르게 이미지와 글자를 구분하여 인식하지 않는다. 단지 비슷한 색의 픽셀이 연속으로 이어져 있다는 것을 감지할 뿐이다. 이러한 특성 때문에 컴퓨터가 아날로그 문서를 인식하는 과정에서 음영의 손상, 왜곡 등으로 인해 텍스트 인식률이 아주 낮아지는 경우가 종종 발생한다. 이 문제는 전처리 과정을 거치면 어느 정도 해결할 수 있다. 위 그림에서는 전처리 방법 중 하나인 히스토그램 정규화를 통해 이미지의 명암을 재분배 하여 이미지의 구성요소를 정화하게 구분할 수 있도록 만들었다. 이 외에도 여러 전처리 방법을 통하여 텍스트 인식률을 향상시킬 수 있다.

 

2. Text Detection Model

 

전처리 다음에는 이미지를 CNN에 넣는다. CNN을 거치면 feature가 추출되는데, 이 때 얻어지는 데이터는 텍스트의 영역과 각도다. 먼저 텍스트 영역의 각도가 수평이 되도록 각도를 조절한 뒤, 이미지를 텍스트 단위로 분할한다.

 

3. Text Recognition Model

텍스트를 분할하고 나면 그것이 어떤 글자인지 인식하는 과정이 필요하다. 이를 위해 이미지를 CNN에 입력하여 이미지가 어떤 글자인지 파악할 수 있도록 학습시킨다(이 때 사용되는 CNN은 Detection과 다른 CNN이다). 충분히 학습되었다면 위 그림과 같이 각각의 문자 'H e l l o W o r l d'를 출력할 수 있을 것이다. 필기체와 같이 불규칙할수록 학습이 어렵고, 특정 글씨체와 같은 규격이 있다면 학습이 수월할 것이다.


한계

인간은 문장을 이해할 때 문맥을 바탕으로 그 의미를 파악한다. 하지만 기계는 이미지를 인식하는 것만으로 애매한 문장의 의미를 이해하는 것이 불가능하다. 예를 들어, 사람은 위의 문장이 커플과 솔로에게 각각 다른 의미로 쓰인다는 것을 파악할 수 있지만 기계는 이것이 불가능하다. 따라서 딥러닝 OCR 모델을 적용하기 전에 문맥을 학습시키는 방법으로 문제를 보완하기도 한다.

 

 

 

출처: https://m.blog.naver.com/rdproject/222113275331