Gestione dei file

Oltre ai dati di testo grezzi, potresti desiderare estrarre informazioni da altri tipi di file come presentazioni PowerPoint o PDF.

Puoi utilizzare i caricamenti di documenti LangChain per analizzare i file in un formato di testo che può essere inserito negli LLM.

Analisi basata sul tipo MIME

Qui, esamineremo l'analisi basata sul tipo MIME, che è spesso utile per le applicazioni di estrazione se stai scrivendo codice server che accetta file caricati dall'utente.

In questo caso, è meglio presumere che l'estensione del file fornito dall'utente sia sbagliata e invece dedurre il tipo MIME dal contenuto binario del file.

Scarichiamo qualche contenuto. Questo sarà un file HTML, ma il codice qui sotto funzionerà con altri tipi di file.

import requests

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

Configura i parser

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

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

ANALISI_BASATA_SU_MIME = MimeTypeBasedParser(
    gestori=GESTORI,
    fallback_parser=None,
)

mime = magic.Magic(mime=True)
tipo_mime = mime.from_buffer(data)

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

parser = GESTORI[tipo_mime]
documents = parser.parse(blob=blob)
print(documents[0].page_content[:30].strip())
Car - Wikipedia