856 个字词
4 分钟
MarkItDown - 将多种文档转换为 Markdown 文件的工具
众所周知大模型的文档语言用的是 Makrdown。为了便于大模型阅读各类文档,微软开发了一套可以将多种文档格式转换为 Markdown 格式 (保留标题、列表、表格、链接等) 的工具——MarkItDown。它支持的转换格式有
- PowerPoint
- Word
- Excel
- Images (不仅提取 EXIF 元数据,还能进行 OCR 识别)
- Audio (不仅提取 EXIF 元数据,还能进行语音转录)
- HTML
- 其他基于文本的格式 (CSV, JSON, XML)
- ZIP 压缩包 (以及遍历其中的文件进行转换)
- Youtube 网络链接
- EPub 电子书
工具安装
MarkItDown 需要 Python 3.10+ 环境,可以通过下列命令一键安装
git clone git@github.com:microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'或者
pip install "git+https://github.com/microsoft/markitdown.git#subdirectory=packages/markitdown&egg=markitdown[all]"需要注意的是,该工具依赖 ffmpeg 处理音视频文件,因此需要确保系统中已经安装了 ffmpeg,并且将其添加到了环境变量中。如果没有安装,可以通过以下命令安装
# Linux
sudo apt update && sudo apt install ffmpeg
# macOS (使用 Homebrew)
brew install ffmpeg
# Windows PowerShell
winget install ffmpeg使用方法
基础使用
命令行的使用方法如下,使用 > 或者 -o 指定输出文件路径
markitdown path/to/file.pdf > document.mdmarkitdown path/to/file.pptx -o document.md此外,还可以通过管道的方式转换文档
# Linux 或 macOS
cat path/to/file.docx | markitdown > document.md
# Windows PowerShell - 不推荐使用
Get-Content path/to/file.docx | markitdown > document.md插件
MarkItDown 还支持第三方的插件,可以通过安装第三方插件来扩展其功能。下面指令列举了已安装的插件
markitdown --list-plugins可以用这个指令启用插件
markitdown --use-plugins path/to/file.pdfmarkitdown-ocr 插件
markitdown-ocr 插件为 PDF、DOCX、PPTX 和 XLSX 文件增加了 OCR 识别功能。为了使用这个插件,需要额外安装以下依赖
pip install markitdown-ocr
pip install openai # 或者其他与 OpenAI API 兼容的库使用方法如下
from markitdown import MarkItDown
from openai import OpenAI
# 转换是基于 LLM 的,因此需要提供一个 LLM 客户端实例
md = MarkItDown(
enable_plugins=True,
llm_client=OpenAI(),
llm_model="gpt-4o",
)
result = md.convert("document_with_images.pdf")
print(result.text_content)
# 保存为 Markdown 文件
with open("document.md", "w", encoding="utf-8") as f:
f.write(result.markdown_content)Azure 文档数据提取器
亦可以集成到这个工具中来使用
markitdown path-to-file.pdf -o document.md -d -e "<document_intelligence_endpoint>"Python 接口
基础 Python 接口的使用方法如下
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False) # 设置为 False 来禁用插件
result = md.convert("test.xlsx")
print(result.text_content)结合 Azure 文档数据提取器的使用方法如下
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("test.pdf")
print(result.text_content)如果想利用大模型的能力提取图像中的文本,可以提供 llm_client 和 llm_model 参数来启用 OCR 插件
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)MCP 工具
MarkItDown 还提供了一个 MCP (MarkItDown Content Processor) 工具,供本地模型使用。要使用,需要先安装依赖
pip install markitdown-mcp如果使用 STDIO 模式运行这个 MCP 工具,运行这个指令
markitdown-mcp如果使用流式 HTTP 和 SSE 模式运行工具,需要运行这个指令
markitdown-mcp --http --host 127.0.0.1 --port 3001更多相关信息可以参考官方文档 MarkItDown MCP。
MarkItDown - 将多种文档转换为 Markdown 文件的工具
https://adalovelemon.github.io/blog/posts/content/technotes/tools/markitdown/
