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

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

相关推荐
湫ccc1 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤4 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~8 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang10 分钟前
python如何使用spark操作hive
hive·python·spark
q0_0p11 分钟前
牛客小白月赛105 (Python题解) A~E
python·牛客
极客代码15 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
庞传奇16 分钟前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
小陈phd22 分钟前
Vscode LinuxC++环境配置
linux·c++·vscode
华清远见IT开放实验室24 分钟前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉
是阿建吖!26 分钟前
【Linux】进程状态
linux·运维