Script automatizado para extraer movimientos bancarios de imágenes (capturas de pantalla) y exportarlos a Excel. Soporta múltiples monedas con conversión automática.
- 🖼️ OCR automatizado - Extrae texto de imágenes PNG
- 💱 Multi-moneda - Maneja pesos chilenos (CLP) y dólares (USD)
- 🔄 Conversión automática - USD → CLP con tasa configurable
- 📊 Export a Excel - Genera archivos
.xlsxlistos para usar - 🧹 Limpieza inteligente - Remueve códigos y caracteres no deseados
- 📅 Ordenamiento cronológico - CLP primero, USD después para auditoría
- 🔢 Formato chileno - Montos enteros, sin decimales
- 🏷️ Categorización automática - Asigna categorías basadas en patrones configurables
- Python 3.8 o superior
- Tesseract OCR instalado
git clone https://github.com/tu-usuario/bank-ocr-processor.git
cd bank-ocr-processor# macOS
brew install tesseract
# Ubuntu/Debian
sudo apt install tesseract-ocr
# Windows
# Descargar desde: https://github.com/UB-Mannheim/tesseract/wikipython3 -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
pip install -r requirements.txtcp exchange_rates.properties.template exchange_rates.properties
# Editar exchange_rates.properties con la tasa del díacp categorization_rules.properties.template categorization_rules.properties
# Editar categorization_rules.properties para personalizar las reglas- Colocar imágenes en la carpeta
to_process/ - Ejecutar el procesador:
python3 procesar_csv.py
- Revisar Excel generado en
processed/
bank-ocr-processor/
├── to_process/ # Imágenes PNG a procesar
├── processed/ # Archivos Excel generados
├── csv_processor.py # Procesador principal
├── procesar_csv.py # Script de uso simple
├── exchange_rates.properties # Configuración de tasas (crear desde template)
├── exchange_rates.properties.template # Plantilla de configuración
├── categorization_rules.properties # Reglas de categorización (crear desde template)
├── categorization_rules.properties.template # Plantilla de reglas
├── requirements.txt # Dependencias Python
├── CATEGORIZACION.md # Documentación de categorización
└── README.md # Este archivo
- Cada imagen = un día de movimientos
- Primera línea: fecha completa (dd/mm/yyyy) + primer movimiento
- Siguientes líneas: solo movimientos del mismo día
- Monedas soportadas:
- Pesos chilenos:
$1.500o-$1.500 - Dólares:
USD 15.99o-USD 15.99
- Pesos chilenos:
| Columna | Descripción | Ejemplo |
|---|---|---|
descripcion |
Detalle limpio del movimiento | JUMBO ONECLICK |
monto |
Valor en CLP (entero) | 15400 |
dia |
Día del mes | 23 |
forma_de_pago |
Forma de pago (fijo) | Master (Santander Mariabe) |
categoria |
Categoría automática | Medicinas |
- Positivo: Gastos/Cargos
- Negativo: Ingresos/Abonos
Editar exchange_rates.properties:
USD_TO_CLP=950Editar categorization_rules.properties:
SB=Medicinas
UBER=Transporte
LIDER=Comida
ENEL=ServiciosVer CATEGORIZACION.md para documentación completa de esta funcionalidad.
- Los montos se convierten a enteros (formato chileno)
- Conversión USD → CLP con redondeo hacia arriba
- Ejemplo: USD 10.50 × 950 = 9,975 CLP
- OCR: Extrae texto de cada imagen
- Parsing: Identifica fechas, descripciones y montos
- Limpieza: Remueve códigos y caracteres no deseados
- Conversión: USD → CLP según tasa configurada
- Ordenamiento: CLP primero (cronológico), USD después (cronológico)
- Export: Genera Excel con formato estándar
ExcelBankProcessor: Clase principal del procesadorextract_text_from_image(): OCR con Tesseractparse_movements_from_text(): Extracción de movimientosextract_amount_and_description(): Parsing de montos y descripcionessave_to_excel(): Generación de archivo Excel
- Fork el proyecto
- Crear branch feature (
git checkout -b feature/nueva-funcionalidad) - Commit cambios (
git commit -am 'Agregar nueva funcionalidad') - Push al branch (
git push origin feature/nueva-funcionalidad) - Crear Pull Request
MIT License - ver LICENSE para detalles.
- Tesseract OCR - Motor de OCR
- OpenPyXL - Manejo de archivos Excel
- Pandas - Procesamiento de datos