open-swe
即将来临的一天,比过去的一年更为悠长。——福尔斯特
OpenDataLoader PDF
PDF Parser for AI-ready data. Automate PDF accessibility. Open-source.
如果 PDF 是一座城,OpenDataLoader PDF 就是一位很“较真”的城市规划师:
他不满足于“把字抄出来”,他要把街道(阅读顺序)、地标(标题层级)、商铺(表格)、招牌(图片/图表)、甚至每一块砖的位置(bounding boxes)都量好、画好、编号好,然后交给你一份可以直接喂给 AI 的地图。
仓库的自我介绍也很利落:
PDF Parser for AI-ready data. Automate PDF accessibility. Open-source.
他一边拿着放大镜做数据抽取,一边又披上无障碍斗篷,准备把旧世界里沉默的 PDF,变成能被屏幕阅读器真正理解的“会说话的文档”。
🔍 他擅长的第一件事:PDF parser for AI data extraction
OpenDataLoader PDF 的口头禅是:
“Extract Markdown, JSON (with bounding boxes), and HTML from any PDF.”
而且他不是随便说说——README 里直接把成绩单贴出来:
- How accurate is it?:基准测试 #1
- overall 0.90
- table accuracy 0.93
- 数据集覆盖 200 份真实 PDF(多栏、科学论文都在里头)
- Deterministic local mode + AI hybrid mode:简单页走本地确定性流程,复杂页走 hybrid AI
- Scanned PDFs and OCR?:支持,hybrid 模式内置 OCR(80+ languages),对 300 DPI+ 的“糊图”也能处理
- Tables / formulas / images / charts?:复杂/无边框表格、LaTeX 公式、图表/图片描述都能在 hybrid 里搞定
- How do I use this for RAG?:
pip install opendataloader-pdf,三行转换;Markdown 适合 chunking,JSON 的 bounding boxes 适合 citations,HTML 适合展示;还提供 LangChain 集成;Python / Node.js / Java SDK 都有
他像一位靠谱的“资料管理员”:
不怕你 PDF 乱,只怕你不让他上手。
♿ 他擅长的第二件事:PDF accessibility automation(无障碍自动化)
同一套布局分析引擎,还能驱动自动打标(auto-tagging):
- First open-source tool to generate Tagged PDFs end-to-end(coming Q2 2026)
他关心的不是“能看”,而是“人人能用”。因为现实很硬:
- 无障碍法规全球执行
- 人工修复一份 PDF 可能要 $50–200,并且无法规模化
于是他给出“免费与企业”边界:
- What’s free?:布局分析 + auto-tagging(Q2 2026,Apache 2.0)
- 目标是:Untagged PDF in → Tagged PDF out
- 不���赖专有 SDK
- What about PDF/UA compliance?:Tagged PDF → PDF/UA-1 / PDF/UA-2 的导出是 enterprise add-on
- Why trust this?:与 PDF Association、**Dual Lab(veraPDF 开发者)**协作,遵循 Well-Tagged PDF 规范,并用 veraPDF 自动化校验
他像在说:
“我不想让无障碍变成昂贵的手工艺,我要把它变成流水线。”
Get Started in 30 Seconds:30 秒让他开工
Requires:Java 11+ 与 Python 3.10+(Node.js / Java 也可)
开始前先确认:
run
java -version. If not found, install JDK 11+ from Adoptium.
安装:
1 | pip install -U opendataloader-pdf |
三行把 PDF 变成 AI-ready 输出:
1 | import opendataloader_pdf |
他特别强调“批量一次性处理”,因为每次 convert() 都要起一个 JVM 进程,频繁调用会慢——这就是他作为“工程型角色”的细心:不光给你功能,还给你正确姿势。
What Problems Does This Solve?:他专治三类疼痛
| Problem | Solution | Status |
|---|---|---|
| PDF structure lost during parsing(顺序错、表格裂、坐标没了) | 本地确定性 PDF → Markdown/JSON(带 bounding boxes),XY-Cut++ reading order | Shipped |
| 复杂表格/扫描件/公式/图表需要 AI 级理解 | Hybrid mode 把复杂页路由给 AI backend(benchmark #1) | Shipped |
| PDF accessibility compliance(EAA/ADA/Section 508…) | Auto-tagging:layout analysis → Tagged PDF(Q2 2026 免费),PDF/UA 导出(企业) | Auto-tag: Q2 2026 |
Capability Matrix:他到底能做什么(以及在哪个档位)
Data extraction(免费为主,hybrid 更强)
- 读取顺序正确的文本:Yes(Free)
- 每个元素都有 bounding boxes:Yes(Free)
- 表格(简单边框):Yes(Free)
- 表格(复杂/无边框):Yes(Free / Hybrid)
- 标题层级:Yes(Free)
- 列表(含嵌套):Yes(Free)
- 图片抽取与坐标:Yes(Free)
- AI 图表/图片描述:Yes(Free / Hybrid)
- 扫描件 OCR:Yes(Free / Hybrid)
- 公式抽取(LaTeX):Yes(Free / Hybrid)
- Tagged PDF 结构抽取:Yes(Free)
- AI safety(prompt injection filtering):Yes(Free)
- 页眉/页脚/水印过滤:Yes(Free)
Accessibility(无障碍)
- Auto-tagging → Tagged PDF:Coming Q2 2026(Free / Apache 2.0)
- PDF/UA-1、PDF/UA-2 export:💼 Available(Enterprise)
- Accessibility studio:💼 Available(Enterprise)
限制也写得很直:
- Word/Excel/PPT:No
- GPU:不需要
Extraction Benchmarks:他把成绩写在额头上
README 直接给出对比表,结论是:
opendataloader-pdf [hybrid] ranks #1 overall (0.90)
并且还同时照顾“准确”和“速度”两个维度:
- 本地模式可以做到 0.05s/page
- hybrid 模式在准确更高的情况下大约 0.43s/page
他像个既跑百米、又考语文的选手:
“我不想只快,也不想只准;我想在你最需要的时候,既准又不至于慢到离谱。”
Which Mode Should I Use?:他会根据你的 PDF 性格给你安排岗位
| Your Document | Mode | Install | Server Command | Client Command |
|---|---|---|---|---|
| Standard digital PDF | Fast (default) | pip install opendataloader-pdf |
None needed | 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/ |
| 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/ |
| 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/ |
| Untagged PDFs needing accessibility | Auto-tagging → Tagged PDF | Coming Q2 2026 | — | — |
Quick Start:三种语言,三种性格,三种入口
Python
1 | pip install -U opendataloader-pdf |
1 | import opendataloader_pdf |
Node.js
1 | npm install @opendataloader/pdf |
1 | import { convert } from '@opendataloader/pdf'; |
Java
1 | <dependency> |
Hybrid Mode:复杂 PDF 的“精英小队”,也是 #1 Accuracy 的秘密
Hybrid 的描述很像“分级处理”:
- 简单页:本地 Java 快速处理(0.05s/page)
- 复杂页:路由到 AI backend(表格准确率 +90%)
安装:
1 | pip install -U "opendataloader-pdf[hybrid]" |
Terminal 1:启动后端
1 | opendataloader-pdf-hybrid --port 5002 |
Terminal 2:开始处理(批量一次性更快)
1 | # Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow |
Python 也能走 hybrid:
1 | # Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow |
OCR for Scanned PDFs:让“图片型 PDF”开口说话
强制 OCR:
1 | opendataloader-pdf-hybrid --port 5002 --force-ocr |
非英语文档指定语言:
1 | opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang "ko,en" |
语言列表里提到:en, ko, ja, ch_sim, ch_tra, de, fr, ar, and more。
Formula Extraction (LaTeX):把公式也“结构化”
服务端开启公式增强:
1 | opendataloader-pdf-hybrid --enrich-formula |
客户端要带上 --hybrid-mode full:
1 | # Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow |
JSON 输出里公式长这样:
1 | { |
Chart & Image Description:给图表一段“可检索的语言”
服务端开启图片/图表描述增强:
1 | opendataloader-pdf-hybrid --enrich-picture-description |
客户端同样用 --hybrid-mode full:
1 | # Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow |
JSON 输出例子:
1 | { |
README 里还说它用的是 SmolVLM (256M),并支持自定义 prompt:--picture-description-prompt。
Output Formats:他给你的不是“纯文本”,而是一整套可用的产物
| Format | Use Case |
|---|---|
| JSON | 带 bounding boxes、语义类型的结构化数据 |
| Markdown | 干净文本,适合 LLM context / RAG chunks |
| HTML | 网页展示与样式 |
| Annotated PDF | 可视化调试,直接看识别结构 |
| Text | 纯文本 |
格式可以组合:
format="json,markdown"
JSON Output Example
1 | { |
字段解释也给得很清楚:type / id / page number / bounding box / heading level / content……
他像一个把“可追溯性”当成信仰的系统:让每段内容都能回到原 PDF 的具体位置。
Advanced Features:他不止会抽,还会“懂”和“防”
Tagged PDF Support:如果 PDF 自己有结构标签,他就更开心
当 PDF 自带结构 tags 时,他会提取作者意图的“原生布局”:
1 | # Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow |
AI Safety:Prompt Injection Protection(他会防“夹带私货”)
他会自动过滤:
- hidden text(透明/0 字号)
- off-page content(页面外内容)
- suspicious invisible layers(可疑隐形层)
如果要脱敏(emails/URLs/phone numbers → placeholders),CLI 这样开:
1 | # Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow |
LangChain Integration:他也愿意当 LangChain 的好队友
安装:
1 | pip install -U langchain-opendataloader-pdf |
使用:
1 | from langchain_opendataloader_pdf import OpenDataLoaderPDFLoader |
Advanced Options:更细的输出控制
1 | # Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow |
PDF Accessibility & PDF/UA Conversion:法规的倒计时,他记得很清楚
README 里列了几个关键点:
- Problem:海量 PDF 没有结构 tags,违反 EAA / ADA & Section 508 / 韩国 Digital Inclusion Act
- Approach:与 PDF Association、Dual Lab(veraPDF 开发者)合作
- 遵循 Well-Tagged PDF
- 用 veraPDF 做自动化校验
- 并强调:现有开源工具通常在“写 tags”环节依赖专有 SDK,而他要把端到端打通并保持 Apache 2.0
法规表也写得很明确(日期也点名了):
- European Accessibility Act (EAA):June 28, 2025
- ADA & Section 508:In effect
- Digital Inclusion Act:In effect
Accessibility Pipeline:四步走,像一条生产线
- Audit(已上线,Free)
- Auto-tag → Tagged PDF(Q2 2026,Free / Apache 2.0)
- Export PDF/UA(Enterprise)
- Visual editing(Enterprise)
Auto-Tagging Preview(Q2 2026)
1 | # API shape preview — available Q2 2026 |
Roadmap:他把未来写在路线图上
- Auto-tagging → Tagged PDF:Q2 2026(Free)
- Hancom Data Loader:Q2–Q3 2026(Free)
- Structure validation:Q2 2026(Planned)
Frequently Asked Questions:他喜欢把问题讲透
README 的 FAQ 里,他不断重复几个核心价值观:
- RAG 需要:结构、阅读顺序、坐标(用于 citations)
- 他主打:deterministic extraction、bounding boxes、XY-Cut++、AI safety、Tagged PDF support、hybrid AI mode
- 他强调:100% 本地运行,无云端 API 调用,hybrid backend 也在本机跑
- 速度:本地 0.05s/page,hybrid 0.43s/page,无 GPU 也能跑
他像个不爱吹牛、爱贴数据的人:
“你问我好在哪?我把表格、分数、速度全给你看。”
Documentation:他把门都开着
- Quick Start (Python / Node.js / Java)
- JSON Schema Reference
- CLI Options
- Hybrid Mode Guide
- Tagged PDF Support
- AI Safety Features
- PDF Accessibility
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
