markitdown5 分钟把办公文档变成可检索文本【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdownmarkitdown 是一个 Python 文档转换工具把 PPT、PDF、Excel、图片、音频等 20 多种格式转成 Markdown。它解决复制粘贴丢表格、LLM 读不了 Office 文件的问题适合做 RAG、批量整理文档的人。跑通后你会得到一份保留标题层级、表格和演讲者备注的 output.md可直接切片、检索。它解决了什么问题第一个坑在表格。PPT 和 Word 里的表格复制出来经常挤成一行行列关系全丢重新对齐比读原文还费劲。第二个坑在备注和层级。演讲者备注只能在 PowerPoint 里逐页点开标题层级复制出来全变普通段落还原会议纪要基本靠手敲。第三个坑是模型根本读不了 Office 文件。.pptx、.pdf 都是二进制人工重敲一份 40 页的材料成本直接劝退。手工整理的耗时随页数线性涨通用提取工具大多只给扁平文本层级和表格还得二次清理。markitdown 的做法是把结构直接变成标准 Markdown 语法转完就能喂给切片器。问题对上了先花 5 分钟把它跑起来。5 分钟跑起来前提Python 3.10 到 3.14。两步。# 虚拟环境隔离依赖避免污染系统包 python -m venv .venv source .venv/bin/activate # [all] 一次装齐 PDF、Office、音频等全部可选依赖 pip install markitdown[all]只有某一类文件的话可以只装对应 extra比如pip install markitdown[pdf]装得更快。# 把手头任意一个 PPT 转成 Markdown换成你的文件路径 markitdown presentation.pptx -o output.md # 顺手确认装好了会打印版本号 markitdown --version打开 output.md 核对三件事标题都变成 # 开头的行表格保留行列结构有备注的页尾多出一段 Notes。跑通了你会看到每页幻灯片一个 Slide number 注释分隔标题、表格、备注各就各位。接下来看它都能吃什么。功能全景输入/场景输出/效果前置条件备注PPTX / DOCX / XLSX标题、列表、表格、演讲者备注markitdown[all]或[pptx]、[docx]、[xlsx]备注按页追加在页尾PDF正文、表格、页结构[pdf]extra内置 pdfplumber扫描件输出空白需 OCR 插件图片 jpg / pngEXIF 元数据加 LLM 文字描述元数据需 exiftool描述需 OpenAI 兼容客户端不配客户端就只有元数据音频 wav / mp3 / m4a元数据 语音转写文本[audio-transcription]extramp3 需系统 ffmpeg转写默认英文 en-USHTML / CSV / JSON / EPUB结构化 MarkdownEPUB 保留章节标题基础依赖即可无需任何 extraZIP 压缩包逐个转换内部文件合并成一份基础依赖即可每个文件带 File 小标题差异化在两点。一是输出面向 LLM 消费标题层级、表格、链接都是标准 Markdown 语法切分chunking不用再处理格式。二是图片不是只留文件名——接一个视觉模型图里的形状、颜色、数据就能变成文字描述纯文本管线也看得懂视觉内容。结构保真是基本功下面两个亮点才是重点。亮点能力PPT 备注和页面结构怎么保住手工把 PPT 整理成文本表格挤成一行是常态备注区内容更是拿不到。markitdown 按幻灯片内的阅读顺序遍历文本框表格逐行转 Markdown 表格语法备注追加到该页末尾from markitdown import MarkItDown md MarkItDown() result md.convert(quarterly_report.pptx) print(result.markdown) # 每页以 !-- Slide number: N -- 开头转完grep -c Slide number output.md对一下页数备注齐全的 40 页 PPT 转完后### Notes:块一条不少0 条需要人工补录。备注提取逻辑packages/markitdown/src/markitdown/converters/_pptx_converter.pyif slide.has_notes_slide: notes_frame slide.notes_slide.notes_text_frame notes_text (notes_frame.text or ) if notes_frame is not None else if notes_text.strip(): md_content \n\n### Notes:\n notes_text让 LLM 看懂图片里的内容默认转图片只输出 EXIF 元数据图里的图表、截图内容模型一无所知。传入任意 OpenAI 兼容客户端后图片被 base64 编码、连同你的 prompt 发给视觉模型描述直接写进 Markdownfrom markitdown import MarkItDown from openai import OpenAI md MarkItDown( llm_clientOpenAI(), # 任意 OpenAI 兼容客户端 llm_modelgpt-4o, llm_prompt描述图中形状、颜色与数据内容, # 不传用默认提示词 ) print(md.convert(chart.jpg).markdown) # 描述写在 # Description: 下仓库里的测试图就是上图红圈、蓝方块加一段文字模型会描述出图里的 5bda1dd6 和红蓝两色0 人工补录。每张图一次 API 调用prompt 不传时用默认的 Write a detailed caption for this image.。电子文档到这就齐了扫描件这种硬骨头放到实战场景里说。实战场景会议纪要还原个人小批量谁来做拿到 1-3 份 PPT 要当天出纪要的工程师或运营。转换命令同上多一条核对命令# 统计有备注的页数与 PPT 实际备注页比对 grep -c ### Notes: out/meeting.md预期输出里的 Slide number 标记数与页数一致备注条数与源文件一致纪要素材可直接喂给 LLM 总结。批量转换培训资料谁来做文档负责人。情况培训目录下 50 份 PPT、20 份 Excel 分散在子目录单个文件坏了不能中断整批。用 API 循环加异常捕获【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考