Reconocimiento de Matrículas a Tres Mil Fotogramas por Segundo
Al construir un pipeline de control automático para un estacionamiento o autopista, el reconocimiento de matrículas rápidamente alcanza un muro de rendimiento. Los enfoques estándar con Tesseract o EasyOCR pesado consumen docenas de milisegundos por rectángulo de matrícula recortado. Con múltiples cámaras y vehículos fluyendo, el servidor comienza a asfixiarse o requiere una costosa granja de GPUs.

最近发现了开发者 ankandrew 的仓库 fast-plate-ocr。该项目解决了一个非常狭窄的任务,但做得很快。它接收检测器已经裁剪好的车牌,然后在几分之一毫秒内读取字符。
Por qué una biblioteca separada para OCR de matrículas
En visión por computadora para ALPR (Reconocimiento Automático de Matrículas), el pipeline generalmente se divide en dos pasos:
- El detector encuentra el vehículo y recorta la matrícula (por ejemplo, mediante YOLO).
- El modelo de reconocimiento de texto lee el número real de la matrícula.
Los OCR universales de texto se entrenan con libros, recibos, señales y documentos. Por esto, las arquitecturas terminan siendo voluminosas y regularmente cometen errores en matrículas con fuentes no estándar o ángulos complejos.
La biblioteca fast-plate-ocr utiliza modelos compactos basados en la arquitectura CCT (Compact Convolutional Transformer). Estas redes están específicamente diseñadas para reconocer imágenes pequeñas y estructuradas sin parámetros redundantes. Gracias a la arquitectura ligera y la ejecución mediante ONNX Runtime, la latencia en una sola imagen en la RTX 3090 oscila entre 0.32 y 0.67 ms. Traducido a rendimiento, esto es de 14,000 a 3,000 matrículas por segundo en una sola tarjeta.
Qué hay bajo el capó y cómo funciona
El repositorio incluye un zoo de modelos listo para usar, scripts de entrenamiento y herramientas de exportación.
Modelos CCT listos para usar
El autor ha preparado varias versiones de modelos:
cct-xs-v1-global-modelycct-xs-v2-global-model— las redes más pequeñas con latencia de 0.3-0.4 ms.cct-s-v1-global-modelycct-s-v2-global-model— variantes ligeramente más profundas donde se prioriza la precisión en ángulos de visión complejos.
Las segundas versiones (v2) añaden una cabeza separada para clasificar la región o país de la matrícula. Si la cámara captura tráfico internacional, el modelo devuelve inmediatamente tanto el texto como el país de origen de la matrícula.
Selección flexible de runtime
Un punto doloroso común al desplegar redes neuronales es estar atado a frameworks pesados. Aquí, la inferencia está separada del entrenamiento. La biblioteca en sí se instala sin dependencias pesadas, y el backend de ONNX Runtime se selecciona para el hardware objetivo mediante extras de pip:
# Для обычного процессора
pip install fast-plate-ocr[onnx]
# Для видеокарт NVIDIA
pip install fast-plate-ocr[onnx-gpu]
# Оптимизация под процессоры Intel
pip install fast-plate-ocr[onnx-openvino]
# Поддержка DirectML для Windows
pip install fast-plate-ocr[onnx-directml]
# Чипсеты Qualcomm
pip install fast-plate-ocr[onnx-qnn]
Esto es conveniente si el proyecto necesita construirse en un contenedor Docker ligero o ejecutarse en una microcomputadora en una puerta.
Inicio rápido en código
Trabajar con la biblioteca se reduce a un par de líneas. Primero, inicializa el reconocedor pasando el nombre del modelo deseado del hub, luego proporciona la ruta a una imagen o un array de NumPy.
from fast_plate_ocr import LicensePlateRecognizer
# Загружаем готовую предобученную модель
recognizer = LicensePlateRecognizer('cct-s-v2-global-model')
# Распознаем текст на вырезанной плашке
result = recognizer.run('test_plate.png')
print(result)
Si el modelo soporta detección de región, puedes solicitar una puntuación de confianza:
from fast_plate_ocr import LicensePlateRecognizer
recognizer = LicensePlateRecognizer('cct-s-v2-global-model')
prediction = recognizer.run('test_plate.png', return_confidence=True)[0]
print(f"Номер: {prediction.text}")
print(f"Регион: {prediction.region}")
print(f"Уверенность в регионе: {prediction.region_prob:.2f}")
También existe un método integrado para evaluar el rendimiento en tu máquina:
recognizer.benchmark()
Entrenamiento y ajuste fino para tus propias matrículas
Aunque los modelos globales manejan formatos estándar razonablemente bien, los proyectos del mundo real a menudo se encuentran con matrículas específicas: militares, diplomáticas, de dos líneas o formatos regionales de un país particular.
El entrenamiento utiliza Keras 3, por lo que puedes entrenar la red con cualquier backend familiar — PyTorch, TensorFlow o JAX. Para instalar las dependencias de entrenamiento, simplemente ejecuta:
pip install fast-plate-ocr[train]
El repositorio contiene un Jupyter Notebook listo para usar (examples/tutorial_fine_tune_plate_model.ipynb) que guía paso a paso por el proceso:
- Preparación de un conjunto de datos de recortes etiquetados y un diccionario de caracteres permitidos.
- Configuración de aumentaciones mediante un archivo YAML.
- Ajuste fino del modelo con tus propios datos.
- Exportación de pesos a ONNX, TFLite o CoreML.
La capacidad de exportar una red entrenada a TFLite o CoreML elimina complicaciones si necesitas incrustar el reconocimiento directamente en una aplicación móvil para inspectores o asistentes de estacionamiento.
Qué tener en cuenta
El proyecto está enfocado solo en el paso de OCR. No busca un vehículo en el fotograma y no corrige la perspectiva de la matrícula si fue tomada en un ángulo agudo.
Si alimentas un fotograma completo con toda la calle, el modelo mostrará basura. Un detector (YOLOv8, RT-DETR o cualquier otro) siempre debe preceder a fast-plate-ocr para encontrar las coordenadas de la matrícula y recortar la imagen. Para mejores resultados con una cámara muy inclinada, añade transformación de perspectiva antes de alimentar el OCR.
Para quién es este proyecto
A la biblioteca le gustará a quienes construyen sistemas reales de análisis de video y luchan por la latencia en milisegundos:
- Sistemas de gestión de estacionamiento y barreras automáticas basados en mini-PCs.
- Complejos de control de peso y dimensión y monitoreo de tráfico.
- Aplicaciones móviles para la aplicación de estacionamiento pago.
El proyecto es de código abierto, el código es claro y las dependencias son mínimas. Si estás cansado de luchar contra la lentitud de las bibliotecas OCR universales en tareas de transporte, fast-plate-ocr ahorrará tanto recursos del servidor como tiempo de desarrollo.
Proyectos relacionados