微軟開源MarkItDown:Office文檔輕松轉Markdown,讓大模型更懂Office
最近,Microsoft 的 MarkItDown 庫在 GitHub 上引起了廣泛關注,短短時間內就獲得了超過 20000 個星標。MarkItDown 是一個功能強大的 Python 庫,能夠將多種常見的文件格式(如 PDF、PowerPoint、Word、Excel、圖像、音頻和 HTML 等)轉換為 Markdown 格式,
圖片
MarkItDown 的優(yōu)勢與特點
相較于市面上其他的文件轉換工具(比如 Unstructured、Marker),MarkItDown 在轉換效果方面表現(xiàn)出色。尤其在處理 Office 格式的文檔時,它能夠準確地保留文檔的核心內容和格式,并且以簡潔的 Markdown 語法呈現(xiàn),讓大模型更好的理解已有語料,這使得它在當前的大模型浪潮中展現(xiàn)出巨大的潛力和廣泛的關注。
下面,我們將展示如何通過 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,其他語言的開發(fā)者也可以通過這個服務輕松調用,實現(xiàn)跨語言使用。(PS: 感謝 Cursor 工具,使我這個 Python 門外漢也能根據(jù)自己的需求,輕松構建出符合要求的 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 系列框架,業(yè)務系統(tǒng)仍使用已停止維護的 Spring Boot 2.x 和 JDK 8,存在大量安全漏洞(尤其近期高發(fā)),影響系統(tǒng)安全性與可擴展性。\n\n\n\n**優(yōu)化必要性**:\n\n 及時修復安全漏洞,避免業(yè)務數(shù)據(jù)泄露與惡意攻擊風險。\n\n 提高系統(tǒng)兼容性,適應未來技術生態(tài)與業(yè)務需求。\n\n**優(yōu)化方向:**\n\n 全面升級到 Spring Boot 3.x 和 JDK 17 LTS,采用最新技術棧,提升性能與安全性。\n\n 調研現(xiàn)有項目中間件的兼容性問題,評估升級改造成本并規(guī)劃實施路徑。\n\n 調用現(xiàn)有 DevOps 流水線,重構 JDK17 LTS 實現(xiàn)一鍵構建與自動化部署,提高開發(fā)效率。"
}
返回的 Markdown 格式文本可以直接嵌入到 Markdown 文檔中,或者通過其他工具進行 ETL 進一步處理。
進階使用:結合視覺模型提升轉換效果
MarkItDown 不僅僅支持傳統(tǒng)的文檔格式,還能與大模型進行集成,提升圖像和復雜文檔的解析能力。例如,借助視覺模型,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 也可以根據(jù)需要使用本地的視覺模型,如 ollama run minicpm-v:8b,以滿足個性化的需求。
此外,還可以通過 Swagger 接口來調試 API,訪問地址為:http://0.0.0.0:9527/swagger-ui.html
圖片
總結與展望
盡管 MarkItDown 已經在多個文件格式的轉換上取得了顯著進展,
- 但目前它對舊版 Office 文檔(如.doc、.xls)以及 PDF 影印版的支持仍然有限(本增強工程已支持)。
- 對于復雜格式的報表,MarkItDown 的抽取效果可能不如預期,尤其是在處理非結構化數(shù)據(jù)時,文本轉換效果較為簡單。
然而,在 RAG(Retrieval-Augmented Generation)系統(tǒng)的構建中,MarkItDown 作為初始數(shù)據(jù)的轉換工具,已經為構建更智能的數(shù)據(jù)處理與生成系統(tǒng)提供了巨大的幫助。隨著功能的不斷完善,MarkItDown 將成為更多開發(fā)者實現(xiàn)文檔格式轉換的利器。
如果你對 AI 開發(fā)或者數(shù)據(jù)處理有興趣,不妨嘗試一下 MarkItDown,特別是在結合大語言模型的環(huán)境下,它的潛力無可限量。