LangChain 入门6 magic不同格式文件的读取

embedded/2024/9/24 14:23:33/

概述:

除了原始文本数据,可能还希望从其他文件类型(如PowerPoint演示文稿或PDF)中提取信息。
可以使用LangChain文档加载程序将文件解析为可以输入LLM的文本格式。

基于MIME类型的解析

数据加载

python">import requestsresponse = requests.get("https://en.wikipedia.org/wiki/Car")
data = response.content
data[:20]

返回:

python">b'<!DOCTYPE html>\n<htm'

配置解析器

加载依赖

python">import magic #导入 magic 库,这是一个在 Python 中用于文件类型检测的库,可以根据文件内容判断其 MIME 类型

pip install python-magic-bin

python">from langchain.document_loaders.parsers import BS4HTMLParser, PDFMinerParser #BS4HTMLParser 用于解析 HTML 文件,PDFMinerParser 用于解析 PDF 文件
from langchain.document_loaders.parsers.generic import MimeTypeBasedParser # MimeTypeBasedParser 是一个基于 MIME 类型的通用解析器,
from langchain.document_loaders.parsers.txt import TextParser#TextParser 用于解析纯文本文件
from langchain_community.document_loaders import Blob #Blob 用于表示二进制数据。

数据加载

python">#定义一个字典用于存储不同的解释器
HANDLERS = {"application/pdf": PDFMinerParser(),"text/plain": TextParser(),"text/html": BS4HTMLParser(),
}# 使用给定的解析器实例化基于mimetype的解析器
MIMETYPE_BASED_PARSER = MimeTypeBasedParser(handlers=HANDLERS,fallback_parser=None,#参数指定了当文档的 MIME 类型在 HANDLERS 字典中没有匹配到相应的解析器时,将使用哪个解析器作为备选。
)

数据解析

python">mime = magic.Magic(mime=True) # mime=True 时,magic.Magic 对象会尝试根据文件内容来确定其 MIME 类型,并以字符串的形式返回。
data[0:300]

b’\n<html class="client-nojs
vector-feature-language-in-header-enabled
vector-feature-language-in-main-page-header-disabled
vector-feature-sticky-header-disabled
vector-feature-page-tools-pinned-disabled
vector-feature-toc-pinned-clientpref-1
vector-feature-main-menu-pinned-disabled vect’

数据类型检测

python"># 使用该对象检测一段数据的 MIME 类型
mime_type = mime.from_buffer(data)
print(mime_type)

返回

text/html

数据二进制转换

python">blob = Blob.from_data(data=data,mime_type=mime_type,
)

数据获取

python">#根据检测到的 MIME 类型从 HANDLERS 字典中获取相应的解析器对象。
parser = HANDLERS[mime_type]
#调用解析器对象的 parse 方法,并将 blob 对象作为参数传递给它。这个方法负责解析 blob 中的数据,并返回一个或多个文档对象,这些文档对象通常是 Document 类的实例,它们包含了解析后的文本内容以及可能的元数据。
documents = parser.parse(blob=blob)
#解析后的数据打印
print(documents[0].page_content[:30].strip())

Car - Wikipedia

以上是本文的全部内容感谢阅读。


http://www.ppmy.cn/embedded/37785.html

相关文章

MySQL数据库创建视图_日常练习

两种方法 1.直接点创建视图 定义里写入&#xff0c;可在SQL预览里查看 SELECT * FROM student where age<18 2.新建查询语句DQL CREATE view student_age_little18 as SELECT * FROM student where age<18;

pytest(二):关于pytest自动化脚本编写中,初始化方式setup_class与fixture的对比

一、自动化脚本实例对比 下面是一条用例,使用pytest框架,放在一个类中,两种实现方式: 1.1 setup_class初始化方式 1. 优点: 代码结构清晰,setup_class 和 teardown_class 看起来像传统的类级别的 setup 和 teardown 方法。2. 缺点: 使用 autouse=True 的 fixture 作为…

Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享

参考文档 useShareAppMessage 注意 使用时&#xff0c;必须为页面配置 enableShareAppMessage: true。&#xff08;修改配置文件后请重新编译项目&#xff09;当 onShareAppMessage 没有触发时&#xff0c;请在页面配置中设置 enableShareAppMessage: true只有定义了此事件处…

2024年全国五大数学建模竞赛Top榜及难度分析!推荐数维杯!!!

发现最近许多同学都陆续开始准备今年的数学建模竞赛了&#xff0c;但是随着数学建模领域越来越普及&#xff0c;影响力越来越广泛&#xff0c;参加的同学也越来越多&#xff0c;就导致有越来越多各式各样的数学建模竞赛此起彼伏出现&#xff0c;但其中有一些竞赛其实并不值得参…

KIMI的API使用:重点是他的API在使用的适合可以实时调用tool(外部联网等)

User: 如何获取kimi 的API Kimi: 要获取Kimi的API,您需要按照以下步骤操作: 注册账号:首先,您需要访问Kimi开放平台(platform.moonshot.cn/console)并注册一个账号。 获取API Key:登录后,在平台的“账户总览”部分查看平台赠送的免费额度。然后,点击“API Key 管理”…

imx6ull配置交叉编译环境编译u-boot及linux所遇问题解决记录

文章目录 前言一、问题 1 及解决方法1、问题 1 描述2、问题 1 解决方法 二、问题 2 及解决方法1、问题 2 描述2、问题 2 解决方法 三、问题 3 及解决方法1、问题 3 描述2、问题 3 解决方法 四、问题 4 及解决方法1、问题 4 描述2、问题 4 解决方法 前言 CoM-iMX6UL(L) 是一款兼…

idea配置hive

idea配置hive 今天才知道&#xff0c;idea居然可以配置hive&#xff0c;步骤如下: view -> Tool Windows -> Database Database出来了之后&#xff0c;直接配置即可

Java面向对象中封装是如何提高安全性的

目录 数据隐藏 访问控制 限制接口 错误隔离 防止非法操作 代码可读性<