最近,Microsoft 的 MarkItDown 库在 GitHub 上引起了广泛关注,短短时间内就获得了超过 20000 个星标。MarkItDown 是一个功能强大的 Python 库,能够将多种常见的文件格式(如 PDF、PowerPoint、Word、Excel、图像、音频和 HTML 等)转换为 Markdown 格式,
图片
MarkItDown 的优势与特点
相较于市面上其他的文件转换工具(比如 Unstructured、Marker),MarkItDown 在转换效果方面表现出色。尤其在处理 Office 格式的文档时,它能够准确地保留文档的核心内容和格式,并且以简洁的 Markdown 语法呈现,让大模型更好的理解已有语料,这使得它在当前的大模型浪潮中展现出巨大的潜力和广泛的关注。
下面,我们将展示如何通过 MarkItDown 将 Excel 文件转换为 Markdown 格式的简单示例。
首先,安装 MarkItDown 库:
pip install markitdown
然后,使用以下代码进行转换:
from markitdown import MarkItDown
# 初始化 MarkItDown 对象
markitdown = MarkItDown()
# 转换 Excel 文件为 Markdown 格式
result = markitdown.convert("test.xlsx")
# 打印转换后的 Markdown 内容
print(result.text_content)
这样,我们就能够轻松将 Excel 文档转换为 Markdown 格式。
不过,由于 MarkItDown 是 Python 工具包,直接在其他编程语言中使用并不十分方便。因此,笔者基于 MarkItDown 封装了一个 REST API 服务,并增强支持PDF转换成markdown,其他语言的开发者也可以通过这个服务轻松调用,实现跨语言使用。(PS: 感谢 Cursor 工具,使我这个 Python 门外汉也能根据自己的需求,轻松构建出符合要求的 AI 基础设施。)
通过 REST API 使用 MarkItDown
- 运行 Docker 容器
首先,你需要启动 MarkItDown 的 Docker 服务:
docker run -p 8000:8000 pig4cloud/markitdown
- 通过 REST API 调试
启动服务后,你可以通过 curl 命令测试 API 接口,上传 Word 文件进行转换:
curl -X 'POST' \
'http://localhost:8000/upload/' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@test.docx'
API 返回的结果是转换后的 Markdown 格式文本:
{
"text": "\n## 核心技术栈升级\n\nSpring 官方已于 2023 年底宣布停止维护 JDK 8 和 Spring Boot 2 系列框架,业务系统仍使用已停止维护的 Spring Boot 2.x 和 JDK 8,存在大量安全漏洞(尤其近期高发),影响系统安全性与可扩展性。\n\n![](data:image/png;base64...)\n\n**优化必要性**:\n\n 及时修复安全漏洞,避免业务数据泄露与恶意攻击风险。\n\n 提高系统兼容性,适应未来技术生态与业务需求。\n\n**优化方向:**\n\n 全面升级到 Spring Boot 3.x 和 JDK 17 LTS,采用最新技术栈,提升性能与安全性。\n\n 调研现有项目中间件的兼容性问题,评估升级改造成本并规划实施路径。\n\n 调用现有 DevOps 流水线,重构 JDK17 LTS 实现一键构建与自动化部署,提高开发效率。"
}
返回的 Markdown 格式文本可以直接嵌入到 Markdown 文档中,或者通过其他工具进行 ETL 进一步处理。
进阶使用:结合视觉模型提升转换效果
MarkItDown 不仅仅支持传统的文档格式,还能与大模型进行集成,提升图像和复杂文档的解析能力。例如,借助视觉模型,MarkItDown 能够处理复杂的图像内容,将图片中的信息提取并转换为 Markdown 格式。
为了使用视觉模型,你可以通过如下命令启动服务:
docker run -d \
-p 8000:8000 \
-e API_KEY=gitee_ai_key \
-e MODEL=InternVL2_5-26B \
-e BASE_URL=https://ai.gitee.com/v1 \
pig4cloud/markitdown
Gitee AI 提供的 InternVL2_5-26B 视觉模型,来提升中文图像和文档内容的解析能力。当然你可以使用 qwen-vl 也可以根据需要使用本地的视觉模型,如 ollama run minicpm-v:8b,以满足个性化的需求。
此外,还可以通过 Swagger 接口来调试 API,访问地址为:http://0.0.0.0:9527/swagger-ui.html
图片
总结与展望
尽管 MarkItDown 已经在多个文件格式的转换上取得了显著进展,
- 但目前它对旧版 Office 文档(如.doc、.xls)以及 PDF 影印版的支持仍然有限(本增强工程已支持)。
- 对于复杂格式的报表,MarkItDown 的抽取效果可能不如预期,尤其是在处理非结构化数据时,文本转换效果较为简单。
然而,在 RAG(Retrieval-Augmented Generation)系统的构建中,MarkItDown 作为初始数据的转换工具,已经为构建更智能的数据处理与生成系统提供了巨大的帮助。随着功能的不断完善,MarkItDown 将成为更多开发者实现文档格式转换的利器。
如果你对 AI 开发或者数据处理有兴趣,不妨尝试一下 MarkItDown,特别是在结合大语言模型的环境下,它的潜力无可限量。