AI

MarkItDown:微软的通用文档到 Markdown 转换器

MarkItDown 是微软的工具,用于将文档(PDF、DOCX、PPTX、Excel、图片)转换为 Markdown,以便进行 LLM 处理和 RAG 管道。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
MarkItDown:微软的通用文档到 Markdown 转换器

任何文档理解 AI 管道的第一步都是将原始文档转换为机器可读的文本。这个看似简单的任务充满了挑战:具有复杂布局的 PDF、无可提取文本的扫描文档、包含合并单元格的 Excel 文件、包含嵌入图片的 PowerPoint 演示文稿。MarkItDown,微软的开源文档转换工具,正面应对这些挑战,将多种文档格式转换为干净、LLM 友好的 Markdown。

MarkItDown 由微软开发,旨在解决一个实际问题:如何将企业文档的广阔世界——PDF 报告、Word 文档、PowerPoint 演示文稿、Excel 电子表格、扫描图片——输入 AI 系统进行处理。答案是将所有内容转换为 Markdown,这种格式既能保留文档结构(标题、列表、表格、强调),又能足够轻量以最大化 LLM 上下文窗口中的可用内容。

该工具已迅速成为 AI 文档处理栈中必不可少的组件,用于 RAG 管道、文档问答系统、内容迁移工作流以及任何需要将多种文档格式统一为一致的、AI 可读格式的场景。


MarkItDown 的文档处理管道是如何工作的?

MarkItDown 对每种文档类型应用特定格式的解析策略。

graph LR
    A[输入文档] --> B{格式检测}
    B --> C[PDF\n布局分析 + 文本提取]
    B --> D[DOCX\nXML 解析,结构保留]
    B --> E[PPTX\n逐幻灯片提取]
    B --> F[XLSX\n单元格感知表格提取]
    B --> G[图片\nOCR 文字识别]
    B --> H[HTML\n基于 DOM 的干净提取]
    C --> I[Markdown 输出\n结构化文本]
    D --> I
    E --> I
    F --> I
    G --> I
    H --> I

每个格式处理器都针对其特定的文档类型进行了优化,应用最合适的解析策略来提取干净、结构化的文本。


MarkItDown 支持哪些文档格式?

MarkItDown 支持企业环境中所有常见的文档格式。

格式扩展名解析策略输出质量
PDF.pdf文本提取 + 布局分析优秀(数字版),良好(扫描版 + OCR)
Word.docxXML 文档解析优秀(完整结构保留)
PowerPoint.pptx逐幻灯片提取优秀(备注、文本、幻灯片顺序)
Excel.xlsx单元格感知表格解析优秀(处理合并单元格)
图片.png, .jpg, .tiffOCR(Tesseract)良好(取决于图片质量)
HTML.html, .htmDOM 遍历、标签剥离优秀
CSV.csv分隔符解析优秀
JSON.json结构保留转换良好
ZIP.zip递归提取取决于格式

每种格式都产生一致结构化的 Markdown 输出,实现统一的下游处理。


MarkItDown 如何处理有挑战性的文档特性?

不同类型的文档呈现特定的挑战,MarkItDown 通过专门的处理来应对。

挑战解决方案格式
PDF 多列布局布局分析、阅读顺序检测PDF
扫描文档(纯图片 PDF)OCR 引擎集成PDF、图片
合并的 Excel 单元格单元格扩展、行/列跟踪XLSX
嵌入文字图片图片文字的 OCR 提取所有格式
复杂表格逐单元格提取、表头检测PDF、DOCX、XLSX
幻灯片备注与幻灯片内容分开提取PPTX

目标是生成准确表示原始文档内容和结构的 Markdown。


如何在 Python 和 CLI 中使用 MarkItDown?

MarkItDown 提供了用于程序化使用的 Python API 和用于快速转换的 CLI。

接口命令 / 代码用例
Python APIMarkItDown().convert("document.pdf")程序化管道
CLImarkitdown document.pdf > output.md快速转换
批处理使用 Python API 循环大量文档集合
API 集成作为库导入RAG 管道集成

Python API 是生产使用的主要接口,提供对转换选项和错误处理的完全控制。


常见问题

什么是 MarkItDown? MarkItDown 是微软的开源 Python 工具,用于将各种文档格式转换为干净的 Markdown。它支持 PDF、DOCX、PPTX、Excel(XLSX)、图片(通过 OCR)、CSV、JSON、XML、HTML、EPUB 和 ZIP 文件。主要用例是为 LLM 处理、RAG 管道和 AI 驱动的文档分析准备文档,在这些场景中干净的文本提取至关重要。

为什么 Markdown 是文档转换的目标格式? 选择 Markdown 作为目标格式是因为它能够以轻量级、LLM 友好的格式保留文档结构(标题、列表、表格、强调)。与原始文本不同,Markdown 保留了 LLM 可以理解的语义结构。与 PDF 或 DOCX 不同,Markdown 对分词友好,避免了消耗上下文窗口的格式化开销。它在结构保留和令牌效率之间达到了最佳平衡。

MarkItDown 如何处理文档中的图片? MarkItDown 通过多种策略处理图片:从图片元数据(替代文本、标题)提取文本、针对扫描文档和包含文字的图片进行 OCR(光学字符识别),以及配置了视觉能力 LLM 时的 AI 驱动图片描述。提取的图片内容作为描述性文本包含在 Markdown 输出中。

MarkItDown 与其他文档转换器相比如何? 与 Pandoc 等通用文档转换器相比,MarkItDown 更加专注和明确。它专门针对生成 LLM 友好的输出进行了优化,具有更清晰的格式、更好的表格处理和集成的 OCR。它在格式多样性(Pandoc 支持数百种格式)方面做出取舍,以换取在 AI 就绪 Markdown 这一特定场景中的优越输出质量。

MarkItDown 可以集成到自动化管道中吗? 是的,MarkItDown 专为程序化使用而设计。它提供了用于批处理的 Python API、用于脚本的 CLI,并且可以集成到 CI/CD 管道、文档处理工作流和 RAG 摄入系统中。该库优雅地处理错误,记录特定文件的问题而不是使整个批次失败。


延伸阅读

TAG
CATEGORIES