markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。
在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。
这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器分析提供高质量的结构化输入,而非替代专业排版工具。通过简单的命令行操作或 Python 调用,用户即可轻松实现文件格式的统一化处理,大幅提升工作流效率。
使用场景
某数据分析师需要构建一个企业知识库 RAG 系统,必须将散落在各部门的数百份 PDF 报告、PPT 演示文稿和 Excel 财务报表统一转化为大模型可理解的结构化文本。
没有 markitdown 时
- 格式解析困难:面对混合了复杂表格和多层级标题的 PDF 与 PPT,传统提取脚本往往只能抓取纯文本,导致文档逻辑结构完全丢失。
- 多格式适配繁琐:处理图片需单独调用 OCR 接口,处理音频需额外部署语音转写服务,针对不同文件类型编写和维护多套转换代码,开发成本极高。
- 令牌浪费严重:转换后的文本缺乏 Markdown 标记,大模型难以识别重点,导致上下文窗口被大量无结构的冗余字符占用,推理成本上升。
- 流程断裂:无法直接流式处理云端文件或压缩包内容,往往需要先下载落地为临时文件再处理,增加了 I/O 开销和数据泄露风险。
使用 markitdown 后
- 结构完美保留:markitdown 自动将原文档的标题、列表、链接及复杂表格精准转换为标准 Markdown 语法,大模型能立即理解文档层级与数据关系。
- 全能一键转换:无论是含文字的截图、带语音的会议录音,还是嵌套的 ZIP 包,markitdown 均能内置 OCR 和转录功能一站式输出文本,无需拼凑外部工具。
- 令牌高效利用:生成的 Markdown 内容高度紧凑且语义清晰,显著减少无效 Token 消耗,让大模型更专注于核心信息分析,提升回答准确率。
- 流式无缝集成:支持直接从二进制流或 URL 读取内容,无需生成临时文件,轻松嵌入现有的 Python 数据处理管道或 AutoGen 智能体工作流中。
markitdown 通过将所有异构办公文档标准化为大模型“母语”般的 Markdown,极大地降低了非结构化数据进入 AI pipelines 的门槛与成本。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
MarkItDown
[!TIP] MarkItDown 现在提供了一个 MCP(模型上下文协议)服务器,用于与 Claude Desktop 等 LLM 应用程序集成。更多信息请参阅 markitdown-mcp。
[!IMPORTANT] 0.0.1 到 0.1.0 之间的重大变更:
- 依赖项现在被组织为可选的功能组(详情见下文)。若需保持向后兼容性,请使用
pip install 'markitdown[all]'。convert_stream()现在需要一个二进制文件类对象(例如以二进制模式打开的文件或io.BytesIO对象)。这是对先前版本的重大更改,因为之前它也接受文本文件类对象,如io.StringIO。DocumentConverter类的接口已更改为从文件类流中读取,而非文件路径。不再创建临时文件。如果您是插件或自定义DocumentConverter的维护者,可能需要更新您的代码。否则,如果仅使用MarkItDown类或 CLI(如本示例所示),则无需进行任何更改。
MarkItDown 是一款轻量级的 Python 工具,用于将各种文件转换为 Markdown 格式,以便在 LLM 和相关文本分析流水线中使用。在这方面,它与 textract 最为相似,但更注重以 Markdown 格式保留文档的重要结构和内容(包括:标题、列表、表格、链接等)。虽然输出通常具有较好的可读性和人性化呈现效果,但它主要是供文本分析工具消费的——对于需要高保真度的人类阅读文档转换来说,可能并不是最佳选择。
目前,MarkItDown 支持以下格式的转换:
- PowerPoint
- Word
- Excel
- 图片(EXIF 元数据和 OCR)
- 音频(EXIF 元数据和语音转录)
- HTML
- 文本格式(CSV、JSON、XML)
- ZIP 文件(遍历其内容)
- YouTube 视频链接
- EPUB
- ……以及更多!
为什么选择 Markdown?
Markdown 非常接近纯文本,几乎没有标记或格式化,但仍能表示文档的重要结构。主流 LLM,例如 OpenAI 的 GPT-4o,原生支持 Markdown,并且经常会在未被提示的情况下在其响应中加入 Markdown 内容。这表明它们已经接受了大量 Markdown 格式的训练,并对其有很好的理解。此外,Markdown 的语法也非常节省 token。
先决条件
MarkItDown 需要 Python 3.10 或更高版本。建议使用虚拟环境以避免依赖冲突。
使用标准 Python 安装时,可以通过以下命令创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate
如果使用 uv,可以这样创建虚拟环境:
uv venv --python=3.12 .venv
source .venv/bin/activate
# 注意:请务必使用 'uv pip install' 而不是 'pip install' 来安装此虚拟环境中的包
如果您使用 Anaconda,可以这样创建虚拟环境:
conda create -n markitdown python=3.12
conda activate markitdown
安装
要安装 MarkItDown,可以使用 pip:pip install 'markitdown[all]'。或者您也可以从源码安装:
git clone git@github.com:microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'
使用方法
命令行
markitdown path-to-file.pdf > document.md
或者使用 -o 指定输出文件:
markitdown path-to-file.pdf -o document.md
您还可以通过管道输入内容:
cat path-to-file.pdf | markitdown
可选依赖
MarkItDown 具有用于启用各种文件格式的可选依赖项。在本文前面,我们使用 [all] 选项安装了所有可选依赖项。不过,您也可以单独安装它们以获得更高的控制权。例如:
pip install 'markitdown[pdf, docx, pptx]'
将只安装 PDF、DOCX 和 PPTX 文件所需的依赖项。
目前,可用的可选依赖项如下:
[all]安装所有可选依赖项[pptx]安装 PowerPoint 文件所需的依赖项[docx]安装 Word 文件所需的依赖项[xlsx]安装 Excel 文件所需的依赖项[xls]安装旧版 Excel 文件所需的依赖项[pdf]安装 PDF 文件所需的依赖项[outlook]安装 Outlook 邮件所需的依赖项[az-doc-intel]安装 Azure Document Intelligence 所需的依赖项[audio-transcription]安装用于 WAV 和 MP3 文件音频转录的依赖项[youtube-transcription]安装用于获取 YouTube 视频转录的依赖项
插件
MarkItDown 还支持第三方插件。默认情况下,插件是禁用的。要列出已安装的插件:
markitdown --list-plugins
要启用插件,请使用:
markitdown --use-plugins path-to-file.pdf
要查找可用的插件,可以在 GitHub 上搜索标签 #markitdown-plugin。要开发插件,请参阅 packages/markitdown-sample-plugin。
markitdown-ocr 插件
markitdown-ocr 插件为 PDF、DOCX、PPTX 和 XLSX 转换器增加了 OCR 支持,利用 LLM Vision 从嵌入式图像中提取文本——这与 MarkItDown 已经用于图像描述的 llm_client / llm_model 模式相同。无需新的机器学习库或二进制依赖。
安装:
pip install markitdown-ocr
pip install openai # 或任何与 OpenAI 兼容的客户端
使用:
传递您用于图像描述的相同 llm_client 和 llm_model:
from markitdown import MarkItDown
from openai import OpenAI
md = MarkItDown(
enable_plugins=True,
llm_client=OpenAI(),
llm_model="gpt-4o",
)
result = md.convert("document_with_images.pdf")
print(result.text_content)
如果没有提供 llm_client,插件仍然会加载,但 OCR 将被静默跳过,转而使用标准内置转换器。
详细文档请参阅 packages/markitdown-ocr/README.md。
Azure Document Intelligence
要使用 Microsoft Document Intelligence 进行转换:
markitdown path-to-file.pdf -o document.md -d -e "<document_intelligence_endpoint>"
有关如何设置 Azure Document Intelligence 资源的更多信息,请参阅 此处。
Python API
Python 中的基本用法:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False) # 设置为 True 以启用插件
result = md.convert("test.xlsx")
print(result.text_content)
Python 中的文档智能转换:
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("test.pdf")
print(result.text_content)
要使用大型语言模型生成图像描述(目前仅支持 pptx 和图像文件),请提供 llm_client 和 llm_model:
from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o", llm_prompt="可选自定义提示")
result = md.convert("example.jpg")
print(result.text_content)
Docker
docker build -t markitdown:latest .
docker run --rm -i markitdown:latest < ~/your-file.pdf > output.md
贡献说明
本项目欢迎各种贡献和建议。大多数贡献都需要您签署贡献者许可协议(CLA),声明您有权且确实授予我们使用您贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动判断您是否需要提供 CLA,并相应地标记您的 PR(例如状态检查、评论)。您只需按照机器人提供的指示操作即可。对于所有使用我们 CLA 的仓库,您只需完成一次此步骤。
本项目已采用 微软开源行为准则。更多信息请参阅 行为准则常见问题解答,或如有任何其他疑问或意见,请联系 opencode@microsoft.com。
如何贡献
您可以查看问题或帮助审查 PR 来提供帮助。任何问题或 PR 都受欢迎,但我们也将一些标记为“开放贡献”和“开放评审”,以促进社区参与。当然,这些只是建议,您也可以以任何您喜欢的方式进行贡献。
运行测试和检查
导航到 MarkItDown 包:
cd packages/markitdown在您的环境中安装
hatch并运行测试:pip install hatch # 安装 hatch 的其他方法:https://hatch.pypa.io/dev/install/ hatch shell hatch test(替代方案)使用已安装所有依赖项的 Devcontainer:
# 在 Devcontainer 中重新打开项目并运行: hatch test在提交 PR 之前运行预提交检查:
pre-commit run --all-files
贡献第三方插件
您还可以通过创建和分享第三方插件来做出贡献。更多详情请参阅 packages/markitdown-sample-plugin。
商标说明
本项目可能包含项目、产品或服务的商标或标识。未经授权使用微软商标或标识须遵守并遵循 微软商标与品牌指南。在本项目的修改版本中使用微软商标或标识不得造成混淆或暗示微软的赞助。任何第三方商标或标识的使用均应遵守该第三方的相关政策。
版本历史
v0.1.52026/02/20v0.1.5b12026/01/08v0.1.42025/12/01v0.1.32025/08/26v0.1.22025/05/28v0.1.2a12025/05/21v0.1.12025/03/25v0.1.02025/03/22v0.1.0a62025/03/21v0.1.0a52025/03/20v0.1.0a42025/03/17v0.0.22025/03/08v0.1.0a12025/03/06v0.0.12025/03/06v0.0.1a52025/02/28v0.0.1a42025/02/11v0.0.1a32024/12/17v0.0.1a22024/12/17常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。