Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Invoice Extractor

Microservicio de extracción de facturas que recibe un PDF o una URL de documento, invoca un modelo de IA para obtener campos estructurados y persiste el resultado en SQLite.

Requisitos

  • Python 3.11+
  • Dependencias definidas en pyproject.toml
  • Variable de entorno OPENAI_API_KEY
  • Instalar dependencias con uv sync o python -m pip install -e .
  • Si no tienes uv, instálalo con python -m pip install uv

Configuración

  1. Copia .env.example o crea un archivo .env en la raíz.
  2. Establece OPENAI_API_KEY con la clave de OpenAI.
  3. Opcionalmente ajusta:
    • OPENAI_MODEL (por defecto gpt-4o-mini)
    • DATABASE_URL (por defecto sqlite:///invoice.db)
    • REQUEST_TIMEOUT en segundos

Ejecución

uv run python main.py

El servidor se expone en http://0.0.0.0:8000.

Endpoints

POST /extract

Extrae una factura desde un archivo o una URL.

  • Recibe multipart form-data con file (PDF, PNG, JPEG)
  • O recibe url como parámetro de consulta

Ejemplos:

curl -F "file=@invoice.pdf" http://localhost:8000/extract
curl "http://localhost:8000/extract?url=https://example.com/invoice.pdf"

Respuesta:

  • status: ok, revisar, error
  • invoice: campos extraídos
  • validation_errors: lista de problemas detectados
  • processing_time_ms

GET /extractions

Devuelve las extracciones almacenadas en la base de datos.

curl http://localhost:8000/extractions

Qué se implementó

  • POST /extract con soporte de archivo e URL
  • validación de consistencia entre total, conceptos e IVA
  • persistencia en SQLite
  • GET /extractions
  • manejo de errores de entrada y descarga remota
  • pruebas unitarias básicas
  • DEFINICION_DE_DONE.md con lista de criterios

Limitaciones actuales

  • No hay autenticación ni autorización
  • No hay cola de procesamiento o reintentos automatizados
  • No hay monitoreo ni alertas de producción
  • Se requiere una clave de OpenAI válida
  • No hay validación avanzada de moneda o impuestos

Pruebas

pytest

About

REST API for intelligent invoice data extraction using AI agents. Automatically processes PDF invoices and images to identify, extract, and return structured information such as vendor details, invoice numbers, dates, line items, taxes, and totals for seamless integration into business workflows.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages