Smart Parking AI - Sistema de Control de estacionamiento vehicular con Lectura de Placas con OpenCV y EasyOCR

🤖 IngeniaUp
| abril 01, 2026 | Lectura técnica

El Fin del Ticket de Papel y el Fraude en Estacionamientos

Administrar una playa de estacionamiento en una clínica, centro comercial o edificio corporativo es un desafío logístico y financiero. Los cuellos de botella en las horas pico, el gasto constante en rollos de papel térmico, los tickets perdidos y, lo más crítico, la "fuga de capital" (cobros no registrados por el personal), representan pérdidas de miles de soles mensuales.

En IngeniaUp, hemos desarrollado el sistema Smart Parking AI, una arquitectura de vanguardia que elimina el ticket físico. Utilizando cámaras IP estándar, nuestro sistema lee la placa del vehículo en milisegundos, procesa el ingreso y gestiona el cobro de forma automatizada.

A continuación, desglosamos la arquitectura técnica de este sistema, impulsado por JavaScript, OpenCV, Rembg y Deep Learning.


1. Arquitectura de Módulos del Sistema

Para garantizar que el sistema opere 24/7 sin caídas, utilizamos una arquitectura de microservicios dividida en 4 módulos principales:

Módulo 1: Edge Capture & IoT (Gateway Físico)

Este es el "ojo" y el "brazo" del sistema en la garita.

  • Función: Un microservicio en Node.js escucha el flujo RTSP de la cámara. Se activa únicamente cuando una espira magnética en el piso o un sensor ultrasónico detecta la masa del vehículo.

  • Control de Hardware: Una vez que el cerebro de IA valida la placa, este módulo envía un pulso eléctrico (vía relé/Raspberry Pi) para abrir la barrera en menos de 0.4 segundos.

Módulo 2: El Cerebro de Visión Artificial (El Pipeline de IA)

Aquí ocurre la magia matemática para garantizar un 99% de precisión, incluso de noche o con placas sucias.

  • OpenCV: Recibe el fotograma, lo convierte a escala de grises y aplica filtros morfológicos para resaltar los bordes metálicos de la placa, mitigando los faros deslumbrantes o la oscuridad.

  • Rembg (Background Removal): Nuestro "As bajo la manga". Antes de leer el texto, el sistema utiliza esta red neuronal para eliminar todo el ruido del fondo (el asfalto, las piernas de un peatón, la sombra de un árbol). Aísla la placa perfectamente.

  • EasyOCR: Una vez que la imagen está limpia y plana, este motor de Deep Learning extrae los caracteres alfanuméricos (ej. V4B-123) y los normaliza.

Módulo 3: Lógica de Negocio y Facturación (Backend JS)

Desarrollado en un entorno Node.js, este módulo gestiona la base de datos relacional (PostgreSQL/MySQL).

  • Motor de Reglas: Calcula el tiempo de estadía, aplica cortes de tarifas (fracción, hora, día) y gestiona cortesías (ej. "Primeros 15 min gratis").

  • API de Integración: Conecta con pasarelas de pago electrónico e impresoras fiscales para emitir la boleta electrónica (SUNAT) de forma automática.

Módulo 4: Dashboard Administrativo (Frontend React/Vue)

Es la interfaz web donde los administradores y operadores controlan todo el ecosistema. Consta de los siguientes formularios y pantallas:

  • Panel de Monitoreo en Vivo (Split-Screen): Muestra el video en tiempo real de la garita. Al lado, un feed que se actualiza instantáneamente con la foto recortada de la placa, el texto extraído, la fecha, hora de ingreso y estado de la barrera.

  • Formulario de Ingreso/Salida Manual (Contingencia): Un modal ultrarrápido por si una placa está cubierta de lodo. Campos: Placa, Tipo de Vehículo (Auto/Moto), Observaciones, y botón de Apertura Forzada (que deja un log de auditoría del usuario que lo presionó).

  • Formulario de Gestión de Abonados (VIP/Mensuales): Para administrar clientes fijos o trabajadores. Campos: DNI/RUC, Nombre Completo, Placa Principal, Placa Secundaria (Opcional), Plan Contratado, Fecha de Vencimiento. Si el abonado no ha pagado su mes, la barrera no se abre.

  • Formulario de Arqueo y Reportes: Filtros de búsqueda por rango de fechas para exportar a Excel. Muestra Ingresos Totales, Vehículos en Playa (Stock actual), Evasiones y Tickets Promedio.


2. Funciones "Killer" con Inteligencia Artificial

Leer placas es solo el comienzo. Nuestro sistema eleva la seguridad y la experiencia del usuario a niveles corporativos:

A. Doble Verificación Anti-Robo (Mismatching) Los delincuentes suelen cambiar las placas de un auto robado dentro de un estacionamiento para burlar la salida. Nuestro sistema incluye un modelo secundario de clasificación (YOLOv8) que detecta la Marca y el Color del vehículo al ingresar. La base de datos guarda: [Placa: V4B-123 | Toyota | Plata]. Si a la salida la placa coincide, pero el auto es un Kia Negro, la barrera se bloquea automáticamente y emite una alerta a seguridad.

B. Pago Frictionless vía Agente WhatsApp Adiós a las colas en los cajeros del sótano. Integramos nuestro Agente WhatsApp Retail. Al estacionar, el cliente escanea un código QR en la pared. El bot le saluda: "Hola, vi que ingresaste con la placa V4B-123 a las 10:00 AM". Cuando el cliente desea irse, pide la cuenta por WhatsApp, paga con Yape o Niubiz desde su celular, y al acercarse a la salida, la cámara valida el pago y abre la barrera sin detener el auto.

C. Detección Preventiva de Daños (Mitigación Legal) Para evitar clientes que exigen compensaciones por raspones que ya traían, las cámaras de ingreso capturan el auto en 360 grados. Un modelo de visión analiza la carrocería en tiempo real. Si detecta una abolladura, dibuja un bounding box y guarda la alerta. Si el cliente reclama a la salida, la administración saca el reporte de ingreso con la evidencia fotográfica del daño previo.


3. Fragmento de Arquitectura (Node.js + Python Pipeline)

Nuestra arquitectura híbrida permite que JavaScript maneje las peticiones web de alta concurrencia, mientras un microservicio en Python ejecuta la carga pesada de GPU.

JavaScript
// Microservicio Node.js (Controlador de Ingreso)
const axios = require('axios');
const db = require('./database');

async function procesarIngresoVehiculo(imageBuffer) {
    try {
        // 1. Enviar el frame al microservicio de Visión Artificial (Python: rembg + EasyOCR)
        const responseAI = await axios.post('http://localhost:5000/api/ocr/procesar-placa', {
            image: imageBuffer.toString('base64')
        });

        const placaExtraida = responseAI.data.placa;
        const confidencia = responseAI.data.confidence;

        if (confidencia > 0.85) {
            // 2. Verificar si es Abonado Activo
            const esAbonado = await db.verificarAbonado(placaExtraida);
            
            if (esAbonado && esAbonado.estado === 'ACTIVO') {
                abrirBarreraIoT();
                return { status: 'OK', tipo: 'ABONADO', placa: placaExtraida };
            }

            // 3. Registrar nuevo ingreso de visitante
            await db.registrarIngreso(placaExtraida, new Date());
            abrirBarreraIoT();
            return { status: 'OK', tipo: 'VISITANTE', mensaje: 'Bienvenido' };
        }
    } catch (error) {
        console.error("Error en Pipeline de Visión: ", error);
        return { status: 'ERROR', mensaje: 'Requiere revisión manual' };
    }
}

El Retorno de Inversión (ROI) es Inmediato

Implementar el Smart Parking AI de IngeniaUp no es un gasto, es una inyección de liquidez. Al eliminar la pérdida de tickets, el costo del papel, los cobros "por lo bajo" y reducir la necesidad de personal de cobranza en horas de baja afluencia, el sistema se paga a sí mismo en los primeros meses de operación.

Si operas una clínica, centro comercial o estacionamiento privado en Arequipa o el sur del Perú, es hora de llevar tu seguridad y recaudación al siguiente nivel.