内容生成器
概述
内容生成器是 MinerU 流水线的第七层(终层),负责将经过前六层处理得到的有序内容块列表序列化为人类可读、机器可用的格式,包括 Markdown、JSON、内容目录和图片资源。
关键内容
核心职责
经过七层处理后,每个内容块已包含 type(内容类型)、content(文字或 LaTeX)、bbox(页面坐标)、page_no(页码)及关联的图片/表格结构。内容生成器的任务是把这些结构化数据转换为最终输出。
支持的输出格式
- Markdown(
.md):主要输出格式,可直接用于 RAG/LLM 输入 - JSON(
.json):完整结构化数据,保留 bbox 坐标、行级信息、公式编号等元数据 - 内容目录(
.md附录):从标题块自动提取的层级树,带 Markdown 锚点链接 - 图片资源(
images/目录):提取的嵌入图像,以 MD5 哈希去重命名
块类型到 Markdown 的映射规则
| 块类型 | 转换规则 |
|---|---|
title |
根据标题层级推断输出 #~#### |
text |
直接输出段落文字,尾部加空行 |
equation |
$$\n{latex}\n$$ 独立公式块 |
table |
简单结构输出 Markdown 表格;复杂跨单元格输出 HTML |
figure |
 + 图注 |
header/footer |
跳过不输出 |
figure_caption |
已附属到 figure,不单独输出 |
reference |
分割为无序列表 - 条目 |
行内格式处理
- 行内公式:通过
{{FORMULA:N}}占位符机制,将占位符替换为$latex$格式 - 粗体/斜体/等宽:从 PyMuPDF 提供的字体信息(
font_weight、font_style、is_monospace)转换为 Markdown 标记**/*/`
图片资源管理
每个 figure 块对应一张图片,通过 hashlib.md5(image_bytes).hexdigest()[:8] 计算内容哈希作为文件名,实现自动去重。文件命名格式:figure_p{page_no}_{hash}.png。
JSON 输出结构
JSON 输出比 Markdown 保留更丰富的结构信息,包括:
- pdf_info:每页的 width、height、blocks 数组
- 每个 block 的 type、bbox、content、font_size、heading_level
- 表格同时保留 markdown 和 html 两种表示
- metadata:total_pages、parse_time、pipeline 类型、使用的模型列表、MinerU 版本
命令行与 API
CLI:magic-pdf -p paper.pdf -o output_dir/
Python API:通过 UNIPipe 的 get_markdown() 和 get_json() 方法获取输出。
来源
- raw/assets/MinerU/minerU_08_output.md — MinerU 深度解析系列 · 第八篇:内容生成器与输出管道