# ControlPatente AI - Sistema de Reconocimiento de Patentes (ALPR) Sistema de seguridad y control de acceso vehicular basado en Inteligencia Artificial. Utiliza reconocimiento de patentes (ALPR/LPR) en tiempo real mediante cámaras web, procesando la información con Docker, Node.js, Python y React. ## 🚀 Características - **Detección en Tiempo Real:** Identificación instantánea de patentes vehiculares usando EasyOCR/OpenCV. - **Validación de Acceso:** Comparación automática con base de datos de vehículos registrados (Permitidos/Denegados). - **Video Streaming:** Visualización en vivo de la cámara en el dashboard. - **Dashboard Interactivo:** Interfaz web moderna para monitoreo y gestión de patentes. - **Filtro Inteligente:** Optimizado para patentes chilenas (Formatos: AABB12 y BBBB12). ## 🛠 Arquitectura El proyecto utiliza una arquitectura de microservicios con Docker: - **Frontend:** React + Vite + TailwindCSS (Puerto 5173) - **Backend:** Node.js + Express + Socket.IO (Puerto 3000) - **Database:** PostgreSQL (Puerto 5432) - **ALPR Service:** Python + Flask + OpenCV + EasyOCR (Puerto 5001) ## 📋 Prerrequisitos - [Docker Desktop](https://www.docker.com/products/docker-desktop/) instalado y corriendo. - (Solo para macOS/Desarrollo Local) Python 3.9+ instalado en tu máquina. ## 🔧 Instalación y Puesta en Marcha ### 1. Clonar el Repositorio ```bash git clone https://gitea.v1ru5.cl/raven/ControlPatente.git cd ControlPatente ``` ### 2. Ejecutar con Docker Compose Para levantar la base de datos, el backend y el frontend: ```bash docker compose up -d ``` > **Nota:** La primera vez puede tardar unos minutos en construir las imágenes. ### 3. Configuración de la Cámara (Importante) Debido a restricciones de seguridad en Docker (especialmente en macOS), el acceso directo a la webcam USB desde el contenedor suele fallar. Se recomienda ejecutar el servicio de reconocimiento (**ALPR**) localmente. #### Opción A: Ejecución Híbrida (Recomendada para macOS) Mantén los contenedores de Docker corriendo (Backend, DB, Frontend) y ejecuta el script de Python en tu terminal local: 1. Ve a la carpeta del servicio ALPR: ```bash cd alpr-service ``` 2. Instala las dependencias: ```bash pip3 install -r requirements.txt pip3 install flask flask-cors ``` 3. Ejecuta el servicio: ```bash # Asegura que el backend sea alcanzable en localhost export BACKEND_URL="http://localhost:3000" python3 main.py ``` El script pedirá permisos de cámara. Una vez otorgados, verás el video en el Dashboard. #### Opción B: Ejecución Full Docker (Linux / Raspberry Pi) En sistemas Linux nativos donde se pueden mapear dispositivos (ej. `/dev/video0`), simplemente descomenta la sección `devices` en `docker-compose.yml` y todo correrá dentro de Docker. ## 🖥 Uso del Sistema 1. **Dashboard:** Abre tu navegador en [http://localhost:5173](http://localhost:5173). 2. **Registro:** Haz clic en **"+ Register New Plate"** para agregar vehículos autorizados. 3. **Monitoreo:** Apunta tu cámara a una patente. * Si está registrada: Verás estado **GRANTED** (Verde). * Si no existe: Verás estado **UNKNOWN/DENIED** (Rojo/Gris). ## 🐛 Solución de Problemas Comunes **1. Error "Table public.Plate does not exist" (Error 500)** Si al agregar una patente da error 500, significa que la base de datos no se inicializó. Ejecuta: ```bash docker compose exec backend npx prisma migrate dev --name init ``` **2. La cámara no abre en macOS** Asegúrate de ejecutar `main.py` desde una terminal con permisos (VS Code o Terminal.app). Revisa en *Preferencias del Sistema > Privacidad y Seguridad > Cámara*. **3. "Network Error" en el Dashboard** Verifica que el Backend esté corriendo (`docker compose ps`) y que no haya errores en los logs (`docker compose logs backend`).