34 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
OpenDataLoader PDF
面向 AI 就绪数据的 PDF 解析器。自动化 PDF 无障碍处理。开源。
🔍 面向 AI 数据提取的 PDF 解析器 — 从任意 PDF 提取 Markdown、JSON(含边界框)和 HTML。基准测试排名第一(0.907 综合得分)。确定性本地模式 + AI 混合模式,应对复杂页面。
- 准确度如何? — 基准测试排名第一:综合得分 0.907,表格准确度 0.928,覆盖 200 份真实世界 PDF,包括多栏版式和科技论文。确定性本地模式 + AI 混合模式应对复杂页面(基准测试)
- 扫描版 PDF 和 OCR? — 支持。混合模式内置 OCR(80+ 种语言)。适用于 300 DPI 及以上低质量扫描件(混合模式)
- 表格、公式、图片、图表? — 支持。复杂/无边框表格、LaTeX 公式,以及 AI 生成的图片/图表描述,均通过混合模式实现(混合模式)
- 如何用于 RAG? —
pip install opendataloader-pdf,三行代码即可完成转换。输出结构化 Markdown 用于分块,带边界框的 JSON 用于来源引用,以及 HTML。提供 LangChain 集成。提供 Python、Node.js、Java SDK(快速开始 | LangChain)
♿ PDF 无障碍自动化 — 大规模将未标注 PDF 自动标注为屏幕阅读器可用的 Tagged PDF。首个端到端生成 Tagged PDF 的开源工具。
- 问题是什么? — 无障碍法规已在全球范围内强制执行。人工 PDF 修复每份文档成本 50–200 美元,且无法规模化(法规)
- 免费部分有哪些? — 版式分析 + 自动标注(Apache 2.0)。未标注 PDF 输入 → Tagged PDF 输出。无需依赖专有 SDK(自动标注)
- PDF/UA 合规性如何? — 将 Tagged PDF 转换为 PDF/UA-1 或 PDF/UA-2 属于企业版附加功能。自动标注生成 Tagged PDF;PDF/UA 导出是最后一步(流水线)
- 为何值得信赖? — 与 Dual Lab(veraPDF 开发者)合作构建,基于 PDF Association 规范、PDF Community. 最佳实践指南与专业知识。自动标注遵循 Well-Tagged PDF specification,,并通过 veraPDF 验证(合作)
30 秒快速开始
要求:Java 11+ 和 Python 3.10+(亦提供 Node.js | Java)
开始之前:运行
java -version。若未找到,请从 Adoptium. 安装 JDK 11+
pip install -U opendataloader-pdf
import opendataloader_pdf
# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="markdown,json"
)
标注后的 PDF 输出 — 每个元素(标题、段落、表格、图片)均检测出边界框和语义类型。
解决哪些问题?
| 问题 | 解决方案 | 状态 |
|---|---|---|
| 解析时 PDF 结构丢失 — 阅读顺序错误、表格破损、无元素坐标 | 确定性本地 PDF 转 Markdown/JSON(含边界框),XY-Cut++ 阅读顺序 | 已发布 |
| 复杂表格、扫描版 PDF、公式、图表 需要 AI 级理解 | 混合模式将复杂页面路由至 AI 后端(基准测试排名第一) | 已发布 |
| 人工 PDF 修复成本高 — 无障碍法规(EAA、ADA、Section 508)要求 Tagged PDF。人工修复每份 50–200 美元 | 自动将未标注 PDF 标注为 Tagged PDF(免费,Apache 2.0)。PDF/UA 工作流的基础;完整 PDF/UA-1/2 导出为企业版附加功能 | 自动标注:已发布。PDF/UA 导出:企业版 |
能力矩阵
| 能力 | 支持 | 层级 |
|---|---|---|
| 数据提取 | ||
| 按正确阅读顺序提取文本 | 是 | 免费 |
| 每个元素的边界框 | 是 | 免费 |
| 表格提取(简单边框) | 是 | 免费 |
| 表格提取(复杂/无边框) | 是 | 免费(Hybrid) |
| 标题层级检测 | 是 | 免费 |
| 列表检测(编号、项目符号、嵌套) | 是 | 免费 |
| 带坐标的图片提取 | 是 | 免费 |
| AI 图表/图片描述 | 是 | 免费(Hybrid) |
| 扫描版 PDF 的 OCR | 是 | 免费(Hybrid) |
| 公式提取(LaTeX) | 是 | 免费(Hybrid) |
| Tagged PDF 结构提取 | 是 | 免费 |
| AI 安全(提示注入过滤) | 是 | 免费 |
| 页眉/页脚/水印过滤 | 是 | 免费 |
| 无障碍 | ||
| 自动标注 → 将未标注 PDF 转为 Tagged PDF | 是 | 免费(Apache 2.0) |
| PDF/UA-1、PDF/UA-2 导出 | 💼 可用 | 企业版 |
| 无障碍工作室(可视化编辑器) | 💼 可用 | 企业版 |
| 限制 | ||
| 处理 Word/Excel/PPT | 否 | — |
| 需要 GPU | 否 | — |
提取基准测试
opendataloader-pdf [hybrid] 综合排名第一(0.907),涵盖阅读顺序、表格和标题提取准确度。
| 引擎 | 综合 | 阅读顺序 | 表格 | 标题 | 速度(秒/页) | 许可证 |
|---|---|---|---|---|---|---|
| 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 |
| 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 | Fast(默认) | pip install opendataloader-pdf |
无需 | opendataloader-pdf file1.pdf file2.pdf folder/ |
| 复杂或嵌套表格 | Hybrid | pip install "opendataloader-pdf[hybrid]" |
opendataloader-pdf-hybrid --port 5002 |
opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ |
| 扫描件 / 基于图像的 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 | 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/ |
| 数学公式 | 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/ |
| 需要描述的图表 | 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 | Auto-tagging → Tagged PDF | pip install opendataloader-pdf |
无需 | opendataloader-pdf --format tagged-pdf file1.pdf file2.pdf folder/ |
快速开始
Python
pip install -U opendataloader-pdf
import opendataloader_pdf
# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="markdown,json"
)
Node.js
npm install @opendataloader/pdf
import { convert } from '@opendataloader/pdf';
await convert(['file1.pdf', 'file2.pdf', 'folder/'], {
outputDir: 'output/',
format: 'markdown,json'
});
Java
<dependency>
<groupId>org.opendataloader</groupId>
<artifactId>opendataloader-pdf-core</artifactId>
</dependency>
Python 快速开始 | Node.js 快速开始 | Java 快速开始
Hybrid 模式:复杂 PDF 的 #1 准确度
Hybrid 模式将快速的本地 Java 处理与 AI 后端相结合。简单页面留在本地处理(0.02s);复杂页面路由到 AI,表格准确度提升 +90%。
pip install -U "opendataloader-pdf[hybrid]"
终端 1 — 启动后端服务:
opendataloader-pdf-hybrid --port 5002
终端 2 — 处理 PDF:
# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow
opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/
Python:
# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
hybrid="docling-fast"
)
扫描 PDF 的 OCR
对没有可选中文本的基于图像 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,以及更多。
公式提取(LaTeX)
从科学 PDF 中提取数学公式为 LaTeX:
# Server: enable formula enrichment
opendataloader-pdf-hybrid --enrich-formula
# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow
opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/
JSON 输出:
{
"type": "formula",
"page number": 1,
"bounding box": [226.2, 144.7, 377.1, 168.7],
"content": "\\frac{f(x+h) - f(x)}{h}"
}
注意:公式与图片描述增强功能需要在客户端使用
--hybrid-mode full。
图表与图片描述
为图表和图像生成 AI 描述 — 适用于 RAG 检索与无障碍 alt 文本:
# Server
opendataloader-pdf-hybrid --enrich-picture-description
# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow
opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/
JSON 输出:
{
"type": "picture",
"page number": 1,
"bounding box": [72.0, 400.0, 540.0, 650.0],
"description": "A bar chart showing waste generation by region from 2016 to 2030..."
}
使用 SmolVLM(256M),一款轻量级视觉模型。可通过
--picture-description-prompt自定义提示词。
Hancom Data Loader 集成 — 即将推出
通过 Hancom Data Loader 提供企业级 AI 文档分析 — 基于你领域专属文档训练的定制化模型。支持 30+ 种元素类型(表格、图表、公式、题注、脚注等)、基于 VLM 的图像/图表理解、复杂表格提取(合并单元格、嵌套表格)、带 SLA 保障的扫描文档 OCR,以及原生 HWP/HWPX 支持。支持 PDF、DOCX、XLSX、PPTX、HWP、PNG、JPG。在线演示
输出格式
| 格式 | 使用场景 |
|---|---|
| JSON | 带边界框与语义类型的结构化数据 |
| Markdown | 适用于 LLM 上下文、RAG 分块的整洁文本 |
| HTML | 带样式的网页展示 |
| Annotated PDF | 可视化调试 — 查看检测到的结构(示例) |
| Text | 纯文本提取 |
组合多种格式:format="json,markdown"
JSON 输出示例
{
"type": "heading",
"id": 42,
"level": "Title",
"page number": 1,
"bounding box": [72.0, 700.0, 540.0, 730.0],
"heading level": 1,
"font": "Helvetica-Bold",
"font size": 24.0,
"text color": "[0.0]",
"content": "Introduction"
}
| 字段 | 说明 |
|---|---|
type |
元素类型:heading、paragraph、table、list、image、caption、formula |
id |
用于交叉引用的唯一标识符 |
page number |
从 1 开始的页码引用 |
bounding box |
PDF 点(72pt = 1 英寸)中的 [left, bottom, right, top] |
heading level |
标题层级(1+) |
content |
提取的文本 |
高级功能
Tagged PDF 支持
当 PDF 带有结构标签时,OpenDataLoader 会提取作者原本意图的精确版式 — 无需猜测,无需启发式规则。标题、列表、表格与阅读顺序均从源文件保留。
输出质量取决于标签质量。 并非所有 Tagged PDF 都标注良好。对于标签稀疏或错误的 PDF,默认启发式模式或
--hybrid docling-fast往往能产生更好的结果。
# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
use_struct_tree=True # Use native PDF structure tags
)
大多数 PDF 解析器会完全忽略结构标签。了解更多
AI 安全:提示注入(Prompt Injection)防护
PDF 可能包含隐藏的提示注入攻击。OpenDataLoader 会自动过滤:
- 隐藏文本(透明、零尺寸字体)
- 页面外内容
- 可疑的不可见图层
要对敏感数据(电子邮件、URL、电话号码 → 占位符)进行脱敏,需显式启用:
# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow
opendataloader-pdf file1.pdf file2.pdf folder/ --sanitize
LangChain 集成
pip install -U langchain-opendataloader-pdf
from langchain_opendataloader_pdf import OpenDataLoaderPDFLoader
loader = OpenDataLoaderPDFLoader(
file_path=["file1.pdf", "file2.pdf", "folder/"],
format="text"
)
documents = loader.load()
LangChain 文档 | GitHub | PyPI
高级选项
# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="json,markdown,pdf",
image_output="embedded", # "off", "embedded" (Base64), or "external" (default)
image_format="jpeg", # "png" or "jpeg"
use_struct_tree=True, # Use native PDF structure
)
PDF 无障碍与 PDF/UA 转换
问题:数百万现有 PDF 缺少结构标签,无法满足无障碍法规要求(EAA、ADA/Section 508、韩国《数字包容法》)。人工修复每份文档成本为 $50–200,且无法规模化。
OpenDataLoader 的方案:与 PDF Association 和 Dual Lab(veraPDF, 的开发者,后者是业界参考的开源 PDF/A 与 PDF/UA 验证器)合作构建。自动标记遵循 Well-Tagged PDF 规范,并使用 veraPDF 进行程序化验证 — 针对 PDF 无障碍标准进行自动化一致性检查,而非人工审查。现有开源工具均无法端到端生成 Tagged PDF — 大多数在标签写入步骤依赖专有 SDK。OpenDataLoader 在 Apache 2.0 下实现全部功能。(合作详情)
| 法规 | 截止日期 | 要求 |
|---|---|---|
| European Accessibility Act (EAA) | June 28, 2025 | 欧盟范围内的无障碍数字产品 |
| ADA & Section 508 | In effect | 美国联邦机构及公共场所 |
| Digital Inclusion Act | In effect | 韩国数字服务无障碍 |
标准与验证
| 方面 | 详情 |
|---|---|
| 规范 | Well-Tagged PDF(PDF Association 发布) |
| 验证 | veraPDF — 业界参考的开源 PDF/A 与 PDF/UA 验证器 |
| 合作 | PDF Association + Dual Lab(veraPDF 开发者)共同开发标记与验证 |
| 许可证 | 自动标记 → Tagged PDF:Apache 2.0(免费)。PDF/UA 导出:企业版 |
无障碍流水线
| 步骤 | 功能 | 状态 | 层级 |
|---|---|---|---|
| 1. 审计 | 读取现有 PDF 标签,检测未标记的 PDF | Shipped | 免费 |
| 2. 自动标记 → Tagged PDF | 为未标记的 PDF 生成结构标签 | Shipped | 免费(Apache 2.0) |
| 3. 导出 PDF/UA | 转换为符合 PDF/UA-1 或 PDF/UA-2 标准的文件 | 💼 可用 | 企业版 |
| 4. 可视化编辑 | 无障碍工作室 — 审查并修复标签 | 💼 可用 | 企业版 |
💼 企业版功能 可按需获取。联系我们 开始使用。
自动标记
从未标记的 PDF 生成 Tagged PDF — 输出为带有结构标签(标题、段落、列表、表格、阅读顺序)的屏幕阅读器可用 PDF。
import opendataloader_pdf
# Untagged PDF in → Tagged PDF out
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="tagged-pdf"
)
# CLI
opendataloader-pdf --format tagged-pdf file1.pdf file2.pdf folder/
可与其他格式组合使用:format="json,tagged-pdf"。
端到端合规工作流
Existing PDFs (untagged)
│
▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ 1. Audit │───>│ 2. Auto-Tag │───>│ 3. Export │───>│ 4. Studio │
│ (check tags) │ │ (→ Tagged PDF) │ │ (PDF/UA) │ │ (visual editor) │
└─────────────────┘ └──────────────────┘ └─────────────────┘ └──────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
use_struct_tree format="tagged-pdf" PDF/UA export Accessibility Studio
(Available now) (Available, Apache 2.0) (Enterprise) (Enterprise)
路线图
| 功能 | 时间线 | 层级 |
|---|---|---|
| Hancom Data Loader — 企业级 AI 文档分析、客户定制模型、基于 VLM 的图表/图像理解、生产级 OCR | Q2-Q3 2026 | 计划中 |
| 结构验证 — 验证 PDF 标签树 | Q3 2026 | 计划中 |
常见问题
RAG 场景下最好的 PDF 解析器是什么?
对于 RAG 流水线,你需要一款能保留文档结构、维持正确阅读顺序,并为引用提供元素坐标的解析器。OpenDataLoader 正是为此设计 — 它输出带有边界框(bounding boxes)的结构化 JSON,使用 XY-Cut++ 处理多栏布局,且无需 GPU 即可在本地运行。在 hybrid 模式下,它在基准测试中综合排名第一(0.907)。
最好的开源 PDF 解析器是什么?
OpenDataLoader PDF 是唯一结合以下能力的开源解析器:基于规则的确定性提取(无需 GPU)、每个元素的边界框、XY-Cut++ 阅读顺序、内置 AI 安全过滤器、原生 Tagged PDF 支持,以及用于复杂文档的 hybrid AI 模式。它在 CPU 本地运行时综合准确率排名第一(0.907)。
如何从 PDF 中提取表格供 LLM 使用?
OpenDataLoader 通过边框分析和文本聚类检测表格,保留行列结构。对于复杂表格,启用 hybrid 模式可将准确率提升 90% 以上(TEDS 分数从 0.489 提升至 0.928):
# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="json",
hybrid="docling-fast" # For complex tables
)
它与 docling、marker 或 pymupdf4llm 相比如何?
OpenDataLoader [hybrid] 在阅读顺序、表格和标题准确率方面综合排名第一(0.907)。主要差异:docling(0.882)表现强劲,但缺少边界框和 AI 安全过滤器。marker(0.861)需要 GPU,且速度慢 1000 倍(53.932 秒/页)。pymupdf4llm(0.732)速度快,但表格(0.401)和标题(0.412)准确率较差。OpenDataLoader 是唯一结合确定性本地提取、每个元素的边界框以及内置提示注入防护的解析器。详见完整基准测试.
能否在不将数据发送到云端的情况下使用?
是的。OpenDataLoader 完全在本地运行。无需 API 调用,不会传输数据——你的文档永远不会离开你的环境。混合模式(hybrid mode)后端也会在你的机器上本地运行。非常适合法律、医疗和金融类文档。
是否支持对扫描版 PDF 进行 OCR?
是的,通过混合模式。使用 pip install "opendataloader-pdf[hybrid]" 安装,用 --force-ocr 启动后端,然后照常处理。通过 --ocr-lang 支持韩语、日语、中文、阿拉伯语等多种语言。
是否支持韩语、日语或中文文档?
是的。对于数字 PDF,文本提取开箱即用。对于扫描版 PDF,请使用混合模式配合 --force-ocr --ocr-lang "ko,en"(或 ja、ch_sim、ch_tra)。即将推出:Hancom Data Loader integration — 企业级 AI 文档分析,内置生产级 OCR,以及针对你的特定文档类型和工作流程优化的客户定制模型。
速度有多快?
本地模式在 CPU 上每秒可处理 60+ 页(0.02 秒/页)。混合模式每秒可处理 2+ 页(0.46 秒/页),对复杂文档的准确率显著更高。无需 GPU。在 Apple M4 上完成基准测试。Full benchmark details. 通过多进程批量处理,在 8+ 核机器上吞吐量可超过每秒 100 页。
是否支持多栏版式?
是的。OpenDataLoader 使用 XY-Cut++ 阅读顺序分析,可在多栏页面、侧边栏和混合版式中正确排序文本。这在本地模式和混合模式下均可使用,无需任何配置。
什么是混合模式?
混合模式将快速的本地 Java 处理与 AI 后端相结合。简单页面在本地处理(0.02 秒/页);复杂页面(表格、扫描内容、公式、图表)会自动路由到 AI 后端以获得更高准确率。后端在你的机器上本地运行——无需云端。请参阅 Which Mode Should I Use? 和 Hybrid Mode Guide.
是否可与 LangChain 配合使用?
是的。安装 langchain-opendataloader-pdf 即可获得官方 LangChain 文档加载器集成。请参阅 LangChain docs.
如何为 RAG 对 PDF 进行分块?
OpenDataLoader 输出结构化 Markdown,保留标题、表格和列表——非常适合作为语义分块的输入。JSON 输出中的每个元素都包含 type、heading level 和 page number,因此你可以按章节或页面边界进行拆分。对于大多数 RAG 流水线:使用 format="markdown" 解析文本块,或在需要元素级控制时使用 format="json"。配合 LangChain 的 RecursiveCharacterTextSplitter 或你自己的基于标题的分割器可获得最佳效果。
如何在 RAG 回答中引用 PDF 来源?
JSON 输出中的每个元素都包含 bounding box(PDF 点坐标中的 [left, bottom, right, top])和 page number。当 RAG 流水线返回答案时,将来源块映射回其边界框,以在原始 PDF 中高亮显示确切位置。这实现了「点击溯源」用户体验——用户可以看到答案来自哪个段落、表格或图表。没有其他开源解析器默认提供每个元素的边界框。
如何将 PDF 转换为 Markdown 供 LLM 使用?
import opendataloader_pdf
# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="markdown"
)
OpenDataLoader 在 Markdown 输出中保留标题层级、表格结构和阅读顺序。对于包含无边框表格或扫描页面的复杂文档,请使用混合模式(hybrid="docling-fast")以获得更高准确率。输出足够干净,可直接输入 LLM 上下文窗口或 RAG 分块流水线。
是否有自动化的 PDF 无障碍修复工具?
是的。OpenDataLoader 是首个端到端自动化 PDF 无障碍处理的开源工具。与 PDF Association and Dual Lab(veraPDF 开发者)合作构建,自动标记遵循 Well-Tagged PDF 规范,并使用 veraPDF 进行程序化验证。版式分析引擎可检测文档结构(标题、表格、列表、阅读顺序)并自动生成无障碍标签。自动标记在 Apache 2.0 下将无标签 PDF 转换为 Tagged PDF——无需专有 SDK 依赖。使用 format="tagged-pdf"(Python/Node.js)或 --format tagged-pdf(CLI)。对于需要完整 PDF/UA 合规性的组织,企业附加组件提供 PDF/UA 导出和可视化标签编辑器。这可取代通常每份文档花费 $50–200+ 的手动修复工作流。
这真的是首个开源 PDF 自动标记工具吗?
是的。现有工具要么依赖专有 SDK 来写入结构标签,要么仅输出非 PDF 格式(例如,Docling 输出 Markdown/JSON 但无法生成 Tagged PDF),要么需要人工干预。OpenDataLoader 是首个在开源许可证(Apache 2.0)下完整实现版式分析 → 标签生成 → Tagged PDF 输出的工具,无专有依赖。自动标记遵循 PDF Association 的 Well-Tagged PDF 规范,并使用 veraPDF(行业参考级的开源 PDF/A 和 PDF/UA 验证器)进行验证。
如何将现有 PDF 转换为 PDF/UA?
OpenDataLoader 提供端到端流水线:审计现有 PDF 的标签(use_struct_tree=True)、将无标签 PDF 自动标记为 Tagged PDF(format="tagged-pdf",在 Apache 2.0 下免费),并导出为 PDF/UA-1 或 PDF/UA-2(企业附加组件)。自动标记遵循 PDF Association 的 Well-Tagged PDF 规范,并使用 veraPDF 进行验证。自动标记生成 Tagged PDF;PDF/UA 导出是最后一步。Contact us for enterprise integration.
如何使 PDF 符合 EAA 合规要求?
《欧洲无障碍法案》(European Accessibility Act)要求于 2025 年 6 月 28 日前提供无障碍数字产品。OpenDataLoader 支持完整的修复工作流:审计 → 自动标记 → Tagged PDF → PDF/UA 导出。自动标记遵循 PDF Association 的 Well-Tagged PDF 规范,并使用 veraPDF 进行验证,确保符合标准的输出。自动标记为 Tagged PDF 在 Apache 2.0 下开源。PDF/UA 导出和无障碍工作室(accessibility studio)为企业附加组件。请参阅我们的 Accessibility Guide.
OpenDataLoader PDF 是否免费?
核心库在 Apache 2.0 下开源——可免费用于商业用途。这包括所有提取功能(文本、表格、图片、OCR、公式、通过混合模式的图表)、AI 安全过滤器、Tagged PDF 支持,以及自动标记为 Tagged PDF。我们承诺保持核心无障碍流水线(版式分析 → 自动标记 → Tagged PDF)免费且开源。企业附加组件(PDF/UA 导出、无障碍工作室)可供需要端到端监管合规的组织使用。
许可证为何从 MPL 2.0 更改为 Apache 2.0?
MPL 2.0 要求文件级 copyleft,这通常会在企业采用前触发法律审查。Apache 2.0 完全宽松——无 copyleft 义务,更易集成到商业项目中。如果你使用的是 2.0 之前的版本,它仍受 MPL 2.0 约束,你可以继续使用。升级到 2.0+ 意味着你的项目遵循 Apache 2.0 条款,该条款严格来说更加宽松——无额外义务,你无需采取任何行动。
文档
贡献
欢迎贡献!请参阅 CONTRIBUTING.md 了解贡献指南。
许可证
注意: 2.0 之前的版本采用 Mozilla Public License 2.0.
觉得有帮助? 给我们点个 Star,帮助更多人发现 OpenDataLoader。


