📑
PDF 특화 OCR — 복잡한 레이아웃·표·수식을 Markdown으로 변환하는 도구들
Marker, Docling, MinerU, Nougat, olmOCR — PDF를 LLM이 읽을 수 있는 형태로
왜 일반 OCR로는 부족한가
PDF에 Tesseract를 돌리면 텍스트는 나온다. 근데:
2단 레이아웃이면 왼쪽·오른쪽이 섞인다
표의 셀 구분이 사라진다
수식이 깨진다
머리글/바닥글이 본문에 섞인다
이미지 캡션이 본문으로 들어간다
PDF 특화 도구는 레이아웃을 이해하고 올바른 읽기 순서로 Markdown을 생성한다.
도구별 비교
| 도구 | 개발 | 특징 | CJK | 설치 |
|---|---|---|---|---|
| Marker | Datalab | 가장 범용. PDF/DOCX/PPTX → Markdown | ✅ | pip install marker-pdf |
| Docling | IBM Research | 엔터프라이즈급. LlamaIndex/LangChain 통합 | ✅ | pip install docling |
| MinerU | Shanghai AI Lab | CJK 최강. PaddleOCR 내장 | ✅ | uv pip install "mineru[all]" |
| Nougat | Meta | 학술 논문 전용. 수식 LaTeX 변환 | ❌ | pip install nougat-ocr |
| olmOCR | Allen AI | 자연스러운 읽기 순서. $200/100만 페이지 | ✅ | pip install olmocr |
| Unstructured | Unstructured.io | ETL용. 다양한 포맷 지원 | ✅ | pip install "unstructured[all-docs]" |
| PyMuPDF4LLM | PyMuPDF | 가장 빠름. 네이티브 텍스트 우선, OCR 폴백 | ✅ | pip install pymupdf4llm |
각 도구 코드
Marker — 가장 범용:
pip install marker-pdf
marker_single document.pdf --output_dir ./output
# → output/document.md (Markdown)
Python에서:
from marker.converters.pdf import PdfConverter
converter = PdfConverter()
result = converter("document.pdf")
print(result.markdown) # Markdown 텍스트
Docling — 엔터프라이즈:
pip install docling
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("document.pdf")
print(result.document.export_to_markdown())
MinerU — CJK 최강:
uv pip install -U "mineru[all]"
mineru document.pdf -o ./output
# → output/document.md
Nougat — 학술 논문:
pip install nougat-ocr
nougat paper.pdf -o ./output
# → output/paper.mmd (Markdown + LaTeX 수식)
PyMuPDF4LLM — 가장 빠름:
import pymupdf4llm
md = pymupdf4llm.to_markdown("document.pdf")
print(md) # 네이티브 텍스트 추출 (OCR 불필요한 PDF면 즉시)
용도별 추천
| 용도 | 추천 |
|---|---|
| 한국어/일본어/중국어 PDF | MinerU |
| 학술 논문 (수식 포함) | Nougat |
| 범용 (가장 많은 포맷) | Marker |
| RAG 파이프라인 | Docling (LlamaIndex 통합) |
| 속도 우선 | PyMuPDF4LLM |
| 복잡한 레이아웃 | olmOCR |
핵심 개념
1
Marker — pip install marker-pdf → marker_single doc.pdf で Markdown 변환
2
MinerU — CJK 문서면 이것. PaddleOCR 내장으로 한중일 레이아웃 최강
3
Nougat — 학술 논문 전용. 수식을 LaTeX로, 참조를 자동 처리
4
Docling — RAG 파이프라인에 바로 연결 (LlamaIndex/LangChain)
사용 사례
RAG 전처리 — PDF를 Markdown으로 변환 → 벡터 DB에 청킹·저장
논문 분석 — 학술 PDF에서 수식·표·참조를 구조화된 텍스트로
다국어 문서 — CJK 레이아웃(세로쓰기, 루비 등)이 있는 PDF 처리