为什么要把文档转成 Markdown?

Markdown 接近纯文本,但又能用简单的符号表达标题、列表、表格、链接等结构。它有几个明显的优势:

  • 大模型友好:GPT、Claude 等主流 AI 都原生"说"Markdown,转成 .md 喂给 AI 效果更好,还省 token;
  • 长期可读:纯文本不会因为软件版本更新而打不开,十年后照样能用记事本看;
  • 好管理:Git 版本控制、全文搜索、跨平台同步都很方便;
  • 体积小:同样一份文档,.md 可能比 .docx 小十倍以上。

方法一:markitdown(微软开源,最推荐)

markitdown 是微软 AutoGen 团队开源的 Python 工具,专门干一件事:把各种文件转成 Markdown

它支持的格式非常全:

  • PDF、Word(.docx)、PowerPoint(.pptx)、Excel(.xlsx)
  • 图片(EXIF 元数据 + OCR 文字识别)
  • 音频(语音转写)
  • HTML、CSV、JSON、XML
  • EPub 电子书、ZIP 压缩包(自动遍历内容)
  • YouTube 视频链接(自动提取字幕)

一个工具覆盖几乎所有常见格式,而且完全本地运行、免费开源。

安装

需要 Python 3.10 或更高版本。建议先创建虚拟环境:

python -m venv .venv
.venv\Scripts\activate    # Windows
# source .venv/bin/activate  # macOS / Linux

然后安装 markitdown:

pip install "markitdown[all]"

[all] 会安装所有可选依赖(PDF、Office、音频转写等)。如果只需要特定格式,可以按需安装,比如 pip install "markitdown[pdf,docx,pptx]"

命令行用法

最基本的用法就一行:

markitdown 文档.pdf -o 文档.md

也支持管道:

cat 文档.docx | markitdown > 文档.md

批量转换的话,配合一条 for 循环就能处理整个文件夹:

# Windows PowerShell
Get-ChildItem *.docx | ForEach-Object { markitdown $_.Name -o "$($_.BaseName).md" }

# macOS / Linux
for f in *.docx; do markitdown "$f" -o "${f%.docx}.md"; done

Python API 用法

如果你想在脚本里调用,或者集成到自己的项目:

from markitdown import MarkItDown

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

# 保存到文件
with open("文档.md", "w", encoding="utf-8") as f:
    f.write(result.text_content)

如果想用大模型给图片生成描述(比如 PPT 里的截图),可以传入 LLM 客户端:

from markitdown import MarkItDown
from openai import OpenAI

md = MarkItDown(
    llm_client=OpenAI(),
    llm_model="gpt-4o",
)
result = md.convert("演示文稿.pptx")
print(result.text_content)

安全提示:markitdown 以当前进程权限读写文件。如果处理来源不明的文档,建议先在隔离环境中运行,或调用更窄的 API(如 convert_local()convert_stream())来限制访问范围。

方法二:Pandoc(命令行瑞士军刀)

Pandoc 是文档转换领域的老牌工具,被称为"格式之间的万能转换器"。它对 Office 文档和 LaTeX 支持尤其好。

# Word 转 Markdown
pandoc 文档.docx -o 文档.md

# PPT 转 Markdown
pandoc 演示.pptx -o 演示.md

# EPub 转 Markdown
pandoc 书籍.epub -o 书籍.md

Pandoc 的优势是转换质量高、可定制性强,但缺点是不支持 PDF 转 Markdown(PDF 转换需要额外配置 LaTeX 引擎,配置复杂)。

方法三:在线转换工具

浏览器搜索"Word to Markdown"或"PDF to Markdown",能找到不少在线工具。操作一般是上传文件 → 下载转换结果。

  • 优点:免安装,打开浏览器就能用;
  • 缺点:要把文件上传到第三方服务器,不适合含敏感信息的文档;本地图片可能丢失;格式还原质量参差不齐。

适合临时转换一两份非敏感文档。

方法四:直接复制粘贴

如果文档不长、结构简单,最省事的方式可能就是:

  • 在 Word / PPT 里全选 → 复制;
  • 粘贴到 .md 文件中;
  • 手动加上 # 标题、- 列表符号等 Markdown 标记。

适合只有几段文字的短文档。内容一多、表格一复杂,手动调整就会很累。

常见格式转换建议

Word(.docx)→ Markdown

这是最常见的转换需求。推荐 markitdown,它能保留标题层级、列表、表格、链接等结构。Pandoc 也是很好的选择。

PDF → Markdown

PDF 转换分两种情况:

  • 文本型 PDF(可以选择文字的):markitdown 直接转换,效果不错;
  • 扫描型 PDF(图片形式):需要 OCR 识别,markitdown 可以配合 LLM Vision 插件(markitdown-ocr)来处理,或者用专门的 OCR 工具先提取文字。

PowerPoint(.pptx)→ Markdown

markitdown 会按幻灯片逐页提取内容,每页变成一段 Markdown,文字、列表、表格都能保留。PPT 里的图片可以配合 LLM 生成文字描述。

Excel(.xlsx)→ Markdown

Excel 表格会直接转成 Markdown 表格语法。markitdown 处理效果不错,简单表格转换后几乎不用手动调整。

图片 → Markdown

markitdown 可以提取图片的 EXIF 信息(拍摄时间、地点、设备等),配合 LLM 还能生成图片内容描述。如果需要从截图中提取文字,建议安装 markitdown-ocr 插件。

四种方法对比

方法支持格式难度隐私批量处理适合人群
markitdown最全中等本地所有人
Pandoc较全较高本地进阶用户
在线工具因站而异简单上传第三方临时使用
复制粘贴任意极简本地短文档

转成 Markdown 之后,怎么阅读?

文档转完变成一堆 .md 文件,接下来就是怎么打开看了。

推荐用 mdview

  • 双击即开:安装后直接关联 .md 文件,双击就进入阅读界面;
  • 自动目录:长文档自动生成侧边目录,点标题就能跳转;
  • 完全本地:不上传任何文件,打开就看到内容,关掉就结束;
  • Windows + Android:两个平台都有,转换完在哪都能看。

毕竟转 Markdown 的目的就是为了更好地阅读和管理,有一个趁手的查看器会让整个流程更顺畅。

工作流建议:用 markitdown 批量把文档转成 .md → 用 mdview 双击快速预览 → 确认无误后用 Git 管理版本。整个过程全在本地完成,高效又安全。

总结

如果你经常需要把文档转成 Markdown,markitdown 是最省心的选择:一行命令、覆盖几乎所有格式、微软维护、完全免费。搭配 mdview 作为查看器,从转换到阅读的体验都很顺畅。

偶尔用一两次,在线工具或复制粘贴也够用。Pandoc 则适合对转换质量有更高要求、且愿意折腾命令行的进阶用户。