Manipular Arquivos

Além de dados de texto simples, você pode desejar extrair informações de outros tipos de arquivos, como apresentações do PowerPoint ou PDFs.

Você pode usar os carregadores de documentos do LangChain para analisar arquivos em um formato de texto que pode ser inserido nos LLMs.

Análise baseada no tipo MIME

Aqui, estaremos analisando baseada no tipo MIME, o que geralmente é útil para aplicações de extração se você estiver escrevendo código do servidor que aceita arquivos enviados pelo usuário.

Neste caso, é melhor supor que a extensão do arquivo fornecido pelo usuário está errada e, em vez disso, inferir o tipo MIME a partir do conteúdo binário do arquivo.

Vamos baixar algum conteúdo. Este será um arquivo HTML, mas o código abaixo funcionará com outros tipos de arquivo.

import requests

response = requests.get("https://en.wikipedia.org/wiki/Car")
data = response.content
data[:20]
b'<!DOCTYPE html>\n<htm'

Configurar os parsers

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

MANIPULADORES = {
    "application/pdf": PDFMinerParser(),
    "text/plain": TextParser(),
    "text/html": BS4HTMLParser(),
}

ANALISE_BASEADA_MIME = MimeTypeBasedParser(
    manipuladores=MANIPULADORES,
    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 = MANIPULADORES[mime_type]
documentos = parser.parse(blob=blob)
print(documentos[0].page_content[:30].strip())
Car - Wikipedia