markitdown:微软开源文档转换器,PDF/Word/PPT 一键转 Markdown
markitdown:微软开源文档转换器,PDF/Word/Excel/PPT 一键转 Markdown
项目简介
想把 PDF 报告转成 Markdown 便于 AI 处理?想把 Word 文档导入知识库?想把 Excel 数据用于数据分析?
每次都要手动复制粘贴,格式还容易乱。专业的文档解析工具要么太贵,要么部署复杂。
markitdown 是微软官方开源的文档转换工具,支持将 PDF、Word、Excel、PPT、图片等格式一键转换为干净的 Markdown 或纯文本。它不仅能做格式转换,还能识别文档结构(标题、列表、表格),保留原始的层级关系。
截至 2026 年 4 月,markitdown 在 GitHub 上已积累 108,000+ Star,日增 2,800+,是文档处理领域增长最快的开源工具之一。
—
核心功能
1. 支持全格式文档
# PDF 转 Markdownmarkitdown document.pdf -o output.md# Word 转 Markdownmarkitdown document.docx -o output.md# Excel 转 Markdown(保留表格)markitdown spreadsheet.xlsx -o output.md# PPT 转 Markdown(提取每页文本)markitdown presentation.pptx -o output.md# 图片转文本(OCR)markitdown image.png -o output.md
2. 保留文档结构
markitdown 不只是提取文字,还保留原始结构:
# 第一章:项目概述## 1.1 背景本文档描述了 xxx 项目的技术方案。| 序号 | 模块 | 负责人 ||------|------|--------|| 1 | 前端 | 张三 || 2 | 后端 | 李四 |> 注意事项:高亮部分需要重点关注。
3. 内置 OCR 功能
图片中的文字也能识别:
# 自动检测并 OCR 图片markitdown scanned_document.pdf --ocr -o output.md
4. Python SDK
from markitdown import MarkItDownconverter = MarkItDown()# PDF 转 Markdownresult = converter.convert("report.pdf")print(result.text_content)# Word 转 Markdownresult = converter.convert("proposal.docx")print(result.text_content)
5. API 服务模式
from markitdown import MarkItDownServerimport uvicornserver = MarkItDownServer(host="0.0.0.0", port=8000)uvicorn.run(server.app)# HTTP API# POST /convert# Body: multipart/form-data (file)# Response: {"markdown": "..."}
—
适用场景
RAG 数据预处理:将 PDF/Word 文档转为 Markdown 后,用于 RAG 知识库的向量化存储。
AI 数据提取:批量将 PDF 报告转为结构化文本,输入大模型做分析、摘要、问答。
知识库建设:将历史文档批量导入 Obsidian、Notion、Onyx 等知识管理工具。
数据分析前处理:将 Excel 表格转 Markdown,便于后续 SQL 分析或 Python 处理。
无障碍处理:OCR 识别扫描件图片,让纸质文档可搜索、可编辑。
—
快速开始
安装
pip install markitdown# 或使用 Dockerdocker pull msoedoc/markitdown
CLI 基础用法
# 单文件转换markitdown input.pdf -o output.md# 批量转换for f in *.pdf; do markitdown "$f" -o "${f%.pdf}.md"; done# 指定输出目录markitdown docs/ -o markdown_output/
Python 进阶用法
from markitdown import MarkItDownconverter = MarkItDown()# 处理带密码的 PDFresult = converter.convert( "secure.pdf", password="user_password" # PDF 密码)# 只提取特定页面result = converter.convert( "long_report.pdf", pages="1-10,20" # 第 1-10 页和第 20 页)# 自定义表格格式result = converter.convert( "data.xlsx", table_format="github_markdown" # 表格格式)
Docker 用法
# 运行容器docker run -v $(pwd):/data msoedoc/markitdown /data/input.pdf -o /data/output.md# REST APIdocker run -p 8000:8000 msoedoc/markitdown serve
—
为什么值得关注
108,000 Star 说明什么:文档格式转换是个”刚需”场景,微软选择开源 markitdown,把内部用的高质量文档解析能力释放出来。格式保留做得细致,不是简单的文字提取,社区自然买单。
RAG 时代的刚需:RAG 的效果取决于文档质量。markitdown 把 PDF 转成结构完整的 Markdown,比直接用 PyMuPDF 提取的乱码文字强太多。
微软出品,质量有保证:文档格式解析是个坑——PDF 是明文还是图片、内部链接、特殊字体、加密文档,每种情况都要处理。微软有成熟的 Office 文档解析积累,markitdown 的稳定性不是野路子能比的。
开源可自托管:企业数据不上云,markitdown 可以完全本地部署,隐私合规无忧。
—
开源地址
GitHub:[https://github.com/microsoft/markitdown](https://github.com/microsoft/markitdown)
官方文档:[https://microsoft.github.io/markitdown](https://microsoft.github.io/markitdown)
Docker Hub:[https://hub.docker.com/r/msoedoc/markitdown](https://hub.docker.com/r/msoedoc/markitdown)
开源协议:MIT License
联系我

声明:本文内容基于官方资料整理,版权归原项目所有。如需商用或二次开发,请务必遵守项目开源协议。欢迎转发分享,共同支持开源生态!

夜雨聆风