乐于分享
好东西不私藏

我折腾了3小时把100M扫描PDF转成Markdown,最后被一个网页10秒秒杀

我折腾了3小时把100M扫描PDF转成Markdown,最后被一个网页10秒秒杀

我折腾了3小时把100M扫描PDF转成MD,最后被一个网页10秒秒杀

一个人花三个小时折腾一件事,最后发现一个免费网页10秒就能搞定。

这不是笑话,这是我今天的真实经历。

我把这段经历写下来,不是为了炫耀踩坑能力,而是想帮你省掉那三个小时——如果你也有「PDF转Markdown」的需求的话。


为什么要把PDF转成Markdown?

先说背景,省得有人觉得这个需求很奇怪。

随着AI工具普及,越来越多的人开始用大模型处理文档:上传合同让AI提炼条款,上传报告让AI做摘要,上传技术手册让AI解答问题。

问题来了——PDF是一种「展示格式」,不是「处理格式」。它的本质是把内容冻结在一个固定的视觉快照里,对机器极不友好。

Markdown就不同了。它是纯文本,结构清晰,AI读起来高效,人工编辑也方便,还能无缝接入各种笔记工具(Obsidian、Notion、思源笔记、Logseq……)。

把PDF转成MD,是让文档从「存档状态」变成「可用状态」的关键一步。

这个需求,听起来很简单。但当你真正动手的时候,你会发现——它一点都不简单。

PS:我个人常用的就是思源笔记,一个All in One的笔记软件,用于搭建我的知识库,对markdown的支持非常友好,这就是我为什么会转换pdf等格式到markdown,方便导入并以大纲形式编辑,这个后续会再单独介绍。


第一回合:文字版PDF,工具轻松拿下——但没想象中聪明

我先是上传了一份普通的文字版PDF,不是扫描件,文字可以直接选中那种。

使用的是腾讯出品的marvis(本质是一个AI Agent,智能体),节省token。在marvis中安装了“markitdown”这个Skill。

这个Skill调用的工具是微软开源的 markitdown,GitHub 上已经超过 11 万 Star,算是这个赛道的明星项目。

我直接上传PDF,下达指令:「转为MD文档。」

几秒钟,结果出来了。

速度是真的快,没话说。但打开MD文件一看——就是纯文字识别,把PDF里的内容原样扒了出来。没有标题层级,没有大纲结构,就是一个从头到尾的文字块。

说实话,这个效果,用 umi-ocr 也能做到,直接上传文件点击识别,每页它自己OCR,全部合并成一个TXT文件,把后缀改成md,效果大差不差。

markitdown 主打的「语义结构保留」——标题还是标题、表格还是表格——在我这份文字版PDF上压根没发挥出来。可能是PDF本身排版层级不明显,工具也没办法「无中生有」地帮你补结构。

这——肯定是达不到我的要求滴!


第二回合:100M扫描PDF,噩梦开始

紧接着,重头戏来了。

我试着上传一份扫描版PDF——每一页都是一张图片,没有文字层,纯图像。我的要求很明确:

转为MD文件,保留里面的图片、表格、公式的结构。

于是,MARVIS开启了「疯狂作业模式」:

先自动安装 PaddlePaddle 试试水——不行,版本不兼容。

又装 TesseractOCR——跑起来了,但识别效果一般,对中文表格支持不好。

再换 EasyOCR——终于选定,开始正式干活。

因为文件太大(100多M),第一次跑了十几分钟,直接内存溢出中断。

工具没有放弃,换了策略:先把整份PDF每一页渲染成图片,然后分成3个阶段逐批OCR识别,最后合并输出MD文件。

具体工作日志如下图:

整个过程跑了将近两个多小时

电脑风扇嗡嗡响,16G的内存基本都要占满,只能保持不动,别提再做其他操作了。


最终产物出来了。

一个MD文件,加一个图片文件夹。

打开MD,心凉了半截。

没有大纲标题,没有结构分层。

所谓「保留图片」,是把每一页的原始扫描图直接插进MD里,而不是「在表格位置插表格图片,在公式位置插公式截图」——那是我预想中的「精细结构还原」,现实是把原图整页整页地塞进去,OCR文字跟在后面。

本质上,这和直接把PDF里的每张图截出来,再附上OCR文字,没有本质区别。

折腾了两小时,离我想要的效果,差得不是一点半点。


第三回合:在线工具出场,被速度震惊

被本地工具教育了一整个下午之后,我决定试试在线工具。

我选了两个:MinerU在线版 和 PaddlePaddle 在线版

两个工具的体验高度一致:

上传PDF → 等待几秒到十几秒 → 下载MD文件。

就这样。转换后就可以下载所要的文件了。

MinerU转换文字版为例,可以左右两边输出转换前后的对比,基本保持了原版大纲标题

然后右上角点击下载即可以。

值得一提的是,下载的md文件是单文件,要保留图片之类的话,它是在文档中以链接形式存在,后续可编辑替换或者使用图床之类。

然后上传扫描版PDF到PaddlePaddle 在线版转换。(两个软件为什么分开识别不同文件?因为他们对文件大小和页数限制不一样,我这个扫描版文件页数比较多。不影响对比)

PaddlePaddle转换效果如下,也保持了大致的层级大纲

这两个在线工具转换完总耗时不到两分钟,速度快到我以为自己哪里操作错了,赶紧打开下载的本地MD文件验证——

大纲标题保留了。目录结构清晰。图片大体在正确的位置。

和我在本地折腾两个小时的成果相比,简直是降维打击。


当然,两个工具之间也有差别,主要体现在图片处理方式上:

MinerU 的图片用的是在线链接引用。速度极快,文件体积小,但图片托管在它的服务器上——如果链接哪天失效,你的MD里就全是断图,一片空白。

PaddlePaddle 在线版 的图片用HTML标签嵌入。不依赖外部服务器,离线查看没问题,但MD文件体积会比较大,而且HTML标签在部分纯Markdown编辑器里不一定能正常渲染。

对比项
MinerU
PaddlePaddle 在线版
转换速度
极快(秒级)
极快(秒级)
大纲结构
保留
保留
图片处理
在线链接引用
HTML 标签嵌入
图片长期可访问
依赖外部服务器
本地嵌入,更稳定
文件大小
较大

如果你的文档只用一两次,MinerU完全够用,快就是生产力。

如果你要把MD长期存档,多年后还要能打开看,PaddlePaddle的本地嵌入更稳妥。

但也要注意两者对上传的文件的大小及页数的限制。可查看上面上传文档时的截图标记。


三轮下来,我学到了什么?

现在,我们来思考一个问题:

一个免费在线工具,10秒能做完的事,为什么有人愿意花两个小时在本地折腾?

答案只有一个:数据不能离开你的电脑。

这是本地工具唯一真正无法被替代的价值——数据主权。

如果你处理的是合同、财报、内部报告、客户隐私文件,那些绝对不能上传到任何外部服务器的东西,那么本地部署是你唯一的选择,再慢再麻烦也得折腾。

但是,如果你处理的只是普通技术文档、公开资料、个人学习材料——

那就不要浪费自己的时间了。

在线工具无论是速度、效果还是易用性,都已经把本地方案按在地上摩擦。

因为,

在线工具他们的后台处理速度也确实比我本地电脑处理速度快。


选工具,先回答这一个问题

经过这三轮折腾,我把选工具的逻辑浓缩成了一张表:

你的场景
推荐方案
普通文字版PDF,转个大概就行
在线工具(MinerU / PaddlePaddle)
扫描版PDF,要保留结构
MinerU / PaddlePaddle 在线版
文档涉及商业机密/隐私,绝不能上传
本地工具(markitdown + OCR)
需要API / 批量 / 管道化处理
MarkItDown Python 库
超长文档,超过在线工具页数限制
本地工具分批次处理

使用在线工具之前,你只需要回答一个问题:

这份文档能上网吗?

能上网——在线工具,10秒解决,完事。

不能上网——本地工具,准备好时间和耐心。


最后说一句

我发现很多人(包括我自己)在面对工具选择的时候,有一种「本地部署才是硬核」的执念。

觉得用本地工具才叫真正掌握技术,用在线工具像是在作弊。

但这个想法是有问题的。

工具是手段,不是目的。你真正需要的,是那份干净可用的MD文档,而不是在部署本地OCR环境这件事上消耗你的精力。

把时间留给真正重要的事。

如果一个在线工具10秒能帮你解决问题,那它就是最好的工具——不管它看起来多"简单"。

我在本地工具上折腾了三个小时,才学会了这句话。

你不用了。


本文工具清单(都是免费可用的):· MinerU:opendatalab.com/MinerU· PaddlePaddle在线文档转换:aistudio.baidu.com· MarkItDown(微软开源):github.com/microsoft/markitdown

最后,值得一说的是,上面使用的工具,其实都可以本地安装,命令行或webui都有,但安装前也要思考一下:是否有必要?