05_CV(Computer Vision)/OCR

인식기

jiniby 2025. 3. 24. 13:50
728x90

OCR 구조에서의 인식기(Recognizer)

OCR의 핵심 구성 요소는 **검출기(Detector)**와 **인식기(Recognizer)**로 구분됩니다

구성요소 역할 출력 예시
검출기(Detector) 글자 영역(bbox)을 찾음 좌표 (bounding box)
인식기(Recognizer) 글자가 있는 영역에서 텍스트 추출 "HELLO" 같은 텍스트

 

01. 인식기(Recognizer)에 사용되는 데이터셋

인식기는 다양한 형태의 글자 이미지를 정확히 인식해야 합니다.
다음과 같은 유형의 데이터를 활용하여 인식기를 학습시킵니다.

📌 데이터 종류

유형 특징예시  데이터
문서 (Documents) 스캔된 종이 문서, 정형적 계약서, 서류
장면 (Scene) 간판, 표지판 등 복잡한 배경 거리 사진, 간판 사진
손글씨 (Handwritten) 사람이 직접 쓴 글씨 필기 메모, 노트

📌 데이터의 어려운 경우 (Hard Cases)

- 휘어진(Curved) 글자

- 회전된(Rotated) 글자

- 노이즈가 많은(어둡고 흐릿한) 이미지

 

📌 텍스트 배열 유형

Regular: 가로 방향, 균일한 간격으로 배열됨 (쉬움)

Irregular: 회전되거나 휘어진 텍스트 (어려움)

📌 Irregular 텍스트의 변환(Transformation)

휘어진 텍스트를 정상적(Regular) 형태로 보정하여 인식률을 높임.


02. 인식기(Recognizer)의 구조

OCR 인식기 구조는 일반적으로 다음과 같이 두 가지 모듈로 구성됩니다.

📌 Vision Encoder + Text Decoder 구조

모듈 역할
Vision Encoder 이미지에서 의미 있는 특징(Feature) 추출
Text Decoder 추출된 특징을 기반으로 텍스트로 변환

🔖 예시 흐름

이미지 → Vision Encoder → Feature 추출 → Text Decoder → "TEXT" 출력


03. Scene Text Recognition (STR)의 구조

실제 **장면 이미지(Scene Image)**에서 텍스트를 인식할 때는 4단계로 구성됩니다.

1) Transformation Stage (변형 단계)

- 입력 이미지의 왜곡을 보정하여 모델이 인식하기 쉬운 형태로 변환 (정규화)

 

2) Feature Extraction Stage (특징 추출 단계)

- CNN 기반 네트워크가 이미지에서 특징(Feature)을 추출하는 단계

 

3) Sequence Modeling Stage (순차 모델링 단계)

- CNN으로 얻은 Feature 간의 순차적 관계를 파악

- RNN, Transformer 등을 활용해 글자 간 맥락(Context) 파악 가능

 

\4) Prediction Stage (예측 단계)

- 최종적으로 추출된 맥락 정보를 기반으로 텍스트를 예측

- 글자 인식의 최종 출력 단계 ("HELLO" 등 텍스트 형태로 결과 도출)


04. 인식기 모델의 두 가지 접근 방법

 
유형 특징예시 모델
Two-Stage Ensemble Model Vision 모듈과 Language 모듈이 분리되어 있음 ABINet
Unified STR Model Vision 모듈과 Language 모듈이 처음부터 결합된 구조 PARSeq

🔖 두 접근법의 공통점

둘 다 Vision Encoder + Text Decoder 구조를 기본으로 함


05. OCR 오픈소스 활용

대표적인 OCR 오픈소스 라이브러리 두 가지:

📌 ① EasyOCR

80개 이상의 다양한 언어 지원
즉시 사용할 수 있는 오픈소스 OCR 도구
GitHub: EasyOCR

📌 ② Tesseract

높은 정확도의 유명한 OCR 엔진
116개 이상의 언어를 지원
문서 및 장면 OCR 모두에 활용 가능
GitHub: Tesseract

06. 인식기 과제의 어려운 점 (Challenging Points)

  • Labeled 데이터 부족
    → Synthetic (합성) 데이터를 통해 보완 (MJSynth, SynthText)
  • Irregular(휘어지고 회전된) 텍스트
    → Transformation 기술을 통해 해결 가능
  • 수평(Horizontal) vs 수직(Vertical) 텍스트
    • 수평(Horizontal): 일반적, 왼쪽에서 오른쪽
    • 수직(Vertical): 주로 한중일 언어에서 사용, 위에서 아래로
  • 텍스트 방향 혼동 가능성
    → 방향성을 정확히 파악하는 기술 필요

 

OCR 인식기(Recognizer)
├── 사용 데이터 유형
│    ├── Documents, Scene, Handwritten
│    └── Regular vs Irregular (Transformation 필요)
│
├── Vision Encoder + Text Decoder
│    ├── Vision Encoder: 이미지 특징 추출
│    └── Text Decoder: 특징을 텍스트로 변환
│
├── Scene Text Recognition 구조
│    ├── Transformation (왜곡 보정)
│    ├── Feature Extraction (CNN 기반 특징 추출)
│    ├── Sequence Modeling (특징 간 맥락 파악)
│    └── Prediction (최종 텍스트 출력)
│
└── OCR 오픈소스
     ├── EasyOCR (다국어 지원, 즉시 사용 가능)
     └── Tesseract (정확성 높음, 문서·장면 모두 가능)
728x90

'05_CV(Computer Vision) > OCR' 카테고리의 다른 글

Parseq  (0) 2025.03.26
TRBA  (0) 2025.03.26
성능 높이기  (0) 2025.03.24
검출기 _ CRAFT  (0) 2025.03.24
검출기  (0) 2025.03.24