MarkItDown 文档转 Markdown 完全指南:一条命令把 20+ 格式变成干净文本
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
MarkItDown 是一个免费的 Python 命令行工具,能把 PDF、Word、Excel、PPT、音频、图片等 20 多种格式一次性转成结构化 Markdown,特别适合做 RAG 语料和文档分析。接下来从跑通安装、批量转换到写插件,五个部分带你把它用熟。
为什么选 MarkItDown 做文档转换:解决"拿不到干净文本"的麻烦
传统方式里,每处理一种文档格式你都得单独写脚本、调 API,表格常常糊成一团,标题层次也全丢了。MarkItDown 的思路是把每种格式的解析器注册进同一个调度器,按优先级自动匹配,你只管喂文件,拿到的就是带标题、表格、列表结构的 Markdown。
它适合三类人:
- 做 RAG、知识库的工程师:需要把存量文档批量变成模型友好的纯文本
- 需要归档邮件、报表、幻灯片的行政与数据岗:一条命令替代手工复制粘贴
- 想给 AI Agent 加"读文档"能力的开发者:它自带 MCP 服务端,Agent 可以直接调用
入口有三种,任选其一:命令行、Python API、以及面向 Agent 的 MCP 工具。
MarkItDown 支持格式清单:它转什么、保留什么
内置转换器覆盖了日常几乎碰得到的所有文档类型,分组来看:
- 办公文档:.pdf、.docx、.xlsx、.xls、.pptx、Outlook 邮件 .msg、EPUB
- 数据与网页:.csv、HTML 网页、Jupyter Notebook(.ipynb)、RSS、Wikipedia 页面、YouTube 字幕
- 多媒体:.mp3、.wav 等音频(可转写为文字)、图片(EXIF 元数据 + 可选 LLM 描述)
- 通用文本:.txt 等纯文本与 ZIP 压缩包
| 文档中的元素 | 转换后的表现 |
|---|---|
| 表格 | 输出标准 Markdown 表格(csv/xlsx/docx 均保留行列结构) |
| Word 公式 | OMML 公式转成 LaTeX 文本 |
| 标题与列表 | 保留层级结构 |
| 图片 | 默认输出占位说明,base64 数据默认被截断,可用--keep-data-uris保留 |
| 音频内容 | 依赖语音转写,未安装转写组件时只输出元数据 |
⚡ 快速上手:装全量解析器一条命令
pip install markitdown[all],之后不用关心每种格式各自缺什么依赖。
MarkItDown 三个真实任务:PDF、Office 与程序化转换分步走
任务一:把一份 PDF 转成 Markdown
📌 操作步骤
- 安装工具:
pip install markitdown[all]- 执行转换,结果直接写入文件(比重定向更稳):
markitdown path-to-file.pdf -o document.md下面的学术 PDF 首页就是测试目录里的样例,转换后标题、作者、图表说明都会变成对应层级的 Markdown 文本:
💡 小贴士:
markitdown path-to-file.pdf > document.md这种重定向写法同样有效,方便嵌入管道。
任务二:Office 文档与邮件批量归档
📌 操作步骤
- 转换 Word 会议纪要:
markitdown meeting_notes.docx -o notes.md- 转换 Excel 报表,输出为表格结构的 Markdown:
markitdown sales.xlsx -o sales.md- 对没有扩展名的输入流,用
-x给个格式提示再转:
cat unknown_file | markitdown -x pdf任务三:Python API 程序化集成
当转换逻辑要嵌进你自己的流水线时,直接用 API,下面这段把季度报表转完落盘:
from markitdown import MarkItDown md = MarkItDown() result = md.convert("quarter_data.xlsx") with open("q3_report.md", "w", encoding="utf-8") as f: f.write(result.markdown)💡 小贴士:
convert()的返回值同时提供.markdown与.text_content两个字段,前者带完整结构,后者是纯文本,取哪个看你的下游需求。
MarkItDown 参数速查表与常见转换问题排查
先把命令行里真正会用的参数记下来,基本覆盖日常所有场景:
| 参数 | 适用场景 | 效果说明 |
|---|---|---|
-o/--output | 结果存文件 | 直接写入指定 md 文件,缺省则输出到 stdout |
-x/--extension | 输入流无扩展名 | 给出格式提示,如-x pdf |
-m/--mime-type | 文件无扩展名 | 指定 MIME 类型,如text/html |
-c/--charset | 文本编码异常 | 指定编码(如 UTF-8)辅助识别 |
-p/--use-plugins | 启用第三方插件 | 加载 OCR 等插件转换器 |
--list-plugins | 检查插件环境 | 列出已安装的 markitdown.plugin 组插件 |
--keep-data-uris | 需要保留 base64 图片 | 默认会截断 data URI,加此参数保留 |
-d配合-e | 复杂排版文档 | 走 Document Intelligence 云服务提取文本 |
问题 1:复杂 PDF 表格转出来结构错乱 → 解决方案:普通 PDF 靠内置解析,跨页大表建议启用云端识别,命令示例:
markitdown complex_table.pdf -d -e <你的端点地址> -o fixed.md问题 2:扫描版 PDF 几乎没有文字 → 解决方案:装 OCR 插件并传入视觉模型,扫描页会自动按 300 DPI 渲染后识别:
pip install markitdown-ocr markitdown scanned.pdf --use-plugins --llm-client openai --llm-model gpt-4o问题 3:输出里混入大段 base64 图片 → 解决方案:默认本就会截断 data URI,若你反而想完整保留(例如离线渲染),加--keep-data-uris即可。
同类工具横向对比一下:
| 维度 | MarkItDown | Pandoc | 在线转换服务 |
|---|---|---|---|
| 格式覆盖 | 20+ | 40+ | 10+ |
| CLI / Python API | ★★★★★ | ★★★☆☆(偏 CLI) | ★★☆☆☆ |
| OCR 能力 | 插件 markitdown-ocr | 依赖第三方 | 看服务商 |
| Agent(MCP)集成 | 内置 markitdown-mcp | 需自行封装 | 不支持 |
| 费用 | 免费开源 | 开源 | 通常收费 |
专家建议:目标是"文档喂给 RAG 或 Agent"就选 MarkItDown;追求学术论文级深度排版再考虑 Pandoc。
MarkItDown 插件开发入口与扩展资源
插件机制的本质很简单:每个插件暴露一个register_converters()函数,把自定义转换器注册进MarkItDown实例,运行时从markitdown.plugin入口点组自动发现。仿照仓库里的样例插件,核心代码不超过两行:
def register_converters(markitdown, **kwargs): markitdown.register_converter(RtfConverter()) # 你实现的转换器再在 pyproject.toml 中声明[project.entry-points."markitdown.plugin"]指向该模块,用户用markitdown --list-plugins就能看到你的插件。图片识别、OCR 都是这条链路上的能力,下图就是 LLM 视觉识别用的测试样例:
从源码到文档,仓库里这些目录值得收藏:
- 核心包源码:packages/markitdown/src/markitdown/
- 全部内置转换器实现:packages/markitdown/src/markitdown/converters/
- OCR 插件(PDF/DOCX/PPTX/XLSX 图文提取):packages/markitdown-ocr/
- 最小可运行插件样例:packages/markitdown-sample-plugin/
- MCP 服务端(给 Agent 提供
convert_to_markdown(uri)工具):packages/markitdown-mcp/ - 测试样本与预期输出对照:packages/markitdown/tests/test_files/
MCP 服务端装好后直接markitdown-mcp启动,Agent 即可把任意 http/file/data URI 转成 Markdown,无需自己写胶水代码。
MarkItDown 把"先把文档变成干净文本"这件过去要写 N 个脚本的杂活,压缩成了一条命令加几个参数。它免费、开源、插件可扩展,RAG 语料管线里缺的那块拼图基本就是它。现在就装一个,把手头任意一份 PDF 转成 Markdown 试试效果。
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考