一键把 PDF、Word、Excel 全转成干净 Markdown ,微软开源 MarkItDown,文档格式统一的神器
- 2026-10-22 09:52:57
一键把 PDF、Word、Excel 全转成干净 Markdown ,微软开源 MarkItDown,文档格式统一的神器我前面一篇文章介绍了Markdown格式,如: 一种标记语言如何悄悄统治了世界,一文给你讲清楚MarkDown-如何成为数字时代的通用语言 刚说完Markdown 格式是AI的世界语言,没想到又发现了一个宝藏工具, 微软开源神器 MarkItDown,现在在GitHub上已经 107k star 了 这东西本质上就是个轻量级 Python 工具,只干一件事: 把所有你能想到的文件格式,统统转成干干净净、结构清晰的 Markdown。 它不是那种粗暴地把文字扒出来就完事了。标题、列表、表格、链接,该有的结构它都会尽量保留。转出来的 Markdown 大模型直接就能读懂,关键是省 token,喂进去不心疼。 它能处理哪些格式,说实话,看完支持列表之后我第一个反应是:这覆盖得也太全了。 Office 全家桶:Word(.docx)、PowerPoint(.pptx)、Excel(.xlsx / .xls) PDF:表格、文字、布局都尽量保留 图片:JPG、PNG 等,支持 OCR 文字提取,还能读出 EXIF 元数据 音频:MP3、WAV,可以直接语音转文字加上元数据提取 网页和数据文件:HTML、CSV、JSON、XML 其他:EPUB 电子书、Jupyter Notebook(.ipynb) ZIP 压缩包:它会自动递归把里面所有支持的文件全转一遍 还有一个让我没想到的:直接丢 YouTube 链接也能转,应该是自动抓字幕加转录 一句话:你日常办公碰到的文件类型,它基本都接了 装起来没啥门槛,win+R 输入cmd进入命令行界面,一行命令完事: 用阿里云的镜像,比较快 这个 [all] 会把 PDF、Office、图片 OCR、音频转录的依赖全装上。第一次装可能会慢一点,后面就飞快了。 命令执行成功后,应该如下图:应该看到Sucessfully installed 字样 
如果你只想要特定格式,也可以按需装: 备注:pip 是Python自带的(Python 3.4 以上默认内置),如果你电脑没有pip命令,那么按照下Python , 去 python.org 下载安装包。建议装Python3.10及以上的才能获取最新版的markitdown Windows 用户注意:安装时 一定勾选 "Add Python to PATH" 这个选项,勾上之后就自动带了 pip,路径也帮你配好了。 macOS 上也可以直接用 Homebrew:brewinstallpython 最开始的文档都没啥问题,Word、Excel 转得挺干净的。直到我开始处理一堆扫描件 PDF 和手机拍的截图,问题来了:文字识别各种乱码,表格直接面目全非。 搞了半天才弄明白,MarkItDown 的 OCR 不是传统的 Tesseract。它是把图片抽出来,送给 GPT-4o、Claude、Gemini 这些视觉模型去做"看图识字"。所以用什么模型,精度差距非常夸张——GPT-4o 能做到 95% 以上,小模型可能只有 60%。 最大的坑是:OCR 默认是不开的。 你得手动配。正确姿势是这样的: 先装依赖: 然后代码里要明确开启插件并指定模型: 搞明白这个之后,我总结了几条提升精度的经验,按效果排序: 单个文件转其实没啥意思。真正爽的是批量跑。 我整测试整理了一个个人知识库,里面 PDF 和 Word 混在一起,几十个文件。写了个脚本一跑,全自动搞定: 跑完之后整个知识库的格式就统一了,接下来不管是用 RAG 框架建索引还是直接喂给 Agent 用,都顺滑多了。 还有一个细节值得提:MarkItDown 提供了 MCP 服务器。如果你用 Claude Desktop,可以直接通过 MCP 集成进去,让 AI 实时读取文件内容。这个对于做 Agent 开发的场景特别实用,省去了很多中间环节。 折腾文档格式这件事,我前后试了不少方案,MarkItDown 是目前用下来最省心的。它不是什么一劳永逸的银弹,但至少在"把乱七八糟的格式统一成大模型能吃的东西"这件事上,它完成得相当干净。 如果你是搞知识库、做 RAG、或者日常需要把文档喂给 AI 处理,值得花十分钟装一个试试。 GitHub 地址:https://github.com/microsoft/markitdown
安装
pip install markitdown[all] -i https://mirrors.aliyun.com/pypi/simple
pip install markitdown[pdf,docx,pptx]转换
markitdown 文档.pdf -o 输出.md处理扫描件和图片,OCR 这块有坑
pip install markitdown[all] markitdown-ocrpip install openai或者 anthropic、google-generativeai
from markitdown import MarkItDownfrom openai import OpenAImd = MarkItDown(enable_plugins=True,这个很关键,不开等于白装 llm_client=OpenAI(), llm_model="gpt-4o" # 精度优先就选 gpt-4o 或 claude-3-5-sonnet)result = md.convert("scan.pdf")print(result.text_content)
选对模型是最大的变量。 复杂表格和公式用 gpt-4o 或 claude-3-5-sonnet,简单纯文本可以用 4o-mini 搭配 Ollama 本地跑。 自定义 Prompt 效果很明显。 默认的 Prompt 偏通用,如果你明确告诉它"这是表格文档,转成标准 Markdown 网格表格",识别质量能上一个档次。 图像预处理救活了不少低质量扫描件。 在送进 MarkItDown 之前,用 OpenCV 做个放大、二值化、去噪处理,扫出来的老合同和倾斜照片效果提升巨大。 转完之后再让 LLM 做一次 cleanup。 就一句话:"Fix any OCR errors in this text, standardize formatting, output clean Markdown only"。相当于二次校对,能把漏网之鱼捞出来。
批量处理知识库,这才是正经用法
from markitdown import MarkItDownfrom pathlib import Pathmd = MarkItDown()source_dir = Path("./原始文档")output_dir = Path("./知识库")output_dir.mkdir(exist_ok=True)for file in source_dir.glob("**/*"):if file.suffix in [".pdf", ".docx", ".pptx", ".xlsx"]:result = md.convert(str(file))out_path = output_dir / (file.stem + ".md")out_path.write_text(result.text_content, encoding="utf-8")print(f"{file.name} → {out_path.name}")
最后说两句
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。