Plataforma modular para digitalizar facturas con OCR + LLM y permitir consultas conversacionales sobre la información procesada. Está compuesta por microservicios Python/Node/NGINX coordinados mediante Docker Compose y una base SQLite compartida.
- Ingesta: el servicio
ocr-pipeline-pythonrecibe PDF/imagenes, extrae texto, invoca al LLM para generar el JSONinvoice_v1, normaliza y persiste los resultados en SQLite. - Consulta conversacional:
invoice-agent-pythonexpone un agente LangGraph que convierte preguntas en SQL seguro y consulta los datos mediante el servidor MCP. - Acceso a datos:
sqlite-mcp-serverofrece herramientas MCP de solo lectura sobre la base, actuando como firewall entre agentes y SQLite. - Experiencia de usuario:
web-uisirve la interfaz web y funciona como reverse proxy hacia los servicios anteriores.
UI (web-ui) → pipeline-api (OCR) → SQLite
↘ invoice-agent → MCP server → SQLite
| Servicio | Descripción | Tecnologías |
|---|---|---|
services/ocr-pipeline-python |
API FastAPI que procesa documentos y guarda facturas estructuradas. | FastAPI, pdfminer, Tesseract, Groq, SQLAlchemy |
services/invoice-agent-python |
Agente conversacional que responde preguntas en español sobre las facturas persistidas. | FastAPI, LangGraph, Groq, MCP |
services/sqlite-mcp-server |
Servidor MCP Node.js que expone la base SQLite en modo solo lectura para los agentes. | Express, better-sqlite3, MCP SDK |
services/web-ui |
Frontend estático + reverse proxy para subir facturas y chatear con el agente. | Nginx, HTML/CSS/JS |
Cada README explica qué hace el servicio y su stack. Los detalles de diseño/arquitectura se documentan en docs/ARCHITECTURE.md dentro de cada carpeta.
cd pipeline-python
# Copiar archivos de ejemplo de variables de entorno para cada servicio
cp services/ocr-pipeline-python/.env.example services/ocr-pipeline-python/.env
cp services/invoice-agent-python/.env.example services/invoice-agent-python/.env
cp services/sqlite-mcp-server/.env.example services/sqlite-mcp-server/.env
# Completar las claves API de LLM en los archivos .env correspondientes
docker compose up -d- UI:
http://localhost:7000 - Pipeline API:
http://localhost:7001 - Agente:
http://localhost:7003
- Los servicios comparten
./data(configurable) para almacenar la base SQLite y archivos subidos. - Se requieren paquetes del sistema (
poppler-utils,tesseract-ocr) cuando se ejecuta el pipeline fuera de Docker. - Las claves del LLM se definen en los archivos
.envde cada servicio (services/ocr-pipeline-python/.envyservices/invoice-agent-python/.env).
- Pipeline OCR: estable para pruebas con documentos reales.
- Agente: MVP con validación de SQL y memoria corta.
- MCP server + Web UI: funcionales para entornos de laboratorio.