用途:MarkItDown 是 Python 编写的轻量工具,把各类文件与 Office 文档转成结构化 Markdown,定位是在喂给 LLM 前做一次干净的结构化,优先保留标题、列表、表格、链接等语义结构。适合 RAG 预处理、文档喂 LLM、可搜索知识库;不适合像素级保真渲染或扫描件高保真排版还原。
主要能力与格式:Office 文档(PDF、pptx、docx、xlsx/xls)、媒体(图片 EXIF 与可选 LLM 图注、音频 wav/mp3 需可选依赖)、网页与文本(HTML、CSV、JSON、XML、纯文本、RSS、Wikipedia、Bing SERP、YouTube URL)、压缩与电子书(ZIP、EPUB、Outlook .msg、Jupyter .ipynb)。可选依赖按需安装,如 pip install 'markitdown[all]'、pip install 'markitdown[pdf,docx,pptx]'、pip install 'markitdown[az-doc-intel]'。
使用方式:CLI 入口为 main.py;Python 侧核心类 MarkItDown 提供 convert、convert_local、convert_stream、convert_uri、convert_url、convert_response、register_converter 等方法,返回 DocumentConverterResult,其 markdown 属性为 Markdown 字符串。插件默认关闭,需 enable_plugins=True 或 CLI -p;--list-plugins 与转换互斥,需分两条命令。
增强后端:Azure Document Intelligence(docintel_endpoint / CLI -d -e)适合高质量 PDF 与表格抽取;Azure Content Understanding(cu_endpoint / --use-cu)面向多模态与结构化字段;LLM Vision 走 llm_client + llm_model 或 markitdown-ocr 插件。前两者互斥,LLM Vision 可叠加。
限制与安全:以当前进程权限执行 I/O,勿把不受信任路径直接交给 convert(),处理 URL 建议自行 requests.get() 后调 convert_response(),本地文件优先 convert_local()。file: URI 不支持非本机 netloc;大 PDF 用 convert_local 内存峰值高,可用 convert_stream 分块。CLI 暂无 --llm-client/--llm-model。参数与 API 是否仍存在,以官方仓库 README 与 PyPI 为准。