OCR(Optical Character Recognition)

calico·2025년 10월 27일

Computer Science

목록 보기
41/51

https://dev.gmarket.com/58

1. OCR(Optical Character Recognition)


  • 이미지나 스캔 문서에서 문자 영역을 인식하고, 해당 문자를 디지털 텍스트로 변환하는 기술.

  • 출발점: 초기에는 손글씨·인쇄물 → 스캐너로 이미지화 → 문자 인식.

  • 발전: 스마트폰·디지털 카메라·이미지 편집 도구 등 다양한 디지털 이미지 속 텍스트 인식으로 확장.

  • 최근 경향: 딥러닝 기반 OCR 모델이 주류, 모바일 환경에서도 높은 인식률 제공.



2. OCR의 핵심 기능


  • OCR은 크게 두 단계로 나뉩니다.
  1. Text Region Detection

    • 이미지 내에서 텍스트가 있는 영역을 찾는 과정

    • 예: 사진 속 간판, 표의 셀, 문서의 문단 위치

  2. Text Recognition

    • 해당 영역의 문자를 실제 문자열로 변환하는 과정

    • 예: "SALE 50%" → 문자열 "SALE 50%"

기술적 특징

  • 최근 대부분 Deep Learning 기반 모델 사용

  • 학습 데이터: 이미지 + 텍스트 위치 좌표 + 정답 문자열

  • 대표 모델: CRNN, EAST, CRAFT, TrOCR, Donut 등



3. OCR의 발전 역사


  • 컴퓨터 이전: 시각 기호를 문자로 대응시키려는 개념 존재

  • 컴퓨터 발명 이후: 디지털 이미지 변환·표현 기술 연구 시작

  • 1990년대: 디지털 카메라·이미지 센서 발전 → 이미지 데이터 폭증

  • 2000년대: 기계학습 기반 OCR 연구 활성화

  • 2010년 이후: 딥러닝 기반 OCR 모델 등장 → 인식률·속도 비약적 향상

  • 현재: 모바일·웹 서비스에 OCR 내장, 실시간 인식 가능



4. 기업 적용 사례 (지마켓 예시)


1) 직거래 사기 의심 상품 자동 탐지


  • 문제: 상품 상세 이미지에 사기 유도 문구 포함 → 사람이 일일이 확인 불가

  • 해결: OCR로 이미지 내 텍스트 추출 → 의심 문구 필터링 → 사기 예방



2) 시각 장애인 서비스 접근성 개선


  • 문제: 상품 상세 정보가 이미지로만 제공 → TTS로 읽을 수 없음

  • 해결: OCR로 이미지 내 텍스트 추출 → 문장 구조화 → TTS로 제공

  • 활용 시나리오

    • OCR + TTS: 이미지 속 텍스트를 OCR로 추출 → TTS로 읽어주기
      (시각 장애인 접근성 개선)

    • 문서 검색 + TTS: RAG로 문서 검색 → 요약 결과를 음성 안내

    • 다국어 안내: 번역 + TTS → 다국어 음성 안내 서비스

    • 콜센터 자동응답: RAG로 답변 생성 → TTS로 고객에게 전달

효과

  • 외부 OCR API 비용 절감 (내재화)

  • 서비스 맞춤형 부가 기능 추가 가능

  • 데이터 보안 강화 (외부 전송 불필요)



5. 멀티모달 RAG에서 OCR 활용


  • 멀티모달 RAG는 텍스트 기반 검색을 하기 때문에, 이미지·PDF·스캔 문서·표·차트에 포함된 글자를 먼저 OCR로 추출해야 합니다.

처리 흐름


[이미지 / PDF / 스캔 문서]
   ↓ (OCR: Tesseract, EasyOCR, AWS Textract 등)
[텍스트 추출]
   ↓ (LLM 요약/정제)
[텍스트 임베딩 변환]
   ↓ (Vector DB 저장)



6. Python OCR 예시


Tesseract OCR


import pytesseract
from PIL import Image

# 이미지 불러오기
img = Image.open("scan_page.jpg")

# OCR 실행 (한국어: 'kor')
text = pytesseract.image_to_string(img, lang='kor')

print(text)



EasyOCR


import easyocr

reader = easyocr.Reader(['ko', 'en'])  # 한국어 + 영어 지원
result = reader.readtext("chart.png")

for bbox, text, prob in result:
    print(f"인식 텍스트: {text} (정확도: {prob:.2f})")



7. 실무 적용 팁


  • 전처리: 해상도 개선, 노이즈 제거, 대비 조정 → 인식률 향상

  • 레이아웃 보존: 표·폼은 구조 정보 유지가 중요

    • AWS Textract, Azure Form Recognizer 추천
  • 다국어 처리: OCR 엔진에 언어 옵션 지정 (lang='kor+eng')

  • 후처리: OCR 결과를 LLM에 넣어 오타·형식 보정 → 검색 품질 향상

  • 메타데이터 저장: OCR 추출 위치(좌표), 페이지 번호를 함께 저장 → 재검증 가능



profile
개인 블로그

0개의 댓글