分享一个自己写的 MinerU 后处理脚本,可用于建 RAG 知识库
MinerU 后处理脚本
这是一个用于处理 MinerU 工具生成的 Markdown 文件的 Python 脚本,主要用于批量处理 PDF 转换后的文档,优化文件结构和图片路径。
功能特点
- 批量处理:自动扫描并处理目录下的所有 PDF 转换文件夹
- 路径转换:将 Markdown 文件中的相对路径图片链接转换为绝对路径
- 智能拆分:根据文件大小和标题结构自动拆分大型文档
- 记录管理:自动记录转换历史,避免重复处理
- 内容优化:过滤并合并内容过少的章节,提高文档质量
工作原理
脚本会:
- 扫描当前目录下所有包含
.pdf的文件夹 - 查找每个文件夹中的
full.md文件 - 将相对路径图片链接转换为绝对路径
- 根据文件大小决定是否拆分:
- 将处理后的文件保存到
【00 md文件】文件夹 - 在
转换记录.md中记录处理历史
配置参数
脚本顶部提供了以下可调整参数:
MAX_FILE_SIZE_KB = 50 # 拆分阈值(KB)
SPLIT_CHUNK_SIZE_KB = 20 # 无标题时的拆分块大小(KB)
MIN_CHAPTER_CONTENT_LEN = 200 # 章节最小有效内容长度(字符) 使用方法
环境要求
- Python 3.6+
- 无需额外依赖(仅使用标准库)
运行脚本
python mineru后处理.py
目录结构要求
脚本期望的目录结构:
当前目录/
├── mineru后处理.py
├── 【00 md文件】/ # 输出目录(自动创建)
├── 文件名1.pdf-xxx/ # MinerU 生成的文件夹
│ ├── full.md # 需要处理的 Markdown 文件
│ ├── images/ # 图片文件夹
│ └── ...
├── 文件名2.pdf-xxx/ # 其他 PDF 转换文件夹
│ ├── full.md
│ └── ...
└── ...
输出结果
处理完成后,【00 md文件】 文件夹将包含:
- 未拆分的完整文件:
原文件名.md - 拆分后的章节文件:
原文件名 第1章.md、原文件名 第2章.md… - 转换记录:
转换记录.md
核心功能详解
1. 图片路径转换
将 Markdown 中的图片链接从相对路径转换为绝对路径:
# 转换前

# 转换后

2. 智能文档拆分
按标题拆分(优先)
- 识别一级标题(
# 标题) - 过滤内容过少的章节(小于 200 字符)
- 自动合并内容不足的章节到前一章
按大小拆分(无标题时)
- 尽量保持段落完整性
3. 转换记录
自动生成 转换记录.md,记录:
- 原文件名
- 转换时间
- 原文件夹名称
- 章节信息
- 目标文件路径
注意事项
- 路径兼容性:脚本已针对 Windows 路径进行优化
- 编码处理:统一使用 UTF-8 编码
- 重复处理:已处理的文件会自动跳过
- 错误处理:包含完善的异常处理机制
- 文件安全:不会修改原始文件,仅在目标目录创建新文件
常见问题
Q: 脚本提示 "未找到 full.md"?
A: 确保 MinerU 生成的文件夹中包含 full.md 文件。
Q: 如何调整拆分大小?
A: 修改脚本顶部的 MAX_FILE_SIZE_KB 参数。
Q: 可以处理其他格式的文档吗?
A: 脚本专门为处理 MinerU 生成的 Markdown 文件设计。
Q: 如何重新处理已转换的文件?
A: 删除 【00 md文件】 中的 转换记录.md 文件即可重新处理所有文件。