Leer un listado de URLs proporcionado y descargar cada archivo PDF de forma automatizada.
Manejar reintentos, timeouts y errores de descarga.
Registrar en un log qué PDFs se descargaron correctamente y cuáles fallaron.
Extraer y limpiar el texto
Extraer el texto de cada PDF utilizando librerías Python como PyMuPDF, pdfplumber u otras adecuadas (no limitarse solo a PyPDF2).
Aplicar una limpieza mínima obligatoria:
eliminar encabezados y pies de página repetidos
unir palabras cortadas por guión al final de línea
reconstruir párrafos coherentes (no una línea = un párrafo)
Dividir el texto en fragmentos para RAG
Dividir el texto extraído en fragmentos de aproximadamente 500 palabras, con solapamiento.
Adjuntar metadatos pensados para el buscador con IA, como mínimo:
nombre del archivo original
identificador de boletín (derivado del nombre del archivo)
rango de páginas que cubre el fragmento
posición del fragmento dentro del documento (orden)
Indexar los fragmentos en Qdrant
Subir cada fragmento de texto a Qdrant (Cloud o self-hosted), generando embeddings con el modelo que se defina.
Definir la colección/esquema de Qdrant (campos, payload).
Asegurar que el proceso es idempotente:
si se reejecuta, no duplica fragmentos ya indexados
permite reintentar solo PDFs/fragmentos fallidos
El cliente proporcionará:
Un listado completo de ~877 URLs de PDFs, listo para ser utilizado.
Acceso a un VPS (Hostinger) para la ejecución del script.
Credenciales necesarias para acceder a Qdrant (Cloud o instancia en el VPS).
El freelancer deberá entregar:
El/los script(s) Python completamente funcional(es) y documentado(s), junto con un archivo
requirements.txt que liste todas las dependencias.
La ejecución exitosa y completa del script sobre los ~877 PDFs en el VPS proporcionado.
La verificación de que Qdrant ha sido poblado correctamente (consultas de prueba) y un log con PDFs procesados/fallidos.
Perfil de freelancer buscado:
Manejo de librerías Python para procesamiento de PDFs con maquetación compleja (PyMuPDF, pdfplumber o similares).
Conocimiento y experiencia con bases de datos vectoriales (Qdrant, Pinecone o similares).
Capacidad para conectarse y trabajar en un vps vía ssh (linux).
Experiencia previa en proyectos similares de procesamiento masivo de archivos y datos.
Valorable: haber trabajado en proyectos RAG (Retrieval-Augmented Generation).
Plazo de Entrega: No definido