微软开源项目MarkitDown:一款将pdf/word/ppt等各类文件转换为Markdown格式的python工具

MarkitDown 简介

2024 年 11 月中旬,微软于 GitHub 上发布了开源项目 MarkitDown,一款轻量级 python 工具,用于将各类文件转换为 Markdown 格式,以便在大语言模型(LLM)和相关文本分析流程中使用。

MarkitDown 核心优势在于简化 AI 处理流程。当前主流大语言模型均对 Markdown 格式理解最优,且能大幅节省 Token 消耗。

MarkitDown 支持转换格式,包括有:pdf、word、ppt、excel、html、图像及音频。

截至 4 月底,MarkitDown 在 GitHub 已获得超 11.6 万颗星(stars)、7600+ 复刻(forks),妥妥属于 GitHub 现象级开源项目。

这么说吧,在 GitHub 拥有 10 万星的项目,全球仅有数百个,MarkitDown 便是其中之一。

MarkitDown 项目地址:https://github.com/microsoft/markitdown/

MarkitDown 高热度、高认可度、高流行的背后,从另一角度反映出 Markdown 格式在当前 AI 时代下的重要程度。

MarkitDown 安装方法

第一步:确认 python 环境

MarkitDown 需要 python 3.10 或更高版本。

查看 python 版本的命令:

python 复制代码
python -V 或者 python --version

当下的很多大模型 API 调用第三方工具包,都对 python 环境的版本有一定的要求,为了更好的兼容 AI 时代下的很多新的第三方工具包,最好是将 python 的版本升级到 python 3.10 - 3.12 之间。

其实较为准确的说法是,不是现在的第三方工具包对 python 的版本要求高,而是 AI 时代的技术栈本身就诞生在新版本的 python 里。

第二步:安装 MarkitDown

直接使用 pip 命令进行安装,完整命令如下:

python 复制代码
pip install markitdown[all]

MarkitDown 安装时可以选择相关依赖安装,上面的命令是安装了所有的可选依赖。

目前的可选依赖包括:

第三步:查看是否安装成功

查看是否安装成功的命令:pip show markitdown

安装成功后,会返回版本号、作者等信息,如下图:

MarkitDown 的两种使用方式

使用方式一:命令行(最简单)

打开命令提示符(cmd),根据需求输入相应命令并回车即可。

下面以 pdf 为例,word、excel、html 等文件转换方式一样。

python 复制代码
# 转换PDF并输出到终端
markitdown 需转换的pdf文件完整路径

# 转换PDF并保存至本地
markitdown 需转换的pdf文件完整路径 -o 保存结果.md的完整路径
或者
markitdown 需转换的pdf文件完整路径 > 保存结果.md的完整路径

这种命令行的方式适用于快速转换单个文件,仅一行命令就可搞定。

实例:假设 D 盘根目录下有一个 test.pdf 文件需要转换,完整命令如下。

python 复制代码
markitdown d:\test.pdf -o d:\test.md

使用方式二: python 代码调用

python 复制代码
from markitdown import MarkItDown
md = MarkItDown()
# 转换单个文件
result = md.convert("test.pdf")
print(result.text_content)
# 保存到文件
with open("test.md","w", encoding="utf-8") as f:
    f.write(result.text_content)

python 代码调用的方式,适用于批量处理,例如需要对多个 pdf 文件进行转换时,在上面代码中加入循环即可。

python 复制代码
import os
from markitdown import MarkItDown
md = MarkItDown()
for filename in os.listdir("pdf文件夹路径"):
    if filename.endswith(".pdf"):
        result = md.convert(f"pdf文件夹路径/{filename}")
        output_name = filename.replace(".pdf",".md")
        with open(f"输出文件夹路径/{output_name}","w", encoding="utf-8") as f:
            f.write(result.text_content)
            print(f"已转换:{filename}")

MarkitDown 进阶用法

进阶用法一:搭配大模型使用

MarkitDown 可以搭配大模型使用,识别图像内容并生成描述。

python 复制代码
from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI() #填写api_key
md = MarkItDown(llm_client=client, llm_model="gpt-4o", llm_prompt="optional custom prompt")
result = md.convert("example.jpg")
print(result.text_content)

该用法目前仅支持 pptx 和图片。

其中使用到的 openai 可直接使用 pip 命令安装:

python 复制代码
pip install openai

进阶用法二:支持第三方插件

MarkitDown 支持第三方插件。

如,可安装 markitdown-ocr 插件,为图片、扫描版 pdf 等进行文字识别。

安装命令:

python 复制代码
pip install markitdown-ocr

查看已经安装的插件列表:

python 复制代码
markitdown --list-plugins

插件使用方法:

python 复制代码
from markitdown import MarkItDown
from openai import OpenAI
md = MarkItDown(
    enable_plugins=True,
    llm_client=OpenAI(),#填写api_key
    llm_model="gpt-4o",
)
result = md.convert("document_with_images.pdf")
print(result.text_content)

总的来看,Markitdown 虽然只是解决了一个文件转换的小问题,但能在 GitHub 上面斩获超 10 万星,在当前 AI 时代下如此备受关注,说明它确实戳中了大家的实际应用刚需。

-end-

相关推荐
aifannihao18 分钟前
GitHub Actions 锁文件实测:6 个 uses 只锁住 2 个
python·ci/cd·标准库·供应链安全·github actions
2601_9679801132 分钟前
使用gensim处理文本(1)语料库与词向量空间
python·自然语言处理·gensim·词向量·文本分析
3095566662 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
2601_967980112 小时前
世界上最好的Python编辑器是什么?我投PyCharm一票
ide·python·pycharm·数据科学·jupyter notebook
wuyk5552 小时前
Spider-第09讲-三格式落盘CSV-Excel-JSON
爬虫·python·json·excel
青少儿编程课堂3 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
特立独行的猫A9 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了13 小时前
03 函数定义和调用
开发语言·python
承渊政道14 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛14 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架