处理文件
除了原始文本数据外,您可能希望从其他文件类型(如PowerPoint演示文稿或PDF文件)中提取信息。
您可以使用LangChain文档加载程序将文件解析为可输入LLMs的文本格式,具体可以参考LangChain文档加载教程。
基于MIME类型的解析
在这里,我们将讨论基于MIME类型的解析,这对于基于提取的应用程序非常有用,特别是在编写接受用户上传文件的服务器代码时。
在这种情况下,最好假设用户提供的文件的文件扩展名是错误的,而是从文件的二进制内容推断出MIME类型。
让我们下载一些内容。这将是一个HTML文件,但下面的代码也适用于其他文件类型。
import requests
response = requests.get("https://en.wikipedia.org/wiki/Car")
data = response.content
data[:20]
b'<!DOCTYPE html>\n<htm'
配置解析器
import magic
from langchain.document_loaders.parsers import BS4HTMLParser, PDFMinerParser
from langchain.document_loaders.parsers.generic import MimeTypeBasedParser
from langchain.document_loaders.parsers.txt import TextParser
from langchain_community.document_loaders import Blob
HANDLERS = {
"application/pdf": PDFMinerParser(),
"text/plain": TextParser(),
"text/html": BS4HTMLParser(),
}
MIMETYPE_BASED_PARSER = MimeTypeBasedParser(
handlers=HANDLERS,
fallback_parser=None,
)
mime = magic.Magic(mime=True)
mime_type = mime.from_buffer(data)
blob = Blob.from_data(
data=data,
mime_type=mime_type,
)
parser = HANDLERS[mime_type]
documents = parser.parse(blob=blob)
print(documents[0].page_content[:30].strip())
汽车 - 维基百科