opendataloader-project/opendataloader-pdf
摘要
OpenDataLoader PDF 是一个开源PDF解析器,可提取结构化数据(Markdown、JSON、HTML),在基准测试中达到顶尖准确率(总体0.907),并自动进行PDF无障碍修复,符合标记PDF/PDF/UA标准。
适用于AI就绪数据的PDF解析器。自动实现PDF无障碍。开源。
查看缓存全文
缓存时间: 2026/06/03 21:37
opendataloader-project/opendataloader-pdf 来源:https://github.com/opendataloader-project/opendataloader-pdf # OpenDataLoader PDF 适用于AI就绪数据的PDF解析器。自动化PDF无障碍支持。开源。 许可证 (https://github.com/opendataloader-project/opendataloader-pdf/blob/main/LICENSE) PyPI 版本 (https://pypi.org/project/opendataloader-pdf/) npm 版本 (https://www.npmjs.com/package/@opendataloader/pdf) Maven Central (https://search.maven.org/artifact/org.opendataloader/opendataloader-pdf-core) Java (https://github.com/opendataloader-project/opendataloader-pdf#java) 🔍 用于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大规模转化为屏幕阅读器就绪的标签化PDF。首个端到端生成标签化PDF的开源工具。 - 痛点是什么? — 全球范围内无障碍法规已强制执行。手动修复PDF每份文档需花费50–200美元,且无法扩展(法规) - 什么免费? — 布局分析 + 自动标签(Apache 2.0)。输入无标签PDF → 输出标签化PDF。无专有SDK依赖(自动标签) - PDF/UA合规呢? — 将标签化PDF转换为PDF/UA-1或PDF/UA-2是企业级附加功能。自动标签生成标签化PDF;PDF/UA导出是最后一步(管道) - 为何信任? — 与Dual Lab (https://duallab.com)(veraPDF (https://verapdf.org) 开发者)合作开发,基于PDF协会 (https://pdfa.org) 规范、最佳实践指南及PDF社区 (https://pdfa.org/community/) 的专业知识。自动标签遵循Well-Tagged PDF规范 (https://pdfa.org/wtpdf/),并经veraPDF验证(合作详情 (https://opendataloader.org/docs/tagged-pdf-collaboration)) ## 30秒快速开始 要求:Java 11+ 和 Python 3.10+(也支持 Node.js (https://opendataloader.org/docs/quick-start-nodejs) | Java (https://opendataloader.org/docs/quick-start-java) ) > 开始前:运行 java -version。如果未找到,请从 Adoptium (https://adoptium.net/) 安装 JDK 11+。 bash pip install -U opendataloader-pdf python 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后端(基准测试排名第一) | 已发布 | | 手动PDF修复成本 — 无障碍法规(EAA、ADA、Section 508)要求标签化PDF。手动修复每份文档成本50–200美元 | 自动将未标签PDF转为标签化PDF(免费,Apache 2.0)。PDF/UA工作流的基础;完整PDF/UA-1/2导出为企业级附加功能 | 自动标签:已发布。PDF/UA导出:企业版 | ## 能力矩阵 | 能力 | 支持 | 层级 | |——|——|——| | 数据提取 | | | | 提取文本并保持正确阅读顺序 | 是 | 免费 | | 每个元素的边界框 | 是 | 免费 | | 表格提取(简单边框) | 是 | 免费 | | 表格提取(复杂/无线) | 是 | 免费(混合) | | 标题层级检测 | 是 | 免费 | | 列表检测(编号、项目符号、嵌套) | 是 | 免费 | | 图像提取(带坐标) | 是 | 免费 | | AI图表/图像描述 | 是 | 免费(混合) | | 扫描PDF的OCR | 是 | 免费(混合) | | 公式提取(LaTeX) | 是 | 免费(混合) | | 标签化PDF结构提取 | 是 | 免费 | | AI安全(提示注入过滤) | 是 | 免费 | | 页眉/页脚/水印过滤 | 是 | 免费 | | 无障碍 | | | | 自动标签 → 为未标签PDF生成标签化PDF | 是 | 免费(Apache 2.0) | | PDF/UA-1, PDF/UA-2 导出 | 💼 可用 | 企业版 | | 无障碍工作室(可视化编辑器) | 💼 可用 | 企业版 | | 限制 | | | | 处理Word/Excel/PPT | 否 | — | | 需要GPU | 否 | — | ## 提取基准测试 opendataloader-pdf [混合] 综合排名第一(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]。准确率越高越好;速度越低越好。粗体 = 最佳。完整基准测试细节 (https://github.com/opendataloader-project/opendataloader-bench) Benchmark (https://github.com/opendataloader-project/opendataloader-bench) 质量细分 (https://github.com/opendataloader-project/opendataloader-bench) ## 我应该使用哪种模式? | 你的文档 | 模式 | 安装 | 服务器命令 | 客户端命令 | |–––––|——|——|———–|————| | 标准数字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 | 自动标签 → 标签化PDF | pip install opendataloader-pdf | 无需 | opendataloader-pdf --format tagged-pdf file1.pdf file2.pdf folder/ | ## 快速开始 ### Python bash pip install -U opendataloader-pdf python import opendataloader_pdf # 一次调用批量处理所有文件 — 每次 convert() 会启动一个 JVM 进程,因此重复调用会很慢 opendataloader_pdf.convert( input_path=["file1.pdf", "file2.pdf", "folder/"], output_dir="output/", format="markdown,json" ) ### Node.js bash npm install @opendataloader/pdf typescript import { convert } from '@opendataloader/pdf'; await convert(['file1.pdf', 'file2.pdf', 'folder/'], { outputDir: 'output/', format: 'markdown,json' }); ### Java xml <dependency> <groupId>org.opendataloader</groupId> <artifactId>opendataloader-pdf-core</artifactId> <version>1.0.0</version> </dependency> Python 快速开始 (https://opendataloader.org/docs/quick-start-python) | Node.js 快速开始 (https://opendataloader.org/docs/quick-start-nodejs) | Java 快速开始 (https://opendataloader.org/docs/quick-start-java) ## 混合模式:复杂PDF的#1准确率 混合模式结合了快速的本地Java处理与AI后端。简单页面在本地处理(0.02秒);复杂页面路由至AI,实现>90%的表格准确率。 bash pip install -U "opendataloader-pdf[hybrid]" 终端 1 — 启动后端服务器: bash opendataloader-pdf-hybrid --port 5002 终端 2 — 处理PDF: bash # 一次调用批量处理所有文件 — 每次调用会启动一个 JVM 进程,因此重复调用会很慢 opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder/ Python: python # 一次调用批量处理所有文件 — 每次 convert() 会启动一个 JVM 进程,因此重复调用会很慢 opendataloader_pdf.convert( input_path=["file1.pdf", "file2.pdf", "folder/"], output_dir="output/", hybrid="docling-fast" ) ### 扫描PDF的OCR 对于无可选择文本的基于图像的PDF,使用 --force-ocr 启动后端: bash opendataloader-pdf-hybrid --port 5002 --force-ocr 对于非英文文档,指定语言: bash opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang "ko,en" 支持的语言:en、ko、ja、ch_sim、ch_tra、de、fr、ar 等。 ### 公式提取(LaTeX) 从科学PDF中提取数学公式为 LaTeX: bash # 服务器:启用公式增强 opendataloader-pdf-hybrid --enrich-formula # 一次调用批量处理所有文件 — 每次调用会启动一个 JVM 进程,因此重复调用会很慢 opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/ JSON 输出示例: 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搜索和无障碍替代文本: bash # 服务器 opendataloader-pdf-hybrid --enrich-picture-description # 一次调用批量处理所有文件 — 每次调用会启动一个 JVM 进程,因此重复调用会很慢 opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder/ JSON 输出示例: json { "type": "picture", "page number": 1, "bounding box": [72.0, 400.0, 540.0, 650.0], "description": "一个柱状图,展示了2016年至2030年各区域废物产生量..." } > 使用轻量级视觉模型 SmolVLM (256M)。可通过 --picture-description-prompt 自定义提示词。 ### Hancom Data Loader 集成 — 即将推出 通过 Hancom Data Loader (https://sdk.hancom.com/en/services/1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) 实现企业级AI文档分析 — 针对你的领域文档训练的定制化模型。支持30+种元素类型(表格、图表、公式、标题、脚注等)、基于VLM的图像/图表理解、复杂表格提取(合并单元格、嵌套表格)、SLA支持的扫描文档OCR,以及原生 HWP/HWPX 支持。支持 PDF、DOCX、XLSX、PPTX、HWP、PNG、JPG。 在线演示 (https://livedemo.sdk.hancom.com/en/dataloader?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) 混合模式指南 (https://opendataloader.org/docs/hybrid-mode) ## 输出格式 | 格式 | 用途 | |——|——| | JSON | 结构化数据,含边界框和语义类型 | | Markdown | 用于LLM上下文的纯文本,RAG分块 | | HTML | 带样式的Web展示 | | 带注释的PDF | 可视化调试 — 查看检测到的结构(示例 (https://opendataloader.org/demo/samples/01030000000000)) | | 文本 | 纯文本提取 | 组合格式:format="json,markdown" ### JSON 输出示例 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 | [left, bottom, right, top],单位 PDF 点(72pt = 1英寸) | | heading level | 标题深度(1+) | | content | 提取的文本 | 完整 JSON Schema (https://opendataloader.org/docs/reference/json-schema) ## 高级功能 ### 标签化PDF支持 当PDF包含结构标签时,OpenDataLoader提取作者意图的精确布局 — 无需猜测,无需启发式方法。标题、列表、表格和阅读顺序均从源文件保留。 > 输出质量取决于标签质量。 并非所有标签化PDF都正确标注。对于标签稀疏或错误的PDF,默认的启发式模式或 --hybrid docling-fast 通常能产生更好的结果。 python # 一次调用批量处理所有文件 — 每次 convert() 会启动一个 JVM 进程,因此重复调用会很慢 opendataloader_pdf.convert( input_path=["file1.pdf", "file2.pdf", "folder/"], output_dir="output/", use_struct_tree=True # 使用原生PDF结构标签 ) 大多数PDF解析器完全忽略结构标签。了解更多 (https://opendataloader.org/docs/tagged-pdf) ### AI安全:提示注入保护 PDF可能包含隐藏的提示注入攻击。OpenDataLoader自动过滤: - 隐藏文本(透明、零字号字体) - 页面外内容 - 可疑的不可见图层 要对敏感数据(电子邮件、URL、电话号码 → 占位符)进行消毒,请显式启用: bash # 一次调用批量处理所有文件 — 每次调用会启动一个 JVM 进程,因此重复调用会很慢 opendataloader-pdf file1.pdf file2.pdf folder/ --sanitize AI安全指南 (https://opendataloader.org/docs/ai-safety) ### LangChain 集成 bash pip install -U langchain-opendataloader-pdf python from langchain_opendataloader_pdf import OpenDataLoaderPDFLoader loader = OpenDataLoaderPDFLoader( file_path=["file1.pdf", "file2.pdf", "folder/"], format="text" ) documents = loader.load() LangChain 文档 (https://docs.langchain.com/oss/python/integrations/document_loaders/opendataloader_pdf) | GitHub (https://github.com/opendataloader-project/langchain-opendataloader-pdf) | PyPI (https://pypi.org/project/langchain-opendataloader-pdf/) ### 高级选项 ``python # Ba
相似文章
@rwayne: 太屌了学术论文搭本地知识库,瓶颈一直在 PDF 怎么干净转 md。OpenDataLoader-PDF 把这道题做到了 0.907 准确率 开源 PDF 解析榜第一全套 Apache 2.0。 200 篇真实论文测试集的关键数字 总分 0…
OpenDataLoader-PDF 是一款开源 PDF 解析工具,在真实学术论文测试中达到 0.907 的高准确率,支持将复杂的 PDF 文档(含表格、公式、扫描件)高效转换为 Markdown 和 JSON,非常适合本地知识库和 RAG 应用。
@AIExplorerTim: 有人刚刚开发了一个工具,可以将 PDF 转换为 干净、结构化的 Markdown 速度达到 100 页/秒 不需要 GPU。 不需要 API 成本。 没有混乱的解析。 只有原始的、可用的数据。 它可以轻松处理的内容: • 表格 → 完美提…
OpenDataLoader 是一个开源工具,可将 PDF 转换为结构化的 Markdown 和 JSON,支持 100 页/秒的本地处理速度,无需 GPU 或 API 成本,专为 RAG 管道和 PDF 无障碍自动化设计。
opendatalab/MinerU
MinerU 是 OpenDataLab 开发的一款开源工具,用于从 PDF 和文档中提取数据。
@NFTCPS: 兄弟们,又一个让我直呼离谱的开源神器出现了 有人把 PDF 解析器干到了每秒 100 页转 Markdown,关键是 100% 免费,纯 CPU 就能跑,不要 GPU、不要云端、连 API key 都省了。 它叫 OpenDataLoad…
开源 PDF 解析器 OpenDataLoader,每秒可转换 100 页为 Markdown,纯 CPU 运行,免费且开源,由 PDF 协会和 veraPDF 团队开发,在基准测试中排名第一。
PaddlePaddle/PaddleOCR
PaddleOCR是一个功能强大、轻量级的OCR工具包,可将PDF和图像转换为结构化数据,适用于AI应用,支持100多种语言,旨在连接文档与大语言模型。