MarkItDown:文件转换为Markdown的Python工具

MarkItDown:文件转换为Markdown的Python工具

技术背景

在处理各种文件并用于大语言模型(LLM)和相关文本分析管道时,需要将文件内容转换为易于处理的格式。Markdown 接近纯文本,有少量标记或格式,能表示重要文档结构,主流 LLM 如 OpenAI 的 GPT - 4o 能很好地理解 Markdown,且 Markdown 约定具有高度的标记效率。MarkItDown 就是这样一个轻量级的 Python 工具,用于将各种文件转换为 Markdown。

实现步骤

安装

  • 使用 pip 安装:pip install 'markitdown[all]'
  • 从源码安装:
1
2
3
git clone [email protected]:microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'

命令行使用

  • 转换文件并输出到文件:markitdown path - to - file.pdf > document.md
  • 指定输出文件:markitdown path - to - file.pdf -o document.md
  • 通过管道输入内容:cat path - to - file.pdf | markitdown

可选依赖安装

可以根据需要单独安装支持特定文件格式的依赖,例如:

1
pip install 'markitdown[pdf, docx, pptx]'

插件使用

  • 列出已安装插件:markitdown --list - plugins
  • 启用插件进行文件转换:markitdown --use - plugins path - to - file.pdf

使用 Azure Document Intelligence 进行转换

1
markitdown path - to - file.pdf -o document.md -d -e "<document_intelligence_endpoint>"

Docker 使用

1
2
docker build -t markitdown:latest .
docker run --rm -i markitdown:latest < ~/your - file.pdf > output.md

核心代码

Python API 基本使用

1
2
3
4
5
from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False) # Set to True to enable plugins
result = md.convert("test.xlsx")
print(result.text_content)

使用 Document Intelligence 进行转换

1
2
3
4
5
from markitdown import MarkItDown

md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("test.pdf")
print(result.text_content)

使用大语言模型进行图像描述

1
2
3
4
5
6
7
from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("example.jpg")
print(result.text_content)

最佳实践

  • 若需要处理多种文件格式,建议安装 markitdown[all] 以获取完整的功能支持。
  • 在开发插件时,参考 packages/markitdown - sample - plugin 中的示例代码。
  • 在提交代码前,运行 pre - commit run --all - files 进行检查,确保代码符合规范。

常见问题

版本 0.0.1 到 0.1.0 的重大更改

  • 依赖项现在按可选功能组组织,使用 pip install 'markitdown[all]' 可保持向后兼容。
  • convert_stream() 现在需要二进制文件类对象,之前版本也接受文本文件类对象。
  • DocumentConverter 类接口改为从类文件流读取,不再创建临时文件。若你是插件或自定义 DocumentConverter 的维护者,可能需要更新代码;若仅使用 MarkItDown 类或命令行界面,则无需更改。

MarkItDown:文件转换为Markdown的Python工具
https://119291.xyz/posts/2025-04-23.markitdown-file-to-markdown-conversion-tool/
作者
ww
发布于
2025年4月23日
许可协议