Chandra OCR: 구조적 문서 이해를 위한 오픈소스 AI OCR 모델 (feat. Datalab)

Chandra OCR 소개

Chandra OCR는 기존 OCR(Optical Character Recognition) 기술의 한계를 넘어서, 문서의 레이아웃 구조 , 시각적 관계 , 의미적 구성 을 모두 복원할 수 있는 차세대 AI 기반 문서 인식 시스템 입니다.이 모델은 Datalab 팀(창립자: Vik Paruchuri)에 의해 2025년 10월 공개되었으며, Hugging Face, GitHub, Datalab Playground 를 통해 오픈소스로 배포되고 있습니다.

Chandra는 단순한 OCR 모델을 넘어, 복잡한 레이아웃의 PDF 파일이나 손글씨가 섞인 양식, 수식이나 표가 포함된 문서 이미지들도 정확하게 인식합니다. 또한, 신문이나 논문과 같이 여러 단(column)으로 구성된 텍스트 및 이미지와 차트 등의 시각적 요소들까지 추출하여 구조화할 수 있습니다.

즉, Chandra는 단순히 텍스트를 읽기만 하는 OCR이 아니라, **“문서를 이해하고 재구성하는 AI 엔진”**이라고 표현할 수 있습니다.

기존의 전통적인 OCR 모델(예: Tesseract, EasyOCR, PaddleOCR 등)은 문자 단위 인식에 강점을 보였으나, 문서의 시각적 레이아웃과 구조적 정보를 완전하게 복원하는 데에는 한계가 있었습니다.

이와 달리 Chandra는 transformer 기반의 멀티모달 모델 구조 를 채택하여, 문서 내의 텍스트, 도형, 표, 이미지 등의 시각적 관계를 이해하고, 이를 Markdown, HTML, JSON 형태로 구조화된 출력으로 제공합니다.

Chandra OCR의 주요 특징

  • 다중 포맷 출력 지원: Chandra는 PDF나 이미지 파일을 단순 텍스트로 변환하는 것이 아니라, 문서의 원본 구조를 최대한 유지하면서 Markdown, HTML, JSON 형태로 변환합니다. 이 덕분에 개발자는 문서의 구조적 정보(표, 이미지, 섹션, 수식 등)를 그대로 활용할 수 있습니다.

  • 손글씨 및 폼(Form) 복원: 의료 문서, 설문지, 계약서 등에서 나타나는 손글씨 입력, 체크박스, 라벨-값 구조를 정확히 복원합니다. 특히 손글씨 인식(Handwriting Recognition) 성능은 기존 오픈소스 OCR 모델 중 가장 높은 수준으로 평가됩니다.

  • 복잡한 레이아웃 처리: 신문이나 논문처럼 다단(Column) 구조, 머리말/꼬리말, 주석 등을 가진 문서도 정확히 분석합니다. Chandra는 페이지 전체의 시각적 관계를 모델링하여, **레이아웃 보존율(layout fidelity)**이 매우 높습니다.

  • 이미지·다이어그램 추출 및 캡션 생성: 문서 내의 도표, 그래프, 이미지, 차트를 인식하여 별도로 추출하고, 각각의 이미지에 대해 **자동 캡션(설명문)**을 생성합니다. 이는 데이터 보고서, 연구 논문, 과학 문서 등에서 유용합니다.

  • 수식(Math) 및 표(Table) 인식: Chandra는 수학식의 시각적 구조를 이해하고, LaTeX 형태로 변환할 수 있습니다. 또한 표(Table) 데이터의 셀, 행, 열 구성을 정확히 파악하여 Markdown/HTML로 변환합니다.

  • 멀티랭귀지 지원: Surya 모델의 언어 커버리지를 계승하여 40개 이상의 언어를 지원합니다. 영어, 프랑스어, 일본어, 한국어 등 주요 언어 외에도 다양한 문자를 인식할 수 있습니다.

Chandra OCR 사용 방법

Chandra OCR 설치는 매우 간단합니다. 다음과 같은 pip install 명령어로 바로 설치할 수 있습니다:

pip install chandra-ocr

이후, CLI 도구를 사용하거나, Python 코드에서 Chandra OCR 모델을 불러와 사용할 수 있습니다.

먼저 Chandra OCR을 CLI로 실행 및 사용하는 방법은 다음과 같습니다:

# vLLM 서버 기반 추론
chandra_vllm
chandra input.pdf ./output

# Hugging Face 로컬 모델
chandra input.pdf ./output --method hf

위와 같이 실행 시, 출력은 다음과 같은 구조로 저장됩니다.

./output/
 └─ input/
     ├─ input.md
     ├─ input.html
     ├─ input_metadata.json
     └─ images/

기존의 Python 코드에 포함하는 예시는 다음과 같습니다:

from chandra.model import InferenceManager
from chandra.model.schema import BatchInputItem

manager = InferenceManager(method="vllm")
batch = [BatchInputItem(image=PIL_IMAGE, prompt_type="ocr_layout")]
result = manager.generate(batch)
print(result.markdown)

또는, 다음과 같이 Hugging Face Transformers 라이브러리로부터 Chandra OCR 모델을 직접 호출하여 사용할 수도 있습니다:

from transformers import AutoModel, AutoProcessor
from chandra.model.hf import generate_hf
from chandra.model.schema import BatchInputItem
from chandra.output import parse_markdown

model = AutoModel.from_pretrained("datalab-to/chandra").cuda()
model.processor = AutoProcessor.from_pretrained("datalab-to/chandra")

batch = [BatchInputItem(image=PIL_IMAGE, prompt_type="ocr_layout")]
result = generate_hf(batch, model)
markdown = parse_markdown(result.raw)

마지막으로, Streamlit 기반의 Web UI도 지원합니다. 단일 페이지 처리를 위한 대화형 데모는 다음과 같이 실행하면 됩니다:

# Streamlit 기반 웹 UI
chandra_app

Chandra OCR의 벤치마크 성능 분석

Chandra는 **olmOCR 벤치마크(Allen AI)**를 기준으로 한 평가에서 DeepSeek-OCR을 비롯하여, Marker, GPT-4o, Gemini Flash 2, Qwen 3-VL 등과 같은 경쟁 모델들 대비 더 나은 성능을 보였습니다:

모델 arXiv 수식 스캔본 다단 문서 손글씨 전체 점수 출처
Chandra v0.1.0 82.2 80.3 88.0 50.4 81.2 92.3 83.1 ± 0.9 Datalab
Marker v1.10.0 83.8 69.7 74.8 32.3 79.4 85.7 76.5 ± 1.0 Datalab
DeepSeek OCR 75.2 72.3 79.7 33.3 66.7 80.1 75.4 ± 1.0 Datalab
olmOCR (Allen AI) 78.6 79.9 72.9 43.9 77.3 81.2 78.5 ± 1.1 Allen AI
dots.ocr 82.1 64.2 88.3 40.9 82.4 81.2 79.1 ± 1.0 dots.ocr repo

특히 수식, 테이블, 손글씨 인식 부문에서는 오픈소스 모델 중 가장 높은 점수를 기록했습니다.

Chandra OCR의 인식 예시

Chandra는 전통적인 OCR 시스템이 어려움을 겪던 복잡한 문서 구조, 손글씨, 수식, 표, 다단 뉴스, 스캔 이미지 등 다양한 형태의 데이터를 정교하게 처리할 수 있습니다. 다음은 GitHub 저장소(datalab-to/chandra)에 공개된 실제 예제 목록과 각 유형별 설명입니다.

유형(Type) 예시 문서 이름(Name) 미리보기(View) 설명
Tables Water Damage Form 보기 보험 청구서 형태의 양식으로, 여러 열(column)과 행(row)이 혼합된 표를 포함. Chandra는 표 구조와 셀 관계를 Markdown 형태로 정확히 복원함.
Tables 10K Filing 보기 기업의 SEC 보고서 일부로, 복잡한 재무 데이터 표가 포함된 문서. Chandra는 숫자 서식과 헤더/푸터를 유지하며 HTML 테이블로 출력 가능.
Forms Handwritten Form 보기 사람이 손으로 작성한 입력란이 포함된 문서. 체크박스, 서명란 등까지 정확히 인식해 JSON 구조로 변환.
Forms Lease Agreement 보기 임대차 계약서 예시. 각 조항 번호, 문단 구분, 입력 필드 등이 유지된 형태로 Markdown 출력 가능.
Handwriting Doctor Note 보기 의사 처방전처럼 손글씨가 많은 문서. 일반 OCR이 어려워하는 부분도 안정적으로 인식하며, 문맥별 줄 단위 재구성 수행.
Handwriting Math Homework 보기 수학 숙제 이미지로, 손글씨와 수식이 함께 존재. 수학식과 필기 텍스트를 분리하여 정확히 추출 가능.
Books Geography Textbook 보기 교과서 페이지 예시. 다단 텍스트, 이미지 캡션, 인용문, 그래픽 요소가 혼재되어 있으나 구조를 유지한 HTML 변환이 가능.
Books Exercise Problems 보기 문제집 페이지 예시. 번호 매김, 문항 구분, 표 형식의 문제 구성 등을 정확히 식별하여 Markdown 재현.
Math Attention Diagram 보기 AI 논문 내 “Attention Mechanism” 다이어그램을 포함한 페이지. 다이어그램과 수식의 관계를 인식해 이미지+캡션 구조로 출력.
Math Worksheet 보기 수학 연습지 문서. 수식, 답안란, 텍스트 주석을 구분하여 포맷화된 HTML 생성.
Math EGA Page 보기 대수기하학 교재(EGA) 페이지. LaTeX 표현식으로 수학식 복원이 가능함.
Newspapers New York Times 보기 신문 기사 페이지. 다단 구성과 이미지, 제목, 캡션을 인식하여 구조화된 결과 제공.
Newspapers LA Times 보기 신문 지면 복원 예시. 문단 순서, 섹션 제목, 광고 영역을 구분하여 HTML 구조로 재현.
Other Transcript 보기 대학 성적표 문서. 표 형식의 과목/점수 정보 및 메타데이터를 포함하며 JSON 출력 지원.
Other Flowchart 보기 흐름도(Flowchart) 포함 문서. 도형과 화살표 구조를 인식하고, 각 노드 관계를 구조화된 데이터로 변환.

:house: Chandra OCR의 개발사 Datalab 홈페이지

:github: Chandra OCR 프로젝트 GitHub 저장소

:scroll: Chandra OCR 모델 다운로드




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

16GB VRAM에서는 모델을 올릴 수조차 없는 큰 모델이군요. 24GB는 필요해 보입니다.