PDF 转 Markdown
使用 scripts/pdf_to_md.py 转换文件。脚本通过 PyMuPDF 提取文字、嵌入图片和表格,按页面阅读顺序组织内容,依据原始字号生成至多三级标题,并将相邻的等宽字体文本转换为代码块。
工作流程
- 检查输入 PDF,确定共享图片目录和图片命名前缀。处理同一系列文档时,使用同一个
assets/目录和稳定前缀,例如agent-mem。 - 检查 PyMuPDF 是否可用;若
import fitz失败,在当前 Python 环境安装pymupdf。 - 运行转换脚本。它会在每个 PDF 同目录生成同名
.md,提取 PNG 图片,并通过相对路径引用assets/<前缀>-N.png。 - 核验输出:页码标记与 PDF 页数一致、所有图片引用均存在、共享 assets 目录内图片编号唯一、代码块起止标记成对、每个 Markdown 表格各行列数一致。
- 交付 Markdown 文件路径和图片目录;不要在用户工作区遗留临时转换脚本。
命令
python <技能目录>\scripts\pdf_to_md.py `
"C:\docs\1.介绍.pdf" "C:\docs\2.实战.pdf" `
--assets-dir "C:\docs\assets" --prefix agent-mem
脚本会读取目标图片目录中已有的最大 <前缀>-N.png 编号并从下一号开始,多个 PDF 共用一个 assets 目录时不会覆盖已有图片。
质量要求
- 保留所有可提取文字块的阅读顺序,并保留
<!-- 第 N 页 -->页码标记以便追溯。 - 将每张嵌入式位图保存为 PNG,并将其 Markdown 引用放在接近原始垂直位置处。
- 将 PDF 表格转换为标准 Markdown 表格;用
<br>保留单元格内换行,并转义单元格中的|。 - 按表头真实列锚点折叠合并单元格产生的空列;将首列为空的碎片行合并到上一逻辑行。
- 跨页表格在每页分别输出续表,不要把页码标记包进表格,也不要把表格文字重复输出为普通段落。
- 对复杂合并表格进行抽样复核;若自动识别仍产生断词、重复片段或伪行,依据 PDF 原表手工修正。
- 仅对视觉上突出的文字使用
#、##、###;不要把等宽字体代码片段误转成标题。 - 将连续的纯等宽字体文本转为
text代码块;孤立的标识符保留为行内代码。 - 保持 PDF 与 Markdown 的基础文件名一致,并使用 UTF-8 编码。
- 若 PDF 为扫描件或几乎没有可提取文本,明确说明需要先进行 OCR,不能静默产出不完整的 Markdown。
Scan to join WeChat group