PDF 转 Markdown 完全指南 - 免费、本地、保留表格与多栏
把 PDF 转成 Markdown 是 LLM 时代最常见的文档处理需求:喂给 RAG 知识库、微调语料库、迁移到 Notion / Obsidian 等笔记工具,都需要干净的结构化文本。这篇指南讲清楚三件事:用什么转、质量看什么、坑在哪里,并给你一条最快的上手路径。
先说结论:推荐方案
| 场景 | 推荐方式 | 说明 |
|---|---|---|
| 偶尔转一两份文件 | 在线解析 Demo | 浏览器打开即用,文件不上传 |
| 批量脚本化处理 | CLI pdf2md 或 Node.js / Python 绑定 | 一行命令/几行代码,可进流水线 |
| 追求最高转换质量 | pdf-inspector | 官方基准综合评分 0.875 第一,表格 TEDS 0.814 |
为什么是 pdf-inspector?它是 Firecrawl 开源的 Rust 解析库,在官方 opendataloader-bench(200 份真实 PDF)中综合评分 0.875 排名第一、全量耗时仅 0.470 秒,比 markitdown 快 30 多倍。详见性能基准。
方式一:在线转换(零安装)
打开首页在线 Demo,把 PDF 拖进虚线框即可:
- 纯本地运行:基于 WebAssembly 在浏览器内完成解析,文件不经过任何服务器;
- 免费无限制:不需要注册登录,没有页数和次数限制;
- 先判定再转换:自动告诉你这份 PDF 是文本型还是扫描型,避免"转出来全是乱码"的困惑;
- 一键带走结果:Markdown 可直接复制或下载为
.md文件。
注意
浏览器 Demo 不含 OCR。如果你的文件是扫描件,Demo 会明确提示——这时需要带 OCR 的原生版本(见下文"扫描件怎么办")。
方式二:命令行 pdf2md(适合批量)
安装后即可在终端把 PDF 转成 Markdown:
cargo install pdf-inspector # 同时获得 pdf2md 与 detect-pdf 两个 CLI
pdf2md report.pdf -o report.md # 转 Markdown
detect-pdf report.pdf # 只看类型判定,不输出正文批量场景直接配合 shell 循环或脚本使用,适合服务器端定时任务、ETL 流水线。完整参数见 CLI 教程。
方式三:代码集成(Node.js / Python / Rust)
Node.js
const { processPdf } = require('@firecrawl/pdf-inspector')
const result = await processPdf('report.pdf')
console.log(result.markdown) // 干净的 GFM MarkdownPython
from pdf_inspector import process_pdf
result = process_pdf("report.pdf")
print(result.markdown) # 直接可得 Markdown 字符串更多 API(按区域提取、选择性 OCR、置信度路由)见快速上手与 API 快速参考。
转换质量怎么看:四个关键点
市面工具很多,但转换质量差异巨大。评估时重点看这四项:
1. 标题层级
很多工具输出的 Markdown 没有层级(全部平铺成普通段落),RAG 切块时无法按章节聚合。pdf-inspector 按字号比例映射 H1–H4,官方基准里 markitdown 的标题得分是 0,pdf-inspector 是 0.788。
2. 表格还原
财务报表、对账单里的表格最容易被压扁成乱掉的纯文本。pdf-inspector 用「框线检测 + 文本对齐启发式」双模式还原单元格结构,输出标准 Markdown 表格,跨页续表也能拼接,表格 TEDS 得分 0.814 居首。
3. 阅读顺序
论文、报纸式双栏排版如果按坐标从上到下硬读,两栏内容会交错错乱。pdf-inspector 的版面分析会重建正确的阅读顺序(阅读顺序得分 0.915),RTL 文本同样支持。
4. 乱码与生僻字体
设计导出的 PDF 常用 CID/Type0 内嵌字体,弱工具会输出 □□□ 或十六进制乱码。pdf-inspector 通过 ToUnicode CMap 正确解码中日韩字体;实在解码不了的页面会被明确标记,而不是悄悄给你错误结果。
扫描件怎么办?
约 54% 的 PDF 是原生文本型,可以直接又快又免费地提取;剩下的是扫描件或图片型 PDF,必须走 OCR。正确姿势是先分类、再路由:
- 先用 detect-pdf 或在线判定确认类型(10–50ms);
- 文本型 → 本地直接转换,零 OCR 成本;
- 扫描型/混合型 → 只把需要的页面送去 OCR(原生版本内置选择性 OCR,每页标注来源 native / ocr / fused)。
判断技巧详见如何判断 PDF 是文本型还是扫描型。