RAG 的上限往往在模型调用之前就被决定了:标题层级错乱、双栏顺序颠倒、表格拆散或页眉反复出现,都会让后续切分和检索失去语义。文档解析不是预处理杂务,而是知识工程的第一道质量门。
这篇教程聚焦三件事:
- 用 MinerU 4.0 选择合适的解析档位
- 把“成功导出”升级为可检查的质量标准
- 为后续切分、引用和检索保留结构信息
01. 安装与首个解析任务
MinerU 4.0 要求 Python 3.10–3.14,官方推荐 3.12。用独立环境安装,避免与现有机器学习项目的依赖混在一起:
uv venv --python 3.12
source .venv/bin/activate
uv pip install -U "mineru>=4.0,<5"
mineru-kit parse document.pdf -o document.md --tier standard
mineru-kit parse 是无状态的一次性解析,适合批处理;当前版本还提供 Web UI 和 API Server。安装方式和命令可能随版本变化,执行前应核对 MinerU Quick Start。
02. 四个档位怎么选
MinerU 4.0 把解析能力分为 Flash、Basic、Standard 和 Advanced。选择原则不是“越高越好”,而是用最低成本满足文档难度:
| 档位 | 适合内容 | 主要取舍 |
|---|---|---|
| Flash | 文本型、结构简单 PDF | 最快,复杂布局能力有限 |
| Basic | 常规图文文档 | 速度与结构恢复平衡 |
| Standard | 表格、公式、多栏排版 | 默认起点,质量更稳 |
| Advanced | 扫描件、复杂学术或工程资料 | 成本与耗时最高 |
先抽取 5–10 页代表性页面做样本:封面、目录、普通正文、最复杂表格、公式页和扫描页各选一张。样本通过后再跑全量,能避免几百页解析完成后才发现参数不合适。
03. 不要只检查“有没有文件”
输出 Markdown 后,按下面顺序验收:
- 阅读顺序:双栏是否左右串行,脚注是否插入正文中间。
- 标题层级:章节关系是否保留,目录是否被误当正文。
- 表格完整性:行列、合并单元格和单位是否丢失。
- 公式与符号:上下标、希腊字母、编号是否可读。
- 图片关联:图片是否落在对应说明附近,是否有可追踪路径。
- 噪声:页眉、页脚、水印和重复页码是否被清理。
给每项记录“通过、可修复、需重跑”。高风险表格还应与原 PDF 做抽样对照,不能只看 Markdown 渲染得是否整齐。
04. 为 RAG 做二次整理
解析结果通常不能直接入库。先做结构化清洗:删除重复导航,统一标题级别,为表格补上章节语境,并保留 source_file、page、section 等元数据。图片说明要与图片路径成对保留。
切分时优先沿 Markdown 标题边界,而不是每隔固定字数“一刀切”。如果某节超过长度上限,再在段落或列表边界继续拆分,并把上级标题写入每个片段的元数据。这样查询“某设备的维护周期”时,命中的表格不会脱离设备名称。
05. 批量处理的最小防线
批量任务至少要记录输入文件、页数、开始时间、解析档位、输出路径和失败原因。不要覆盖原始 PDF,也不要让失败任务生成看似正常的空文件。
incoming/ 原始文件,只读
parsed/ MinerU 原始输出
cleaned/ 人工或脚本清洗结果
reports/ 质量记录与失败清单
遇到乱码先确认原文是否有文本层;页面顺序异常优先升级解析档位;显存不足则减小并发或使用远程推理。修复后只重跑失败样本,确认问题消失,再恢复全量处理。
“转成 Markdown”只是格式变化;能被正确切分、检索和引用,才算真正完成了文档结构化。