微軟開源MarkItDown:Office文檔輕松轉(zhuǎn)Markdown,讓大模型更懂Office
最近,Microsoft 的 MarkItDown 庫在 GitHub 上引起了廣泛關(guān)注,短短時(shí)間內(nèi)就獲得了超過 20000 個(gè)星標(biāo)。MarkItDown 是一個(gè)功能強(qiáng)大的 Python 庫,能夠?qū)⒍喾N常見的文件格式(如 PDF、PowerPoint、Word、Excel、圖像、音頻和 HTML 等)轉(zhuǎn)換為 Markdown 格式,
圖片
MarkItDown 的優(yōu)勢與特點(diǎn)
相較于市面上其他的文件轉(zhuǎn)換工具(比如 Unstructured、Marker),MarkItDown 在轉(zhuǎn)換效果方面表現(xiàn)出色。尤其在處理 Office 格式的文檔時(shí),它能夠準(zhǔn)確地保留文檔的核心內(nèi)容和格式,并且以簡潔的 Markdown 語法呈現(xiàn),讓大模型更好的理解已有語料,這使得它在當(dāng)前的大模型浪潮中展現(xiàn)出巨大的潛力和廣泛的關(guān)注。
下面,我們將展示如何通過 MarkItDown 將 Excel 文件轉(zhuǎn)換為 Markdown 格式的簡單示例。
首先,安裝 MarkItDown 庫:
pip install markitdown
然后,使用以下代碼進(jìn)行轉(zhuǎn)換:
from markitdown import MarkItDown
# 初始化 MarkItDown 對(duì)象
markitdown = MarkItDown()
# 轉(zhuǎn)換 Excel 文件為 Markdown 格式
result = markitdown.convert("test.xlsx")
# 打印轉(zhuǎn)換后的 Markdown 內(nèi)容
print(result.text_content)
這樣,我們就能夠輕松將 Excel 文檔轉(zhuǎn)換為 Markdown 格式。
不過,由于 MarkItDown 是 Python 工具包,直接在其他編程語言中使用并不十分方便。因此,筆者基于 MarkItDown 封裝了一個(gè) REST API 服務(wù),并增強(qiáng)支持PDF轉(zhuǎn)換成markdown,其他語言的開發(fā)者也可以通過這個(gè)服務(wù)輕松調(diào)用,實(shí)現(xiàn)跨語言使用。(PS: 感謝 Cursor 工具,使我這個(gè) Python 門外漢也能根據(jù)自己的需求,輕松構(gòu)建出符合要求的 AI 基礎(chǔ)設(shè)施。)
通過 REST API 使用 MarkItDown
- 運(yùn)行 Docker 容器
首先,你需要啟動(dòng) MarkItDown 的 Docker 服務(wù):
docker run -p 8000:8000 pig4cloud/markitdown
- 通過 REST API 調(diào)試
啟動(dòng)服務(wù)后,你可以通過 curl 命令測試 API 接口,上傳 Word 文件進(jìn)行轉(zhuǎn)換:
curl -X 'POST' \
'http://localhost:8000/upload/' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@test.docx'
API 返回的結(jié)果是轉(zhuǎn)換后的 Markdown 格式文本:
{
"text": "\n## 核心技術(shù)棧升級(jí)\n\nSpring 官方已于 2023 年底宣布停止維護(hù) JDK 8 和 Spring Boot 2 系列框架,業(yè)務(wù)系統(tǒng)仍使用已停止維護(hù)的 Spring Boot 2.x 和 JDK 8,存在大量安全漏洞(尤其近期高發(fā)),影響系統(tǒng)安全性與可擴(kuò)展性。\n\n\n\n**優(yōu)化必要性**:\n\n 及時(shí)修復(fù)安全漏洞,避免業(yè)務(wù)數(shù)據(jù)泄露與惡意攻擊風(fēng)險(xiǎn)。\n\n 提高系統(tǒng)兼容性,適應(yīng)未來技術(shù)生態(tài)與業(yè)務(wù)需求。\n\n**優(yōu)化方向:**\n\n 全面升級(jí)到 Spring Boot 3.x 和 JDK 17 LTS,采用最新技術(shù)棧,提升性能與安全性。\n\n 調(diào)研現(xiàn)有項(xiàng)目中間件的兼容性問題,評(píng)估升級(jí)改造成本并規(guī)劃實(shí)施路徑。\n\n 調(diào)用現(xiàn)有 DevOps 流水線,重構(gòu) JDK17 LTS 實(shí)現(xiàn)一鍵構(gòu)建與自動(dòng)化部署,提高開發(fā)效率。"
}
返回的 Markdown 格式文本可以直接嵌入到 Markdown 文檔中,或者通過其他工具進(jìn)行 ETL 進(jìn)一步處理。
進(jìn)階使用:結(jié)合視覺模型提升轉(zhuǎn)換效果
MarkItDown 不僅僅支持傳統(tǒng)的文檔格式,還能與大模型進(jìn)行集成,提升圖像和復(fù)雜文檔的解析能力。例如,借助視覺模型,MarkItDown 能夠處理復(fù)雜的圖像內(nèi)容,將圖片中的信息提取并轉(zhuǎn)換為 Markdown 格式。
為了使用視覺模型,你可以通過如下命令啟動(dòng)服務(wù):
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 視覺模型,來提升中文圖像和文檔內(nèi)容的解析能力。當(dāng)然你可以使用 qwen-vl 也可以根據(jù)需要使用本地的視覺模型,如 ollama run minicpm-v:8b,以滿足個(gè)性化的需求。
此外,還可以通過 Swagger 接口來調(diào)試 API,訪問地址為:http://0.0.0.0:9527/swagger-ui.html
圖片
總結(jié)與展望
盡管 MarkItDown 已經(jīng)在多個(gè)文件格式的轉(zhuǎn)換上取得了顯著進(jìn)展,
- 但目前它對(duì)舊版 Office 文檔(如.doc、.xls)以及 PDF 影印版的支持仍然有限(本增強(qiáng)工程已支持)。
- 對(duì)于復(fù)雜格式的報(bào)表,MarkItDown 的抽取效果可能不如預(yù)期,尤其是在處理非結(jié)構(gòu)化數(shù)據(jù)時(shí),文本轉(zhuǎn)換效果較為簡單。
然而,在 RAG(Retrieval-Augmented Generation)系統(tǒng)的構(gòu)建中,MarkItDown 作為初始數(shù)據(jù)的轉(zhuǎn)換工具,已經(jīng)為構(gòu)建更智能的數(shù)據(jù)處理與生成系統(tǒng)提供了巨大的幫助。隨著功能的不斷完善,MarkItDown 將成為更多開發(fā)者實(shí)現(xiàn)文檔格式轉(zhuǎn)換的利器。
如果你對(duì) AI 開發(fā)或者數(shù)據(jù)處理有興趣,不妨嘗試一下 MarkItDown,特別是在結(jié)合大語言模型的環(huán)境下,它的潛力無可限量。