深入了解 Microsoft MarkItDown
什么是 MarkItDown?
MarkItDown 是微软开发的一个 Python 包,旨在将多种文件格式转换为 Markdown。
自推出以来,该库的受欢迎程度直线上升,在短短两周内就获得了超过 25k 的 GitHub 星! ?
是什么让 MarkItDown 如此受欢迎?
MarkItDown 为多种文件类型提供强大的支持,例如:
- 办公格式:Word、PowerPoint、Excel
- 媒体文件:图像(带有 EXIF 数据和描述)、音频(带有转录支持)
- 网络和数据格式:HTML、JSON、XML、CSV
- 档案:ZIP 文件
它不仅能够处理 Word 等标准格式,还能够处理多模式数据,这使其脱颖而出。例如,它使用 OCR 和语音识别从图像和音频文件中提取内容。
将任何内容转换为 Markdown 的能力使 MarkItDown 成为 LLM 培训的强大工具。通过处理特定领域的文档,它提供了丰富的上下文,以便在 LLM 支持的应用程序中生成更准确和相关的响应。
开始使用 MarkItDown
使用 MarkItDown 非常简单 - 只需要 4 行代码:
from markitdown import MarkItDown md = MarkItDown() result = md.convert("test.xlsx") print(result.text_content)
这是 MarkItDown 的一些用例。
转换 Word 文档会生成干净且准确的 Markdown:
即使是多选项卡 Excel 电子表格也能轻松处理:
ZIP 档案?没问题!该库递归地解析其中的所有文件:
最初,图像提取可能不会产生任何结果:
这是因为 MarkItDown 依赖于 LLM 来生成图像描述。通过集成LLM客户端,您可以启用此功能:
from openai import OpenAI client = OpenAI(api_key="i-am-not-an-api-key") md = MarkItDown(llm_client=client, llm_model="gpt-4o")
配置到位后,可以成功处理图像文件:
注意:LLM 不会处理基于图像的 PDF。 PDF 需要 OCR 预处理来提取内容。
但是,PDF 在提取时会丢失格式,因此无法区分标题和纯文本:
局限性
MarkItDown 并非没有局限性:
- 没有 OCR 的 PDF 文件无法处理。
- 从 PDF 文件中提取时无法进行格式化。
尽管如此,作为一个开源项目,它是高度可定制的。由于其干净的代码库,开发人员可以轻松扩展其功能。
MarkItDown 的工作原理
MarkItDown 的架构简单且模块化。
它有一个DocumentConverter类,它定义了一个通用的convert()方法:
from markitdown import MarkItDown md = MarkItDown() result = md.convert("test.xlsx") print(result.text_content)
各个转换器继承自该基类并动态注册:
from openai import OpenAI client = OpenAI(api_key="i-am-not-an-api-key") md = MarkItDown(llm_client=client, llm_model="gpt-4o")
这种模块化方法可以轻松添加对新文件类型的支持。
文件转换工作流程
办公文件
使用 mammoth、pandas 或 pptx 等库将 Office 文件转换为 HTML,然后使用 BeautifulSoup 转换为 Markdown。
音频文件
音频是通过使用Google API 的speech_recognition 库转录的。
(微软,为什么这里没有 Azure??)
图片
图像处理涉及通过 LLM 提示生成标题:
“为这张图片写下详细的描述。”
PDF 文件
PDF 由 pdfminer 库处理,但缺乏内置 OCR。您必须预处理 PDF 才能提取文本。
将 MarkItDown 部署为 API
MarkItDown 可以在本地运行,但将其作为 API 托管可以释放额外的灵活性,使其可以轻松集成到 Zapier 和 n8n 等工作流程中。
这是使用 FastAPI 的 MarkItDown API 的简单示例:
class DocumentConverter: """Base class for all document converters.""" def convert( self, local_path: str, **kwargs: Any ) -> Union[None, DocumentConverterResult]: raise NotImplementedError()
调用API:
self.register_page_converter(PlainTextConverter()) self.register_page_converter(HtmlConverter()) self.register_page_converter(DocxConverter()) self.register_page_converter(XlsxConverter()) self.register_page_converter(Mp3Converter()) self.register_page_converter(ImageConverter()) # ...
免费托管 API
托管 Python API 可能很棘手。 AWS EC2 或 DigitalOcean 等传统服务需要租用整个服务器,这总是很昂贵的。
但是现在,您可以使用Leapcell。
这是一个可以以无服务器方式托管 Python 代码库的平台 - 它仅按 API 调用收费,并且提供慷慨的免费使用。
只需连接您的 GitHub 存储库,定义构建和启动命令,就可以了:
现在您拥有了一个托管在云端的 MarkItDown API,可以集成到您的工作流程中,最重要的是,仅在真正调用时收费。
立即开始在 Leapcell 上构建您自己的 MarkItDown API! ?
以上是深入了解 Microsoft MarkItDown的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
