news 2026/8/29 14:21:00

MarkItDown 实操指南:把 Office 文档转成 Markdown 只要一分钟

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MarkItDown 实操指南:把 Office 文档转成 Markdown 只要一分钟

MarkItDown 实操指南:把 Office 文档转成 Markdown 只要一分钟

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

MarkItDown 是一个免费开源的 Python 工具,一行命令把 PDF、Word、PPT、Excel、图片、音频转成 Markdown。它解决的是"把杂乱文档喂给 LLM"的问题:标题、列表、表格这些结构都会保留下来,而不是压成一坨纯文本。

转换效果速览

先看仓库里自带的测试 PDF(一篇论文的首页)转出来的结果:

转出的 Markdown 大致长这样,正文段落完整,脚注也保留了:

1 Introduction Large language models (LLMs) are becoming a crucial building block in developing powerful agents that utilize LLMs for reasoning, tool usage, and adapting to new observations ...

环境与获取

要求 Python 3.10 及以上,建议先在虚拟环境里装,避免依赖打架。

  • 普通用户,装现成的就行:
pip install 'markitdown[all]'
  • 开发者想改源码,先克隆仓库再装开发版:
git clone https://gitcode.com/GitHub_Trending/ma/markitdown cd markitdown pip install -e 'packages/markitdown[all]'

[all]表示装齐所有格式依赖;如果只用 PDF 和 Word,装markitdown[pdf, docx]更省空间。

第一次运行

装完你会多出一个markitdown命令。把路径扔给它,结果直接打印到终端:

$ markitdown packages/markitdown/tests/test_files/test.pdf 1 Introduction Large language models (LLMs) are becoming a crucial building block ...

想存成文件,加-o

$ markitdown test.pdf -o test.md

也支持管道,方便接进现有脚本:cat test.pdf | markitdown。看到结构化的 Markdown 输出,就说明环境通了。

核心能力拆解

输入:先认文件,再派活

拿到字节流后,MarkItDown 先用魔数(文件头签名)识别真实格式,而不是只看扩展名,然后在一串注册好的转换器里按优先级匹配。每个格式对应一个转换器,通过accepts()判断自己能不能处理:

self.register_converter(PdfConverter()) self.register_converter(DocxConverter()) self.register_converter(PlainTextConverter(), priority=PRIORITY_GENERIC_FILE_FORMAT)

具体格式优先,纯文本兜底。匹配不到就明确报"不支持",不会硬转。

处理:抽取结构而非纯文本

这是它和"一键转文本"工具的区别:Word 的标题样式变成#,表格变成 Markdown 表格,超链接保留 href;Excel 按工作表输出表格;PPT 每页一张幻灯片逐页转。转出来的东西既给 LLM 读,人看也不算费劲。

输出:图片、音频也能变文字

对图片,它提取 EXIF 元数据(尺寸、标题、作者),如果你配了多模态 LLM,还会生成图片描述;音频则走语音转写。下图就是 LLM 描述功能用的测试图,配上llm_client后它会输出对红圆蓝方块的描述:

md = MarkItDown(llm_client=client, llm_model="gpt-4o") print(md.convert("example.jpg").text_content)

进阶用法

Docker 跑无环境依赖:不想装 Python 依赖时,仓库根目录的 Dockerfile 可以直接构建镜像,把文件从 stdin 喂进去:

docker build -t markitdown:latest . docker run --rm -i markitdown:latest < report.pdf > output.md

插件机制:第三方转换器默认不加载,markitdown --list-plugins看装了哪些,加-p启用。比较常用的是markitdown-ocr插件,靠 LLM Vision 从 PDF、PPT 里内嵌的图片中提取文字,不用额外装 OCR 库。

常用参数(CLI 和 Python 基本对应):

参数默认值说明
-o终端输出指定输出文件
-x自动识别stdin 读取时给扩展名提示,如-x pdf
-p关闭启用已安装的第三方插件
--use-docintel关闭改用 Azure Document Intelligence 云端提取
llm_client/llm_model为图片描述、OCR 提供 LLM

两个踩过的坑:从 stdin 读数据时没有任何线索可猜格式,务必带上-xmarkitdown-ocr插件没传llm_client时会静默跳过 OCR 走内置转换器,不报任何错,别以为插件没装。

答疑

现象:PDF 转出来是空白或一堆乱码。原因:这是扫描件,页面里没有文字层,离线提取不到。解决:用-d -e <endpoint>接 Azure Document Intelligence,或上markitdown-ocr插件。

现象:cat file | markitdown报错说不支持该格式。原因:管道输入丢掉了文件扩展名,无法确定格式。解决:加-x pdf手动给提示,或直接把文件路径作为参数。

现象:装完markitdown[all]之外,单独装的 markitdown 转 pptx 失败。原因:各格式依赖是可选的,基础包不含它们。解决:按需补装,如pip install 'markitdown[pptx]'

现象:接了 Azure 端点后部分格式仍走本地转换。原因:云端转换按文件格式路由,只有命中端点支持类型的文件才走云端。解决:确认文件格式在端点支持范围内,或调整docintel_file_types路由范围。

收尾

去终端跑一条markitdown 你的文件.pdf | head -20验证安装,然后挑一份真实文档转一遍。某个具体格式转换效果不对,直接去仓库 Issues 贴复现文件反馈。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 14:20:55

Storybook 快速上手:3 步把 UI 组件变成可演示、可测试的故事

Storybook 快速上手&#xff1a;3 步把 UI 组件变成可演示、可测试的故事 【免费下载链接】storybook Storybook is the industry standard workshop for building, documenting, and testing UI components in isolation 项目地址: https://gitcode.com/GitHub_Trending/st/…

作者头像 李华
网站建设 2026/8/29 14:18:14

Ventoy 启动盘安装与排错指南:32MB 引导区,镜像长期复用

Ventoy 启动盘安装与排错指南&#xff1a;32MB 引导区&#xff0c;镜像长期复用 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy 写一张系统镜像&#xff0c;就要占掉整个U盘。换个系统就得重新格式化重…

作者头像 李华
网站建设 2026/8/29 14:17:18

开源心电异常检测系统:从信号处理到Web可视化完整实现解析

简介&#xff1a;心电信号分析是医疗信息化与健康管理领域的核心技术之一&#xff0c;其核心挑战在于从高噪声的原始生物信号中准确提取心拍并识别异常。要实现可靠的心电异常检测&#xff0c;需经过信号预处理、R波定位、特征提取与分类判定等完整算法链路&#xff0c;同时借助…

作者头像 李华
网站建设 2026/8/29 14:14:16

C++模板编程:从泛型思维到实战应用,掌握编译期代码生成利器

1. 项目概述&#xff1a;为什么模板是C的“万能模具”干了这么多年C&#xff0c;要说哪个特性能让代码既保持高性能&#xff0c;又能优雅地应对变化&#xff0c;我第一个想到的就是模板。它不像宏那样粗暴地文本替换&#xff0c;也不像运行时多态那样有性能开销&#xff0c;它是…

作者头像 李华
网站建设 2026/8/29 14:12:51

YOLOv8+PyTorch花卉识别实战:从数据集训练到API部署

YOLOv8 是目前目标检测方向关注度非常高的框架之一&#xff0c;基于 PyTorch 生态由 Ultralytics 团队持续维护。对于毕业设计、课程设计、竞赛原型和入门实验来说&#xff0c;YOLOv8 PyTorch 这个组合有两个突出优势&#xff1a;训练脚本足够简单&#xff0c;数据集组织方式足…

作者头像 李华
网站建设 2026/8/29 14:09:12

K-means与DBSCAN聚类算法实战:从原理到SPSS应用全解析

1. 从“分类”到“聚类”&#xff1a;理解无监督学习的核心思想 在数据分析的日常工作中&#xff0c;我们常常会遇到这样的场景&#xff1a;手头有一堆客户数据&#xff0c;有年龄、消费金额、活跃度等十几个字段&#xff0c;但没有任何现成的标签告诉我们这些客户属于哪一类。…

作者头像 李华