MarkItDown 快速指南:批量把 PDF、Word、PPT 转成带结构的 Markdown

MarkItDown 快速指南:批量把 PDF、Word、PPT 转成带结构的 Markdown

【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 【免费下载链接】markitdown 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown

MarkItDown 是微软开源的轻量级 Python 工具,批量把 PDF、Word、PPT、Excel、音频、HTML 等办公文档转换成 Markdown,面向需要把异构文档喂给 LLM 或做文本分析流水线的开发者。输出保留标题层级、列表、表格、超链接等结构,依赖可按格式按需安装。

🧭 什么时候需要它

  • 手头一堆 PDF 论文、Word 报告、Excel 表混在一起要喂给 LLM:每个文件跑一条命令,得到能直接切片、索引的统一 Markdown 格式。
  • 在做文本分析流水线,多种文件类型要归一成一种文本:它按扩展名自动路由到对应转换器,不用为每种格式写解析。
  • 文档里有表格、多级标题、链接,不想压扁成纯文本:输出是带结构的 Markdown,而不是一坨文字。
  • 只想处理一两种格式:只装对应 extras 分组,环境不臃肿。

🚀 从零到第一次输出

最快安装方式:一条命令装全依赖

  1. 环境要求:Python 3.10 到 3.14,建议用虚拟环境避免依赖冲突。
  2. 安装。不想挑就 [all] 一次带全所有可选依赖:
pip install 'markitdown[all]'

你会得到 markitdown 命令行工具;只要某几种格式时,改成 pip install 'markitdown[pdf,docx]' 即可。

  1. 转一个手边的 PDF:
markitdown report.pdf -o report.md

你会看到同目录出现 report.md,原文标题变成 # 层级,表格输出为 Markdown 表格,超链接保留 URL。也可以 > 重定向到 stdout,或 cat report.pdf | markitdown 管道输入。

📦 核心能力地图

每种格式一个独立转换器

能力输入输出备注
文档转换PDF、DOCX、PPTX、XLSX/XLS带标题、表格、链接的 Markdown各格式 extras 独立
图片转换图片文件EXIF 元数据文本配 LLM 可生成图像描述
音频转换wav、mp3语音转写 + 元数据需装 audio-transcription
网页与结构化数据HTML、CSV、JSON、XML、EPUBMarkdownZIP 会逐成员处理
YouTube 转换视频链接字幕转写需装 youtube-transcription

设计思路是不写"万能解析器":每种格式一个独立转换器,源码都在 converters/,按扩展名自动路由,依赖按需安装。

🔍 进阶用法

用 LLM 生成图片描述

怎么开启:给构造函数传 llm_client 和 llm_model。前置:一个 OpenAI 兼容客户端。生效情况:README 说明目前仅对 PPTX 和图片文件生效,仓库里就有现成测试图可当输入样本:

MarkItDown LLM 图片描述功能测试样例图

模型调用失败并耗尽重试后,会自动尝试其他可用转换器,全部失败才抛 FileConversionException。

OCR 插件做批量文档转换(扫描件处理)

怎么开启:先装插件和客户端,再在 Python 侧传三个参数:

from markitdown import MarkItDown
md = MarkItDown(enable_plugins=True, llm_client=OpenAI(), llm_model="gpt-4o")
print(md.convert("scan.pdf").text_content)

前置:pip install markitdown-ocr openai。生效情况:PDF、DOCX、PPTX、XLSX 中内嵌图片会被 OCR;无可提取文本的扫描件按 300 DPI 渲染成整页图片送模型,文字包在 *[Image OCR]...[End OCR]* 标记里插回原位。不生效情况:不传 llm_client 时插件仍会加载,但 OCR 被静默跳过,回退到内置转换器。

⚙️ 实战走查

一行命令批量转换整个目录

输入:papers/ 里混着 PDF 论文、Word 报告、Excel 表。处理:按扩展名自动路由,一个文件进,一个 md 出。

for f in papers/*; do
  markitdown "$f" -o "papers_md/$(basename "${f%.*}").md"
done

输出:papers_md/ 里每个原文件对应一个 .md,下游切片、建索引、喂 LLM 只面对一种格式;目录里若有扫描件,再叠加前面的 OCR 插件即可。

⚠️ 避坑与 FAQ

  • 现象:照 markitdown-ocr 的 README 敲 --llm-client openai --llm-model gpt-4o,终端里模型不生效。原因:当前 CLI 源码(main.py)的 argparse 没注册这两个参数。正确做法:走 Python API 传参,用 markitdown --list-plugins 确认插件已装。
  • 现象:复杂排版文档转换后结构松散。原因:README 明确输出面向文本分析工具,不是高保真排版。正确做法:多栏、公式密集文档人工抽查后再用。
  • 现象:某格式报错或无法转换。原因:该格式可选依赖没装。正确做法:先补装对应 extras,如 pip install 'markitdown[pdf,docx]' 再重试。
  • 现象:服务端用 convert() 处理不可信输入被安全审查拦下。原因:它接受远程 URI 和字节流。正确做法:只读本地文件时换用 convert_local()。

总评:MarkItDown 朴素直接——装好、一条命令、拿带结构的 Markdown,OCR 插件与 LLM 描述补上扫描件和图片的最后一公里。手边有文档的话,直接 pip install 'markitdown[all]',再 markitdown any.pdf -o any.md 试一把。

【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 【免费下载链接】markitdown 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值