MarkItDown 调用指南

一、MarkItDown 是什么?

MarkItDown 是微软开源的一个 Python 项目,主要功能是:

将 PDF、Word、PowerPoint、Excel、图片、音频、网页等多种格式文件转换成 Markdown 文本。

它的重点不是“完美还原排版”,而是把原本不方便大模型读取的文件,转换成结构清晰、便于大模型理解和处理的 Markdown。

因此,它特别适合用于:

  • AI 总结文档;
  • RAG 知识库构建;
  • 文档批量预处理;
  • 教学资料整理;
  • 论文、课件、试题资料的结构化;
  • 给 Codex、Claude Code、Cursor 等 AI 编程工具提供更容易读取的材料。

二、为什么要把文件转成 Markdown?

很多资料虽然内容丰富,但它们本身并不适合直接交给 AI 处理。

例如:

文件类型 问题
PDF 排版复杂,文字顺序可能混乱
Word 有大量格式信息,不适合直接索引
PPT 每页内容分散,结构不稳定
Excel 表格信息需要转成文本结构
图片 需要 OCR 或视觉模型识别
音频 需要转写成文字
HTML 页面中可能混有导航、脚本、广告等内容

而 Markdown 的优势在于:

  1. 接近纯文本,便于大模型读取;
  2. 保留基本结构,如标题、列表、表格、链接;
  3. token 成本较低,通常比复杂格式更适合放入上下文;
  4. 适合知识库与 RAG 系统,便于后续切分、索引、向量化和检索。

典型工作流可以理解为:

1
2
3
4
5
6
7
PDF / Word / PPT / Excel / 图片 / 音频

Microsoft MarkItDown

Markdown 文档

AI 总结 / RAG 知识库 / Codex 分析 / 自动化处理

三、MarkItDown 支持哪些文件格式?

MarkItDown 支持的格式比较广,常见包括:

类型 示例
PDF .pdf
Word .docx
PowerPoint .pptx
Excel .xlsx.xls
图片 可提取 EXIF,也可结合 OCR 或视觉模型
音频 可提取元数据,也可进行语音转写
HTML 网页、HTML 文件
CSV .csv
JSON .json
XML .xml
ZIP 可遍历压缩包内部文件
YouTube URL 可获取视频转录文本
EPUB 电子书格式

它不是单纯的 PDF 转文字工具,而是一个面向 AI 文档处理流程的多格式转换器。


四、如何安装 MarkItDown?

MarkItDown 是 Python 包,可以通过 pip 安装。

最完整的安装方式是:

1
pip install 'markitdown[all]'

这里的 [all] 表示安装所有可选依赖。

如果只想安装部分功能,也可以按需安装,例如只处理 PDF、Word、PPT:

1
pip install 'markitdown[pdf,docx,pptx]'

不同格式可能需要不同的可选依赖,例如:

extra 用途
pdf 支持 PDF
docx 支持 Word
pptx 支持 PowerPoint
xlsx 支持 Excel
audio-transcription 支持音频转写
youtube-transcription 支持 YouTube 转录
az-doc-intel 支持 Azure Document Intelligence

如果只是想初步体验,推荐直接安装:

1
pip install 'markitdown[all]'

五、命令行如何使用?

安装完成后,可以直接在命令行使用 markitdown 命令。

1. 将 PDF 转成 Markdown

1
markitdown input.pdf -o output.md

2. 将 Word 转成 Markdown

1
markitdown input.docx -o output.md

3. 将 PPT 转成 Markdown

1
markitdown slides.pptx -o slides.md

4. 将 Excel 转成 Markdown

1
markitdown data.xlsx -o data.md

5. 输出到终端

1
markitdown input.pdf

6. 使用重定向输出

1
markitdown input.pdf > output.md

六、Python 代码中如何调用?

除了命令行,也可以在 Python 代码中调用 MarkItDown。

基本用法如下:

1
2
3
4
5
6
from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("input.pdf")

print(result.text_content)

如果想把结果保存成 Markdown 文件:

1
2
3
4
5
6
7
from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("input.pdf")

with open("output.md", "w", encoding="utf-8") as f:
f.write(result.text_content)

七、MarkItDown 和普通 PDF 转文字工具有什么区别?

很多工具都可以把 PDF 转成文字,但 MarkItDown 的定位更接近“AI 文档预处理器”。

维度 普通文本提取工具 MarkItDown
主要目标 把文字提取出来 转成适合 AI 使用的 Markdown
输出格式 纯文本为主 Markdown
结构保留 较弱 尽量保留标题、列表、表格、链接
支持格式 通常较单一 PDF、Word、PPT、Excel、图片、音频、网页等
适合场景 简单复制文字 AI 总结、RAG、知识库、批量处理
是否追求高保真排版 不一定 不追求高保真排版

因此,MarkItDown 最适合的不是“把文档变漂亮”,而是“把文档变得更容易被 AI 理解”。


八、Codex 可以直接调用 MarkItDown 吗?

可以。

但要准确理解:

Codex 不是内置了 MarkItDown,而是可以在项目环境中通过命令行或 Python 脚本调用 MarkItDown。

也就是说,只要 Codex 所在环境安装了 markitdown,它就可以像调用其他命令行工具一样调用它。


九、在 Codex 中如何调用 MarkItDown?

方式一:让 Codex 执行命令行

如果环境中已经安装 MarkItDown,可以让 Codex 执行:

1
markitdown input.pdf -o output.md

也可以批量处理:

1
2
3
4
5
6
mkdir -p markdown_docs

for file in docs/*; do
filename=$(basename "$file")
markitdown "$file" -o "markdown_docs/${filename}.md"
done

不过这个脚本比较粗糙,因为它没有判断文件类型,也没有处理转换失败的情况。


方式二:让 Codex 写 Python 脚本批量转换

你可以直接给 Codex 下这样的任务:

1
2
3
4
5
6
7
请帮我写一个 Python 脚本:
1. 扫描 input_docs 文件夹;
2. 支持 PDF、DOCX、PPTX、XLSX;
3. 调用 Microsoft MarkItDown 转换为 Markdown;
4. 输出到 output_md;
5. 文件名保持一致;
6. 转换失败时记录到 errors.log。

Codex 很适合做这类任务,因为它可以:

  • 写脚本;
  • 运行脚本;
  • 根据报错修改脚本;
  • 帮你搭建批量转换流程;
  • 把转换结果进一步整理成知识库材料。

十、一个更实用的批量转换脚本示例

下面是一个适合日常使用的 Python 脚本示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from pathlib import Path
from markitdown import MarkItDown

INPUT_DIR = Path("input_docs")
OUTPUT_DIR = Path("output_md")
ERROR_LOG = Path("errors.log")

SUPPORTED_EXTENSIONS = {
".pdf",
".docx",
".pptx",
".xlsx",
".xls",
".csv",
".json",
".xml",
".html",
".htm",
}

def main():
OUTPUT_DIR.mkdir(exist_ok=True)
md = MarkItDown()

errors = []

for file_path in INPUT_DIR.rglob("*"):
if not file_path.is_file():
continue

if file_path.suffix.lower() not in SUPPORTED_EXTENSIONS:
continue

relative_path = file_path.relative_to(INPUT_DIR)
output_path = OUTPUT_DIR / relative_path.with_suffix(".md")
output_path.parent.mkdir(parents=True, exist_ok=True)

try:
result = md.convert(str(file_path))
output_path.write_text(result.text_content, encoding="utf-8")
print(f"Converted: {file_path} -> {output_path}")
except Exception as e:
error_message = f"Failed: {file_path} | {e}"
print(error_message)
errors.append(error_message)

if errors:
ERROR_LOG.write_text("\n".join(errors), encoding="utf-8")
print(f"Errors written to {ERROR_LOG}")

if __name__ == "__main__":
main()

使用时可以建立这样的目录结构:

1
2
3
4
5
6
7
8
project/
├── input_docs/
│ ├── lesson.pdf
│ ├── paper.docx
│ ├── slides.pptx
│ └── data.xlsx
├── output_md/
└── convert_docs.py

然后运行:

1
python convert_docs.py

转换后会得到:

1
2
3
4
5
output_md/
├── lesson.md
├── paper.md
├── slides.md
└── data.md

十一、Codex Cloud / Codex Web 中使用时要注意什么?

如果是在本地 Codex CLI 中使用,只要本地环境可以安装 Python 包即可。

但如果是在 Codex Cloud 或 Codex Web 这类云端环境中使用,要注意:

  1. 依赖最好提前安装;
  2. 不要等到运行任务时才临时安装;
  3. 如果云端 agent 阶段没有互联网权限,临时 pip install 可能失败;
  4. 推荐在 setup script 中写入安装命令。

例如:

1
pip install 'markitdown[all]'

然后在任务中再让 Codex 执行:

1
markitdown input.pdf -o output.md

这样更稳定。


十二、MarkItDown 适合哪些实际场景?

1. 整理论文与教学资料

如果你有很多化学教学论文、课标文件、教案、课件,可以先用 MarkItDown 转成 Markdown,再让 AI 做:

  • 摘要;
  • 提纲;
  • 结构分析;
  • 教学流程整理;
  • 课堂活动归纳;
  • 论文投稿格式重构;
  • 文献对比分析。

2. 构建个人知识库

可以把各种文档统一转换成 Markdown,然后放入知识库系统。

典型流程:

1
2
3
4
5
6
7
8
9
10
11
原始资料

MarkItDown 转 Markdown

切分文本

向量化

进入 RAG 知识库

AI 问答 / 检索 / 总结

3. 批量处理课件和试题

例如:

1
2
3
4
高三复习课件.pptx
综合实验专题.docx
有机化学试题.pdf
课程标准.pdf

都可以先转成 Markdown,再交给 AI 进行:

  • 知识点抽取;
  • 试题分类;
  • 核心素养对应;
  • 难度分级;
  • 命题意图分析;
  • 教学活动设计。

4. 配合 Codex 做自动化整理

你可以让 Codex 写一个完整的自动化流程:

1
2
3
4
5
6
请帮我建立一个文档处理项目:
1. input_docs 中放原始文件;
2. 自动用 MarkItDown 转成 Markdown;
3. 转换结果放到 output_md;
4. 再根据标题、主题、文件类型分类;
5. 最后生成 index.md 目录索引。

这样就可以把 MarkItDown 从一个单独工具,升级为一个“文档整理流水线”。


十三、MarkItDown 的局限

MarkItDown 很实用,但不是万能工具。

1. 不适合追求高保真排版

它不会完美还原:

  • Word 的复杂样式;
  • PPT 的视觉布局;
  • PDF 的版面设计;
  • 图片位置;
  • 字体效果;
  • 精确分页。

如果你的目标是“排版还原”,它不是最佳选择。


2. 复杂 PDF 可能效果不稳定

尤其是这些类型:

PDF 类型 可能问题
扫描版 PDF 需要 OCR
双栏论文 文字顺序可能混乱
公式密集文档 公式可能无法准确转换
表格复杂文档 表格结构可能丢失
图片型页面 需要视觉模型或 OCR

对于复杂 PDF,可能需要结合:

  • OCR;
  • Azure Document Intelligence;
  • 其他专业 PDF 解析工具;
  • 人工校对。

3. 表格和公式需要特别注意

如果是 Excel 或简单表格,MarkItDown 的效果通常比较有用。

但如果是复杂化学公式、结构式、实验装置图、复杂数据表,转换后未必能完全保留原意。

对于化学教学资料来说,尤其要注意:

  • 分子结构式;
  • 实验装置图;
  • 反应机理图;
  • 复杂坐标图;
  • 多级表格;
  • 图文混排题目。

这些内容转成 Markdown 后,需要人工检查。


4. 处理不可信文件时要注意安全

如果你在服务器上处理外部用户上传的文件,需要注意安全风险。

因为 MarkItDown 在读取文件、访问路径或处理 URL 时,会拥有当前进程的权限。

更安全的做法包括:

  • 限制输入文件目录;
  • 不允许任意路径访问;
  • 不随便处理未知 URL;
  • 使用沙箱环境;
  • 对文件类型做白名单限制;
  • 避免让工具访问敏感目录。

十四、它和 Azure Document Intelligence 的关系

MarkItDown 可以结合 Azure Document Intelligence 使用。

简单理解:

工具 作用
MarkItDown 将文件转换成 Markdown
Azure Document Intelligence 更强的文档识别、版面分析、OCR 和结构解析能力

如果只是普通 Word、PPT、Excel、简单 PDF,本地 MarkItDown 可能已经够用。

如果是复杂扫描 PDF、票据、表单、复杂版面文档,就可以考虑结合 Azure Document Intelligence。


十五、对教师和研究写作者的价值

对于经常写论文、整理课件、分析资料的人来说,MarkItDown 的价值很明显。

它可以把原本分散在不同格式中的资料统一转成 Markdown。

例如:

原始材料 转换后可以做什么
课程标准 PDF 提取核心素养、学业要求、内容标准
教学论文 Word 提取结构、标题、研究思路
课件 PPT 整理课堂流程和知识点
试题 PDF 提取题干、设问、命题角度
Excel 成绩表 转成可分析的数据文本
课堂资料包 批量整理成知识库

对于化学教学研究,尤其可以用于:

  • 整理课标依据;
  • 提取教学目标;
  • 分析试题结构;
  • 归纳实验装置内容;
  • 重构教学流程;
  • 搭建 AI 批阅或知识库系统;
  • 为论文写作提供结构化素材。

十六、推荐使用方式

如果只是偶尔转换单个文件,可以直接命令行使用:

1
markitdown input.pdf -o output.md

如果经常批量处理资料,建议建立一个固定目录:

1
2
3
4
5
6
docs_project/
├── input_docs/
├── output_md/
├── convert_docs.py
├── errors.log
└── index.md

然后让 Codex 帮你持续优化这个项目。

你可以给 Codex 这样的指令:

1
2
3
4
5
6
7
请帮我优化这个文档转换项目:
1. 自动扫描 input_docs;
2. 调用 MarkItDown 转换文件;
3. 输出 Markdown 到 output_md;
4. 自动生成 index.md;
5. 每个 Markdown 文件开头添加原始文件名、转换时间、文件类型;
6. 转换失败的文件写入 errors.log。

这样你就可以逐渐形成自己的“AI 文档处理工作流”。


十七、最终总结

MarkItDown 的核心价值可以概括为一句话:

它不是为了把文档转得漂亮,而是为了把文档转得适合 AI 理解。

Codex 与 MarkItDown 的关系也可以概括为:

Codex 可以把 MarkItDown 当作外部命令行工具或 Python 库来调用,只要环境中安装了它,就可以批量完成文档转换任务。

二者结合后,可以形成一个很实用的工作流:

1
2
3
4
5
6
7
8
9
原始文档

Codex 编写/执行转换脚本

MarkItDown 转成 Markdown

Codex/AI 继续整理、分类、总结、分析

形成知识库、博客、论文素材或教学资料库

对于日常处理大量 PDF、Word、PPT、Excel 资料的人来说,这套流程非常值得尝试。

尤其是教师、研究写作者、知识管理者、AI 工具使用者,可以把它作为个人文档知识库建设的基础工具之一。


十八、一句话备忘

MarkItDown 负责“把各种文件变成 Markdown”,Codex 负责“帮你写脚本、跑流程、改错误、做自动化整理”。两者结合,就是一个轻量级的 AI 文档处理流水线。

未经授权,谢绝转载。
Top