MarkItDown:一条命令把 PDF、Word 等 10 余种格式转成 Markdown 的完整入门指南
2026/9/16 4:28:33 网站建设 项目流程

MarkItDown:一条命令把 PDF、Word 等 10 余种格式转成 Markdown 的完整入门指南

【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown

MarkItDown 是微软 AutoGen 团队出品的 Python 文档转换工具,能把 PDF、Word、Excel、PPT、图片、音频、网页等 10 余种格式转成结构化 Markdown,保留标题、列表、表格和链接。如果你需要把办公文档喂给 LLM、做全文检索或文本分析,读完本文你可以用 3 步装好并跑通转换,并清楚哪些格式需要额外安装哪些依赖。

快速上手:3 步跑通第一次文档转换

  1. 准备 Python 3.10 及以上环境,建一个虚拟环境;
  2. 安装并执行转换:
pip install 'markitdown[all]' markitdown report.pdf -o report.md
  1. 打开report.md检查产出。

预期结果:得到带 Markdown 语法的正文,标题、表格、列表都保留了原有结构。

💡 提示:文件也可以走标准输入,例如cat report.pdf | markitdown;想用容器,可用仓库自带的 Dockerfile 构建镜像后执行docker run --rm -i markitdown:latest < report.pdf > out.md。想从源码安装,则克隆仓库(https://gitcode.com/GitHub_Trending/ma/markitdown )后执行pip install -e packages/markitdown[all]

能转换什么:12 类格式与对应依赖

格式转换内容安装方式
PDF文本与表格markitdown[pdf]
Word(.docx)标题、列表、表格markitdown[docx]
Excel(.xlsx/.xls)工作表转 Markdown 表格markitdown[xlsx]/[xls]
PowerPoint(.pptx)幻灯片文字markitdown[pptx]
Outlook 邮件(.msg)邮件正文markitdown[outlook]
图片EXIF 元数据,可接 LLM 描述内置
音频EXIF 元数据,wav/mp3 语音转写markitdown[audio-transcription]
HTML / RSS / 网页结构化正文内置
CSV / JSON / XML文本格式直接转写内置
EPUB书籍正文内置
ZIP逐个遍历包内文件内置
YouTube 链接抓取视频转写markitdown[youtube-transcription]

Office 三件套:结构保留是重点

Word、Excel、PPT 是日常最高频的输入。转换时标题层级、项目符号列表、表格边框内容都会映射为对应 Markdown 语法,Excel 的每个工作表都会单独输出。调用方式就是上面那条markitdown命令,或在 Python 里md.convert("report.xlsx")

注意:MarkItDown 的产出面向文本分析和 LLM 消费,排版可读性通常够用,但不要拿它替代面向人类阅读的高保真排版转换。

图片、音频等非文本格式

图片默认输出 EXIF 元数据;如果你传入llm_clientllm_model(目前作用于图片和 PPTX 中的图片),它会改由大模型生成图片描述。音频支持 wav/mp3 的语音转写,需要安装[audio-transcription]依赖。ZIP 则会被逐个解包转换,适合处理批量压缩包。

可扩展:插件与云端增强

插件默认关闭。用markitdown --list-plugins查看已装插件,加-p参数启用。官方markitdown-ocr插件用 LLM Vision 对 PDF、DOCX、PPTX、XLSX 中嵌入图片里的文字做 OCR,复用同一套llm_client/llm_model配置。云端方面:-d可接 Azure Document Intelligence,--use-cu可接 Azure Content Understanding,后者能抽取结构化字段(输出为 YAML front matter)并覆盖视频场景。

💡 提示:OCR 插件若没有传入llm_client,会静默跳过 OCR 并回退到内置转换器,不会报错,排查时先确认这个配置。

实战演示:两个高频用法

场景一:论文 PDF 批量转 Markdown 入库

背景:你有一批论文 PDF,要放进检索或问答管线。

  1. 确认装了[pdf]依赖;
  2. 执行markitdown paper.pdf -o paper.md
  3. 检查产出中的标题层级与表格。

预期结果:摘要、章节标题、正文段落都成为规范的 Markdown,可直接交给下游工具批量处理。

图:这类论文首页经转换后,标题、作者列表与正文段落结构都会保留在 Markdown 中。

场景二:让 LLM 替图片写描述

背景:PPT 或截图里的关键信息是图像,纯文本提取拿不到。

  1. 安装 OpenAI 客户端(或任意兼容客户端);
  2. 用下面方式初始化并转换图片:
from markitdown import MarkItDown from openai import OpenAI md = MarkItDown(llm_client=OpenAI(), llm_model="gpt-4o") print(md.convert("test_llm.jpg").text_content)
  1. 查看打印结果。

预期结果:输出不再是 EXIF 数据,而是 LLM 生成的图片内容描述,图片里的文字与图形语义进入了文本管线。

图:仓库自带的 LLM 描述测试图,图中的文字指令与几何图形都会被模型读进输出。

避坑调优:3 个常见现象的解法

  1. 现象:装了 markitdown 却转换 PDF 报缺依赖。原因:基础包不含全部格式的可选依赖。解法:按格式安装 extras,如pip install 'markitdown[pdf, docx, pptx]'
  2. 现象:从标准输入读取时提示无法识别格式。原因:没有文件名可供推断格式。解法:用-x pdf-m application/pdf给出扩展名/MIME 提示。
  3. 现象:服务端部署时担心读到任意文件或 URI。原因convert()会处理本地文件、远程 URI 和字节流,且以当前进程权限做 I/O。解法:⚠️ 先做输入清洗,并改调最窄的接口:只读本地文件用convert_local(),自控网络请求用convert_response(),纯流式用convert_stream()

横向对比:MarkItDown、Pandoc 与 textract 怎么选

维度MarkItDownPandoctextract
定位文件转 Markdown,面向 LLM 与文本分析通用文档转换,输出格式多文本提取,主要产出纯文本
媒体处理图片元数据/LLM 描述、音频转写、OCR 插件非重点非重点
调用方式Python API + CLI + Docker + 插件以 CLI 为主Python 库
结构保留标题、列表、表格、链接保留文档结构基础文本

结论:把文档交给 LLM 或检索系统选 MarkItDown;需要在多种出版格式间互相转换选 Pandoc;只想快速提取纯文本,textract 足够。

资源索引

  • 官方文档:仓库根目录README.md,含全部 CLI 参数与云端服务配置说明
  • 核心源码:packages/markitdown/src/markitdown/,各格式转换器位于其converters/子目录
  • OCR 插件:packages/markitdown-ocr/;插件开发示例:packages/markitdown-sample-plugin/
  • 社区:项目 Issues 页面可反馈问题;第三方插件可在代码托管平台搜索#markitdown-plugin标签

MarkItDown 的边界很清楚:离线转换免费且快,但输出服务于文本分析而非高保真排版,视频文件则必须走 Azure Content Understanding 云端路线。建议从pip install 'markitdown[all]'加一条markitdown命令起步,按实际处理的格式再收敛依赖,够用且不臃肿。

【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询