当前位置: 首页 > news >正文

一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式

📚 Markitdown

由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式
支持:PDF、PowerPoint、Word、Excel、图像、音频、HTML、文本格式(CSV、JSON、XML)、ZIP 文件的转换。
它旨在提供一个简单且灵活的解决方案,以便在您的应用程序中轻松集成 Markdown 渲染功能。

🌟 核心功能

  • 多格式支持: 一键转换 PDF/PPT/Word/Excel/图像/音频/HTML 等12+格式

  • 智能处理:

  • 图像 OCR文字识别 (支持中文扫描件)

  • 音频 语音转文字 (支持英文优先)

  • 集成 GPT-4o 生成图像描述

  • 开发者友好: 提供Python API及Docker部署方案

  • 🚀 特性

  • 轻量级:小巧的库,易于集成。

  • 快速:高效的 Markdown 解析和渲染。

  • 可扩展:支持自定义插件和扩展功能。

  • 易于使用:简单的 API,快速上手。

🔧 典型应用场景

  • 文档归档: 批量转换Office文件为Markdown
  • 知识库构建: 整合OCR文本+语音转录内容
  • 自动化流程: 结合CI/CD实现文档发布流水线

🛠️ 快速安装

# 基础安装 (Python 3.10+)
pip install markitdown[all]

或从源码安装

git clone https://github.com/microsoft/markitdown
cd markitdown
pip install -e .

🛠️ 使用

📖 使用示例

命令行工具

# 转换PDF到Markdown
markitdown input.pdf -o output.md
# 管道操作
cat input.docx | markitdown > output.md
或者使用-o指定输出文件:
markitdown path-to-file.pdf -o document.md

可选依赖项

MarkItDown 有可选的依赖项用于激活各种文件格式。在本文档的前面,可以使用 [all] 选项安装了所有可选依赖项。当然,您也可以单独安装它们以获得更多的控制权。
例如:

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

将仅安装PDF、DOCX和PPTX文件所需的依赖项。

目前,以下可选依赖项可用:

  • [all]安装所有可选依赖项 [pptx]为PowerPoint文件安装依赖项
  • [docx]为Word文件安装依赖项
  • [xlsx]为Excel文件安装依赖项
  • [xls]为旧的Excel文件安装依赖项
  • [pdf]为PDF文件安装依赖项
  • [outlook]为 Outlook 消息安装依赖项
  • [az-doc-intel]安装 Azure 文档智能所需的依赖项
  • [audio-transcription]安装用于WAV和MP3文件音频转录的依赖项
  • [youtube-transcription]安装获取 YouTube 视频字幕所需的依赖项

插件

MarkItDown 还支持第三方插件。插件默认禁用。
以下操作可列出已安装的插件:

markitdown --list-plugins

启用插件使用:

markitdown --use-plugins path-to-file.pdf

要查找可用的插件,请在GitHub上搜索该标签#markitdown-plugin。

Azure 文档智能

要使用 Microsoft 文档智能进行转换:

markitdown path-to-file.pdf -o document.md -d -e "<document_intelligence_endpoint>"

Python 应用程序编程接口

在 Python 中的基本用法:

from markitdown import MarkItDownmd = MarkItDown(enable_plugins=False) # Set to True to enable plugins
result = md.convert("test.xlsx")
print(result.text_content)

Python中的文档智能转换:

from markitdown import MarkItDownmd = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("test.pdf")
print(result.text_content)

要使用大语言模型进行图像描述,请提供 llm_client 和 llm_model:

from markitdown import MarkItDown
from openai import OpenAIclient = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("example.jpg")
print(result.text_content)

📚 运行测试和检查

导航到 MarkItDown 包:

cd packages/markitdown

安装 hatch 在您的环境中并运行测试:

pip install hatch  # Other ways of installing hatch: https://hatch.pypa.io/dev/install/
hatch shell
hatch test

(替代方案)使用已安装所有依赖项的Devcontainer:

Reopen the project in Devcontainer and run:
hatch test

在提交 PR 之前运行预提交检查:pre-commit run --all-files

5、每日资源 在这里

💯 👉【我的更新汇总】

👉项目直达

关注我的CSDN博客

更多资源可以查看我的CSDN博客

相关文章:

一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式

&#x1f4da; Markitdown 由微软开源的 Python 工具&#xff0c;用于将多种文件格式转换为 Markdown 格式 支持&#xff1a;PDF、PowerPoint、Word、Excel、图像、音频、HTML、文本格式&#xff08;CSV、JSON、XML&#xff09;、ZIP 文件的转换。 它旨在提供一个简单且灵活的…...

Python多进程、多线程、协程典型示例解析

一、multiprocessing&#xff08;多进程&#xff09; 1. 模块简介 作用&#xff1a;创建多个独立运行的进程&#xff08;每个进程有独立内存空间&#xff09;适用场景&#xff1a;数学计算、图像处理等CPU密集型任务核心原理&#xff1a;绕过Python的GIL锁&#xff0c;真正利…...

httpx[http2] 和 httpx 的核心区别及使用场景如下

httpx[http2] 和 httpx 的核心区别在于 HTTP/2 协议支持&#xff0c;具体差异及使用场景如下&#xff1a; 1. 功能区别 命令/安装方式协议支持额外依赖适用场景pip install httpx仅 HTTP/1.1无通用请求&#xff0c;轻量依赖pip install httpx[http2]支持 HTTP/2需安装 h2>3…...

[强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程-下

[强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程-下 2.6 矩阵-向量形式2.7 求解状态值2.7.1 方法1&#xff1a;解析解2.7.2 方法2&#xff1a;数值解2.7.3 示例 2.8 动作值2.8.1 示例2.8.2 基于动作值的贝尔曼方程 本人为强化学习小白&#xff0c;为了在后续科研的过程…...

c/c++数据类型转换.

author: hjjdebug date: 2025年 05月 18日 星期日 20:28:52 CST descrip: c/c数据类型转换. 文章目录 1. 为什么需要类型转换?1.1 发生的时机:1.2 常见的发生转换的类型: 2. c语言的类型转换: (Type) value2.1 c语言的类型变换是如何实现的? 规则是什么? 3. c 的static_cast…...

大语言模型训练数据格式:Alpaca 和 ShareGPT

在大规模语言模型&#xff08;LLM&#xff09;的开发中&#xff0c;训练数据的质量和格式起着至关重要的作用。为了更好地理解和构建高质量的数据集&#xff0c;社区发展出了多种标准化的数据格式。其中&#xff0c;Alpaca 和 ShareGPT 是两种广泛使用的训练数据格式&#xff0…...

C++(23):容器类<vector>

目录 一、核心概念 二、基本语法 1. 头文件 2. 声明与初始化 三、常用操作 四、具体实例 1、size()、front()、back() 2、push_back()、pop_back()、capacity() 3、reserve&#xff08;&#xff09; 一、核心概念 Vectors 包含着一系列连续存储的元素,其行为…...

Nginx配置中include mime.types的作用及正确配置mime类型

部署应用后发现页面没有正确加载CSS样式文件&#xff0c;通过检查nginx配置文件&#xff0c;发现nginx有一项配置include mime.type没有正确配置导致。 http {log_format main $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent &q…...

C++ 之 继承

1.继承的概念及定义 1.1继承的引入 我们设计一个person类&#xff0c;类中包含姓名、年龄、身高....等数据成员 我们再设计一个student类&#xff0c;类中也需要包含姓名、年龄、身高...等数据成员 我们再设计一个teacher类&#xff0c;类中也需要包含姓名、年龄、身高...等数…...

基于CNN的猫狗识别(自定义CNN模型)

目录 一&#xff0c;数据集介绍 1.1 数据集下载 1.2 数据集简介 二&#xff0c;模型训练 2.1 用到的模块 2.2 设置随机种子 2.3 图像的预处理 2.4 CNN模型层结构 2.5 初始化 2.6 训练和验证 三&#xff0c;模型测试 3.1 定义相同预处理 3.2 定义相同的层结构 3.3…...

互联网大厂Java面试场景:从Spring Boot到分布式缓存技术的探讨

互联网大厂Java面试场景&#xff1a;从Spring Boot到分布式缓存技术的探讨 场景描述 互联网大厂某次Java开发岗面试&#xff0c;主考官是一位严肃的技术专家&#xff0c;而应聘者则是搞笑的程序员“码农明哥”。面试围绕音视频场景的技术解决方案展开&#xff0c;探讨从Sprin…...

linux本地部署ollama+deepseek过程

1.Tags ollama/ollama GitHub 选择一个版本下载&#xff0c;我下的是0.5.12 2.tar解压该文件 3.尝试启动ollama ollama serve 4.查看ollama的版本 ollama -v 5.创建一个系统用户 ollama&#xff0c;不允许登录 shell&#xff0c;拥有一个主目录&#xff0c;并且用…...

【数据结构与算法】ArrayList 与顺序表的实现

目录 一、List 接口 1.1 List 接口的简单介绍 1.1 常用方法 二、顺序表 2.1 线性表的介绍 2.2 顺序表的介绍 2.3 顺序表的实现 2.3.1 前置条件:自定义异常 2.3.2 顺序表的初始化 2.3.2 顺序表的实现 三、ArrayList 实现类 3.1 ArrayList 的两种使用方式 3.2 Array…...

Vue 3.0 中的slot及使用场景

1. 基本概念 在 Vue 中&#xff0c; slot 用于定义组件中的插槽位置&#xff0c;外部的内容会被插入到组件内部的这个位置。插槽的内容是动态的&#xff0c;可以根据需要进行传递和渲染。它允许开发者在组件外部传递任意内容&#xff0c;并在组件内部进行渲染&#xff0c;主要…...

go语言协程调度器 GPM 模型

go语言协程调度器 GPM 模型 下面的文章将以几个问题展开&#xff0c;其中可能会有扩展处&#xff1a; 什么是调度器&#xff1f;为什么需要调度器&#xff1f; 多进程/多线程时cpu怎么工作&#xff1f; 进程/线程的数量多多少&#xff1f;太多行不行&#xff1f;为什么不行&…...

Python打卡 DAY 29

知识点回顾 1. 类的装饰器 2. 装饰器思想的进一步理解&#xff1a;外部修改、动态 3. 类方法的定义&#xff1a;内部定义和外部定义 作业&#xff1a;复习类和函数的知识点&#xff0c;写下自己过去29天的学习心得&#xff0c;如对函数和类的理解&#xff0c;对python这门工…...

C++控制结构详解:if-else、switch、循环(for/while/do-while)

1. 引言 在C编程中&#xff0c;控制结构用于控制程序的执行流程。它们决定了代码在什么条件下执行、如何重复执行某段代码&#xff0c;以及如何选择不同的执行路径。C提供了多种控制结构&#xff0c;主要包括&#xff1a; 条件语句&#xff1a;if-else、switch-case循环语句&…...

APP手机端测试覆盖点

通过上图&#xff0c;我们覆盖了完整的一个APP&#xff0c;需要进行哪些测试...

C++:⾯向对象的三⼤特性

面向对象的三大特性&#xff1a; 继承&#xff1a;允许一个类&#xff08;子类 / 派生类&#xff09;继承另一个类&#xff08;父类 / 基类&#xff09;的属性和方法&#xff0c;实现代码复用和层次化设计。 封装&#xff1a;将数据&#xff08;成员变量&#xff09;和操作数据…...

三、高级攻击工具与框架

高级工具与框架是红队渗透的核心利器&#xff0c;能够实现自动化攻击、权限维持和隐蔽渗透。本节聚焦Metasploit、Cobalt Strike及企业级漏洞利用链&#xff0c;结合实战演示如何高效利用工具突破防御并控制目标。 1. Metasploit框架深度解析 定位&#xff1a;渗透测试的“瑞…...

玄机-第二章日志分析-redis应急响应

前言 记录记录 关于redis的一些手法 redis未授权访问漏洞利用redis写webshell利用“公私钥” 认证获取root权限利用crontab反弹shellredis日志: /var/log/redis.log 1. 通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交; cd /var/log 查看…...

MoodDrop:打造一款温柔的心情打卡单页应用

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起心动念&#xff1a;我想做一款温柔的情绪应用 「今天的你&#xff0c;心情如何&#xff1f;」 有时候&#x…...

Web开发-JavaEE应用SpringBoot栈SnakeYaml反序列化链JARWAR构建打包

知识点&#xff1a; 1、安全开发-JavaEE-WAR&JAR打包&反编译 2、安全开发-JavaEE-SnakeYaml反序列化&链 一、演示案例-WEB开发-JavaEE-项目-SnakeYaml序列化 常见的创建的序列化和反序列化协议 • &#xff08;已讲&#xff09;JAVA内置的writeObject()/readObje…...

RISC-V 开发板 MUSE Pi Pro V2D图像加速器测试,踩坑介绍

视频讲解&#xff1a; RISC-V 开发板 MUSE Pi Pro V2D图像加速器测试&#xff0c;踩坑介绍 今天测试下V2D&#xff0c;这是K1特有的硬件级别的2D图像加速器&#xff0c;参考如下文档&#xff0c;但文档中描述的部分有不少问题&#xff0c;后面会讲下 https://bianbu-linux.spa…...

学习!FastAPI

目录 FastAPI简介快速开始安装FastApiFastAPI CLI自动化文档 Reqeust路径参数Enum 类用于路径参数路径参数和数值校验 查询参数查询参数和字符串校验 请求体多个请求体参数嵌入单个请求体参数 CookieHeader表单文件直接使用请求 ResponseResponse Model多个关联模型 响应状态码…...

【Python 算法零基础 4.排序 ① 选择排序】

就算经历各番碰撞&#xff0c;幸运也将一直站在我这边 —— 25.5.18 一、引言 选择排序(Selection Sort) 是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小…...

05 部署Nginx反向代理

01 服务器基本信息 名称IP地址真实Web服务器172.2.25.10Proxy服务器172.2.25.11 02 Proxy基本设置 [rootlikexy-nginx-01 conf.d]# pwd /etc/nginx/conf.d [rootlikexy-nginx-01 conf.d]# cat proxy.conf server {listen 80;server_name www.wp.proxy.com;location / {prox…...

通俗解释Transformer在处理序列问题高效的原因(个人理解)

Transformer出现的背景 CNN 的全局关联缺陷卷积神经网络&#xff08;CNN&#xff09;通过多层堆叠扩大感受野&#xff0c;但在自然语言处理中存在本质局限&#xff1a; 局部操作的语义割裂&#xff1a;每个卷积核仅处理固定窗口&#xff08;如 3-5 词&#xff09;&#xff0c;…...

【Vue】路由1——路由的引入 以及 路由的传参

目录 一、什么是路由 &#xff01; 1.1 一个完整的前端路由规则​编辑 1.2 后端路由 1.3 安装路由插件 1.4 嵌套&#xff08;多级&#xff09;路由 二、路由的query传参 2.1 传参 2.2 取值 三、命名路由 四、 路由的params参数 五、路由的props配置 第一种写法&…...

大模型为什么学新忘旧(大模型为什么会有灾难性遗忘)?

字数&#xff1a;2500字 一、前言&#xff1a;当学霸变成“金鱼” 假设你班上有个学霸&#xff0c;数学考满分&#xff0c;英语拿第一&#xff0c;物理称霸全校。某天&#xff0c;他突然宣布&#xff1a;“我要全面发展&#xff01;从今天起学打篮球&#xff01;” 一周后&am…...

07 负载均衡

01 面试题 面试题: 说一下如何实现的负载均衡 1.使用的proxy_pass模块 2.通过proxy_pass模块转发给upstream模块定义的地址池 3.使用的是默认的rr轮训算法分发到后端的服务器02 负载均衡配置 # 写一个简单的配置 [rootlikexy-nginx-01 conf.d]# cat lb.conf server {listen …...

谢赛宁团队提出 BLIP3-o:融合自回归与扩散模型的统一多模态架构,开创CLIP特征驱动的图像理解与生成新范式

BLIP3-o 是一个统一的多模态模型&#xff0c;它将自回归模型的推理和指令遵循优势与扩散模型的生成能力相结合。与之前扩散 VAE 特征或原始像素的研究不同&#xff0c;BLIP3-o 扩散了语义丰富的CLIP 图像特征&#xff0c;从而为图像理解和生成构建了强大而高效的架构。 此外还…...

【深度学习】残差网络(ResNet)

如果按照李沐老师书上来&#xff0c;学完 VGG 后还有 NiN 和 GoogLeNet 要学&#xff0c;但是这两个我之前听都没听过&#xff0c;而且我看到我导师有发过 ResNet 相关的论文&#xff0c;就想跳过它们直接看后面的内容。 现在看来这不算是不踏实&#xff0c;因为李沐老师说如果…...

最新最热门的特征提取方式:CVOCA光学高速复值卷积

目录 一、问题背景与核心挑战 二、CVOCA核心原理与数学建模 1. 复杂值卷积的数学表达 2. CVOCA的三大光学映射策略 三、关键创新点详解 1. 合成波长技术(Synthetic Wavelength) 2. 复杂值电光调制器(CVEOM) 3. 时间-波长交织卷积计算 四、代码实现与仿真验证 1. …...

获取Class的方式有哪些?

在Java中&#xff0c;获取Class对象是进行反射操作的基础&#xff0c;以下是几种常见方式及其详细说明&#xff0c;以及记忆方法&#xff1a; 1. 使用 .class 语法 语法&#xff1a;类名.class&#xff08;如 String.class&#xff09;。特点&#xff1a; 编译时确定&#xff…...

STM32八股【9】-----volatile关键字

一句话&#xff1a; 主要是为了防止编译器优化导致无法得到最新的值。主要用于以下三处&#xff1a; 1.在中断中修改访问的变量。 2.多任务&#xff08;线程&#xff09;共享的变量。 3.硬件寄存器变量 问题 嵌入式程序中常出现变量值改变但代码未正确响应的现象 原因 编译…...

【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】

在蓝牙协议栈中&#xff0c;HCI_LE_Set_Event_Mask 是一个主机控制接口&#xff08;HCI&#xff09;层的命令&#xff0c;属于 LE&#xff08;Low Energy&#xff09;控制指令集。该命令用于 配置控制器向主机报告哪些 LE 事件&#xff0c;以便主机能够根据需求控制被中断的事件…...

关于文件分片的介绍和应用

文件分片&#xff0c;顾名思义&#xff0c;就是将一个大文件分割成多个小的文件块&#xff08;chunk&#xff09;。每个文件块都是原始文件的一部分&#xff0c;并可以通过特定的方式将这些小文件块重新组装成原始文件。 1. 基本原理: 文件分片从底层来看&#xff0c;主要是对…...

tauri2项目动态添加 Sidecar可行性方案(运行时配置)

tauri2官方文档&#xff1a;Embedding External Binaries | Tauri Tauri 的 Sidecar 功能允许你将外部二进制文件&#xff08;External Binaries&#xff09;与你的 Tauri 应用程序捆绑在一起&#xff0c;并在运行时调用它们。根据你提供的链接和 Tauri 的文档&#xff0c;以下…...

20倍云台球机是一种高性能的监控设备

20倍云台球机是一种高性能的监控设备&#xff0c;其主要特点包括20倍光学变焦能力和云台旋转功能。以下是对20倍云台球机的详细分析&#xff1a; 一、主要特点 20倍光学变焦 &#xff1a; 摄像机镜头能够在保持图像清晰度的前提下&#xff0c;将监控目标放大20倍。 这一功能…...

利用html制作简历网页和求职信息网页

前言 大家好&#xff0c;我是maybe。今天下午初步学习了html的基础知识。做了两个小网页&#xff0c;一个网页是简历网页&#xff0c;一个网页是求职信息填写网页。跟大家分享一波~ 说明:我不打算上传图片。所以如果有朋友按照我的代码运行网页&#xff0c;会出现一个没有图片…...

三:操作系统线程管理之线程概念

揭秘幕后英雄&#xff1a;理解线程的奥秘与优势 在当今软件应用的世界里&#xff0c;流畅的用户体验、高效的后台处理以及强大的并发能力已经成为必备的要求。你有没有想过&#xff0c;一个看似简单的程序是如何在同一时间处理多个任务的&#xff1f;或者为什么一个复杂的应用…...

学习黑客Active Directory 入门指南(一)

Active Directory 入门指南&#xff08;一&#xff09;&#xff1a;初识AD与核心概念 &#x1f511; 大家好&#xff01;欢迎来到 “Active Directory 入门指南” 系列的第一篇。在本系列中&#xff0c;我们将逐步深入探索 Windows Active Directory (AD)——微软推出的目录服…...

单列集合——ArrayList,LinkedList,迭代器的底层原理和源码

ArrayList 底层原理 空参构造创建集合时候&#xff0c;创建长度为零的数组名叫elementData&#xff0c;还有个成员变量size用来记录元素的个数&#xff0c;第一次空参&#xff0c;size长度是0。 添加第一个元素时&#xff0c;底层创建新的长度尾10的数组&#xff0c;数组中默认…...

C++模板进阶使用技巧

非类型模板参数缺省模板参数类模板特化全特化偏特化 模板的分离编译 我们在前面已经初识了 模板并且在各种数据结构的实现中&#xff0c;熟练掌握了模板的一些基础功能。 至于为什么是基础功能&#xff0c;因为模板还有一些进阶的功能&#xff0c;像非类型模板参数&#xff0c…...

jqGrid冻结列错行问题,将冻结表格(悬浮表格)与 正常表格进行高度同步

在使用jqGrid时&#xff0c;如果你遇到了冻结列&#xff08;也称为冻结表格或悬浮表格&#xff09;与正常表格高度不同步的问题&#xff0c;这通常是由于CSS样式或者布局管理不当所导致的。下面是一些解决此问题的步骤和建议&#xff1a; 1. 确保CSS样式正确 首先&#xff0c;确…...

Milvus(25):搜索迭代器、使用分区密钥

1 搜索迭代器 ANN Search 对单次查询可调用的实体数量有最大限制&#xff0c;因此仅使用基本 ANN Search 可能无法满足大规模检索的需求。对于 topK 超过 16,384 的 ANN Search 请求&#xff0c;建议考虑使用 SearchIterator。 1.1 概述 Search 请求返回搜索结果&#xff0c;而…...

深入探索PointNet:点云处理的革命性算法

深入探索PointNet&#xff1a;点云处理的革命性算法 在计算机视觉和三维图形处理领域&#xff0c;点云数据的处理一直是一个极具挑战性的任务。点云数据由一系列三维坐标点组成&#xff0c;这些点通常来源于激光雷达&#xff08;LiDAR&#xff09;、三维扫描仪等设备。与图像数…...

四品种交易策略

策略概述 策略思路: 交易品种:同时交易四个品种,每个品种使用总资金的10%。 合约选择:使用连续合约(data0)发出交易信号,实际交易 主力合约(data1)和下一个主力合约(data2)。 资金管理:总资金用A_CurrentEquity表示,交易手数据此计算。 止损执行:盘中达到止损…...

NC61 两数之和【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路3.1 排序双指针3.1 散列 四、参考代码4.1 排序双指针4.2 散列 零、原题链接 NC61 两数之和 一、题目描述 二、测试用例 三、解题思路 3.1 排序双指针 基本思路&#xff1a;   先对序列进行排序&#xff0c;然后…...