opendataloader-pdf 输出格式全解析:JSON、Markdown、HTML、Text、标注PDF怎么选

原创2026-10-10 16:54:551,393 阅读
文章标签:AI 应用OCRMCP 服务

opendataloader-pdf 输出格式全解析:JSON、Markdown、HTML、Text、标注PDF怎么选

opendataloader-pdf 是一款开源 PDF 解析器(PDF Parser for AI-ready data),专注 AI 就绪数据提取与 PDF 无障碍自动化。解析完成后,它支持 JSON、Markdown、HTML、Text、标注 PDF 等多种输出格式,且可一次同时输出。本文面向新手,逐一讲清每种输出格式的定位、适用场景和关键选项,帮你在一张表内做出选择。

一分钟速览:6 种输出格式定位表

先建立全局认知。可取格式值定义在 options.json 的 --format 选项中(json, text, html, pdf, markdown, tagged-pdf),核心代码中的输出类型枚举见 OutputType.java:

格式 取值 一句话定位 典型场景
JSON json 结构化数据 + 边界框(默认格式) RAG 溯源引用、元素级控制
Markdown markdown 干净的带结构文本 LLM 上下文、RAG 分块
HTML html 浏览器可渲染的网页格式 网页展示、邮件、知识库
Text text 最轻量的纯文本 搜索索引、快速预览
标注 PDF pdf 可视化检测效果 质量调试、结果验收
标注 Tagged PDF tagged-pdf 带无障碍结构标签的 PDF 无障碍合规(读屏器可访问)

💡 不用单选:多个格式可用逗号组合一次输出,如 format="json,markdown"。PDF 只解析一次,各格式输出保持相互一致。

JSON:RAG 管线的"全能选手"

JSON 是默认输出格式,也是最能回答"这段内容出自哪里"的格式。每个元素都带有:

  • type:元素类型(heading、paragraph、table、list、image、caption、formula 等)
  • page number:所在页码(从 1 开始)
  • bounding box:位置坐标 [left, bottom, right, top],单位是 PDF 点(72pt = 1 英寸)
  • content / heading level / font 等:文本内容、标题层级、字体信息

下面是仓库样例 samples/json/lorem.json 中的一段真实输出:

{
  "type": "heading",
  "pdfua_tag": "H1",
  "page number": 1,
  "bounding box": [200.891, 706.938, 394.152, 745.132],
  "heading level": 1,
  "content": "Lorem Ipsum"
}

什么时候选 JSON:

  • RAG 回答需要溯源引用("点击定位原文")——用 bounding box 在原文中高亮精确段落
  • 需要程序化处理元素——按章节、按页拆分都靠 heading level 和 page number
  • 需要校验数据结构——仓库提供了完整的 JSON Schema:schema.json

Markdown:转换即用于 LLM

Markdown 是最适合新手的格式:保留标题层级、表格、列表和阅读顺序,干净到可以直接塞进 LLM 上下文窗口或喂给 RAG 分块器。

两个高频选项(完整说明见 options.json):

  • --markdown-page-separator:页间分隔符,用 %page-number% 占位插入页码,便于带页码的分块
  • --markdown-with-html:允许跨行合并等复杂表格回退为 HTML 表格语法,避免结构在纯 Markdown 里丢失

文档图片较多时,配合 --image-output 控制:external(默认,图片存磁盘引用)/ embedded(Base64 内嵌,单文件自包含)/ off(不提取图片)。

HTML:面向网页展示的场景

如果目标是把文档展示在网页、邮件或内部知识库中,选 format="html":输出浏览器可直接渲染的标记,标题、表格等样式开箱即用。与 Markdown 一样,支持 --html-page-separator 添加页间分隔符。

Text:最轻量的"只要文字"之选

如果只关心"把文字拿到手"——搜索索引、快速预览、或交给只接受纯文本的工具——选 format="text"。输出最小、无任何标记;配合 --keep-line-breaks 可保留原始换行。

标注 PDF:用眼睛看出解析器"看到了什么"

pdf 格式与其他格式不同——它输出在原文件副本上叠加检测结果:标题、段落、表格、图片各元素都被框出并标注语义类型:

opendataloader-pdf 标注PDF输出示例:论文页面上标题、摘要、图片与正文段落均带检测边界框

上图为仓库样例:论文页面上的标题(蓝紫色)、摘要(绿色)、插图与图注、正文段落,全部被解析器框出并分类。

什么时候选:怀疑提取质量时(阅读顺序错乱、表格漏检),生成一份标注 PDF 看一眼,比逐条翻 JSON 直观得多——这也是验收解析效果的最佳方式。

隐藏格式:tagged-pdf 与无障碍合规

若需要 PDF 满足无障碍法规(EAA、ADA/Section 508 等),选 format="tagged-pdf":未打标签的 PDF 进,带结构标签的 Tagged PDF 出——屏幕阅读器可识别的标题、段落、列表、表格和阅读顺序标签,全自动生成,Apache 2.0 开源免费。这是该项目区别于其他 PDF 解析器的核心能力之一。

场景速查表:按目标选格式

你的目标 推荐格式
RAG + 来源引用(页码 + 区域定位) json
RAG 按标题分块 markdown
网页 / 邮件展示 html
搜索索引、快速预览 text
效果调试、质量验收 pdf 配合 json 交叉核对
无障碍合规 tagged-pdf
一次满足多种需求 format="json,markdown,html" 组合输出

两条实用提醒:

  1. 多格式同出只解析一次,比分多次运行更快,且输出相互一致
  2. 管道输出(--to-stdout)有坑:只支持单一格式,且部分格式无法走管道——拿不准就写入文件再读文件,流式输出的注意事项可参考 format-guide.md

小结

  • 要数据选 JSON,要文本选 Markdown,要展示选 HTML,要预览选 Text,要调试选 标注 PDF,要合规选 tagged-pdf
  • 多格式可逗号组合,一次解析、多份输出
  • 选定格式后,再用 --pages、--image-output、--markdown-page-separator 等选项微调

更完整的"目标 → 能力 → 格式"决策路径,可查阅 skills/odl-pdf/references/format-guide.md。

登录后查看全文
opendataloader-pdf