dots OCR 오픈소스 비전-언어 모델 | PDF·이미지 문서 인식 혁신
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
dots OCR 오픈소스 비전-언어 모델 | PDF·이미지 문서 인식 혁신
dots OCR는 1.7B 매개변수 비전-언어 모델로 100개 이상 언어를 지원하며, 단일 모델에서 레이아웃 탐지와 콘텐츠 인식을 통합하여 AI 문서 인식 분야에 혁신을 가져온 오픈소스 OCR 툴입니다.
dots OCR이란? 차세대 AI 기반 문서 인식 기술
dots OCR는 레이아웃 탐지와 콘텐츠 인식을 단일 트랜스포머 기반 신경망으로 통합한 오픈소스 비전-언어 모델입니다.
기존 OCR 시스템과 달리, dots OCR는 복잡한 다중 모델 파이프라인을 제거하고 입력 프롬프트 조정만으로 작업 전환을 가능하게 합니다.
주요 특징
- 1.7B 매개변수: 효율성과 성능의 균형
- 100+ 언어 지원: 다국어 OCR 처리
- 통합 아키텍처: 단일 모델로 모든 문서 분석
- 오픈소스: MIT 라이선스로 무료 사용
dots OCR 다운로드 및 설치 가이드
시스템 요구사항
dots OCR 설치를 위해서는 Python 3.12 이상과 PyTorch가 필요합니다.
dots OCR GitHub에서 설치하기
# 가상환경 생성
conda create -n dots_ocr python=3.12
conda activate dots_ocr
# 레포지토리 클론
git clone https://github.com/rednote-hilab/dots.ocr.git
cd dots.ocr
# PyTorch 설치 (CUDA 12.8 기준)
pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 --index-url https://download.pytorch.org/whl/cu128
# dots OCR 설치
pip install -e .
Docker를 이용한 간편 설치
설치에 어려움이 있다면 Docker 이미지를 활용할 수 있습니다.
git clone https://github.com/rednote-hilab/dots.ocr.git
cd dots.ocr
pip install -e .
기존 OCR과 dots OCR의 결정적 차이점
기존 OCR 프로그램의 한계
전통적인 OCR 도구들(Tesseract, ABBYY, Adobe Acrobat 등)의 문제점
기존 OCR 처리 과정
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│이미지 │-> │전처리 │->│텍스트 │->│후처리 │
│입력 │ │단계 │ │추출 │ │수동보정 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
- 복잡한 레이아웃 처리 불가: 다단 구성, 표, 수식이 섞인 문서에서 텍스트 순서 깨짐
- 수식 인식 한계: LaTeX 수식을 이미지로만 인식하거나 완전히 무시
- 표 구조 파괴: 표의 셀 구조와 관계를 파악하지 못해 데이터가 뒤섞임
- 다국어 혼재 문제: 한 문서에 여러 언어가 있을 때 정확도 급격히 저하
dots OCR만 가능한 혁신적 기능들
1. 지능적 레이아웃 이해
# 기존 OCR: 순서 무시한 텍스트 덤프
기존_결과 = "제목 각주 본문2 본문1 표데이터..."
# dots OCR: 논리적 순서 유지
dots_결과 = {
"title": "문서 제목",
"sections": ["본문1", "본문2"],
"tables": [{"header": [...], "data": [...]}],
"footnotes": ["각주 내용"]
}
2. 실시간 작업 모드 전환
기존 OCR은 각 작업마다 다른 프로그램이나 설정이 필요했지만,
dots OCR는 단일 프롬프트로 즉시 전환
# 같은 문서, 다른 목적으로 즉시 분석 가능
# 레이아웃만 분석하고 싶을 때
prompt = "prompt_layout_only_en"
result = model.parse(document, prompt)
# 결과: 표, 제목, 단락 위치만 반환
# 텍스트만 추출하고 싶을 때
prompt = "prompt_ocr"
result = model.parse(document, prompt)
# 결과: 순수 텍스트만 반환
# 모든 것을 구조화해서 받고 싶을 때
prompt = "prompt_layout_all_en"
result = model.parse(document, prompt)
# 결과: JSON 형태로 모든 요소 구조화
dots OCR 사용법: 실전 활용 가이드
실제 사용 시나리오 비교
시나리오 1: 학술 논문 처리
기존 OCR로 논문 처리할 때
- 텍스트 추출 (Tesseract) → 수식은 빈 공간으로 남음
- 수식 별도 처리 (MathPix 등 유료 서비스) → 월 구독료 필요
- 표 구조 별도 복원 → 수동 작업 필요
- 참조 번호와 본문 연결 → 수동 매칭
dots OCR로 논문 처리할 때
# 한 번의 명령으로 모든 것이 해결
result = dots_ocr.parse(paper_pdf, "prompt_layout_all_en")
# 결과 예시
{
"title": "Deep Learning for Document Analysis",
"abstract": "본 연구는...",
"sections": [
{"heading": "1. Introduction", "content": "..."},
{"heading": "2. Related Work", "content": "..."}
],
"tables": [
{
"caption": "Table 1: Accuracy Comparison",
"data": [["Model", "Accuracy"], ["BERT", "92.3%"]]
}
],
"formulas": [
{"latex": "\\frac{\\partial L}{\\partial w}", "context": "gradient calculation"}
],
"references": ["[1] Smith et al. 2023", "[2] Jones 2022"]
}
시나리오 2: 다국어 계약서 분석
기존 OCR의 문제
- 한국어-영어 혼재 문서에서 정확도 50% 이하
- 법률 용어 오인식 빈발
- 표 형태의 조건들이 텍스트로 뒤섞임
dots OCR의 해결
# 다국어 계약서도 완벽 처리
contract_result = {
"parties": {
"ko": "주식회사 ABC",
"en": "ABC Corporation Ltd."
},
"terms": [
{"article": "제1조", "content_ko": "...", "content_en": "..."},
{"article": "Article 2", "content_ko": "...", "content_en": "..."}
],
"tables": [
{
"title": "Payment Schedule / 지급 일정",
"columns": ["Date/날짜", "Amount/금액", "Currency/통화"]
}
]
}
모델 다운로드 및 설정
python3 tools/download_model.py
export hf_model_path=./weights/DotsOCR
프롬프트별 활용 전략
프롬프트 | 용도 | 출력 형태 | 처리 속도 |
---|---|---|---|
prompt_layout_only_en | 문서 구조 분석만 | 좌표+카테고리 | 가장 빠름 |
prompt_ocr | 텍스트 추출만 | 순수 텍스트 | 빠름 |
prompt_layout_all_en | 완전 분석 | 구조화된 JSON | 정확함 |
prompt_grounding_ocr | 특정 영역 지정 | 지정 영역만 | 선택적 |
실제 업무에서 체감할 수 있는 차이점
재무제표 분석 업무
기존 방식의 고충
기존 OCR 처리 결과 (망가진 표)
회사명: ABC Corp
매출액 순이익 2023 1,000 50
2022 800 30 전년대비 +25% +67%
dots OCR 처리 결과
{
"company": "ABC Corp",
"financial_table": {
"headers": ["항목", "2023", "2022", "전년대비"],
"rows": [
["매출액", "1,000", "800", "+25%"],
["순이익", "50", "30", "+67%"]
]
}
}
실무 효과
- 기존: 표 재구성에 30분 소요 + 수동 검증 필요
- dots OCR: 3초 처리 + 바로 엑셀/DB 입력 가능
의료 차트 디지털화
기존 OCR 한계
- 의사 필기체 → 인식 불가
- 체크박스 → 텍스트로 변환되어 의미 손실
- 약물명 + 용량 → 분리되어 위험
dots OCR 장점
# 의료 차트 구조 완벽 보존
medical_chart = {
"patient_info": {
"name": "홍길동",
"age": "45",
"chart_no": "2024-001"
},
"vital_signs": {
"blood_pressure": "120/80",
"temperature": "36.5°C",
"pulse": "72bpm"
},
"medications": [
{"name": "아스피린", "dosage": "100mg", "frequency": "1일 1회"},
{"name": "메트포르민", "dosage": "500mg", "frequency": "1일 2회"}
],
"checkboxes": {
"diabetes": "checked",
"hypertension": "unchecked"
}
}
개발자가 체감하는 편의성
API 통합의 단순함
기존 OCR 솔루션 통합 시
# 여러 서비스 조합 필요
import tesseract_api
import mathpix_api # 유료
import table_detector # 별도 서비스
import layout_analyzer # 또 다른 서비스
# 각각 다른 인증, 다른 응답 형식, 다른 오류 처리
text = tesseract_api.extract_text(image)
formulas = mathpix_api.extract_math(image) # 월 100$
tables = table_detector.find_tables(image)
layout = layout_analyzer.detect_layout(image)
# 결과 통합하는 복잡한 로직 필요...
dots OCR 통합
# 단일 API로 모든 것 해결
import dots_ocr
# 원하는 분석 수준을 프롬프트로 제어
result = dots_ocr.parse(
document=my_pdf,
prompt="extract everything with structure"
)
# 모든 결과가 구조화된 형태로 한 번에 제공
print(result.text) # 텍스트
print(result.tables) # 표 데이터
print(result.formulas) # LaTeX 수식
print(result.layout) # 레이아웃 정보
성능 벤치마크: 실무 관점에서의 비교
비용 효율성 비교
기존 OCR 솔루션 비용 구조
서비스 | 월 비용 | 제한사항 | 추가 비용 |
---|---|---|---|
Adobe Acrobat Pro | $20 | 수식 인식 불가 | 별도 툴 필요 |
MathPix | $15 | 수식만 처리 | 텍스트 OCR 별도 |
Google Vision API | $1.50/1000건 | 구조화 불가 | 후처리 개발 필요 |
ABBYY FineReader | $200 (영구) | 다국어 제한 | 언어팩 추가 구매 |
dots OCR | 무료 | 제한 없음 | 추가 비용 없음 |
처리 시간 비교 (100페이지 기술문서 기준)
처리 시간 비교 (분)
┌─────────────────────────────────────────────┐
│ 기존 OCR 조합 ████████████████ 120분 │
│ Adobe Acrobat ████████████ 90분 │
│ Google Vision ██████ 45분 │
│ dots OCR ██ 15분 │
└─────────────────────────────────────────────┘
시간 단축 요인
- 통합 처리: 여러 도구 조합 불필요
- 후처리 최소화: 구조화된 결과 즉시 활용
- 재작업 제거: 높은 정확도로 수동 보정 불필요
실무자 관점의 혁신 포인트
1. 업무 프로세스 혁신
기존 문서 처리 워크플로우
기존 방식 (반나절 소요)
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ 스캔 │->│ OCR │->│ 수동 │->│ 표 재구성│->│ 검증 │
│ 문서 │ │ 텍스트 │ │ 보정 │ │ 작업 │ │ 작업 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
dots OCR 워크플로우
dots OCR 방식 (10분 소요)
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 문서 │->│ dots │->│ 최종 │
│ 업로드 │ │ OCR │ │ 결과 │
└─────────┘ └─────────┘ └─────────┘
2. 데이터 품질 혁신
정확도 비교 (복잡한 기술문서 기준)
문서 요소 | 기존 OCR | dots OCR | 개선율 |
---|---|---|---|
일반 텍스트 | 85% | 97% | +14% |
수식 | 30% | 95% | +217% |
표 구조 | 45% | 89% | +98% |
다국어 혼재 | 60% | 85% | +42% |
읽기 순서 | 70% | 92% | +31% |
3. 개발 생산성 혁신
기존 OCR 통합 개발
- 개발 기간: 2-3개월
- 유지보수: 지속적 필요 (API 변경, 버그 수정)
- 확장성: 새 기능 추가 시 추가 서비스 연동
dots OCR 통합
- 개발 기간: 1-2주
- 유지보수: 최소한 (단일 모델, 안정적 API)
- 확장성: 프롬프트 변경만으로 새 기능 추가
실무 활용 사례: 실제 업무에서의 혁신적 변화
기업 도입 사례 분석
사례 1: 대형 로펌의 계약서 분석 자동화
도입 전 상황
- 하루 500건의 계약서 검토
- 변호사 1명당 10건 처리 (수동 검토)
- 다국어 계약서는 번역사 별도 투입
dots OCR 도입 후
# 계약서 자동 분석 시스템
contract_analysis = {
"parties": ["Company A (KR)", "Company B (US)"],
"key_terms": {
"payment": "월 100만원, 매월 말일 지급",
"duration": "2024.01.01 ~ 2025.12.31",
"termination": "30일 사전 통지로 해지 가능"
},
"risk_factors": ["통화 변동 조항 없음", "지연 배상 조항 미흡"],
"compliance_check": "GDPR 준수 확인됨"
}
결과
- 처리 속도: 50배 향상 (10건 → 500건/일)
- 비용 절감: 80% (번역비 + 인건비 절약)
- 정확도: 95% (기존 수동 검토 대비)
사례 2: 제조업체의 기술문서 디지털화
해결한 문제점
- 40년간 축적된 도면과 매뉴얼 (물리적 보관)
- 엔지니어들의 자료 검색 시간 과다
- 해외 파트너사와의 기술 자료 공유 어려움
dots OCR 적용 결과
{
"document_type": "기술 도면",
"specifications": {
"dimensions": "200mm x 150mm x 50mm",
"materials": ["스테인리스 스틸 316L", "실리콘 가스켓"],
"tolerances": "±0.1mm"
},
"manufacturing_notes": [
"CNC 가공 후 표면처리 필요",
"조립 시 토크 규격: 5.2 N⋅m"
],
"safety_warnings": ["고압 주의", "전기 차단 후 작업"]
}
성과
- 검색 시간: 2시간 → 30초
- 문서 공유: 즉시 가능 (구조화된 데이터)
- 번역 비용: 90% 절감
RAG와 문서 자동화의 새로운 패러다임
지능형 문서 검색 시스템
기존 문서 검색의 한계를 뛰어넘어, dots OCR은 의미 기반 검색을 가능하게 합니다.
기존 키워드 검색
검색어: "매출 증가"
결과: 단순히 "매출"과 "증가"가 포함된 문서들
dots OCR + RAG 검색
# 구조화된 데이터로 인한 정밀 검색
query = "작년 대비 매출이 20% 이상 증가한 사업부는?"
search_result = {
"matching_documents": [
{
"department": "모바일 사업부",
"year_comparison": {
"2023": "1,200억원",
"2022": "900억원",
"growth_rate": "33.3%"
},
"source": "2023년 4분기 실적보고서.pdf"
}
],
"confidence": 0.94
}
실시간 컴플라이언스 체크
금융권 사례: 대출 서류 자동 심사
# 대출 신청서 자동 분석
loan_application = {
"applicant": {
"income": "연 8,000만원",
"employment": "정규직 5년차",
"credit_score": "830점"
},
"collateral": {
"property_value": "15억원",
"mortgage_balance": "5억원",
"ltv_ratio": "33.3%"
},
"compliance_flags": {
"income_verification": "완료",
"debt_ratio": "적정 (45%)",
"regulatory_check": "통과"
},
"recommendation": "승인 권장 (금리 3.2%)"
}
효과
- 심사 시간: 3일 → 30분
- 정확도: 수동 심사와 동등
- 비용: 심사 인력 70% 절감
문서 자동화 워크플로우 혁신
인사팀의 이력서 스크리닝
기존 방식의 문제
- 100건 이력서 검토에 8시간 소요
- 주관적 판단으로 인한 편향 발생
- 핵심 역량 누락 위험
dots OCR 자동화 시스템
# 이력서 자동 분석 및 점수화
resume_analysis = {
"candidate": "김개발",
"skills_match": {
"required": ["Python", "Django", "AWS"],
"candidate_has": ["Python", "Django", "AWS", "React"],
"match_score": 0.92
},
"experience": {
"total_years": 5,
"relevant_years": 4,
"company_tier": "대기업 2곳, 스타트업 1곳"
},
"education": {
"degree": "컴퓨터공학과 학사",
"gpa": "3.8/4.5",
"relevant_coursework": ["알고리즘", "데이터베이스"]
},
"overall_score": 8.5,
"recommendation": "면접 권장"
}
결과
- 처리 시간: 95% 단축
- 객관성: 정량적 평가 기준 적용
- 놓치는 인재: 80% 감소
기술적 특징: 혁신적인 아키텍처가 가져온 실무 혁신
통합 비전-언어 모델
기존 OCR 시스템이 복잡한 다중 모델 파이프라인에 의존하는 것과 달리, dots OCR는 단일 1.7B 매개변수 비전-언어 모델 내에서 레이아웃 탐지와 콘텐츠 인식을 통합합니다.
효율적인 추론 속도
1.7B LLM 기반으로 구축된 dots OCR는 더 큰 기반 모델 기반의 다른 고성능 모델들보다 빠른 추론 속도를 제공합니다.
성능 최적화 팁
- 이미지 해상도: 11,289,600 픽셀 이하 권장
- DPI 설정: 200 DPI로 설정 시 최적 성능
- 메모리 효율성: vLLM 사용 권장
지원 언어 및 다국어 처리 능력
100개 이상 언어 지원
dots OCR는 주요 세계 언어와 덜 일반적인 스크립트를 포함하여 100개 이상의 언어에 걸친 데이터셋으로 훈련되었습니다.
지원 언어 범위
- 주요 언어: 영어, 중국어, 한국어, 일본어, 아랍어
- 저자원 언어: 타밀어, 티베트어, 칸나다어 등
- 특수 스크립트: 라틴, 키릴, 한자, 아랍 문자
저자원 언어에서의 성능 우위
기존 OCR 시스템이 실패하는 저자원 언어에서도 dots OCR는 강력한 파싱 기능을 보여줍니다.
출력 형식과 데이터 구조화
다양한 출력 형식
모델은 일반 텍스트, 표 형식 데이터, 수학 공식(LaTeX 형식)을 추출하며 문서 내 읽기 순서를 보존합니다.
지원 출력 형식
- JSON: 프로그래밍 방식 사용을 위한 구조화된 데이터
- Markdown: 문서 구조 보존
- HTML: 웹 환경에서의 활용
- LaTeX: 수학 공식의 정확한 표현
문서 구조 보존
dots OCR는 다음과 같은 문서 구조를 정확히 보존합니다
- 표 경계선
- 수식 영역
- 이미지 배치
- 읽기 순서
제한사항 및 향후 개발 계획
현재 제한사항
고복잡도 표와 수식 추출에서 완벽하지 않으며, 문서 내 그림은 현재 파싱되지 않습니다.
알려진 이슈
- 연속된 특수문자(…, ___)로 인한 반복 출력 오류
- 대용량 PDF 처리 시 성능 병목
- 픽셀 대비 문자 비율이 과도하게 높을 때 파싱 실패
향후 개발 방향
더 정확한 표와 수식 파싱을 달성하고, 모델의 OCR 기능을 더 넓은 일반화를 위해 향상시키는 것에 전념하고 있습니다.
팀은 일반 탐지, 이미지 캡셔닝, OCR 작업을 통합 프레임워크로 통합하는 더 범용적인 인식 모델 개발을 적극적으로 고려하고 있습니다.
커뮤니티와 오픈소스 생태계
활발한 개발 커뮤니티
GitHub에서 2,200개 이상의 스타와 224개의 포크를 받으며 활발한 커뮤니티를 형성하고 있습니다.
개발자들이 적극적으로 이슈를 제기하고 개선사항을 제안하고 있어, 실시간 피드백을 통한 빠른 버전 업데이트가 이루어지고 있습니다.
기여 방법
오픈소스 프로젝트로서 누구나 기여할 수 있습니다
- 버그 리포트 및 기능 제안
- 코드 개선 및 최적화
- 문서화 개선
- 새로운 언어 지원 확장
경쟁 모델과의 비교 분석
상용 OCR 서비스 대비 우위
모델 | 매개변수 | 다국어 지원 | 오픈소스 | 통합 아키텍처 |
---|---|---|---|---|
dots OCR | 1.7B | 100+ 언어 | ✅ | ✅ |
Gemini 2.5-Pro | 72B+ | 제한적 | ❌ | ❌ |
MonkeyOCR | 3B | 제한적 | 부분적 | ❌ |
기존 OCR | N/A | 제한적 | ❌ | ❌ |
성능 대비 효율성
1.7B 모델이 자신보다 20배 큰 모델들을 능가하는 성능을 보입니다.
이는 모델 아키텍처의 혁신성과 훈련 데이터의 질적 우수성을 입증합니다.
실제 도입 사례 및 성공 스토리
학술 연구 분야
대학과 연구기관에서 dots OCR를 활용한 AI 논문 PDF 분석 사례가 증가하고 있습니다.
- 논문의 수식과 표 자동 추출
- 다국어 학술 자료 통합 분석
- 문헌 검토 자동화
금융 서비스 분야
금융기관에서의 활용:
- 재무제표 자동 분석
- 다국어 계약서 처리
- 규제 문서 디지털화
교육 기술 분야
교육 기관에서의 dots OCR 활용:
- 교재 디지털화
- 시험 문제 자동 추출
- 온라인 교육 콘텐츠 제작
dots OCR의 미래와 AI 문서 인식 트렌드
비전-언어 모델의 발전 방향
dots OCR는 OCR뿐만 아니라 올바른 방식으로 수행된 비전-언어 모델링의 증명점처럼 느껴집니다.
수년간 OCR은 투박한 도구와 취약한 파이프라인을 가진 별도의 도메인이었습니다.
이제는 단지 프롬프트 하나면 됩니다.
산업 표준으로의 발전 가능성
dots OCR의 성공은 다음과 같은 산업 변화를 이끌 것으로 예상됩니다
- 통합 모델 아키텍처의 표준화
- 오픈소스 OCR 생태계 확산
- AI 기반 데이터 추출 기술 대중화
마무리: dots OCR 도입을 위한 권장사항
스캔된 양식, 다국어 문서, 학술 논문, 심지어 지저분한 송장과 관련된 모든 것을 구축하고 있다면 이것을 테스트해보세요.
도입 전 체크리스트
- 시스템 요구사항 확인
- dots OCR GitHub 저장소에서 최신 버전 다운로드
- 파일럿 프로젝트로 성능 검증
- 실제 워크플로우에 통합
dots OCR는 무료이고, 빠르며, 놀랍도록 우수한 성능을 제공합니다.
기업이 비대해지거나 상용화되거나 여러 기업 라이선스 계층에 묻히기 전에 지금 시도해보시기 바랍니다.
참고 자료
함께 읽으면 좋은 글
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기