乐于分享
好东西不私藏

微软开源的文档转换md工具,让我告别了复制粘贴的噩梦

微软开源的文档转换md工具,让我告别了复制粘贴的噩梦

你有没有这种经历——

老板扔过来一个PDF,说”把这个整理成Markdown放到知识库里”。你打开PDF,选中文字,复制,粘贴到编辑器,发现格式全乱了。表格变成了一坨,图片没了,代码块的缩进没了。然后你花了一下午手动调整格式,一边调一边骂:这活凭什么要我干?

更惨的是,你以为PDF已经够难搞了,直到你遇到了PPT。

每张幻灯片截图,然后在Markdown里写”第3页:产品介绍”,再配上一张图。20页的PPT能搞你两个小时,最后老板看了一眼说”哦,我就是想看看内容,不用这么正式”。

那一刻,你真的想辞职。


我之前的 workflow,堪称当代酷刑

说实话,在发现这个工具之前,我的文档转换流程是这样的:

场景一:PDF转Markdown

老板发来一份产品手册,50页,要整理到公司的知识库。

我的操作:打开PDF → 选中文字 → 复制 → 粘贴到VS Code → 发现标题全变成正文了 → 手动加# → 发现表格变成了一行一行的文字 → 手动画|- → 发现代码块的缩进没了 → 手动按Tab → 发现图片根本复制不出来 → 一张张截图保存 → 插入Markdown → 最后花了整整一个下午。

效率:大约1小时处理10页,还是简单的文档。

场景二:Word转Markdown

技术经理写了一份需求文档,Word格式,要放到GitHub Wiki上。

我的操作:Word另存为HTML → 用pandoc转Markdown → 发现pandoc把Word的样式全转成内联HTML标签了 → 手动清理<span><div> → 发现表格边框全没了 → 重新画表格 → 发现编号列表变成了1. 2. 3.*混用 → 统一格式 → 最后又花了两个小时。

效率:1小时起步,格式越复杂时间越长。

场景三:PPT转Markdown

产品经理做了一份技术方案PPT,25页,要转成文档存档。

我的操作:每张幻灯片截图 → 在Markdown里写”## 第1页 封面” → 插入截图 → “## 第2页 背景” → 插入截图 → 重复25次 → 发现演讲者备注也要保留 → 打开PPT的备注视图 → 一页页复制备注 → 粘贴到对应位置。

效率:2小时处理20页,手都酸了。

场景四:Excel转Markdown

运营同事给了一份数据报表,3个Sheet,要放到技术文档里。

我的操作:选中表格 → 复制 → 粘贴到在线表格转Markdown工具 → 发现合并单元格的地方全乱了 → 手动调整 → 发现数字变成了字符串 → 手动改 → 3个Sheet重复3遍。

效率:30分钟起步,数据量大的话更久。

说实话,这套流程我干了三年。三年里,我复制粘贴了不知道多少次,手动调整格式调到眼睛疼。我一直觉得,这世上肯定有个更好的办法,但我就是没找到。

直到上周。


发现MarkItDown:微软终于干了件人事

上周在GitHub trending上闲逛,看到一个项目叫MarkItDown,微软开源的,155,741个Star,Python写的,最近还在更新(2026年6月19日刚更新过)。

我心想,又是微软的玩具项目吧?点进去一看,简介就一行字:”A lightweight tool to convert various file types to Markdown.”

各种文件类型转成Markdown?我眼睛亮了。

再看支持格式:

  • PDF ✓
  • Word(.docx) ✓
  • PowerPoint(.pptx) ✓
  • Excel(.xlsx) ✓
  • 图片(带OCR) ✓
  • HTML ✓
  • XML ✓
  • 甚至音频文件的元数据都能提取 ✓

我当时就想,这不会又是那种”理论上支持,实际上一用就崩”的工具吧?

结果一试,真香。


实际使用:一行命令,世界清净了

安装简单得离谱:

pip install markitdown

然后?然后就没有然后了。一行命令搞定一切。

PDF转换:终于不用手动调格式了

以前我最怕转PDF,因为PDF是排版格式,不是结构格式,里面的”标题”其实就是字号大一点的文字,”表格”其实就是画了一堆线。复制出来全是一坨。

用MarkItDown:

markitdown document.pdf > document.md

等个几秒钟,打开生成的Markdown文件,我惊了:

  • 标题层级保留了:PDF里的大标题变成了# 标题,二级标题变成了## 标题,层级关系完全正确。
  • 表格转成Markdown表格了:虽然复杂表格还有点问题(后面会说),但普通表格的列对齐、表头都正确转换了。
  • 图片提取为单独文件了:PDF里的图片被自动提取出来,Markdown里用相对路径引用,不用再一张张截图了。
  • 代码块缩进保留了:技术文档里的代码片段,缩进和换行都完好无损。

我试了一份30页的技术白皮书,以前至少要搞3个小时,现在30秒搞定。剩下的时间我喝了两杯咖啡,还打了把王者荣耀。

Word转换:效果比PDF还好

Word本身就有结构化信息(标题样式、表格、列表),所以转换效果比PDF更好:

markitdown report.docx > report.md
  • Word里的”标题1″”标题2″样式,完美映射到Markdown的###
  • 表格转换几乎完美,连单元格对齐方式都能保留。
  • 编号列表和项目符号列表,转换后格式正确。
  • 嵌入的图片自动提取,路径自动处理。

我转了一份需求文档,Word里用了各种样式,转出来的Markdown结构清晰,直接就能放到GitHub Wiki上,几乎不用手动调整。

PPT转换:终于不用一张张截图了

这个是我最惊喜的。以前转PPT是噩梦,现在:

markitdown presentation.pptx > presentation.md
  • 每页幻灯片转成一级标题:第1页变成# Slide 1,第2页变成# Slide 2,结构清晰。
  • 页面内容转成正文:文本框里的内容按顺序排列,不会乱。
  • 演讲者备注也保留了:PPT的备注信息被单独提取出来,方便对照。
  • 图片自动提取:PPT里的配图自动保存为单独文件。

我转了一份25页的技术方案PPT,以前要2小时,现在10秒。生成的Markdown文件直接提交到GitHub,同事还以为我加班到半夜整理的。

Excel转换:数据报表一键搞定

Excel转换也很实用:

markitdown data.xlsx > data.md
  • 每个Sheet转成单独的Markdown表格:Sheet1、Sheet2分别转换,不会混在一起。
  • 表头自动识别:第一行作为表头,用Markdown表格语法正确渲染。
  • 数据格式尽量保留:数字、日期、文本都能正确转换。

我转了一份运营数据报表,3个Sheet,以前用在线工具要折腾半天,现在一行命令搞定,直接贴到飞书文档里。

图片OCR:会议纪要也能转了

这个是我意外发现的功能。有时候开会,同事把白板拍下来发到群里,或者收到一张带文字的图片,以前只能手动打字,现在:

markitdown meeting_notes.jpg > meeting_notes.md

MarkItDown会调用OCR识别图片里的文字,转成Markdown。虽然识别准确率取决于图片质量,但对付清晰的截图和照片完全够用。

我试了一张会议纪要的照片,手写体不太行,但打印体和屏幕截图识别率很高。以后再也不用对着图片一个个字敲了。

HTML和XML转换:爬虫和数据处理的神器

除了办公文档,MarkItDown还能处理HTML和XML,这个对程序员特别有用:

markitdown page.html > page.md
markitdown data.xml > data.md
  • HTML转Markdown:网页内容一键转成干净的Markdown,适合做内容归档或者做知识库。比直接复制网页内容干净多了,不会带一堆CSS样式和广告代码。
  • XML转Markdown:配置文件、数据交换格式的XML文件,转成Markdown后更容易阅读和编辑。

我有一次需要把一个老项目的API文档(HTML格式)整理到新的文档系统里,用MarkItDown几分钟就搞定了,以前这种活至少要搞半天。


对比其他工具:没有对比就没有伤害

为了客观评价,我把我用过的工具都拉出来对比了一下:

工具
支持格式
表格保留
图片处理
代码块
使用难度
转换速度
手动复制粘贴
❌ 完全丢失
❌ 需要手动截图
❌ 缩进全没
极高
极慢
pandoc
多格式
⭐⭐ 基本保留但样式混乱
❌ 不处理
⭐⭐ 基本保留
中等
PyPDF2
仅PDF
❌ 完全丢失
❌ 不处理
❌ 完全丢失
高(要编程)
中等
在线转换工具
少数格式
⭐⭐ 简单表格可以
❌ 不处理
⭐ 部分保留
依赖网络
MarkItDown
极多格式
⭐⭐⭐⭐ 结构清晰
⭐⭐⭐ 自动提取
⭐⭐⭐⭐ 完好保留
极低

说实话,pandoc其实也不差,但它更像是一个”格式转换器”,而不是”结构提取器”。它会把Word的样式转成HTML标签嵌在Markdown里,最后还是要手动清理。MarkItDown的优势在于它真的理解文档结构,转出来的是干净的Markdown,不是裹着Markdown外衣的HTML。

还有一个我不得不提的点:MarkItDown是Python写的,安装就是一句pip install,没有任何依赖地狱。相比之下,pandoc要下载安装包,配置环境变量,有时候还要处理各种依赖冲突。对于我这种”能少装一个软件就少装一个”的人来说,MarkItDown真的太友好了。

而且MarkItDown支持在Python代码里直接调用,不是只能用命令行。如果你需要在自己的项目里集成文档转换功能,可以这样写:

from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)

几行代码就能集成到你的应用里,做自动化文档处理、做批量转换工具、做文档管理系统,都很方便。


我的实际使用场景:这四个场景救了我

场景一:产品手册进RAG知识库

我们公司在做RAG(检索增强生成)系统,需要把各种产品文档转成Markdown存到向量数据库里。以前这些文档都是PDF格式,我要一个个手动转,一天转不了几份。

现在用MarkItDown批量处理:

for file in *.pdf; do
    markitdown "$file" > "${file%.pdf}.md"
done

一个文件夹的PDF,几分钟全部转成Markdown,直接丢进知识库。RAG系统的召回率都提高了,因为格式干净了,分片效果更好。

场景二:技术方案PPT进GitHub Wiki

我们团队的技术方案评审用PPT,但归档和查阅用GitHub Wiki。以前PPT和Wiki是两套东西,不同步,经常有人看过时的版本。

现在评审完PPT,直接:

markitdown design_review.pptx > wiki/design_review.md

然后git push,Wiki就更新了。PPT和Wiki永远同步,大家也不用打开PPT软件就能看方案。

场景三:需求文档进飞书

合作方的需求文档经常是Word格式,我们要转到飞书文档里做评审和批注。以前要手动复制粘贴,格式还要重新调。

现在:

markitdown requirements.docx > requirements.md

然后直接粘贴到飞书文档,因为都是标准Markdown,飞书能正确识别标题、表格、列表,几乎不用二次调整。

场景四:会议纪要图片转文字

有时候开会没带电脑,用手机拍白板或者拍屏幕上的文档。以前这些图片就躺在相册里,要找的时候翻半天。

现在:

markitdown whiteboard_photo.jpg > notes/2026-06-19-meeting.md

文字提取出来,按日期归档,搜索也方便。虽然OCR不是100%准确,但对付会议纪要和简单文档完全够用,稍微校对一下就行,比从头打字快多了。


谁适合用这个工具?

用了这段时间,我觉得这几类人特别适合用MarkItDown:

程序员和技术写作者:经常要把各种格式的技术文档转成Markdown放到GitHub、GitLab或者自建Wiki上。以前要手动调格式,现在一行命令搞定,省下的时间可以写代码或者写更多文档。

产品经理和项目经理:经常收到各种格式的需求文档、方案文档,需要整理归档。用MarkItDown统一转成Markdown,方便版本管理和团队协作。

知识库管理员:负责维护公司的知识库或者文档中心,需要处理大量不同格式的文档。批量转换功能简直是救命稻草。

学生和研究者:看论文、整理资料的时候,经常要把PDF论文、PPT课件转成文本格式做笔记。用MarkItDown转换后,可以直接在Markdown编辑器里做标注和整理。

任何被复制粘贴折磨过的人:如果你曾经花过一整个下午手动调整文档格式,这个工具就是为你准备的。


坑:这些坑我替你踩过了

当然,MarkItDown也不是万能的。用了一段时间,我发现几个坑:

坑一:扫描版PDF需要额外处理

如果你的PDF是扫描版(也就是每一页都是图片,没有文字层),MarkItDown本身不做OCR,转出来是空的或者只有图片文件名。

解决办法:先用OCR工具处理,比如Tesseract,或者直接用支持OCR的PDF工具。MarkItDown对图片文件本身支持OCR,但对PDF里的嵌入图片不处理。

# 对扫描版PDF,先用其他工具OCR,或者把PDF转成图片再处理
# 这不是MarkItDown的锅,是所有PDF转换工具的通病

坑二:复杂表格会乱

如果PDF或者Word里有合并单元格、嵌套表格这种复杂结构,MarkItDown转出来的Markdown表格可能会错位或者丢失合并信息。

解决办法:简单表格完全没问题,复杂表格转完后手动检查一下,或者用HTML表格语法保留复杂结构。不过说实话,这种复杂表格就算手动复制粘贴也一样会乱,MarkItDown至少省了你80%的工作量。

坑三:中文编码偶尔有问题

我遇到过一次,Word文档里的中文转出来是乱码。排查发现是原文档的编码有问题,不是MarkItDown的锅。但确实需要注意,转完后打开文件检查一下中文显示是否正常。

解决办法:转完后用VS Code或者记事本打开,确认中文正常。如果有问题,用chardet检测原文件编码,或者先用其他工具修复编码。

坑四:特殊格式丢失

PDF里的特殊排版(比如文字绕排、多层嵌套的文本框)转换后可能会变成纯文本,顺序不一定完全正确。Word里的页眉页脚、脚注尾注也不会保留。

解决办法:这些属于”版式信息”,Markdown本来也不支持,丢失是正常的。如果确实需要保留版式,那还是保留原文件,Markdown只用来提取内容。


写在最后

说实话,MarkItDown不是什么黑科技,它就是一个把各种文档转成Markdown的工具。但正是这个”简单”的功能,解决了我工作中最烦人的重复劳动。

我以前每周至少要花半天时间在文档格式转换上,现在可能只需要10分钟。省下来的时间,我可以写代码、可以学新技术、可以早点下班陪家人。

一个工具的价值,不在于它有多复杂,而在于它能不能帮你省时间。省下来的时间,可以用来做更有价值的事。

这不是广告,微软也不会给我打钱。就是觉得好用,分享一下。如果你也跟我一样,被复制粘贴折磨过,试试MarkItDown,也许能救你一命。

至少,我再也不用花一下午手动调表格格式了。


项目地址:https://github.com/microsoft/markitdown

安装命令pip install markitdown

使用命令markitdown 你的文件 > 输出.md

就这么简单。