Sistema de Contabilidad Automatizado
Sistema en Python para gestionar la contabilidad de 1 o 2 entidades chilenas (persona natural, SpA, EIRL, Ltda., etc.).
Procesa facturas PDF automáticamente, calcula IVA, genera reportes Excel y PDF, y muestra un dashboard web interactivo.
Requisitos
- Python 3.8 o superior
- macOS, Windows o Linux
- Conexión a internet (solo para instalar dependencias, primera vez)
Verifica tu versión de Python:
python3 --version
Instalación (3 pasos, solo la primera vez)
Paso 1 — Verificar entorno
python3 setup_verificacion.py
Verifica Python, pip y crea las carpetas base del sistema.
Paso 2 — Instalar dependencias
python3 install_dependencias.py
Instala todas las librerías necesarias (tarda 2–5 minutos).
Paso 3 — Configurar tus datos
python3 configuracion_inicial.py
Asistente interactivo que te pedirá:
- Nombre y RUT de tu persona natural (si aplica)
- Nombre y RUT de tu empresa/SpA (si aplica)
- Fecha de inicio de actividades
- Giro económico
Al terminar, crea automáticamente las carpetas de facturas organizadas por año y mes.
Uso diario
1. Agregar facturas nuevas
Copia tus PDFs a la carpeta Facturas pendientes/.
2. Procesar facturas
python3 procesar_facturas_pendientes.py
El sistema:
- Lee cada PDF y extrae RUT, fecha, montos e IVA
- Identifica a qué entidad pertenece
- Clasifica si es INGRESO o EGRESO según quién emitió
- Mueve el PDF a la carpeta correcta (
data/entidad/año/mes/)
- Registra todo en la base de datos
3. Ver el dashboard web
streamlit run dashboard.py
Abre en tu navegador: http://localhost:8501
Muestra KPIs, gráficos de ingresos/egresos, control de IVA y tablas detalladas.
4. Menú principal (alternativa CLI)
python3 main.py
Acceso a todas las funcionalidades: procesar, exportar, respaldos, boletas.
Exportar reportes
Desde el menú principal (python3 main.py), opción 5. Reportes:
Estructura de carpetas
Sistema Contabilidad/
│
├── 📄 main.py ← Menú principal CLI
├── 📄 procesar_facturas_pendientes.py ← Procesador de flujo (usar primero)
├── 📄 procesar_facturas.py ← Motor de extracción de PDFs
├── 📄 dashboard.py ← Dashboard web (Streamlit)
├── 📄 exportar_excel.py ← Generador de Excel
├── 📄 generar_reporte_pdf.py ← Generador de PDF
├── 📄 sistema_respaldo.py ← Backups automáticos
│
├── 📁 Facturas pendientes/ ← Aquí van los PDFs nuevos
│
├── 📁 data/
│ ├── nombre_persona/ ← Carpetas creadas al configurar
│ │ ├── 2025/
│ │ │ ├── Enero 2025/
│ │ │ └── ...
│ │ └── 2026/
│ └── nombre_empresa/
│ └── ...
│
├── 📁 config/
│ ├── config.json ← Configuración (creado en Paso 3)
│ └── database.json ← Base de datos de movimientos
│
├── 📁 output/reportes/ ← Excel y PDFs generados
├── 📁 backups/ ← Respaldos automáticos de la BD
└── 📁 logs/ ← Registros del sistema
Lógica de clasificación INGRESO / EGRESO
| Caso | Resultado |
|---|
| Boleta de Honorarios | Siempre INGRESO |
| Tu RUT aparece primero en el PDF | INGRESO (eres el emisor/vendedor) |
| Tu RUT aparece segundo en el PDF | EGRESO (eres el receptor/comprador) |
Tasas de impuestos 2026 (configuradas por defecto)
| Impuesto | Tasa |
|---|
| IVA | 19% |
| Retención Honorarios | 15,25% |
| PPM General | 0,25% |
| Impuesto Primera Categoría | 27% |
Puedes modificarlas en config/config.json o al ejecutar el Paso 3.
Detección de duplicados
Cada PDF se identifica con una huella SHA-256 de su contenido binario. Si intentas procesar una factura ya registrada, el sistema la detecta y la omite automáticamente.
Respaldos
El sistema crea respaldos automáticos de database.json después de cada procesamiento. Se guardan en backups/ y se mantienen los últimos 30.
Para gestionar respaldos manualmente: python3 main.py → opción 6.
Solución de problemas
Error: No module named '...'
pip3 install -r requirements.txt
Error: No se encontró el archivo de configuración
python3 configuracion_inicial.py
El PDF no se procesa correctamente
- Verifica que sea un PDF de texto (no una imagen escaneada)
- El sistema funciona con facturas electrónicas SII en formato estándar
El dashboard no abre
- Asegúrate de haber instalado las dependencias (Paso 2)
- Prueba con
streamlit run dashboard.py --server.port 8502