如何把 PDF 转成 Markdown
PDF 和 Markdown 站在文档光谱的两端。PDF 把每个字符钉死在页面坐标上,保证在任何设备上看起来一模一样;Markdown 是纯文本,只描述结构,把排版留给渲染者。两者之间的转换,本质是把 PDF 文件里从未存储过的结构重新建设出来。
本指南讲清楚这个重建过程能恢复什么、不能恢复什么,如何在本站的浏览器转换器里转换 PDF,LLM 优化开关改变了什么,以及哪些场景下转换器根本不是合适的工具。
PDF 和 Markdown 为什么是对立的
PDF 是印刷术的后裔:它记录的是某个字符以某种字体、某个字号摆在某个坐标上。文件里没有任何一处写着“这是标题”或“这三列构成一张表”。你在屏幕上看到的结构是阅读器实时重建出来的,文件本身只存了墨迹。
Markdown 正好相反。它几乎不存外观,只存结构:井号开头的是标题,竖线分隔的是表格,缩进嵌套的是列表。字体和间距交给渲染器决定。
所以 PDF 转 Markdown 的转换器本质上是一台结构探测器。它读取定位文本,判断哪些行更大更粗、哪些间距分隔段落、哪些横线对齐成了网格,再把判断结果用 Markdown 语法表达出来。转换器的好坏,就是这套探测的好坏。
一次好的转换能保留什么
第一是阅读顺序。PDF 尤其是双栏排版,存储文本的顺序和人类阅读顺序毫无关系。转换器必须跟随视觉流:左栏读完再读右栏,标题按序出现,段落依次排列。这一步错了,输出就是语法通顺的乱码。
第二是标题层级。正文、图注、标题在字号和字重上不同,转换器把这些差异映射为 #、##、###。如果文档设计者用 13 磅粗体当正文,完美映射是不可能的,但大多数真实文档遵循一致的惯例,探测器可以识别。
第三是段落边界,它比看起来更重要。PDF 的换行发生在页面那行恰好写满的地方,而不是句子结束的地方。把这些断行重新拼成单行段落,是“能直接编辑的 Markdown”和“要逐行修理的 Markdown”之间的分界线。
在本工具里转换 PDF
转换完全在你的浏览器内进行:PDF 解析引擎是从 Rust 编译的 WebAssembly,文件不会离开你的设备。把一个或多个 .pdf 文件拖到页面上,它们会依次转成 Markdown,结果在预览面板显示,可疑之处会给出警告。
开始之前有一个警告值得先知道:没有可提取文本层的页面——通常是扫描件或页面照片——什么都产不出来,工具会明确告诉你哪些页受影响,而不是悄悄交给你一份半空的文档。这种情况有专门的另一篇文章,因为修复发生在转换之前,而不是转换之中。
转换完成后可以直接下载 Markdown 文件,也可以一次转多个 PDF 后打包下载。一切都在本地发生,除设备内存外没有文件大小限制,也没有要排的队。
LLM 优化开关
默认情况下,文本输出会做自动换行,让每行保持可读宽度——pandoc 和大多数文本工具几十年来一直如此。这种换行在渲染视图里不可见,但对机器消费者来说既多耗 token,又让 diff 变得复杂。
LLM 优化开关会关闭换行,让每个段落独占一行。如果你要把文档喂给 ChatGPT、Claude 或本地模型,单行段落的 token 效率略高,按段落边界切块更干净,源文档变更时 diff 也清爽。
这个开关同时把 PDF 引擎的提取 profile 切到紧凑模式,偏向精炼的纯文本输出而不是忠实排版的冗长输出。目的地是模型就开;目的地是人就关——反正编辑器会替你折行。
表格:最难的部分
表格值得单独写一篇文章,因为它确实是整条管线里最难的对象。PDF 格式没有表格的概念;所谓表格只是按行列摆放的字符,有时中间画了线,有时只靠对齐。
本转换器对这类排布应用表格结构识别,输出 GitHub 风格的管道表格。带横线的简单表格——表头下有线、行间有线的那种——通常完整保留。无边框表格、多级表头、合并单元格是信息丢失或被拍平的地方,FAQ 的表格部分有详细说明。
实用建议是:干净的规整数据可以期待正确结果,但任何数字都要抽查。一张渲染得很漂亮的表格仍可能挪动了一个单元格,而看 Markdown 的排版发现不了。转换结果进入生产之前,挑几格和原文对比。
不止 Markdown:HTML、RST 与 LaTeX
Markdown 是默认目的地,但同一条管线可以把输出交给第二级——pandoc 引擎,这正是本站能从 PDF 源产出 reStructuredText 和 LaTeX 的原因。PDF 引擎产出 Markdown,pandoc 读入这份 Markdown 再写出目标格式。
管线绕道 Markdown 而不是直接转换是有理由的。Markdown 是最稳健的中间格式:pandoc 的 Markdown reader 能从它重建抽象文档模型,其余所有 writer 都由这个模型驱动。多一跳,换来一条久经考验的路径。
需要把渲染后的内容贴进网页或邮件时用 HTML,写 Sphinx 文档用 RST,写论文用 LaTeX。但对大多数 PDF 源来说,纯 Markdown 就是最终交付物,其他格式只是顺手提供的便利。
什么时候不该转换
有些 PDF 根本是错的输入。可填写表单的数据存在字段结构里而不是正文流里,转换只能拿到标签拿不到答案。重设计的文档——以图表为主要内容的年报、视觉排版本身承载含义的内容(比如刻意断行的诗歌)——转出来都会被拍平。
证书、扫描证件、以图为主的幻灯片是披着 PDF 外皮的图片文档。存成像素的文字没有任何转换逻辑能抠出来,那需要 OCR,而本工具刻意把 OCR 留给专门的软件去做。
除此之外的一切——合同、论文、报告、文档、手册页——转换都能工作,而且往往工作得不错。你的文档属于哪一类,最快的判断办法是转一次看警告:一次干净的运行、没有页面被标记,输出不经修改就能用的把握就很大。