OCR vs VLM: 왜 두 가지가 모두 필요한가 (그리고 하이브리드 접근 방식이 승리하는 이유)
Source: Dev.to
죄송합니다만, 번역하려는 전체 텍스트를 제공해 주시면 해당 내용을 한국어로 번역해 드릴 수 있습니다. 현재는 링크만 제공되어 있어 실제 기사 내용에 접근할 수 없습니다. 번역이 필요한 본문을 복사해서 보내 주시면 바로 도와드리겠습니다.
Source: …
Document Processing: OCR + Vision Language Models
문서 처리는 수년간 이진 선택에 갇혀 있었습니다: 전통적인 OCR을 사용해 속도와 신뢰성을 확보하거나, AI 비전 모델을 사용해 이해력을 높이는 것. 업계는 이를 경쟁 관계로 보았지만, 그 프레이밍은 잘못되었습니다.
오늘날 최고의 문서 처리 시스템은 두 가지를 결합합니다.
- 전통적인 OCR은 뛰어난 점, 즉 높은 정확도로 원시 텍스트를 최소한의 계산 비용으로 추출하는 일을 담당합니다.
- **Vision‑Language Models (VLMs)**은 OCR이 할 수 없는 레이아웃 이해, 스타일 감지, 문서 구조 재구성을 담당합니다.
이것은 경쟁이 아니라 스택입니다.
1. Traditional OCR
광학 문자 인식(OCR)은 1950년대부터 존재해 왔습니다. Tesseract와 같은 최신 OCR 엔진이나 클라우드 기반 API는 한 가지 특정 작업, 즉 픽셀을 문자로 변환하는 데 놀라울 정도로 뛰어납니다.
전통적인 OCR 엔진에 스캔된 문서를 넣으면 여러 단계가 수행됩니다:
- 이진화 – 텍스트를 분리하기 위해 이미지를 흑백으로 변환합니다.
- 레이아웃 분석 – 텍스트 영역과 이미지 영역을 구분합니다.
- 줄 및 단어 분할 – 텍스트를 처리 가능한 단위로 나눕니다.
- 문자 인식 – 훈련된 모델을 사용해 글리프를 문자와 매핑합니다.
- 후처리 – 언어 모델을 적용해 인식 오류를 수정합니다.
출력은 텍스트 스트림(때로는 경계 상자와 기본 서식 힌트가 포함)입니다.
Typical OCR output structure
ocr_result = {
"text": "Invoice #12345\nDate: 2024-01-15\nTotal: $1,250.00",
"confidence": 0.94,
"blocks": [
{"text": "Invoice #12345", "bbox": [100, 50, 300, 80]},
{"text": "Date: 2024-01-15", "bbox": [100, 90, 280, 120]},
{"text": "Total: $1,250.00", "bbox": [100, 130, 280, 160]}
]
}
이는 깨끗한 스캔, 단순 레이아웃, 텍스트 중심 콘텐츠와 같은 직관적인 문서에 잘 작동합니다.
Fundamental blind spots of OCR
| OCR가 놓치는 것 | 왜 중요한가 |
|---|---|
| 타이포그래피 및 스타일 – 예: 기업 파란색 24 pt 굵은 글씨 “Introduction”. | 시각적 스타일 정보가 없습니다. |
| 공간적 관계 – 다중 컬럼 흐름이 종종 뒤섞입니다. | 읽기 순서가 잘못됩니다. |
| 표 – 셀들이 일렬 텍스트로 평탄화됩니다. | 구조를 추측해야 하는데, 대부분 틀립니다. |
| 헤더 및 푸터 – 페이지 헤더가 중복된 콘텐츠가 됩니다. | 추출된 텍스트에 잡음이 섞입니다. |
| 이미지 및 도표 – 무시되거나 위치·캡션 같은 맥락이 부족합니다. | 시각 정보가 누락됩니다. |
| 섹션 계층 – 장과 절 제목을 구분하지 못합니다. | 개요가 사라집니다. |
그 결과는 평면 텍스트 파일이며, 모든 문서 의미가 사라집니다. 간단한 검색 인덱싱에는 충분할 수 있지만, 문서 재구성에는 쓸모가 없습니다.
2. Vision‑Language Models (VLMs)
VLM은 근본적으로 다른 접근 방식을 취합니다. 텍스트를 문자 시퀀스로 처리하는 대신, 전체 페이지를 이미지로 인식하고 시각적 이해를 바탕으로 구조화된 출력을 생성합니다.
VLM은 인간이 문서를 보는 방식과 같습니다:
- 페이지 상단의 큰 굵은 텍스트가 제목임을 인식합니다.
- 테두리가 있는 격자를 표로 이해합니다.
- 푸터에 있는 페이지 번호는 본문 내용에 포함되지 않아야 함을 감지합니다.
VLM‑style structured output
vlm_result = {
"title": "Q4 Financial Report",
"sections": [
{
"heading": "Executive Summary",
"level": 1,
"content": "Revenue increased by 23% year-over-year..."
},
{
"heading": "Regional Breakdown",
"level": 2,
"table": {
"headers": ["Region", "Revenue", "Growth"],
"rows": [
["North America", "$2.1M", "+18%"],
["Europe", "$1.8M", "+27%"],
["Asia Pacific", "$0.9M", "+31%"]
]
}
}
]
}
{
"document": {
"title": "Annual Financial Report",
"author": "Finance Department",
"sections": [
{
"heading": "Executive Summary",
"content": "The company performed well..."
},
{
"heading": "Financial Statements",
"subsections": [
{
"heading": "Balance Sheet",
"tables": [
{
"title": "Assets",
"data": [
["Cash", "$1,000,000"],
["Inventory", "$500,000"]
]
}
]
}
]
}
]
},
"metadata": {
"page_count": 12,
"has_cover_page": True,
"contains_charts": True
}
}
VLM은 문서 구조를 이해하는 데 뛰어납니다. 다음을 식별할 수 있습니다:
- 문서 유형 (청구서, 계약서, 보고서, 편지)
- 섹션 계층 구조 및 중첩 (h1‑h6)
- 적절한 셀 관계를 가진 표
- 그림, 차트 및 그 캡션
- 읽기 순서