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

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

相关推荐
疯狂飙车的蜗牛12 分钟前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
梧桐树04292 小时前
python常用内建模块:collections
python
Dream_Snowar2 小时前
速通Python 第三节
开发语言·python
远游客07132 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<2 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟2 小时前
centos-stream9系统安装docker
linux·docker·centos
超爱吃士力架3 小时前
邀请逻辑
java·linux·后端
蓝天星空4 小时前
Python调用open ai接口
人工智能·python
jasmine s4 小时前
Pandas
开发语言·python
郭wes代码4 小时前
Cmd命令大全(万字详细版)
python·算法·小程序