107 lines
4.1 KiB
Markdown
107 lines
4.1 KiB
Markdown
# 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 en Windows (Híbrida)
|
|
|
|
1. Asegúrate de tener **Docker Desktop** corriendo.
|
|
2. Abre la carpeta `alpr-service`.
|
|
3. Haz doble clic en el archivo `run_windows.bat`.
|
|
* Este script instalará las dependencias automáticamente.
|
|
* Configurará las variables de entorno.
|
|
* Iniciará el reconocimiento de patentes.
|
|
|
|
#### Opción C: 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`).
|