Servicio Python (FastAPI) de extracción de datos estructurados desde documentos médicos PDF.
Usa LLMs (compatible con OpenAI API) para descubrir campos, estimar costos y extraer datos por lotes.
También actúa como capa de persistencia para el flujo de conteo: guarda los resultados del count-api en PostgreSQL y orquesta la extracción de documentos validados.
Endpoints principales
Puerto: 8001
Salud y configuración
| Método |
Ruta |
Descripción |
GET |
/health |
Liveness |
GET |
/config |
Configuración LLM activa |
GET |
/models |
Modelos disponibles en el backend LLM |
Descubrimiento de esquema
| Método |
Ruta |
Descripción |
POST |
/schemas |
Descubrir campos desde ruta en disco |
POST |
/schemas/upload |
Descubrir campos desde PDF subido |
Estimación de costo
| Método |
Ruta |
Descripción |
POST |
/estimate/upload |
Estimar tokens/costo desde PDF subido |
| Método |
Ruta |
Descripción |
POST |
/tasks/extraction |
Crear tarea de extracción |
POST |
/tasks/{id}/ingest |
Subir un PDF a la tarea |
POST |
/tasks/{id}/ingest-many |
Subir varios PDFs en bulk |
GET |
/tasks |
Listar tareas |
GET |
/tasks/{id} |
Detalle de tarea |
GET |
/tasks/{id}/rows |
Filas extraídas de la tarea |
POST |
/tasks/extraction/from-count |
Crear extracción desde conteo previo |
Jobs (contenedor de tareas)
| Método |
Ruta |
Descripción |
GET |
/jobs |
Listar jobs |
GET |
/jobs/{id} |
Detalle de job |
GET |
/jobs/{id}/tasks |
Tareas del job |
Conteo (persistencia desde count-api)
| Método |
Ruta |
Descripción |
POST |
/count-jobs |
Guardar resultados de conteo en BD |
GET |
/count-jobs |
Listar jobs de conteo |
GET |
/count-jobs/{task_id} |
Detalle de job de conteo |
GET |
/count-jobs/{task_id}/files |
Archivos del conteo |
PATCH |
/count-jobs/{task_id}/files/{file_id} |
Marcar archivo como válido/inválido |
Flujo de datos
Variables de entorno
| Variable |
Descripción |
DATABASE_URL |
PostgreSQL (postgresql+psycopg://...) |
REDIS_URL |
Redis para cola ARQ (redis://...) |
EXTRACTOR_BASE_URL |
URL base del LLM (compatible OpenAI) |
EXTRACTOR_API_KEY |
API key del LLM extractor |
EXTRACTOR_MODEL |
Modelo de extracción (default: gpt-5.6-luna) |
NORMALIZER_BASE_URL |
URL base del LLM normalizador |
NORMALIZER_API_KEY |
API key del LLM normalizador |
NORMALIZER_MODEL |
Modelo normalizador (default: gpt-5.6-luna) |
EXTRACTOR_TIMEOUT_S |
Timeout por documento (default 120) |
PDF_DPI |
DPI para renderizado PDF (default 150) |
PDF_THREAD_COUNT |
Hilos de renderizado PDF (default 4) |
CONCURRENCY_LIMIT |
Máximo de extracciones paralelas (default 50) |
ALLOWED_DOCUMENT_TYPES |
Tipos de documento permitidos |
ASYNC_QUEUE |
true para encolar en ARQ/Redis (default: sync) |
Modelo de datos (PostgreSQL)
Estructura del código
Arrancar localmente
API disponible en http://localhost:8001.