PDF Parser for AI-ready data. Automate PDF accessibility. Open-source.
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
AI 데이터를 위한 PDF 파서. PDF 접근성을 자동화하세요. 오픈소스.
🔍 AI 데이터 추출을 위한 PDF 파서 — 모든 PDF에서 Markdown, JSON(바운딩 박스 포함), HTML을 추출합니다. 벤치마크 1위(전체 0.907). 결정론적 로컬 모드 + 복잡한 페이지를 위한 AI 하이브리드 모드.
pip install opendataloader-pdf, 3줄로 변환합니다. 청킹을 위한 구조화된 Markdown, 소스 인용을 위한 바운딩 박스가 포함된 JSON, HTML을 출력합니다. LangChain 통합 가능. Python, Node.js, Java SDK 제공 (빠른 시작 | LangChain)♿ PDF 접근성 자동화 — 태그가 없는 PDF를 스크린 리더가 읽을 수 있는 Tagged PDF로 대규모 자동 태깅합니다. 엔드투엔드로 Tagged PDF를 생성하는 최초의 오픈소스 도구입니다.
요구 사항: 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(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="markdown,json"
)
!OpenDataLoader PDF 레이아웃 분석 — 제목, 표, 이미지가 바운딩 박스로 감지됨
주석이 달린 PDF 출력 — 각 요소(제목, 단락, 표, 이미지)가 바운딩 박스와 의미 유형으로 감지됩니다.
| 문제 | 해결책 | 상태 | ||
|---|---|---|---|---|
| 파싱 중 PDF 구조 손실 — 잘못된 읽기 순서, 깨진 표, 요소 좌표 없음 | 결정론적 로컬 PDF를 바운딩 박스가 있는 Markdown/JSON으로 변환, XY-Cut++ 읽기 순서 | 출시됨 | ||
| 복잡한 표, 스캔된 PDF, 수식, 차트에 AI 수준의 이해 필요 | 하이브리드 모드가 복잡한 페이지를 AI 백엔드로 라우팅(벤치마크 1위) | 출시됨 | ||
| 수동 PDF 수정 비용 — 접근성 규정(EAA, ADA, Section 508)이 Tagged PDF를 요구함. 수동 수정 비용 $50–200/문서 | 태그가 없는 PDF를 Tagged PDF로 자동 태깅(무료, Apache 2.0). PDF/UA 워크플로의 기반; 전체 PDF/UA-1/2 내보내기는 엔터프라이즈 애드온 | 자동 태깅: 출시됨. PDF/UA 내보내기: 엔터프라이즈 |
| 기능 | 지원 | 등급 | ||
|---|---|---|---|---|
| 데이터 추출 | ||||
| 올바른 읽기 순서로 텍스트 추출 | 예 | 무료 | ||
| 모든 요소에 대한 바운딩 박스 | 예 | 무료 | ||
| 표 추출(단순 테두리) | 예 | 무료 | ||
| 표 추출(복잡/테두리 없음) | 예 | 무료(하이브리드) | ||
| 제목 계층 감지 | 예 | 무료 | ||
| 목록 감지(번호, 글머리 기호, 중첩) | 예 | 무료 | ||
| 좌표와 함께 이미지 추출 | 예 | 무료 | ||
| AI 차트/이미지 설명 | 예 | 무료(하이브리드) | ||
| 스캔된 PDF용 OCR | 예 | 무료(하이브리드) | ||
| 수식 추출(LaTeX) | 예 | 무료(하이브리드) | ||
| Tagged PDF 구조 추출 | 예 | 무료 | ||
| AI 안전(프롬프트 인젝션 필터링) | 예 | 무료 | ||
| 머리글/바닥글/워터마크 필터링 | 예 | 무료 | ||
| 접근성 | ||||
| 태그가 없는 PDF → Tagged PDF 자동 태깅 | 예 | 무료(Apache 2.0) | ||
| PDF/UA-1, PDF/UA-2 내보내기 | 💼 가능 | 엔터프라이즈 | ||
| 접근성 스튜디오(시각 편집기) | 💼 가능 | 엔터프라이즈 | ||
| 제한 사항 | ||||
| Word/Excel/PPT 처리 | 아니요 | — | ||
| GPU 필요 | 아니요 | — |
opendataloader-pdf [하이브리드]가 전체 1위(0.907)를 기록했습니다(읽기 순서, 표, 제목 추출 정확도 기준).
| 엔진 | 전체 | 읽기 순서 | 표 | 제목 | 속도(초/페이지) | 라이선스 | ||
|---|---|---|---|---|---|---|---|---|
| opendataloader [하이브리드] | 0.907 | 0.934 | 0.928 | 0.821 | 0.463 | Apache-2.0 | ||
| nutrient | 0.885 | 0.925 | 0.708 | 0.819 | 0.008 | 상용 | ||
| 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 | ||
| edgeparse | 0.837 | 0.894 | 0.717 | 0.706 | 0.036 | Apache-2.0 | ||
| opendataloader | 0.831 | 0.902 | 0.489 | 0.739 | 0.015 | Apache-2.0 | ||
| mineru | 0.831 | 0.857 | 0.873 | 0.743 | 5.962 | AGPL-3.0 | ||
| pymupdf4llm | 0.732 | 0.885 | 0.401 | 0.412 | 0.091 | AGPL-3.0 | ||
| unstructured | 0.686 | 0.882 | 0.000 | 0.388 | 0.077 | Apache-2.0 | ||
| markitdown | 0.589 | 0.844 | 0.273 | 0.000 | 0.114 | MIT | ||
| liteparse | 0.576 | 0.866 | 0.000 | 0.000 | 1.061 | Apache-2.0 |
점수는 [0, 1]로 정규화됨. 정확도는 높을수록 좋고, 속도는 낮을수록 좋음. 굵게 = 최고. 전체 벤치마크 상세
| 문서 유형 | 모드 | 설치 | 서버 명령어 | 클라이언트 명령어 | ||
|---|---|---|---|---|---|---|
| 표준 디지털 PDF | 빠름(기본값) | pip install opendataloader-pdf |
필요 없음 | opendataloader-pdf file1.pdf file2.pdf folder/ |
||
| 복잡하거나 중첩된 표 | 하이브리드 | pip install "opendataloader-pdf[hybrid]" |
opendataloader-pdf-hybrid --port 5002 |
opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ |
||
| 스캔/이미지 기반 PDF | 하이브리드 + OCR | pip install "opendataloader-pdf[hybrid]" |
opendataloader-pdf-hybrid --port 5002 --force-ocr |
opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ |
||
| 비영어 스캔 PDF | 하이브리드 + 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/ |
||
| 수학 수식 | 하이브리드 + 수식 | pip install "opendataloader-pdf[hybrid]" |
opendataloader-pdf-hybrid --enrich-formula |
opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/ |
||
| 설명이 필요한 차트 | 하이브리드 + 그림 | 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 | 자동 태깅 → 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(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="markdown,json"
)
npm install @opendataloader/pdf
import { convert } from '@opendataloader/pdf';
await convert(['file1.pdf', 'file2.pdf', 'folder/'], {
outputDir: 'output/',
format: 'markdown,json'
});
<dependency>
<groupId>org.opendataloader</groupId>
<artifactId>opendataloader-pdf-core</artifactId>
</dependency>
Python 빠른 시작 | Node.js 빠른 시작 | Java 빠른 시작
하이브리드 모드는 빠른 로컬 Java 처리와 AI 백엔드를 결합합니다. 간단한 페이지는 로컬에서 처리(0.02초)되고, 복잡한 페이지는 AI로 라우팅되어 90% 이상의 표 정확도를 제공합니다.
pip install -U "opendataloader-pdf[hybrid]"
터미널 1 — 백엔드 서버 시작:
opendataloader-pdf-hybrid --port 5002
터미널 2 — PDF 처리:
# 모든 파일을 한 번에 배치 처리 — 각 호출은 JVM 프로세스를 생성하므로 반복 호출은 느립니다
opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/
Python:
# 모든 파일을 한 번에 배치 처리 — 각 convert()는 JVM 프로세스를 생성하므로 반복 호출은 느립니다
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
hybrid="docling-fast"
)
[...truncated...]