概述:

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

基于MIME类型的解析

数据加载

import requests

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

返回:

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

配置解析器

加载依赖

import magic #导入 magic 库,这是一个在 Python 中用于文件类型检测的库,可以根据文件内容判断其 MIME 类型
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 用于表示二进制数据。

数据加载

#定义一个字典用于存储不同的解释器
HANDLERS = {
    "application/pdf": PDFMinerParser(),
    "text/plain": TextParser(),
    "text/html": BS4HTMLParser(),
}


# 使用给定的解析器实例化基于mimetype的解析器
MIMETYPE_BASED_PARSER = MimeTypeBasedParser(
    handlers=HANDLERS,
    fallback_parser=None,#参数指定了当文档的 MIME 类型在 HANDLERS 字典中没有匹配到相应的解析器时,将使用哪个解析器作为备选。
)

数据解析

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

数据类型检测

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

返回

数据二进制转换

blob = Blob.from_data(
    data=data,
    mime_type=mime_type,
)

数据获取

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

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

05-02 03:19