一架梯子,一头程序猿,仰望星空!
使用LangChain提取结构化数据 > 内容正文

处理文件


处理文件

除了原始文本数据外,您可能希望从其他文件类型(如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())
汽车 - 维基百科


关联主题