AI 준비 완료된 데이터를 위한 PDF 파서 (Parser). PDF 접근성 자동화. 오픈 소스 (Open-source).
🔍 AI 데이터 추출을 위한 PDF 파서 (Parser) — 모든 PDF에서 Markdown, JSON (경계 상자 (bounding boxes) 포함), 그리고 HTML을 추출합니다. 벤치마크 1위 (전체 0.907). 복잡한 페이지를 위해 결정론적 로컬 모드 (Deterministic local mode) + AI 하이브리드 모드 (AI hybrid mode)를 제공합니다.
얼마나 정확한가요? — 벤치마크 1위: 전체 0.907, 다단 구성 및 과학 논문을 포함한 200개의 실제 PDF에 대해 표 (table) 정확도 0.928을 기록했습니다. 복잡한 페이지를 위해 결정론적 로컬 모드 (Deterministic local mode) + AI 하이브리드 모드 (AI hybrid mode)를 제공합니다 (벤치마크).
스캔된 PDF와 OCR은 가능한가요? — 네. 하이브리드 모드 (hybrid mode)에서 내장된 OCR (80개 이상의 언어)을 지원합니다. 300 DPI 이상의 저품질 스캔본에서도 작동합니다 (하이브리드 모드 (hybrid mode)).
표, 수식, 이미지, 차트는 가능한가요? — 네. 복잡하거나 테두리가 없는 표, LaTeX 수식, 그리고 AI가 생성한 사진/차트 설명을 모두 하이브리드 모드 (hybrid mode)를 통해 지원합니다 (하이브리드 모드 (hybrid mode)).
RAG를 위해 어떻게 사용하나요? — pip install opendataloader-pdf를 통해 3줄 이내로 변환할 수 있습니다. 청킹 (chunking)을 위한 구조화된 Markdown, 출처 인용을 위한 경계 상자 (bounding boxes)가 포함된 JSON, 그리고 HTML을 출력합니다. LangChain 연동이 가능합니다. Python, Node.js, Java SDK를 지원합니다 (빠른 시작 (quick start) | LangChain).
♿ PDF 접근성 (accessibility) 자동화 — 태그가 지정되지 않은 PDF를 스크린 리더 (screen-reader)가 읽을 수 있는 태그 지정된 PDF (Tagged PDFs)로 대규모 자동 태깅합니다. 엔드 투 엔드 (end-to-end)로 태그 지정된 PDF를 생성하는 최초의 오픈 소스 도구입니다.
문제는 무엇인가요?— 접근성 규정(Accessibility regulations)이 전 세계적으로 시행되고 있습니다. 수동 PDF 수정(remediation)은 문서당 50~200달러의 비용이 들며 확장성이 떨어집니다(regulations)
무엇이 무료인가요?— 레이아웃 분석(Layout analysis) + 자동 태깅(auto-tagging) (Apache 2.0). 태그가 없는 PDF 입력 → 태그가 있는 PDF 출력. 독점적인 SDK 의존성 없음(auto-tagging)
PDF/UA 준수(compliance)는 어떤가요?— 태그가 있는 PDF(Tagged PDF)를 PDF/UA-1 또는 PDF/UA-2로 변환하는 것은 엔터프라이즈 부가 기능(enterprise add-on)입니다. 자동 태깅은 태그가 있는 PDF를 생성하며, PDF/UA 내보내기(export)는 마지막 단계입니다(pipeline)
왜 신뢰할 수 있나요?— PDF Association의 사양, 모범 사례 가이드 및 PDF 커뮤니티의 전문 지식을 기반으로 Dual Lab(veraPDF 개발자)과 협력하여 구축되었습니다. 자동 태깅은 Well-Tagged PDF 사양을 따르며, veraPDF(협업)를 통해 검증되었습니다.
요구 사항: Java 11 이상 및 Python 3.10 이상 (Node.js | Java도 사용 가능)
시작하기 전에: java -version을 실행하세요. 찾을 수 없는 경우, Adoptium에서 JDK 11 이상을 설치하세요.
pip install -U opendataloader-pdf
import opendataloader_pdf
# 한 번의 호출로 모든 파일을 배치 처리합니다 — 각 convert()는 JVM 프로세스를 생성하므로 반복적인 호출은 느립니다
opendataloader_pdf.convert(
...
주석이 달린 PDF 출력 — 각 요소(제목, 단락, 표, 이미지)가 경계 상자(bounding boxes) 및 의미론적 유형(semantic type)과 함께 감지됩니다.
| 문제 | 솔루션 | 상태 |
|---|
| 파싱 중 PDF 구조 손실 — 잘못된 읽기 순서, 깨진 표, 요소 좌표 없음 | 경계 상자(bounding boxes) 및 XY-Cut++ 읽기 순서를 포함한 결정론적(Deterministic) 로컬 PDF to Markdown/JSON 변환 | 출시됨 (Shipped) |
| 복잡한 표, 스캔된 PDF, 공식, 차트는 AI 수준의 이해가 필요함 | 하이브리드 모드가 복잡한 페이지를 AI 백엔드로 라우팅함 (벤치마크 1위) | 출시됨 (Shipped) |
| 수동 PDF 수정 비용 — 접근성 규정(EAA, ADA, Section 508)은 태그가 있는 PDF(Tagged PDFs)를 요구합니다. 수동 수정 비용은 문서당 50~200달러입니다 | 태그가 없는 PDF를 태그가 있는 PDF로 자동 태깅 (무료, Apache 2.0). PDF/UA 워크플로우의 기반이 되며, 전체 PDF/UA-1/2 내보내기는 엔터프라이즈 부가 기능입니다 | 자동 태깅: 출시됨 (Shipped). PDF/UA 내보내기: 엔터프라이즈 (Enterprise) |
| 기능 | 지원 여부 | 티어 (Tier) |
|---|
| 데이터 추출 (Data extraction) | | |
| | |
| 올바른 읽기 순서로 텍스트 추출 | 예 | 무료 (Free) |
| 모든 요소에 대한 경계 상자 (Bounding boxes) | 예 | 무료 (Free) |
| 표 추출 (단순 테두리) | 예 | 무료 (Free) |
| ... | 접근성 (Accessibility) | |
| | |
| 자동 태깅 (Auto-tagging) → 태그가 없는 PDF를 태그된 PDF로 변환 | 예 | 무료 (Free) (Apache 2.0) |
| PDF/UA-1, PDF/UA-2 내보내기 | 💼 사용 가능 | 엔터프라이즈 (Enterprise) |
| 접근성 스튜디오 (Accessibility studio, 시각적 에디터) | 💼 사용 가능 | 엔터프라이즈 (Enterprise) |
| 제한 사항 (Limitations) | | |
| | |
| Word/Excel/PPT 처리 | 아니요 | — |
| GPU 필요 여부 | 아니요 | — |
**opendataloader-pdf [hybrid]**는 읽기 순서, 표, 제목 추출 정확도 전반에서 **1위(0.907)**를 차지했습니다.
| 엔진 (Engine) | 종합 (Overall) | 읽기 순서 (Reading Order) | 표 (Table) | 제목 (Heading) | 속도 (초/페이지) | 라이선스 (License) |
|---|
| opendataloader [hybrid] | 0.907 | 0.934 | 0.928 | 0.821 | 0.463 | Apache-2.0 |
| nutrient | 0.885 | 0.925 | 0.708 | 0.819 | 0.008 | 상용 (Commercial) |
| docling | 0.882 | 0.898 | 0.887 | 0.824 | 0.762 | MIT |
| marker | 0.861 | 0.890 | 0.808 | 0.796 | 53.932 | GPL-3.0 |
| unstructured [hi_res] | 0.841 | 0.904 | 0.588 | 0.749 | 3.008 | Apache-2.0 |
| ... | | | | | | |
점수는 [0, 1]로 정규화되었습니다. 정확도는 높을수록 좋으며, 속도는 낮을수록 좋습니다.
굵게 표시된 항목 = 최고 성능. 전체 벤치마크 상세 정보
| 문서 유형 | 모드 (Mode) | 설치 (Install) | 서버 명령 (Server Command) | 클라이언트 명령 (Client Command) |
|---|
| 표준 디지털 PDF (Standard digital PDF) | Fast (기본값) | pip install opendataloader-pdf | 필요 없음 | opendataloader-pdf file1.pdf file2.pdf folder/ |
| 복잡하거나 중첩된 표 (Complex or nested tables) | Hybrid | pip install "opendataloader-pdf[hybrid]" | opendataloader-pdf-hybrid --port 5002 | opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ |
| 스캔된 / 이미지 기반 PDF (Scanned / image-based PDF) | Hybrid + OCR | pip install "opendataloader-pdf[hybrid]" | opendataloader-pdf-hybrid --port 5002 --force-ocr | opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ |
| 비영어권 스캔 PDF (Non-English scanned PDF) | Hybrid + OCR | pip install "opendataloader-pdf[hybrid]" | opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang "ko,en" | opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ |
| 수학 공식 (Mathematical formulas) | Hybrid + formula | pip install "opendataloader-pdf[hybrid]" | opendataloader-pdf-hybrid --enrich-formula | opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/ |
| 설명이 필요한 차트 (Charts needing description) | Hybrid + picture | pip install "opendataloader-pdf[hybrid]" | opendataloader-pdf-hybrid --enrich-picture-description | opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/ |
| 접근성을 위한 태그가 없는 PDF (Untagged PDFs needing accessibility) | Auto-tagging → Tagged PDF | pip install opendataloader-pdf | 필요 없음 | opendataloader-pdf --format tagged-pdf file1.pdf file2.pdf folder/ |
pip install -U opendataloader-pdf
import opendataloader_pdf
# 한 번의 호출로 모든 파일을 배치 처리하세요 — 각 convert()는 JVM 프로세스를 생성하므로 반복적인 호출은 느립니다.
opendataloader_pdf.convert(
...
npm install @opendataloader/pdf
import { convert } from '@opendataloader/pdf';
await convert(['file1.pdf', 'file2.pdf', 'folder/'], {
outputDir: 'output/',
...
<dependency>
<groupId>org.opendataloader</groupId>
<artifactId>opendataloader-pdf-core</artifactId>
...
Python Quick Start | Node.js Quick Start | Java Quick Start
하이브리드 모드 (Hybrid mode)는 빠른 로컬 Java 처리와 AI 백엔드 (AI backends)를 결합합니다. 단순한 페이지는 로컬에서 처리되어 (0.02초) 빠르며, 복잡한 페이지는 AI로 라우팅되어 표 (table) 정확도를 90% 이상 높입니다.
`pip install -U "opendataloader-pdf[hybrid]"`
**터미널 1 (Terminal 1)** — 백엔드 서버 시작:
`opendataloader-pdf-hybrid --port 5002`
**터미널 2 (Terminal 2)** — PDF 처리:
한 번의 호출로 모든 파일을 배치 (Batch) 처리합니다 — 각 호출마다 JVM 프로세스가 생성되므로, 반복적인 호출은 느려질 수 있습니다.
opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/
한 번의 호출로 모든 파일을 배치 (Batch) 처리합니다 — 각 convert() 호출마다 JVM 프로세스가 생성되므로, 반복적인 호출은 느려질 수 있습니다.
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
...
선택 가능한 텍스트가 없는 이미지 기반 PDF의 경우, `--force-ocr`로 백엔드를 시작하세요:
`opendataloader-pdf-hybrid --port 5002 --force-ocr`
영어가 아닌 문서의 경우, 언어를 지정하세요:
`opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang "ko,en"`
지원되는 언어: `en`, `ko`, `ja`, `ch_sim`, `ch_tra`, `de`, `fr`, `ar` 및 기타.
과학 기술 PDF에서 수학 공식 (mathematical formulas)을 LaTeX 형식으로 추출하세요:
opendataloader-pdf-hybrid --enrich-formula
한 번의 호출로 모든 파일을 배치 (Batch) 처리합니다 — 각 호출마다 JVM 프로세스가 생성되므로, 반복적인 호출은 느려질 수 있습니다.
...
{
"type": "formula",
"page number": 1,
...
참고: 공식 (Formula) 및 그림 설명 (picture description) 강화 기능을 사용하려면 클라이언트 측에서 `--hybrid-mode full` 설정이 필요합니다.
차트 및 이미지에 대한 AI 설명을 생성하세요 — RAG 검색 및 접근성을 위한 대체 텍스트 (alt text)에 유용합니다:
서버
opendataloader-pdf-hybrid --enrich-picture-description
한 번의 호출로 모든 파일을 배치 (Batch) 처리합니다 — 각 호출마다 JVM 프로세스가 생성되므로, 반복적인 호출은 느려질 수 있습니다.
...
{
"type": "picture",
"page number": 1,
...
경량 비전 모델 (Vision Model)인 SmolVLM (256M)을 사용합니다. `--picture-description-prompt`를 통해 사용자 정의 프롬프트 (Custom prompts)를 지원합니다.
Hancom Data Loader를 통한 엔터프라이즈급 AI 문서 분석 — 고객의 도메인 특화 문서로 학습된 고객 맞춤형 모델을 제공합니다. 30개 이상의 요소 유형 (표, 차트, 수식, 캡션, 각주 등), VLM 기반의 이미지/차트 이해, 복잡한 표 추출 (병합된 셀, 중첩된 표), 스캔된 문서를 위한 SLA 보장 OCR, 그리고 네이티브 HWP/HWPX 지원을 포함합니다. PDF, DOCX, XLSX, PPTX, HWP, PNG, JPG를 지원합니다. 라이브 데모
| 형식 (Format) | 사용 사례 (Use Case) |
|---|---|
| JSON | 경계 상자 (Bounding boxes) 및 의미론적 유형 (Semantic types)을 포함한 구조화된 데이터 |
| Markdown | LLM 컨텍스트 및 RAG 청크 (Chunks)를 위한 깔끔한 텍스트 |
| HTML | 스타일링이 적용된 웹 디스플레이 |
| Annotated PDF | 시각적 디버깅 — 감지된 구조 확인 (샘플) |
| Text | 일반 텍스트 추출 |
형식 결합: `format="json,markdown"`
| 필드 (Field) | 설명 (Description) |
|---|---|
| `type` | 요소 유형: 제목 (heading), 단락 (paragraph), 표 (table), 목록 (list), 이미지 (image), 캡션 (caption), 수식 (formula) |
| `id` | 상호 참조를 위한 고유 식별자 |
| `page number` | 1부터 시작하는 페이지 참조 |
| `bounding box` | PDF 포인트 단위의 `[left, bottom, right, top]` (72pt = 1인치) |
| `heading level` | 제목 깊이 (1 이상) |
| `content` | 추출된 텍스트 |
PDF에 구조 태그 (Structure tags)가 있는 경우, OpenDataLoader는 저자가 의도한 **정확한 레이아웃 (Exact layout)**을 추출합니다 — 추측이나 휴리스틱 (Heuristics)을 사용하지 않습니다. 제목, 목록, 표 및 읽기 순서가 소스에서 그대로 보존됩니다.
출력 품질은 태그 품질에 따라 달라집니다. 모든 태그가 지정된 PDF가 잘 태그되어 있는 것은 아닙니다. 태그가 부족하거나 잘못된 PDF의 경우, 기본 휴리스틱 모드 또는 `--hybrid docling-fast`가 종종 더 나은 결과를 생성합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
한 번의 호출로 모든 파일을 배치 처리하세요 — 각 convert()는 JVM 프로세스를 생성하므로 반복적인 호출은 느립니다.
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
...
대부분의 PDF 파서 (Parsers)는 구조 태그를 완전히 무시합니다. 자세히 알아보기
PDF에는 숨겨진 프롬프트 인젝션 (Prompt injection) 공격이 포함될 수 있습니다. OpenDataLoader는 자동으로 필터링합니다:
- 숨겨진 텍스트 (투명 텍스트, 크기가 0인 글꼴)
- 페이지 외 콘텐츠 (Off-page content)
- 의심스러운 보이지 않는 레이어 (Suspicious invisible layers)
민감한 데이터(이메일, URL, 전화번호 → 플레이스홀더(placeholders))를 정화(sanitize)하려면, 명시적으로 활성화하십시오:
한 번의 호출로 모든 파일을 배치 처리합니다 — 각 호출마다 JVM 프로세스가 생성되므로, 반복적인 호출은 느립니다.
opendataloader-pdf file1.pdf file2.pdf folder/ --sanitize
`pip install -U langchain-opendataloader-pdf`
from langchain_opendataloader_pdf import OpenDataLoaderPDFLoader
loader = OpenDataLoaderPDFLoader(
file_path=["file1.pdf", "file2.pdf", "folder/"],
...
LangChain Docs | GitHub | PyPI
한 번의 호출로 모든 파일을 배치 처리합니다 — 각 convert()는 JVM 프로세스를 생성하므로, 반복적인 호출은 느립니다.
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
...
**문제점**: 수백만 개의 기존 PDF에는 구조 태그(structure tags)가 없어 접근성 규정(EAA, ADA/Section 508, 한국 디지털 포용법)을 준수하지 못하고 있습니다. 수동 수정 비용은 문서당 $50–200에 달하며 확장성이 떨어집니다.
**OpenDataLoader의 접근 방식**: PDF Association 및 Dual Lab(업계 표준 오픈 소스 PDF/A 및 PDF/UA 검증기인 veraPDF의 개발사)과의 협업을 통해 구축되었습니다. 자동 태깅(Auto-tagging)은 Well-Tagged PDF 사양을 따르며, veraPDF를 사용하여 프로그래밍 방식으로 검증됩니다. 이는 수동 검토가 아닌, PDF 접근성 표준에 대한 자동화된 적합성 검사(conformance checks)입니다. 기존의 어떤 오픈 소스 도구도 엔드 투 엔드(end-to-end)로 태그가 지정된 PDF(Tagged PDFs)를 생성하지 못하며, 대부분은 태그 작성 단계에서 독점 SDK에 의존합니다. OpenDataLoader는 이 모든 과정을 Apache 2.0 라이선스 하에 수행합니다. (협업 세부 사항)
| 규정 | 마감일 | 요구 사항 |
|---|---|---|
| 유럽 접근성 법안 (EAA) | 2025년 6월 28일 | EU 전역의 접근 가능한 디지털 제품 |
| ADA & Section 508 | 시행 중 | 미국 연방 기관 및 공공 숙박 시설 |
| 디지털 포용법 | 시행 중 | 대한민국 디지털 서비스 접근성 |