Python API

MarkItDown() 一行轉換;5 個 convert_* 方法各司其職

基本用法

from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False)   # True 則開啟外掛
result = md.convert("test.xlsx")
print(result.text_content)

回傳值:DocumentConverterResult

5 個 convert_* 方法

方法輸入何時用
convert()str 路徑/URL、Path、requests.Response、BinaryIO最通用,自動分派到下面四個
convert_local()本機檔案路徑只處理本機檔案(最窄、最安全)
convert_stream()BinaryIO(bytes 流)你已 open 一個 stream,且不需要本地路徑
convert_uri()file: / data: / http: / https: URI從 URI 讀取(含網址);convert_url() 是它的別名
convert_response()requests.Response你自己控制 HTTP 請求(proxy、驗證、快取…),再把 response 交給它
安全建議:官方文件明確建議「只用最窄的 convert_* 函數」。 若你的應用只需要讀本機檔案,就用 convert_local();需要控制抓取就自己 requests.get()convert_response()。詳見安全模型

StreamInfo(線索卡)

當來源缺少副檔名/MIME 線索(例如裸 stream),可以手動提供 stream_info 提示:

from markitdown import StreamInfo

md = MarkItDown()
result = md.convert_stream(
    my_bytes_io,
    stream_info=StreamInfo(extension=".docx", mimetype="application/vnd.openxmlformats-officedocument.wordprocessingml.document"),
)

CLI 的 -x / -m / -c 旗標背後就是建一個 StreamInfo

LLM 圖片描述(pptx / 圖片)

from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
md = MarkItDown(
    llm_client=client,
    llm_model="gpt-4o",
    llm_prompt="optional custom prompt",   # 預設 "Write a detailed caption for this image."
)
result = md.convert("example.jpg")
print(result.text_content)

任何 OpenAI 相容 client 都行(OpenAI、AzureOpenAI、本地 OpenAI-compatible server)。

外掛 + OCR

md = MarkItDown(enable_plugins=True, llm_client=OpenAI(), llm_model="gpt-4o")
result = md.convert("document_with_images.pdf")

詳見外掛系統OCR 套件源碼

Azure 雲端轉換

# Document Intelligence
md = MarkItDown(docintel_endpoint="<endpoint>")
result = md.convert("test.pdf")

# Content Understanding(零設定自動依檔案類型選 analyzer)
md = MarkItDown(cu_endpoint="<endpoint>")
result = md.convert("report.pdf")    # 文件 → prebuilt-documentSearch
result = md.convert("meeting.mp4")   # 影片 → prebuilt-videoSearch
print(result.markdown)               # 含 YAML front matter