为什么要用 Markdown?以及如何使用它

在处理大量文档时,尤其是在构建知识库、进行文档分析或训练大语言模型(LLM)时,将各种格式的文件(如 PDF、Word、Excel、PPT、HTML 等)转换为统一的 Markdown 格式,能够显著提高处理效率和兼容性。Microsoft 的开源项目 MarkItDown 正是为此目的而生。

什么是 MarkItDown?

MarkItDown 是一个轻量级的 Python 工具,旨在将多种文件格式转换为 Markdown 格式,特别适用于 LLM 和相关的文本分析管道。与 Pandoc 等工具相比,MarkItDown 更加专注于保留文档的结构和内容,如标题、列表、表格、链接等,输出的 Markdown 格式既适合人类阅读,也适合机器处理

为什么选择 MarkItDown?

1. 多格式支持

MarkItDown 支持从多种格式转换为 Markdown,包括:

  • PDF

  • PowerPoint(PPTX)

  • Word(DOCX)

  • Excel(XLSX)

  • 图片(包括 EXIF 元数据和 OCR)

  • 音频(包括 EXIF 元数据和语音转录)

  • HTML

  • 文本格式(如 CSV、JSON、XML)

  • ZIP 文件(迭代处理其中的内容)

  • YouTube URL

  • EPUB

  • 以及更多

这种广泛的格式支持使得 MarkItDown 成为处理各种文档的利器。

html -> md ,内部转换是markdownify

2. 专为 LLM 优化

MarkItDown 输出的 Markdown 格式经过优化,适合用于 LLM 的输入,能够有效利用 LLM 的上下文窗口。此外,MarkItDown 还提供了 MCP(Model Context Protocol)服务器,支持与 LLM 的实时集成,例如与 Claude Desktop 的集成。

3. 强大的插件系统

MarkItDown 提供了插件系统,用户可以根据需要扩展功能。例如,有用户开发了插件来处理 DOCX 文件,并将其中的图片提取到指定文件夹中。

如何使用 MarkItDown?

安装 MarkItDown

使用 pip 安装:

pip install markitdown

如果想安装全部功能(支持更多格式和插件):

pip install 'markitdown[all]'

基本用法

假设你有一个 Word 文件 example.docx,想把它转换为 Markdown:

markitdown example.docx

输出内容会在终端显示。如果想保存为文件:

markitdown example.docx > example.md

python 代码

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

example.docx

转换成的example.md

# Sample DocumentThis document was created using accessibility techniques for headings, lists, image alternate text, tables, and columns. It should be completely accessible using assistive technologies such as screen readers.## HeadingsThere are eight section headings in this document. At the beginning, "Sample Document" is a level 1 heading. The main section headings, such as "Headings" and "Lists" are level 2 headings. The Tables section contains two sub-headings, "Simple Table" and "Complex Table," which are both level 3 headings.## ListsThe following outline of the sections of this document is an ordered (numbered) list with six items. The fifth item, "Tables," contains a nested unordered (bulleted) list with two items.1. Headings
2. Lists
3. Links
4. Images
5. Tables* Simple Tables
* Complex Tables1. Columns## LinksIn web documents, links can point different locations on the page, different pages, or even downloadable documents, such as Word documents or PDFs:[Top of this Page](#_top)
[Sample Document](http://www.dhs.state.il.us/page.aspx?item=67072)
[Sample Document (docx)](http://www.dhs.state.il.us/OneNetLibrary/27897/documents/Initiatives/IITAA/Sample-Document.docx)## Images![Web Access Symbol](data:image/gif;base64...)Documents may contain images. For example, there is an image of the web accessibility symbol to the left of this paragraph. Its alternate text is "Web Access Symbol".Alt text should communicate what an image means, not how it looks.![Chart of Screen Reader Market Share. (Unfortunately, there isn't a way in Word or PDF to include rich formatting, such as a table, in alternate text.)](data:image/png;base64...)Some images, such as charts or graphs, require long descriptions, but not all document types allow that. In web pages, long descriptions may be provided in several ways: on the page below the image, via a link below the image, or via a link on the image.## Tables### Simple TablesSimple tables have a uniform number of columns and rows, without any merged cells:| **Screen Reader** | **Responses** | **Share** |
| --- | --- | --- |
| JAWS | 853 | 49% |
| NVDA | 238 | 14% |
| Window-Eyes | 214 | 12% |
| System Access | 181 | 10% |
| VoiceOver | 159 | 9% |### Complex TablesThe following is a complex table, using merged cells as headers for sections within the table. This can't be made accessible in all types of documents:|  |  |  |  |  |
| --- | --- | --- | --- | --- |
|  | **May 2012** | | **September 2010** | |
| **Screen Reader** | **Responses** | **Share** | **Responses** | **Share** |
| JAWS | 853 | 49% | 727 | 59% |
| NVDA | 238 | 14% | 105 | 9% |
| Window-Eyes | 214 | 12% | 138 | 11% |
| System Access | 181 | 10% | 58 | 5% |
| VoiceOver | 159 | 9% | 120 | 10% |## ColumnsThis is an example of columns. With columns, the page is split into two or more horizontal sections. Unlike tables, in which you usually read across a row and then down to the next, in columns, you read down a column and then across to the next.When columns are not created correctly, screen readers may run lines together, reading the first line of the first column, then the first line of the second column, then the second line of the first column, and so on. Obviously, that is not accessible.Process finished with exit code 0

转换多种格式示例

1. PDF 转 Markdown

markitdown document.pdf > document.md

MarkItDown 会尝试保留标题、列表、表格和链接。

2. PPTX 转 Markdown

markitdown slides.pptx > slides.md

每一张幻灯片的内容会转换为 Markdown 的标题和列表结构。

3. Excel 转 Markdown

markitdown data.xlsx > data.md

表格会被保留为 Markdown 表格格式,便于在笔记或 GitHub 上阅读。

4. ZIP 文件批量处理

如果有一个 ZIP 包含多个文件:

markitdown archive.zip

MarkItDown 会自动遍历 ZIP 内所有文件并生成 Markdown 输出。

高级示例:带图片和音频

MarkItDown 可以处理图片和音频文件,并尝试提取 EXIF 元数据或进行语音转录:

# 图片
markitdown photo.jpg > photo.md# 音频
markitdown audio.mp3 > audio.md

在 LLM 工作流中的应用

MarkItDown 特别适合与大语言模型(LLM)结合使用。你可以:

  • 先将各种文档统一转换为 Markdown;

  • 再将 Markdown 作为输入喂给模型进行问答或摘要;

  • 保留结构化内容(标题、列表、表格),提升 LLM 的理解能力。

GitHub - microsoft/markitdown: Python tool for converting files and office documents to Markdown.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97486.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

订餐后台管理系统-day06菜品分类模块

菜品分类显示我们需要先实现分类操作,因为没有菜品分类,我们无法准确知道当前菜品属于哪个分类,在前端显示时,需要根据分类显示数据先显示分类列表页面准备路由manage_bp.route(/food/cat/list) def food_cat_list():# 默认页面从…

More Effective C++ 条款20:协助完成返回值优化(Facilitate the Return Value Optimization)

More Effective C 条款20:协助完成返回值优化(Facilitate the Return Value Optimization)核心思想:返回值优化(RVO)是编译器消除函数返回时临时对象的一种重要优化技术。通过编写适合RVO的代码&#xff0c…

《HelloGitHub》第 113 期

兴趣是最好的老师,HelloGitHub 让你对开源感兴趣!简介HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java…

萌宝喂养日志-我用AI做喂养记录小程序1-原型设计

准备工作 首先,注册硅基流动账号,并配置Trae开发工具。 ↓现在注册有2000 万 Tokens 的免费额度↓。 硅基流动统一登录 具体可以看我这篇文章:Trae接入自有Deepseek模型,不再排队等待-CSDN博客 实践 设计原型图 我想开发一…

工业产品营销:概念、原理、流程与实践指南

摘要 工业产品营销是针对B2B市场的专业化推广活动,旨在满足企业客户的生产和运营需求。本文详细阐述了工业产品营销的概念与特点,分析其核心原理,包括客户需求驱动、价值传递和关系管理。营销过程涵盖市场调研、细分定位、策略制定、执行、转化及售后服务六个步骤,并提供品…

【读书笔记】《人体微生物的奥秘》

Follow Your Gut:人体微生物的奥秘 引言:从蚊子到微生物 夏天来临,许多人又开始纠结为什么有些人特别招蚊子。有人说是血型问题,有人说是皮肤嫩度,还有人归结于基因。但今天要分享的一本书,虽然标题看似讨论…

【Matplotlib学习】驾驭画布:Matplotlib 布局方式从入门到精通完全指南

目录驾驭画布:Matplotlib 布局方式从入门到精通完全指南一、 核心理念:理解 Figure 和 Axes二、 布局方式大全:从简单到复杂类别一:自动创建与基础单图布局类别二:规律网格布局 - 主力军类别三:复杂网格布局…

【C#】在一个任意旋转的矩形(由四个顶点定义)内绘制一个内切椭圆

核心点:在一个任意旋转的矩形(由四个顶点定义)内绘制一个内切椭圆 实现步骤 计算矩形中心:作为旋转中心点 创建椭圆路径:在未旋转状态下定义椭圆 应用旋转变换:使用矩阵绕中心点旋转路径 绘制变换后的路…

洛谷 P2052 [NOI2011] 道路修建-普及/提高-

P2052 [NOI2011] 道路修建 题目描述 在 W 星球上有 nnn 个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿意修建恰好 n−1n - 1n−1 条双向道路。 每条道路的修建都要付出一定…

springboot连接不上redis,但是redis客户端是能连接上的

除了常规排查,还有一个就是检查配置文件格式。这个旧版本格式会导致读取不到配置,spring:# 对应 RedisProperties 类redis:host: 127.0.0.1port: 6379 # password: 123456 # Redis 服务器密码,默认为空。生产中,一定要设置 Red…

GitBook 完整使用指南:从安装到部署

文章目录 环境准备 Node.js 安装 GitBook CLI 安装 项目初始化 创建项目结构 (可选) npm 初始化 目录结构配置 开发与调试 本地服务启动 构建静态文件 配置文件详解 插件系统 常用插件推荐 插件安装与配置 自定义样式 部署指南 GitHub Pages 部署 Netlify 部署 高级功能 多语言…

VS安装 .NETFramework,Version=v4.6.x

一、前言 在使用VS2019打开项目时提示MSB3644 找不到 .NETFramework,Versionv4.6.2 的引用程序集的错误 二、解决方案 1.百度......找到了解决方法了 2.打开Visual Studio Install 3.点击修改 4.点击单个组件,安装相对应的版本即可

Visual Studio Code中launch.json的解析笔记

<摘要> launch.json 是 Visual Studio Code 中用于配置调试任务的核心文件。本文解析了其最常用的配置字段&#xff0c;涵盖了基本调试设置、程序控制、环境配置和高级调试功能。理解这些字段能帮助开发者高效配置调试环境&#xff0c;提升开发效率。<解析> 1. 背景…

试试 Xget 加速 GitHub 克隆仓库

引言 在全球化软件开发环境中&#xff0c;开发者经常面临跨地域访问GitHub等平台的网络挑战&#xff1a;下载速度缓慢、连接不稳定、甚至完全无法访问。这些问题严重影响了开发效率和协作体验。Xget作为一个开源的高性能资源获取加速引擎&#xff0c;通过智能路由、多节点分发…

优雅处理Go中的SIGTERM信

在Go语言中优雅处理SIGTERM信号需通过os/signal包实现&#xff0c;核心流程包括信号注册、异步监听和资源清理。SIGTERM 是一种常见的进程终止信号&#xff0c;它允许程序在退出前执行必要的清理操作。与之不同&#xff0c;SIGKILL 信号无法被进程捕获或忽略。未处理的 SIGTERM…

《R for Data Science (2e)》免费中文翻译 (第6章) --- scripts and projects

写在前面 本系列推文为《R for Data Science (2)》的中文翻译版本。所有内容都通过开源免费的方式上传至Github&#xff0c;欢迎大家参与贡献&#xff0c;详细信息见&#xff1a; Books-zh-cn 项目介绍&#xff1a; Books-zh-cn&#xff1a;开源免费的中文书籍社区 r4ds-zh-cn …

GitHub Spark深度体验:是革命前夜,还是又一个“大厂玩具”?

最近&#xff0c;AI 编码工具层出不穷&#xff0c;几乎每天都有新概念诞生。而当 GitHub 这样的行业巨头携“Vibe Coding”概念入场时&#xff0c;所有开发者的期待值都被瞬间拉满。GitHub Spark&#xff0c;一个承诺能用自然语言将你的想法直接变成全栈应用的工具&#xff0c;…

科学研究系统性思维的方法体系:研究设计相关模版

一、研究设计方案模板 模板说明本模板基于《研究设计原理与方法》深度解读报告的理论框架&#xff0c;帮助研究者制定系统性的研究设计方案。模板整合了因果推断理论、效度控制框架和现代实验设计原理。1. 研究问题界定与假设陈述 1.1 研究问题核心要素 研究问题&#xff08;明…

法律审查prompt收集

当前DeepSeek等大模型已经具备初步合同审查能力。 这里收集合同审查及相关prompt&#xff0c;不管是做Coze等Agent&#xff0c;还是开发LLM应用&#xff0c;都有可能用到这些prompt。 https://github.com/LeeXYZABC/law_propmpts.git 1 条款分析 system_prompt&#xff0c;L…

贪心算法解决活动选择问题:最多不重叠活动数量求解

题目描述问题背景活动选择问题是贪心算法的经典应用场景之一。假设有若干个活动&#xff0c;每个活动都有独立的开始时间和结束时间&#xff0c;且同一时间只能进行一个活动。要求从这些活动中选择出最大数量的不重叠活动&#xff0c;即任意两个选中的活动&#xff0c;前一个活…