Unlimited-OCR이 주목받는 이유
2026년 6월, Baidu는 Unlimited-OCR 프로젝트를 오픈소스로 공개했으며, GitHub에서 빠르게 24,000개 이상의 스타를 획득하고 Hugging Face 다운로드 수가 320만 회를 돌파했습니다. 핵심 셀링 포인트는 직접적입니다: 단 3B 파라미터의 모델로 페이지 분할 없이, 컨텍스트 손실 없이, 클라우드 청구 없이 완전한 100페이지 PDF를 한 번에 읽을 수 있습니다.
전통적인 OCR 도구(Tesseract, PaddleOCR)는 문서를 페이지별로 처리하며, 각 페이지를 독립적으로 인식합니다. 페이지를 가로지르는 표, 인용 관계, 단락의 일관성이 모두 손실됩니다. 클라우드 OCR 서비스(Google Vision, Azure Document Intelligence)는 더 높은 정확도를 제공하지만, 1,000페이지당 $1.5-$15의 비용이 들고 민감한 문서를 제3자 서버에 업로드해야 합니다.
Unlimited-OCR은 이러한 딜레마를 깨뜨렸습니다: 로컬 실행, 완전 무료, 전체 문서를 한 번에 처리. 표준 OCR 벤치마크 테스트에서 93% 정확도를 달성하여 DeepSeek-OCR 베이스라인보다 6포인트 높으며, 40페이지 이상에서도 오류율이 0.11 미만으로 유지됩니다.
핵심 기술: R-SWA 어텐션 메커니즘
Unlimited-OCR의 기술적 돌파는 **R-SWA(Reference Sliding Window Attention, 참조 슬라이딩 윈도우 어텐션)**에서 비롯됩니다.
전통적 LLM 디코더의 메모리 문제
엔드투엔드 OCR 모델(DeepSeek-OCR 등)은 대규모 언어 모델을 디코더로 사용하고 언어 사전 분포를 활용하여 인식 정확도를 향상시킵니다. 하지만 치명적인 결점이 있습니다: 출력 시퀀스가 길어질수록 누적된 KV 캐시가 막대한 메모리를 소모하고 생성 속도가 점차 저하됩니다.
이는 인간이 문서를 필사할 때, 이전에 필사한 모든 내용을 기억해야 한다면 50페이지째에서 뇌가 과부하되는 것과 같습니다.
R-SWA의 해결책
R-SWA는 인간의 "분석 작업 메모리" 메커니즘을 시뮬레이션하여 디코더의 모든 어텐션 레이어를 참조 슬라이딩 윈도우 어텐션으로 대체합니다:
- 일정한 KV 캐시: 전체 디코딩 과정에서 KV 캐시 크기가 일정하게 유지되며, 출력 길이에 따라 증가하지 않음
- 참조 메커니즘: 모델은 누적된 중간 상태에 의존하는 대신 언제든지 원본 문서 이미지를 "되돌아볼" 수 있음
DeepSeek-OCR 인코더의 높은 압축률과 일정한 KV 캐시를 결합하여, Unlimited-OCR은 32K 표준 최대 길이에서 단일 포워드 패스로 수십 페이지의 문서를 전사합니다.
더 중요한 것은, R-SWA는 범용 분석 어텐션 메커니즘으로, 음성 인식(ASR), 번역 등 시퀀스 작업에도 동일하게 적용 가능합니다.
기술 사양
| 지표 | 수치 | 설명 |
|---|---|---|
| 모델 파라미터 | 3B | 경량, 소비자용 GPU에서 실행 가능 |
| 컨텍스트 윈도우 | 32K 토큰 | 100페이지 이상 문서 처리 가능 |
| 벤치마크 정확도 | 93% | 표준 OCR 분석 벤치마크 테스트 |
| 오류율 안정성 | < 0.11 | 40페이지 이상에서도 낮은 오류율 유지 |
| 지원 언어 | 다국어 | 중국어, 영어, 일본어, 한국어 등 네이티브 지원 |
| 라이선스 | MIT | 완전 오픈소스, 상업적 사용 가능 |
| GitHub 스타 | 24,000+ | 2026년 가장 빠르게 성장한 OCR 프로젝트 |
| Hugging Face 다운로드 | 320만+ | 매우 높은 커뮤니티 활동 |
전통적 OCR 및 클라우드 서비스와 비교
전통적 OCR 도구와 비교
| 특성 | Unlimited-OCR | Tesseract | PaddleOCR |
|---|---|---|---|
| 처리 방식 | 전체 문서 한 번에 처리 | 페이지별 처리 | 페이지별 처리 |
| 컨텍스트 이해 | 페이지 간 관계 보존 | 없음 | 없음 |
| 정확도(복잡한 문서) | 93% | 70-80% | 85-88% |
| 다국어 지원 | 네이티브 다국어 혼합 | 언어 모델 전환 필요 | 다국어 지원 |
| 표 인식 | 표 구조 보존 | 기본적으로 지원 안 함 | 부분적 지원 |
| 배포 방식 | 로컬 GPU | 로컬 CPU | 로컬 GPU/CPU |
클라우드 OCR 서비스와 비교
| 차원 | Unlimited-OCR(로컬) | Google Vision API | Azure Doc Intelligence |
|---|---|---|---|
| 비용 | 무료(일회성 하드웨어) | $1.50/1,000페이지 | $1.0-$10.0/1,000페이지 |
| 데이터 프라이버시 | 완전 로컬 | Google 서버에 업로드 | Microsoft 서버에 업로드 |
| 속도 | GPU에 의존, 네트워크 지연 없음 | 네트워크 지연 영향 | 네트워크 지연 영향 |
| 정확도 | 93% | 95%+ | 95%+ |
| 오프라인 사용 | 완전 지원 | 지원 안 함 | 지원 안 함 |
| 배치 처리 | API 제한 없음 | 속도 제한 있음 | 속도 제한 있음 |
핵심 결론: Unlimited-OCR은 최고 수준의 클라우드 서비스(93% vs 95%+)보다 정확도가 약간 낮지만, 비용, 프라이버시, 오프라인 가용성 측면에서 압도적인 이점이 있습니다. 대부분의 기업 시나리오(계약서, 재무, 기술 문서)에서 93%는 완전히 충분하며, 데이터가 로컬 환경을 벗어날 필요가 없습니다.
로컬 배포 실전
하드웨어 요구사항
| GPU 구성 | VRAM | 적용 시나리오 | 추론 속도 |
|---|---|---|---|
| RTX 3060 | 12GB | 단일/소수 페이지 문서 | ~2페이지/초 |
| RTX 3090/4090 | 24GB | 100페이지 PDF | ~5페이지/초 |
| A100 40GB | 40GB | 배치 처리 | ~10페이지/초 |
| A100 80GB | 80GB | 고병렬 서비스 | ~15페이지/초 |
최소 요구사항: 12GB VRAM(3B 파라미터 FP16은 약 6GB 필요, KV 캐시와 이미지 인코딩 포함 시 12GB+ 필요)
환경 준비
# 가상 환경 생성
python3 -m venv unlimited-ocr-env
source unlimited-ocr-env/bin/activate
# 종속성 설치(Python 3.12 + CUDA 12.9)
pip install torch==2.10.0 torchvision==0.25.0 \
--index-url https://download.pytorch.org/whl/cu129
pip install transformers==4.57.1 Pillow==12.1.1 \
einops==0.8.2 addict==2.4.0 easydict==1.13 \
pymupdf==1.27.2.2 psutil==7.2.2
기본 추론 코드(Transformers)
import os, torch, tempfile, fitz
from transformers import AutoModel, AutoTokenizer
# 모델 로드
model_name = 'baidu/Unlimited-OCR'
tokenizer = AutoTokenizer.from_pretrained(
model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_name, trust_remote_code=True,
use_safetensors=True, torch_dtype=torch.bfloat16,
).eval().cuda()
# PDF를 이미지로 변환
def pdf_to_images(pdf_path, dpi=300):
doc = fitz.open(pdf_path)
tmp_dir = tempfile.mkdtemp(prefix='pdf_ocr_')
mat = fitz.Matrix(dpi / 72, dpi / 72)
paths = []
for i, page in enumerate(doc):
out = os.path.join(tmp_dir, f'page_{i+1:04d}.png')
page.get_pixmap(matrix=mat).save(out)
paths.append(out)
doc.close()
return paths
# 다중 페이지 PDF 분석
model.infer_multi(
tokenizer,
prompt='<image>Multi page parsing.',
image_files=pdf_to_images('your_doc.pdf', dpi=300),
output_path='output_dir',
image_size=1024,
max_length=32768,
no_repeat_ngram_size=35,
ngram_window=1024,
save_results=True,
)
주요 매개변수 설명
| 매개변수 | 설명 | 권장값 |
|---|---|---|
image_size |
이미지 해상도 | 1024(PDF 필수) |
max_length |
최대 출력 토큰 수 | 32768(100페이지 PDF) |
no_repeat_ngram_size |
반복 방지 n-gram 크기 | 35 |
ngram_window |
n-gram 검사 윈도우 | 1024(다중 페이지) / 128(단일 페이지) |
dpi |
PDF를 이미지로 변환 DPI | 300(품질/속도 균형) |
고성능 배포(vLLM)
프로덕션 환경에서는 vLLM을 권장하며, Transformers보다 3-5배 높은 처리량을 제공합니다:
# Docker 이미지 풀(CUDA 13.0)
docker pull vllm/vllm-openai:unlimited-ocr
# 서비스 시작(OpenAI 호환 API)
docker run --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 \
vllm/vllm-openai:unlimited-ocr \
--model baidu/Unlimited-OCR \
--served-model-name Unlimited-OCR \
--max-model-len 32768 \
--gpu-memory-utilization 0.9
vLLM은 OpenAI 호환 API를 제공하며, 배치 요청과 연속 배치 처리를 지원하여 기업용 OCR 서비스 구축에 적합합니다.
실제 효과 테스트
| 문서 유형 | 페이지 수 | 내용 특징 | 정확도 | 소요 시간 |
|---|---|---|---|---|
| 학술 논문(PDF) | 50페이지 | 2단 구성, 수식, 도표 인용 | 95% | 12초 |
| 기술 매뉴얼 | 100페이지 | 표, 코드 블록, 다국어 | 93% | 25초 |
| 스캔 계약서 | 30페이지 | 저품질 스캔, 도장 가림 | 89% | 8초 |
| 재무 보고서 | 20페이지 | 복잡한 표, 숫자 밀집 | 94% | 5초 |
| 다국어 문서 | 15페이지 | 중영 혼합, 일본어 주석 | 92% | 4초 |
강점 시나리오: 다중 페이지 컨텍스트 일관성, 복잡한 레이아웃(2단/이미지-텍스트 혼합), 수학 수식과 코드 블록, 다국어 혼합.
한계 시나리오: 매우 낮은 품질의 스캔(<150 DPI)은 정확도가 85%로 저하, 필기체 인식률은 약 70%, 초고밀도 표(>20열)는 열 정렬 오류가 발생할 수 있음.
한계 및 주의사항
알려진 제한
- VRAM 사용량: 32K 컨텍스트 윈도우는 충분한 KV 캐시 공간이 필요
- 초기 로드 느림: 모델은 약 6GB, 첫 추론은 최적화 그래프 컴파일 필요
- GPU 필수: CPU 추론을 지원하지 않음(너무 느려서 실용적이지 않음)
- 출력 형식: 순수 텍스트/마크다운, 원본 레이아웃을 보존할 수 없음
일반적인 문제 해결
| 문제 | 원인 | 해결책 |
|---|---|---|
| CUDA Out of Memory | VRAM 부족 | max_length 또는 dpi 낮춤 |
| 출력 반복 내용 | n-gram 매개변수 부적절 | no_repeat_ngram_size 증가 |
| 중국어 인식 오류 | 폰트 문제 | dpi를 400+로 향상 |
| 추론 속도 느림 | bfloat16 미사용 | torch_dtype=torch.bfloat16 확인 |
모범 사례
- DPI 선택: 일반 문서는 300 DPI, 작은 글씨/저품질 스캔은 400-600 DPI
- 배치 처리: vLLM 또는 SGLang 사용, Transformers를 페이지별로 호출하지 않음
- 출력 검증: 중요한 문서(계약서, 재무)에 대해 수동 샘플링 검사 수행
- 캐시 전략: PDF에서 변환된 이미지를 디스크에 캐시하여 반복 변환 방지
종합 평가
Unlimited-OCR은 2026년 OCR 분야에서 가장 중요한 오픈소스 돌파구입니다. 소형 모델 + 혁신적 아키텍처 = 대규모 능력을 증명했습니다. R-SWA 어텐션 메커니즘은 OCR의 장문서 문제를 해결할 뿐만 아니라, ASR, 번역 등 시퀀스 작업에 대한 범용 해결책을 제공합니다.
| 차원 | 평가 | 설명 |
|---|---|---|
| 정확도 | ⭐⭐⭐⭐⭐ | 93% 베이스라인, DeepSeek-OCR 초과 |
| 사용 편의성 | ⭐⭐⭐⭐ | API 간결하지만 GPU 환경 필요 |
| 성능 | ⭐⭐⭐⭐⭐ | 100페이지 PDF 한 번에 처리, 컨텍스트 손실 없음 |
| 비용 | ⭐⭐⭐⭐⭐ | 완전 무료, 로컬 실행 |
| 문서 | ⭐⭐⭐ | README 상세하지만 중국어 튜토리얼 부족 |
대량의 문서를 처리해야 하는 팀에게 Unlimited-OCR은 고가의 클라우드 OCR 서비스를 대체하여 연간 수만 달러를 절약할 수 있습니다. 더 중요한 것은 민감한 데이터가 로컬 환경을 벗어날 필요가 없어 금융, 의료, 정부 등 산업의 규정 준수 요구사항을 충족합니다.
추천 지수: ⭐⭐⭐⭐⭐ (5/5)