Manejo de archivos

Además de los datos de texto sin procesar, es posible que desees extraer información de otros tipos de archivos, como presentaciones de PowerPoint o PDF.

Puedes utilizar los cargadores de documentos de LangChain para analizar archivos en un formato de texto que se pueda alimentar a los LLM.

Análisis basado en el tipo MIME

Aquí, vamos a analizar el tipo MIME, lo cual es útil para aplicaciones de extracción cuando se está escribiendo código de servidor que acepta archivos cargados por el usuario.

En este caso, es mejor asumir que la extensión de archivo proporcionada por el usuario está equivocada e inferir en su lugar el tipo MIME a partir del contenido binario del archivo.

Vamos a descargar un contenido. Este será un archivo HTML, pero el código a continuación funcionará con otros tipos de archivo.

import requests

respuesta = requests.get("https://es.wikipedia.org/wiki/Coche")
datos = respuesta.content
datos[:20]
b'<!DOCTYPE html>\n<htm'

Configurar los analizadores

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(),
}

ANALIZADOR_BASADO_EN_MIME = MimeTypeBasedParser(
    manipuladores=MANIPULADORES,
    analizador_de_reserva=None,
)

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

bloque = Blob.from_data(
    datos=datos,
    tipo_mime=tipo_mime,
)

analizador = MANIPULADORES[tipo_mime]
documentos = analizador.parse(bloque=bloque)
print(documentos[0].contenido_de_pagina[:30].strip())
Coche - Wikipedia