From 7906856fb488dae32d5bb176bc1dc0aa70e142ab Mon Sep 17 00:00:00 2001 From: raven Date: Mon, 22 Dec 2025 22:54:41 -0300 Subject: [PATCH] Add Readme --- README.md | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..2960c68 --- /dev/null +++ b/README.md @@ -0,0 +1,96 @@ +# 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`).