MarkItDown文档转markdown

介绍

MarkItDown 是微软官方开源、轻量高效的Python工具库+命令行工具,核心核心用途是将各类日常办公、多媒体、网页、压缩包等几十种不同格式的文件,一键无损转换为标准Markdown格式文本。该项目开源在GitHub平台,凭借稳定的转换效果、完善的格式兼容能力,收获超高开源热度,是目前文档结构化转换、AI大模型配套数据处理的刚需神器。

不同于普通文本提取工具仅能抓取纯文字、丢失排版结构的短板,MarkItDown 主打精准保留原始文档核心结构化信息,包括标题层级、有序/无序列表、复杂表格、超链接、图片引用、代码块、段落分区等关键元素,转换后的Markdown不仅人工阅读清晰整洁,更适配LLM大模型投喂、RAG知识库搭建、向量数据库入库、文本数据分析等AI相关工作流程,是衔接各类异构文档与AI应用的核心中间工具。

特点

  • 开源免费轻量无冗余:纯Python开发,无笨重依赖包,安装部署极简,跨Windows、Mac、Linux全平台适配,开源协议宽松,个人商用、项目开发均可免费使用,无版权限制。

  • 结构化转换不丢排版:区别于textract等传统文本提取工具,不做简单文字摘抄,深度解析文档格式逻辑,完整保留标题层级、表格样式、列表格式、链接图片、公式区块等核心排版,转换效果还原度极高。

  • 全品类格式全覆盖:一站式兼容办公文档、图文媒体、网页文本、压缩包、网络资源等20+主流格式,无需切换多个转换工具,一个工具搞定全场景转换需求。

  • AI适配性拉满:输出的Markdown格式标准化、结构化、无冗余乱码,天生适配大模型微调、知识库问答、文档检索、智能摘要生成等AI落地场景,无需二次清洗格式。

  • 双使用模式灵活易用:支持零基础小白快速上手的命令行CLI模式,也支持开发者二次开发、批量集成的Python代码调用模式,兼顾日常自用和项目开发双重需求。

  • 附加实用拓展能力:自带图片OCR文字识别、音频语音转写、文件EXIF元数据提取等进阶功能,无需额外安装其他插件,一键解锁多媒体内容文字化转换。

支持转换的文件格式

MarkItDown 覆盖日常办公、新媒体、开发、多媒体全场景主流格式,无需额外配置即可直接转换,核心支持类型如下:

  • 办公文档类:Word(.docx)、PDF、PowerPoint(.pptx)、Excel(.xlsx),完美适配职场办公核心文档转换需求,表格、图文混排内容精准还原。

  • 图文媒体类:各类图片(JPG、PNG、WEBP等,支持OCR识别图片文字)、音频文件(支持语音转文字转录内容),自动提取多媒体有效文字信息。

  • 文本网页类:HTML网页、CSV表格、JSON、XML、TXT纯文本、EPUB电子书,结构化解析各类文本类文件,保留原有数据格式。

  • 特殊拓展类:ZIP压缩包(自动遍历内部所有文件批量转换)、YouTube视频链接(提取视频字幕及核心文案内容),满足小众特殊转换场景。

典型应用场景

  • 📄 LLM预处理:批量把杂乱文档转成干净Markdown,喂给GPT-4o/ Claude做总结/问答/分析。
  • 📚 知识库构建:PDF/Word/PPT转Markdown后导入Notion/ Obsidian/ RAG系统。
  • 🎙️ 会议纪要:录音转文字并生成结构化Markdown纪要。
  • 📊 数据处理:Excel表格转Markdown,便于版本控制与协作。

与同类工具对比

  • MarkItDown:专注结构保留+LLM友好,支持OCR/转录,插件化,微软开源。
  • textract:偏纯文本抽取,结构丢失多,无OCR/转录。
  • pandoc:格式极全,但体积大、配置复杂,LLM适配弱。

注意事项

  • 需Python 3.10+,建议用虚拟环境避免依赖冲突。
  • 扫描版PDF/图片需安装Tesseract-OCR并配置环境变量。
  • 音频转录依赖ffmpeg,需单独安装。

准备基础环境

使用MarkItDown仅需提前安装Python环境,无其他复杂依赖,要求简单:电脑安装Python 3.9及以上版本,安装时务必勾选「Add Python to PATH」自动配置环境变量,确保电脑命令行(CMD、终端)可正常调用Python和pip工具。Python安装完成后,可在命令行输入python --version和pip --version,验证环境是否配置成功,显示对应版本号即为合格。

安装方式

方式一:极简标准版安装(推荐新手首选)

仅安装核心基础转换功能,满足下面格式转换:

  • 纯文本(.txt)
  • Markdown(.md)
  • HTML(.html)
  • CSV/JSON/XML

体积小、安装速度快,日常90%使用场景足够用,命令行直接执行:

pip install markitdown

方式二:按需安装(推荐)

下面命令,支持转换格式:.pdf .docx .pptx .xlsx .txt .html .csv

pip install "markitdown[pdf,docx,pptx,xlsx]"
自带基础支持(无需额外插件,默认就有)

不管装哪个组合,MarkItDown 本体永远支持:

  • .txt
  • .html / .htm
  • .csv
  • .json
  • .xml
  • .md

这些 不需要写在中括号里,自带就能转。

这个命令 不支持 的格式(重要)

以下格式完全不支持,必须额外加插件:

  • ❌ .doc(老版Word)
  • ❌ 图片(jpg/png,OCR)
  • ❌ 音频
  • ❌ epub
  • ❌ zip
  • ❌ YouTube

方式三:全功能完整版安装(推荐全场景使用)

安装所有拓展依赖包,解锁图片OCR识别、音频语音转写、压缩包批量转换、YouTube链接解析等全部进阶功能,无功能缺失,建议长期使用直接装完整版:

pip install markitdown[all]

验证是否成功

安装完成后,在任意命令行窗口执行以下命令,输出版本信息即代表安装成功,可正常开始使用:

markitdown --version

使用方法

方法一:命令行CLI使用

无需写任何代码,直接在命令行输入简短命令,一键单文件转换、批量转换,操作简单直观,适合临时快速转换文档,上手零门槛。

基础通用转换语法

markitdown 【源文件路径】 -o 【输出Markdown文件路径】

高频实战常用案例

1)单个PDF文件转Markdown(最常用场景)

markitdown ./测试文档.pdf -o ./pdf转换结果.md

2)Word文档(docx)转Markdown,保留所有图文表格排版

markitdown ./工作总结.docx -o ./工作总结.md

3)PPT演示文稿转Markdown,提取每页文案和表格内容

markitdown ./项目汇报.pptx -o ./项目汇报PPT文案.md

4)图片OCR识别文字并转为Markdown(需安装完整版)

markitdown ./截图图片.png -o ./图片文字提取.md

5)直接命令行输出转换内容(不生成本地文件,快速查看)

markitdown ./数据表格.xlsx

方法二:Python代码调用使用

适合Python项目二次开发、批量批量转换文档、接入AI自动化流程、集成到自研工具平台等场景,代码简洁易懂,调用简单,支持自定义后续文本处理逻辑。

文件转换代码示例

注意:不同版本的api改动可能较大,本例子可能会因为版本不一致而报错

# 导入MarkItDown核心转换类
from markitdown import MarkItDown
import os

MARKDOWN_PATH = "markdowns"
# 初始化转换工具实例
md_converter = MarkItDown()
path = r"D:\mym\文件管理智能体\测试\第8章  面向对象程序设计.pptx"
# 指定需要转换的本地源文件路径
result = md_converter.convert(path)
# 打印转换后的Markdown文本内容
# print(result)

# ✅ 自动获取文件名,把后缀 .docx 换成 .md(通用写法)
file_name = os.path.splitext(os.path.basename(path))[0] + ".md"
markdown_path = os.path.join(MARKDOWN_PATH, file_name)

with open(markdown_path, "w", encoding="utf-8") as f:
    f.write(str(result))

批量多文件循环转换代码示例

import os
from markitdown import MarkItDown

# 初始化转换工具
md_converter = MarkItDown()

# 设置需要批量转换的文件夹路径
source_folder = "./待转换文档文件夹"
# 设置转换后Markdown文件输出文件夹
output_folder = "./转换完成Markdown文件夹"

# 创建输出文件夹(不存在则自动创建)
os.makedirs(output_folder, exist_ok=True)

# 循环遍历文件夹内所有PDF、Word文件批量转换
for file_name in os.listdir(source_folder):
    if file_name.endswith((".pdf", ".docx", ".pptx")):
        # 拼接源文件完整路径
        source_path = os.path.join(source_folder, file_name)
        # 拼接输出Markdown文件名及路径
        output_name = os.path.splitext(file_name)[0] + ".md"
        output_path = os.path.join(output_folder, output_name)

        # 执行转换并保存
        result = md_converter.convert(source_path)
        with open(output_path, "w", encoding="utf-8") as f:
            f.write(result.markdown_content)

print("所有文档批量转换完成!")

常见报错及解决办法

  • 报错:pip不是内部或外部命令:Python安装时未勾选配置环境变量,重新安装Python并勾选PATH配置,或手动添加Python安装目录到系统环境变量。

  • 报错:转换图片/OCR无内容、空白输出:未安装完整版依赖,执行pip install markitdown\[all\]重装全功能版本,补齐OCR识别所需拓展插件。

  • 转换后中文乱码:保存文件时强制设置编码为utf-8,代码写入文件添加encoding=\&\#34;utf\-8\&\#34;,命令行转换默认适配中文无需额外配置。

  • 提示文件路径找不到:尽量使用英文文件名、纯英文文件夹路径,避免中文、空格、特殊符号,或直接使用文件绝对完整路径转换。

实用技巧

  • 转换复杂带表格、图文混排的文档时,优先使用完整版安装包,转换还原效果更稳定,不丢失复杂排版。

  • 做AI知识库RAG项目时,先用MarkItDown批量转换所有异构文档为Markdown,再入库向量数据库,大幅提升AI问答精准度。

  • 批量转换文件统一放在同一个纯英文文件夹,避免路径报错,转换后文件自动归类存储,方便统一管理使用。

(注:文档部分内容可能由 AI 生成)


原文出处:/show_1GW3GNdNI8xD.html