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

概述:

除了原始文本数据,可能还希望从其他文件类型(如PowerPoint演示文稿或PDF)中提取信息。

可以使用LangChain文档加载程序将文件解析为可以输入LLM的文本格式。

基于MIME类型的解析

数据加载

python 复制代码
import requests

response = 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

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

相关推荐
lsh曙光36 分钟前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫1 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
笨鸟先飞,勤能补拙1 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
似的8351 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
长和信泰光伏储能2 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
mingo_敏2 小时前
DeepAgents : 权限(Permissions)
人工智能·深度学习·langchain
浦信仿真大讲堂2 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study3 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
我不管我就要叫小猪3 小时前
嵌入式Linux----网络通信
linux·运维·服务器
泡沫冰@3 小时前
ECS 的介绍和使用
linux·服务器·网络