Inicio/Volumen II/Pregúntale a tus PDF

📄 Pregúntale a tus PDF

Una aplicación donde sueltas cualquier PDF —un manual, un contrato, un artículo, los apuntes de una asignatura— y le haces preguntas en lenguaje normal. Te responde y te dice en qué página lo ha encontrado. Es el capítulo anterior llevado a cualquier documento, no solo legal.

🎯 Objetivos de aprendizaje
  • Extraer y consultar el contenido de PDF con IA local.
  • Pedir resúmenes, tablas y respuestas con referencia a la página.
  • Reutilizar la técnica RAG que ya conoces en un caso nuevo.

Conceptos clave

Aquí aplicamos lo mismo del chatbot legal: RAG (buscar en tus documentos y responder con esos fragmentos). Lo nuevo es que un PDF no siempre es texto limpio.

🧠 En cristiano: PDF “de texto” vs. PDF “escaneado”. Un PDF normal lleva el texto dentro y se puede leer directamente. Un PDF escaneado es en realidad una foto de cada página: para leerlo hay que aplicarle OCR (reconocimiento óptico de caracteres), que convierte la imagen en texto. Si tu documento es un escaneo, pídele a Claude Code que añada OCR.
Requisitos
Los mismos que ya tienes: Claude Code, Node.js y Ollama con qwen3:4b y nomic-embed-text descargados (capítulo de IA local).

Paso a paso

Crea el proyecto y arranca Claude Code:

⌨️ Terminal
cd ~/proyectos-ia
mkdir pregunta-pdf
cd pregunta-pdf
claude

Pégale este encargo:

💬Escribe esto a Claude Code
Crea una app web local para preguntar a mis PDF con RAG. Requisitos: - Ollama con "qwen3:4b" (respuestas) y "nomic-embed-text". - Puedo subir un PDF desde el navegador o dejarlo en "docs/". - Extrae el texto; si el PDF es escaneado, aplica OCR. - Trocea, calcula embeddings y guarda el índice en local. - Al responder, indica el archivo y la página de la cita. - Botones para: resumir el documento y extraer sus tablas. - README con instrucciones de arranque y reindexado.
💡 Idea clave. Un mismo patrón —RAG— resuelve muchísimos problemas: consultar leyes, manuales, historiales, documentación técnica... Domínalo una vez y lo reutilizas toda la vida.

Ejecutar en tu ordenador

⌨️ Terminal
npm install
npm run dev

Abre la dirección local, sube un PDF y pregunta algo concreto que sepas que está en el documento.

✅ Comprueba que funciona. Sube un PDF corto, pregúntale por un dato que contenga y comprueba que la respuesta cita la página correcta. Prueba también el botón de resumen.
⚠️ Cuidado. Si responde “no encuentro nada” con un PDF que sí tiene la información, casi siempre es que era un escaneo sin OCR o que no reindexaste tras subirlo. Revisa esas dos cosas primero.
💾 Guardar y reabrir el proyecto.
Tu proyecto es la carpeta pregunta-pdf. Para cerrarlo: Ctrl + C. Para volver otro día: cd ~/proyectos-ia/pregunta-pdf y npm run dev. Recuerda hacer un commit de Git cuando funcione.

Una prueba guiada de principio a fin

Para comprobar que todo funciona sin depender de tus propios archivos, usa un PDF público del BOE. Descarga la Constitución Española (dominio público) y colócala en la carpeta docs/ de tu proyecto:

⌨️ Terminal
mkdir -p docs
curl -L -o docs/constitucion.pdf \
  "https://www.boe.es/buscar/pdf/1978/BOE-A-1978-31229-consolidado.pdf"
npm run dev

Abre la app, sube (o reindexa) constitucion.pdf y escribe esta pregunta exacta:

¿Qué establece el artículo 14 de la Constitución Española sobre la igualdad ante la ley?

Qué deberías ver: una respuesta que cite el artículo 14 y mencione que los españoles son iguales ante la ley, sin discriminación por nacimiento, raza, sexo, religión, opinión u otra condición personal o social. La app debe indicar el archivo (constitucion.pdf) y una página. Si responde con contenido inventado o sin cita, reindexa el PDF y vuelve a preguntar.

✅ Comprueba que funciona. Si la respuesta reproduce la idea del artículo 14 y señala página y archivo correctos, tu lector de PDF está funcionando de verdad.

Si algo falla

  • Texto vacío al indexar — PDF escaneado: activa OCR.
  • Respuestas lentas — normal en documentos largos; prueba un modelo más pequeño o reduce cuántos fragmentos usa por respuesta.
  • Cita la página equivocada — pide a Claude Code trozos más pequeños al indexar.

Reto para practicar

Pídele a Claude Code que añada un modo “compara dos PDF” (por ejemplo dos versiones de un contrato) y que te señale las diferencias importantes.