문서 지능 (Document Intelligence)을 위한 최첨단 (State of the Art) 모델
요약
Chandra OCR 2는 레이아웃 정보를 보존하며 이미지와 PDF를 HTML, Markdown, JSON 등 구조화된 데이터로 변환하는 최첨단 OCR 모델입니다. 90개 이상의 언어와 수학, 표, 필기체 등을 지원하며 olmocr 벤치마크에서 높은 성능을 입증했습니다.
핵심 포인트
- 레이아웃 보존 및 구조화된 데이터(Markdown, JSON 등) 변환 지원
- 90개 이상의 다국어 및 뛰어난 필기체 인식 성능
- olmocr 벤치마크 1위 달성 및 수학/표/양식 재구성 강점
- vLLM 및 HuggingFace를 통한 다양한 추론 모드 제공
문서 지능 (Document Intelligence)을 위한 최첨단 (State of the Art) 모델
Chandra OCR 2는 레이아웃 정보를 보존하면서 이미지와 PDF를 구조화된 HTML/Markdown/JSON으로 변환하는 최첨단 (State of the Art) OCR 모델입니다.
당사의 관리형 플랫폼은 오픈 웨이트 (open weights) 모델보다 높은 정확도를 가진 개선된 Chandra를 실행하며, 기본적으로 데이터 보존을 하지 않고 (zero data retention), SOC 2 Type 2 인증 및 맞춤형 BAA (Business Associate Agreements)를 제공합니다.
대량의 워크로드 (workloads)가 있는 경우, 주당 2억 페이지 이상을 처리한 배치 처리 (batch processing) 서비스를 제공합니다. 당사가 인프라를 관리하므로 귀하의 워크로드가 제시간에 완료됩니다.
5달러의 무료 크레딧으로 시작해 보세요 — 가입은 30초 미만이 소요됩니다 — 또는 당사의 퍼블릭 플레이그라운드 (public playground)에서 Chandra를 체험해 보세요.
상업적 셀프 호스팅 (self-hosting)에는 라이선스가 필요합니다 — 상업적 이용 (Commercial usage) 섹션을 참조하세요. 온프레미스 (on-prem) 라이선스의 경우 당사에 문의하십시오.
-
2026년 3월 - 수학, 표, 레이아웃 및 다국어 OCR이 크게 개선된 Chandra 2 출시
-
2025년 10월 - Chandra 1 출시
-
외부 olmocr 벤치마크 (benchmark) 1위 달성 및 내부 다국어 벤치마크에서 상당한 개선
-
상세한 레이아웃 정보와 함께 문서를 markdown, html 또는 json으로 변환
-
90개 이상의 언어 지원 (아래 벤치마크 참조)
-
뛰어난 필기체 (handwriting) 지원
-
체크박스를 포함한 양식 (forms)을 정확하게 재구성
-
표, 수학 및 복잡한 레이아웃에서 강력한 성능 발휘
-
이미지와 다이어그램을 추출하고 캡션 및 구조화된 데이터 추가
-
두 가지 추론 (inference) 모드: 로컬 (HuggingFace) 및 원격 (vLLM 서버)
가장 쉬운 시작 방법은 CLI 도구를 사용하는 것입니다:
pip install chandra-ocr
# vLLM 사용 시 (권장, 경량 설치)
chandra_vllm
...
Chandra 2에서 저희는 다국어 성능에 집중했습니다. 적절한 공개 다국어 OCR 벤치마크가 없기 때문에 저희가 직접 만들었습니다. 이는 표, 수학, 순서, 레이아웃 및 텍스트 정확도를 테스트합니다.
아래에서 전체 점수를 확인하세요. 또한 90개 언어에 대한 전체 벤치마크를 보유하고 있습니다.
또한 널리 인정받는 olmocr 벤치마크를 통해 Chandra 2를 테스트했습니다:
아래에서 전체 점수를 확인하세요.
| 유형 | 이름 | 링크 |
|---|---|---|
| Math | CS229 Textbook | View |
| ... |
# 기본 설치 (vLLM 백엔드용)
pip install chandra-ocr
# HuggingFace 백엔드 사용 시 (torch, transformers 포함)
...
HuggingFace 방식을 사용하는 경우, 더 나은 성능을 위해 flash attention 설치를 권장합니다.
git clone https://github.com/datalab-to/chandra.git
cd chandra
uv sync
...
단일 파일 또는 전체 디렉토리를 처리합니다:
# vllm 서버를 사용한 단일 파일 처리 (vllm 실행 방법은 아래 참조)
chandra input.pdf ./output --method vllm
# 로컬 모델로 디렉토리 내의 모든 파일 처리
...
CLI 옵션:
--method [hf|vllm]
: 추론 방법 (Inference method) (기본값: vllm)
--page-range TEXT
: PDF 페이지 범위 (예: "1-5,7,9-12")
--max-output-tokens INTEGER
: 페이지당 최대 토큰 수
--max-workers INTEGER
: vLLM을 위한 병렬 워커 (Parallel workers) 수
--include-images/--no-images
: 이미지 추출 및 저장 (기본값: 포함)
--include-headers-footers/--no-headers-footers
: 페이지 헤더/푸터 포함 (기본값: 제외)
--batch-size INTEGER
: 배치당 페이지 수 (vllm의 경우 기본값 28, hf의 경우 1)
출력 구조:
처리된 각 파일은 다음과 같은 항목을 포함하는 하위 디렉토리를 생성합니다:
<filename>.md
- Markdown 출력
<filename>.html
- HTML 출력
<filename>_metadata.json
-
메타데이터 (페이지 정보, 토큰 수 등)
-
추출된 이미지는 출력 디렉토리에 직접 저장됩니다.
단일 페이지 처리를 위한 대화형 데모를 실행합니다:
chandra_app
프로덕션 배포 또는 배치 처리(Batch processing)를 위해서는 vLLM 서버를 사용하세요:
chandra_vllm
이 명령은 최적화된 추론 설정을 갖춘 Docker 컨테이너를 실행합니다. 환경 변수를 통해 설정할 수 있습니다:
VLLM_API_BASE
: 서버 URL (기본값: http://localhost:8000/v1)
VLLM_MODEL_NAME
: 서버용 모델 이름 (기본값: chandra)
VLLM_GPUS
: GPU 장치 ID (기본값: 0)
datalab-to/chandra-ocr-2 모델을 사용하여 직접 vllm 서버를 시작할 수도 있습니다.
설정은 환경 변수 또는 local.env 파일을 통해 구성할 수 있습니다:
# 모델 설정 (Model settings)
MODEL_CHECKPOINT=datalab-to/chandra-ocr-2
MAX_OUTPUT_TOKENS=12384
...
이 코드는 Apache 2.0 라이선스를 따르며, 당사의 모델 가중치(model weights)는 수정된 OpenRAIL-M 라이선스를 사용합니다 (연구, 개인적 용도 및 자금/매출 200만 달러 미만의 스타트업에는 무료이나, 당사의 API와 경쟁하는 용도로는 사용할 수 없습니다). OpenRAIL 라이선스 요구 사항을 제거하거나 더 광범위한 상업적 라이선스를 원하시면, 여기의 가격 페이지를 방문해 주세요.
모델 (Model) |
ArXiv | 오래된 스캔 수학 (Old Scans Math) | 표 (Tables) | 오래된 스캔 (Old Scans) | 헤더 및 푸터 (Headers and Footers) | 다중 열 (Multi column) | 길고 작은 텍스트 (Long tiny text) | 기본 (Base) | 종합 (Overall) | 출처 (Source) |
|---|---|---|---|---|---|---|---|---|---|---|
| Datalab API | 90.4 | 90.2 | 90.7 | 54.6 | 91.6 | 83.7 | 92.3 | 99.9 | 86.7 ± 0.8 | 자체 벤치마크 (Own benchmarks) |
| Chandra 2 | 86.9 | 89.1 | 92.1 | 51.1 | 91.4 | 82.1 | 93.7 | 99.9 | 85.8 ± 0.8 | 자체 벤치마크 (Own benchmarks) |
| dots.ocr 1.5 | 85.9 | 85.5 | 90.7 | 48.2 | 94.0 | 85.3 | 81.6 | 99.7 | 83.9 | dots.ocr 리포지토리 (dots.ocr repo) |
| Chandra 1 | 82.2 | 80.3 | 88.0 | 50.4 | 90.8 | 81.2 | 92.3 | 99.9 | 83.1 ± 0.9 | 자체 벤치마크 (Own benchmarks) |
| olmOCR 2 | 83.0 | 82.3 | 84.9 | 47.7 | 96.1 | 83.7 | 81.9 | 99.6 | 82.4 | olmocr 리포지토리 (olmocr repo) |
| dots.ocr | 82.1 | 64.2 | 88.3 | 40.9 | 94.1 | 82.4 | 81.2 | 99.5 | 79.1 ± 1.0 | dots.ocr 리포지토리 (dots.ocr repo) |
| olmOCR v0.3.0 | 78.6 | 79.9 | 72.9 | 43.9 | 95.1 | 77.3 | 81.2 | 98.9 | 78.5 ± 1.1 | olmocr 리포지토리 (olmocr repo) |
| ... | 66.7 | 80.1 | 99.7 | 75.4 ± 1.0 | 자체 벤치마크 (Own benchmarks) |
| Mistral OCR API | 77.2 | 67.5 | 60.6 | 29.3 | 93.6 | 71.3 | 77.1 | 99.4 | 72.0 ± 1.1 | olmocr 리포지토리 (olmocr repo) |
| GPT-4o (Anchored) | 53.5 | 74.5 | 70.0 | 40.7 | 93.8 | 69.3 | 60.6 | 96.8 | 69.9 ± 1.1 | olmocr 리포지토리 (olmocr repo) |
| ... |
아래 표는 여러 모델에 걸쳐 벤치마크를 수행한 가장 일반적인 43개 언어를 다룹니다. 90개 언어에 대한 종합적인 평가(Chandra 2 대 Gemini 2.5 Flash만 해당)를 보려면, 전체 90개 언어 벤치마크를 참조하세요.
| 언어 (Language) | Datalab API | Chandra 2 | Chandra 1 | Gemini 2.5 Flash | GPT-5 Mini |
|---|---|---|---|---|---|
| ar | 67.6% | 68.4% | 34.0% | 84.4% | 55.6% |
| ... | 평균 (Average) | 80.4% | 77.8% | 69.4% | 67.6% |
또한 저희는 90개 언어를 아우르는 더욱 포괄적인 평가를 수행하여, Chandra 2를 Gemini 2.5 Flash와 비교했습니다. 평균 점수는 위에서 언급한 43개 언어 표보다 낮게 나타나는데, 이는 저자원 언어 (low-resource languages)가 많이 포함되어 있기 때문입니다. Chandra 2는 평균 **72.7%**를 기록하였으며, Gemini 2.5 Flash는 **60.8%**를 기록했습니다.
90개 언어 전체 결과 보기.
olmOCR 벤치마크 세트에서 가져온 다양한 문서 혼합물 (수식, 표, 스캔본, 다중 열 레이아웃)을 사용하여 단일 NVIDIA H100 80GB GPU 상에서 vLLM으로 벤치마크를 수행했습니다. 이 세트는 실제 사용 환경보다 현저히 느립니다. 저희는 실제 사용 환경에서의 속도를 초당 2페이지 (2 pages/s)로 추정합니다.
| 설정 (Configuration) | 초당 페이지 수 (Pages/sec) | 평균 지연 시간 (Avg Latency) | P95 지연 시간 (P95 Latency) | 실패율 (Failure Rate) |
|---|---|---|---|---|
| vLLM, 96개 동시 시퀀스 (concurrent sequences) | 1.44 | 60s | 156s | 0% |
다음 오픈 소스 프로젝트들에 감사드립니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기