跳转到内容

输出格式设计与应用:Markdown、JSON 与可视化

输出格式设计与应用:Markdown、JSON 与可视化

学习目标

读完本章后,你将能够:

  • 理解 MinerU 四种输出格式的设计意图与适用场景
  • 根据下游需求选择合适的输出格式
  • 利用可视化输出进行质量检查
  • 处理中间表示(middle_json)进行自定义转换

前置知识


1. MinerU 的输出格式全景

MinerU 每次解析都会生成一组输出文件:

2. 四种核心输出格式详解

2.1 多模态 Markdown(mm_markdown)

设计意图:保留所有视觉元素的引用,作为多模态 LLM 的输入。

# 论文标题
作者:张三, 李四
## 1. 引言
近年来,深度学习在自然语言处理领域取得了显著进展$^{[1]}$。
![Figure 1: 模型架构图](images/figure_1.png)
如上图所示,模型由三个主要部分组成...
## 2. 方法
损失函数定义为:
$$
\mathcal{L} = -\sum_{i=1}^{n} y_i \log(\hat{y}_i)
$$
| 方法 | 准确率 | F1 |
|------|--------|-----|
| Baseline | 85.2% | 0.83 |
| Ours | 92.1% | 0.91 |
> 表1:对比实验结果

适用场景

  • 多模态 LLM 的文档理解(需要图片信息)
  • 人类阅读与审查
  • 需要保留文档原始视觉信息的场景

2.2 NLP Markdown(nlp_markdown)

设计意图:纯文本模式,移除视觉元素引用,适合纯文本 LLM。

# 论文标题
作者:张三, 李四
## 1. 引言
近年来,深度学习在自然语言处理领域取得了显著进展。
[图片: Figure 1 模型架构图]
如上图所示,模型由三个主要部分组成...
## 2. 方法
损失函数定义为:$\mathcal{L} = -\sum_{i=1}^{n} y_i \log(\hat{y}_i)$
[表格: 方法 Baseline 准确率 85.2% F1 0.83 | 方法 Ours 准确率 92.1% F1 0.91]
> 表1:对比实验结果

适用场景

  • 纯文本 LLM 的 RAG 管线
  • 向量数据库索引
  • 文本相似度计算

2.3 内容列表(content_list / content_list_v2)

设计意图:完全结构化的 JSON 输出,保留每个元素的类型信息。

[
{
"type": "title",
"text": "论文标题",
"level": 1
},
{
"type": "text",
"text": "作者:张三, 李四"
},
{
"type": "title",
"text": "1. 引言",
"level": 2
},
{
"type": "text",
"text": "近年来,深度学习..."
},
{
"type": "image",
"image_path": "images/figure_1.png",
"caption": "Figure 1: 模型架构图"
},
{
"type": "equation_interline",
"text": "\\mathcal{L} = -\\sum_{i=1}^{n} y_i \\log(\\hat{y}_i)"
},
{
"type": "simple_table",
"html": "<table>...</table>"
}
]

适用场景

  • 需要精细控制每个元素的处理方式
  • 构建自定义的文档浏览界面
  • 需要对不同类型内容应用不同策略(如图片送多模态模型、文本送向量模型)

2.4 中间表示(middle_json)

设计意图:解析引擎与输出格式之间的中间层,保留最完整的解析信息。

{
"page_info": [{"w": 612, "h": 792}],
"blocks": [
{
"type": "doc_title",
"bbox": [100, 50, 500, 80],
"lines": [{"text": "论文标题", "bbox": [100, 50, 500, 80]}]
}
]
}

适用场景

  • 自定义输出格式转换
  • 解析结果调试与验证
  • 二次开发的基础数据结构

3. 可视化质检

3.1 布局可视化(_layout.pdf)

在原始 PDF 上叠加布局检测的边界框和类型标签:

  • 用途:验证布局检测是否正确识别了页面元素
  • 颜色编码:不同类型的块用不同颜色标注
  • 适用场景:解析效果不佳时,定位是布局检测还是后续处理的问题

3.2 Span 可视化(_span.pdf)

在原始 PDF 上叠加 OCR 文本 span 的边界框:

  • 用途:验证 OCR 文本的位置是否准确
  • 适用场景:文本位置偏移、阅读顺序错误时诊断

4. 输出格式选择策略

5. 陷阱与对策

陷阱对策
NLP Markdown 中表格信息丢失改用 content_list,保留 HTML 表格结构
图片引用路径在迁移后失效整体移动输出目录,保持相对路径
内容列表 v2 与 v1 字段不同确认解析器版本,使用对应的 schema
中间 JSON 结构过于复杂使用 MinerU 提供的转换工具简化
可视化 PDF 生成失败检查 PDFium 兼容性,关闭可视化选项

6. 设计权衡

为什么保留多种输出格式

考量单一格式多格式
灵活性低(用户需自行转换)高(按需选择)
存储多(但可按需生成)
维护简单复杂(多个转换模块)

取舍:MinerU 选择多格式方案,因为文档解析的下游场景差异太大,单一格式无法兼顾所有需求。中间表示(middle_json)作为统一基础,降低了多格式的维护成本。

Markdown vs 内容列表

维度Markdown内容列表
可读性人类友好需要工具
结构化半结构化完全结构化
类型信息隐含在语法中显式标注
下游处理文本处理管线结构化处理管线
转换灵活性固定格式可自定义渲染

取舍:MinerU 同时提供两种格式,Markdown 用于直接阅读和文本模型,内容列表用于需要精细控制的场景。


参考来源