[!提示]
MarkItDown 现在提供 MCP(模型上下文协议)服务器,可与 Claude Desktop 等 LLM 应用程序集成。更多信息请参阅 markitdown-mcp。
[!重要]
0.0.1 到 0.1.0 之间的重大变更:
- 依赖项现在被组织成可选功能组(详见下文)。使用
pip install 'markitdown[all]'
可实现向后兼容。- convert_stream() 现在需要一个二进制文件类对象(例如,以二进制模式打开的文件或 io.BytesIO 对象)。这与之前的版本相比是一个重大变更,之前版本也接受文本文件类对象,例如 io.StringIO。
- DocumentConverter 类接口已更改为从文件类流读取,而不是从文件路径读取。 不再创建临时文件。如果您是插件或自定义 DocumentConverter 的维护者,则可能需要更新代码。否则,如果仅使用 MarkItDown 类或命令行界面(如这些示例中所示),则无需进行任何更改。
MarkItDown 是一个轻量级的 Python 实用程序,用于将各种文件转换为 Markdown,以便用于 LLM 和相关的文本分析流程。为此,它与 textract 最为相似,但更侧重于将重要的文档结构和内容保留为 Markdown 格式(包括:标题、列表、表格、链接等)。虽然输出通常相当美观且人性化,但它旨在供文本分析工具使用——对于供人类使用的高保真文档转换,可能并非最佳选择。
MarkItDown 目前支持以下格式的转换:
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
# NOTE: Be sure to use 'uv pip install' rather than just 'pip install' to install packages in this virtual environment
如果您使用的是 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
Or use -o
to specify the output file:
markitdown path-to-file.pdf -o document.md
You can also pipe content:
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 文档智能的依赖项[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”。
使用 Microsoft 文档智能进行转换:
markitdown path-to-file.pdf -o document.md -d -e "<document_intelligence_endpoint>"
有关如何设置 Azure 文档智能资源的更多信息,请访问此处
Python 中的基本用法:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False) # Set to True to enable plugins
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="optional custom prompt")
result = md.convert("example.jpg")
print(result.text_content)
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 的仓库中执行一次此操作。
本项目已采用 Microsoft 开源代码行为准则。
如需了解更多信息,请参阅 行为准则常见问题解答 或
联系 opencode@microsoft.com 提出任何其他问题或意见。
您可以通过查看问题或协助审核 PR 来提供帮助。我们欢迎您提交任何问题或 PR,但为了促进社区贡献,我们也将部分问题标记为“开放贡献”和“开放审核”。当然,这些只是建议,欢迎您以任何您喜欢的方式做出贡献。
cd packages/markitdown
hatch
并运行测试:pip install hatch # 其他安装 hatch 的方法:https://hatch.pypa.io/dev/install/
hatch shell
hatch test
(可选)使用已安装所有依赖项的 Devcontainer:
# 在 Devcontainer 中重新打开项目并运行:
hatch test
pre-commit run --all-files
您也可以通过创建和共享第三方插件来做出贡献。更多详情,请参阅 packages/markitdown-sample-plugin
。
本项目可能包含项目、产品或服务的商标或徽标。Microsoft 商标或徽标的授权使用须遵守并遵守
Microsoft 商标和品牌指南。
在本项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 赞助。
任何第三方商标或徽标的使用均须遵守该第三方的政策。