Files
ControlPatente/README.md
2025-12-22 22:54:41 -03:00

3.8 KiB

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 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

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:

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:
    cd alpr-service
    
  2. Instala las dependencias:
    pip3 install -r requirements.txt
    pip3 install flask flask-cors
    
  3. Ejecuta el servicio:
    # 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.
  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:

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).