Skip to content

Repository files navigation

ImpreConta AR

CI License: MIT + Commons Clause

Sistema de contabilidad, facturación AFIP y gestión para imprentas gráficas de Argentina.

Aplicación web full-stack autoalojada (self-hosted) que centraliza la gestión contable de una imprenta: comprobantes AFIP, presupuestos, clientes/proveedores, Libro IVA y un asesor contable con IA local. Incluye lectura automática de facturas por OCR + QR de AFIP, sin enviar datos a servicios externos.

Toda la interfaz, el código y la documentación están en español.


Características

  • 📄 Gestión de comprobantes — facturas de ingreso (ventas) y gasto (compras), notas de crédito/débito, adjuntos.
  • 🤖 Lectura automática por OCR + QR AFIP — subís el PDF de una factura y el sistema extrae CUIT, punto de venta, número, CAE, importe y fecha mediante un pipeline determinístico (QR de AFIP → regex), sin depender del LLM para los datos.
  • 📥 Buzón automático (inbox) — dejás los PDFs en una carpeta y un job los procesa y carga solo cada pocos minutos.
  • 🧾 Presupuestos — creación, ítems, conversión a factura y exportación a PDF.
  • 📊 Dashboard — KPIs, resumen anual, top de clientes/proveedores y gráficos.
  • 📚 Libro IVA — mensual/trimestral con exportación a Excel en formato AFIP.
  • 💬 Asesor contable con IA — chat que responde con contexto fiscal real de tu empresa, usando un LLM local (Ollama).
  • 👥 Usuarios y rolesadmin, operador y contador, con autenticación JWT.
  • 💾 Backups automáticos de la base de datos.

Capturas

Dashboard

KPIs del año, pendientes de cobro/pago, IVA y gráficos, con accesos rápidos.

Dashboard

Asesor contable con IA

Consultá al asistente sobre una factura concreta (deducibilidad, cuenta, IVA), con contexto fiscal real de tu empresa y el LLM corriendo en local.

Asesor de IA sobre una factura

Clientes y proveedores

Gestión de clientes y proveedores

Panel de control de escritorio

Gestión de los contenedores (iniciar/detener, backups, modelo de IA, datos demo).

Panel de control

Stack

Capa Tecnología
Backend Python 3.12 · FastAPI · SQLAlchemy 2.0
Base de datos SQLite
Frontend HTML5 · CSS3 · JavaScript (sin framework)
Servidor web Nginx (reverse proxy + estáticos)
IA / LLM Ollama (modelo por defecto: qwen2.5:3b) — 100% local
OCR Tesseract · pdfplumber · pdf2image · pyzbar (QR AFIP)
Tareas programadas APScheduler
Contenedores Docker Compose

Arquitectura

┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐
│   Nginx :8081   │──────│  FastAPI :8000  │──────│  Ollama :11434  │
│  (frontend +    │ /api │   (backend)     │      │   (LLM local)   │
│   proxy /api)   │      │  SQLite +       │      │                 │
└─────────────────┘      │  scheduler      │      └─────────────────┘
                         └─────────────────┘

Requisitos

  • Docker y Docker Compose (en Windows: Docker Desktop con WSL2).
  • Software: Windows 10/11, Linux o macOS con virtualización habilitada.

La app web, la base de datos y el OCR corren en cualquier PC moderna. La parte exigente es el asistente de IA (LLM local vía Ollama):

Escenario Hardware Experiencia de IA
Mínimo 8 GB RAM, sin GPU, 5 GB disco Funciona, pero el chat/clasificación IA es lento (respuestas en CPU)
Recomendado 16 GB RAM + GPU NVIDIA ≥ 6 GB VRAM IA fluida con el modelo por defecto
GPU modesta GPU NVIDIA 3–4 GB VRAM Usar un modelo más chico (ver abajo)

Elegir el modelo de IA según la VRAM

El modelo se cambia desde Configuración → IA, sin reinstalar nada. Para que sea rápido, tiene que entrar entero en la GPU:

Modelo Tamaño VRAM para 100% GPU Calidad
qwen2.5:3b (por defecto) ~2,6 GB ≥ 4 GB Mejor
qwen2.5:1.5b ~1,4 GB ~3 GB Media
qwen2.5:0.5b ~0,5 GB ~2 GB / CPU Básica

Si tu GPU tiene menos VRAM que el modelo, Ollama reparte la carga con la CPU y se vuelve lento. Ej.: una GTX 1050 (3 GB) corre 3b al ~67% en GPU / 33% en CPU; conviene bajar a 1.5b para que use el 100% de la GPU.

El panel de control detecta la GPU NVIDIA y la usa automáticamente. Sin GPU, todo funciona igual pero la IA responde más despacio.

Instalación

# 1. Cloná el repositorio
git clone https://github.com/emicaim/ImpreContaAR.git
cd ImpreContaAR

# 2. (Opcional) Configurá variables de entorno
cp .env.example .env    # y editá SECRET_KEY, etc.

# 3. Levantá los servicios
docker compose up -d

# 4. Descargá el modelo de IA (una sola vez, ~2 GB)
docker compose exec ollama ollama pull qwen2.5:3b

Con GPU NVIDIA (opcional, acelera la IA):

docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d

Primer uso — crear el administrador

No hay contraseña por defecto. La primera vez, abrí:

http://localhost:8081/setup.html

y completá los datos de tu imprenta (razón social, CUIT) y la contraseña del administrador. Luego iniciá sesión en http://localhost:8081.

En Windows también podés usar el Panel de Control de escritorio (panel-control/), que arranca/detiene los contenedores y guía el setup inicial. Ver panel-control/MANUAL_USUARIO.md.

Servicios expuestos

Servicio URL
Frontend http://localhost:8081
API (backend) http://localhost:8001
Ollama http://localhost:11435

Datos de prueba (opcional)

docker compose exec backend python3 /app/generar_facturas_test.py

Genera 200 facturas, 10 clientes y 8 proveedores de ejemplo (ficticios).


Tests

La suite usa pytest con una base SQLite temporal (no toca datos reales).

# Dentro del contenedor backend
docker compose exec backend sh -c "pip install pytest && python -m pytest -q"

# O en local, con las dependencias de desarrollo instaladas
cd backend && pip install -r requirements-dev.txt && pytest -q

Cubre las funciones del parser OCR/regex (limpieza de importes, CUIT, número de comprobante, fechas) y los endpoints principales (setup, login, autenticación).


Roles

Rol Permisos
admin Acceso total: usuarios, configuración, eliminación de registros
operador Crear y editar facturas, clientes y presupuestos (no eliminar)
contador Solo lectura: dashboard, Libro IVA, auditoría, exportaciones

Estructura del proyecto

backend/          API FastAPI (routers por dominio, servicios, migraciones)
frontend/         Páginas HTML servidas por Nginx
panel-control/    App de escritorio (Tkinter) para gestionar los contenedores en Windows
inbox/            Buzón de PDFs para carga automática
docker-compose.yml

El detalle del plan de cuentas y su configuración por región está en docs/plan_de_cuentas.md.


Alcance y notas

  • Autoalojado, una instalación por imprenta. Cada imprenta corre su propia copia con sus datos aislados (no es un SaaS multi-inquilino compartido).
  • Foco en Argentina (AFIP). La lectura de comprobantes está adaptada a AFIP (QR, CUIT, tipos A/B/C). Existe una base de configuración fiscal por país (backend/config/regiones/) pensada para extender a otras jurisdicciones.
  • Privacidad: el LLM corre localmente vía Ollama; los datos de tus facturas no salen de tu servidor.

Licencia

MIT + Commons Clause © FOKO SOFT

Podés usar, modificar y distribuir el software libremente, pero no venderlo (ni ofrecerlo como servicio pago cuyo valor derive sustancialmente de este software). El resto de los permisos MIT se mantienen.

About

Sistema self-hosted de contabilidad, facturación AFIP y gestión para imprentas gráficas de Argentina. FastAPI + Docker, OCR de facturas y asesor contable con IA local.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages