Lectura de patentes (ALPR)

Yrix Park identifica el vehículo que entra o sale sin que el operador tipee la chapa. La lectura es tecnología de Yrix y forma parte del producto: no es un motor de otro proveedor enchufado a la caja.

Esta página describe el recorrido técnico. No publica un porcentaje de acierto ni datos de una playa: la confianza se ve en cada detección, y el resultado depende de cómo esté instalada la cámara.

Cómo funciona

  1. Una cámara IP toma video del carril. Hay una cámara por sentido: la de entrada no se comparte con la de salida.
  2. El video se procesa en el predio. No se sube el flujo crudo.
  3. El motor (ALPRParkingEngine, Python) detecta el vehículo y lee la patente. En el burst queda reservado un cuadro entero anterior, más chico, para que el frente pueda ganar por confianza. Si la patente es fiable, la foto de evidencia es la de esa lectura. La imagen que guarda la API es el cuadro del motor a su resolución de captura: no se achica a 640×480.
  4. La detección sale del borde por MQTT. En la API la recibe DetectionMqttHandler. El aviso al panel y a la app es el evento SignalR NewDetection. Los topics de ese canal están en docs/architecture/jetson-resilience.md del repo Parking.API.
  5. El panel web y la app de operador la muestran sin recargar.

Si se corta internet en la playa, las lecturas no se descartan: quedan en el controlador y se envían al volver la red. Las fotos locales de ese equipo son evidencia transitoria y se borran solas a los 7 días, o antes si el disco se llena. La ocupación y el cobro viven en Yrix Park, no en el disco del controlador.

Flujo de la lectura: cámara, borde, MQTT, API y panel

Cámaras

La causa más común de una mala lectura es la instalación, no el modelo. La guía de encuadre del sitio es Compatibilidad e instalación de cámaras. Lo que no se negocia:

  • Protocolo RTSP. ONVIF Profile S sirve para descubrir la cámara.
  • Resolución de 2 MP (1080p) o más.
  • Obturador manual de 1/1000 s o más rápido, para que la patente en movimiento no salga corrida. De noche el automático suele bajar a 1/30–1/60 s.
  • WDR óptico de al menos 120 dB e infrarrojo para operar de noche.
  • En el fotograma del punto de captura, la patente tiene que medir entre 120 y 250 píxeles de ancho.
  • Ángulo horizontal y vertical de 30° o menos. Altura de referencia del lente: 1,60 m a 1,80 m.

Esos parámetros se configuran en la web de la cámara. El equipo de borde no los escribe por red.

La misma cámara de ingreso, además de la patente, recorta el vehículo (VehicleImage) para la categoría tarifaria (auto, camioneta, bus, moto). Si el recorte no sirve, la estadía no entra al conjunto de muestras y la tarifa cae en la regla que ya documenta la guía de cámaras.

Equipo de borde (Jetson)

El motor corre en un equipo de procesamiento instalado en la playa. La referencia de ingeniería de ese equipo es una NVIDIA Jetson: ahí se hace la detección del vehículo y el OCR de la patente.

Yrix no diseña ni vende ese hardware. En la descripción pública es un equipo estándar de terceros (por ejemplo un mini PC), con un consumo de referencia de 15 W y capacidad publicada de hasta 4 cámaras IP.

El heartbeat también entra por MQTT: lo recibe HeartbeatMqttHandler. DeviceMonitorService mira el último. En el servicio y en Parking.API/appsettings.json el default de OfflineTimeoutSeconds es 45 y el de PollIntervalSeconds es 5: 45 segundos sin heartbeat lo marcan offline, y el servicio revisa cada 5 segundos. El cambio de estado llega al panel como DeviceStatusChanged. En la app, el mismo evento actualiza el indicador del equipo.

Precisión, sin una cifra global

No hay en esta documentación un porcentaje único de acierto. Lo que el operador ve en cada lectura:

  • La columna de confianza es el promedio de esa detección.
  • En la grilla, una letra en tinta baja es una posición que el motor leyó con poca confianza. Al pasar el mouse se ve el porcentaje de esa letra.
  • En el detalle, cada letra se muestra grande y el blanco de la letra es esa confianza (100 % es blanco pleno). El número queda debajo.
  • Al emparejar entrada y salida, una letra en rojo en la patente de salida significa que difiere de la entrada en esa posición y que el motor la leyó con confianza alta. Es un desacuerdo leído con seguridad. No cambia por sí solo la regla de cierre.

Si la patente no se lee (sucia, tapada, sin chapa), el producto puede seguir el vehículo por imagen para vincular el ingreso con el egreso. El detalle interno de ese matching no entra en esta página.

Formatos argentinos

La lectura está pensada para las chapas de auto que se usan en Argentina. Los ejemplos de abajo son el patrón, no vehículos de un cliente.

PatrónFormaUso
ABC123Tres letras y tres númerosFormato anterior de automóvil
AB123CDDos letras, tres números y dos letrasAutomóvil Mercosur

En abonados y en el resto del sistema la patente se guarda en mayúsculas, sin guiones ni espacios. ab 123 cd y AB123CD son la misma chapa guardada.

Dónde se ve

En Detecciones (panel y pestaña de la app en modo Cabina) cada tarjeta o fila trae hora, patente, confianza, cámara y si fue entrada o salida. Hace falta el permiso Cameras.GetAll. Sin SignalR, la app reconcilia el feed por HTTP unos 30 segundos.

Esa lectura es la que abre o cierra la estadía. El circuito de ocupación, caja y comprobante está en Gestión del estacionamiento. El recorrido entre procesos está en Arquitectura e integración.

Lectura de patentes (ALPR) · Yrix