MarkItDown
微软开源文档转换工具,将 PDF/Word/PPT 一键转为 Markdown
项目简介 MarkItDown 是微软开源的 Python 文档转换工具,核心功能是将各类文件格式统一转换为 Markdown,解决 LLM 和文本分析管道中最令人头疼的"格式碎片"问题。不同于重在视觉还原的重排版工具,MarkItDown 的设计目标是保留文档的完整结构信息(标题层级、列表、表格、链接等),同时输出对 LLM 友好的纯文本格式。Markdown 本身与 LLM 的训练语料高度契合,Token 消耗也更低,是向大模型输入文档内容的推荐格式。
支持格式(≥10种) MarkItDown 目前支持转换的文件格式包括: PDF 文档(保留文本层或 OCR 提取) PowerPoint 演示文稿(每页转为一节,包含演讲者备注) Word 文档(.docx,保留标题、列表、表格) Excel 电子表格(.xlsx,每张工作表单独输出) 图片(EXIF 元数据提取 + OCR 文字识别) 音频文件(EXIF 元数据 + 语音转写) HTML 网页(保留结构,移除无关样式脚本) CSV、JSON、XML 等文本格式(保持原始层次) ZIP 压缩包(自动解压并依次处理内部文件) YouTube 视频链接(提取字幕和视频描述) EPUB 电子书 ……以及更多格式持续添加中。
技术实现(≥200字) MarkItDown 的架构围绕"格式探测 → 格式专用转换器 → Markdown 标准化输出"三层设计。每种格式对应一个独立的 convert_* 函数,如 convert_pdf()、convert_powerpoint()、convert_word() 等,均返回统一的 Markdown 字符串。转换过程中优先使用原生库(python-docx 处理 Word、openpyxl 处理 Excel、PyPDF2 / pdfplumber 处理 PDF),避免重型依赖;在处理图片和音频时调用系统级工具(ExifTool、Tesseract、FFmpeg)提取元数据,对于 YouTube 视频则调用 yt-dlp 获取字幕。整体设计遵循最小权限原则,转换操作以当前进程权限执行,不存在隐藏的网络访问或文件写入行为,适合在服务器端批量处理敏感文档。输出 Markdown 时保留了 heading 层级(# ## ###)、有序/无序列表(- / 1.)、表格(| col1 | col2 |)和链接语法,确保 LLM 能够准确理解原始文档的逻辑结构。
安装与使用 MarkItDown 需要 Python 3.10 或更高版本,推荐使用虚拟环境安装:pip install markitdown 转换本地文件:markitdown document.pdf > output.md 转换远程文件:markitdown https://example.com/file.pptx Python API 调用: from markitdown import MarkItDown md = MarkItDown() result = md.convert("document.docx") print(result.text_content)
适用人群 需要批量将 Office 文档喂给 LLM 做分析、摘要或问答的开发者;构建内部知识库、需将历史文档统一转 Markdown 后做向量检索的团队;处理 PDF 报告、论文、合同等长文本的 NLP 研究者和数据工程师。
开源协议 MIT
评论与建议
登录 后参与评论或提建议