Riconoscimento Targhe a Tremila Frame al Secondo
Quando si costruisce una pipeline di controllo automatico per un parcheggio o un'autostrada, il riconoscimento delle targhe incontra rapidamente un muro di prestazioni. Gli approcci standard con Tesseract o EasyOCR pesante consumano decine di millisecondi per rettangolo di targa ritagliato. Con più telecamere e auto in transito, il server inizia a soffocare o richiede una costosa farm di GPU.

Recentemente ho scoperto il repository fast-plate-ocr dello sviluppatore ankandrew. Il progetto risolve esattamente un compito ristretto, ma lo fa in modo rapido. Prende una targa già ritagliata da un detector e legge i caratteri in frazioni di millisecondi.
Perché una Libreria Separata per l'OCR delle Targhe
Nella visione artificiale per l'ALPR (Riconoscimento Automatico delle Targhe), la pipeline è solitamente suddivisa in due passaggi:
- Il detector trova l'auto e ritaglia la targa (ad esempio, tramite YOLO).
- Il modello di riconoscimento del testo legge il numero effettivo della targa.
Gli OCR universali per il testo sono addestrati su libri, ricevute, cartelli e documenti. Per questo motivo, le architetture finiscono per essere ingombranti e commettono regolarmente errori su targhe con caratteri non standard o angoli complessi.
La libreria fast-plate-ocr utilizza modelli compatti basati sull'architettura CCT (Compact Convolutional Transformer). Queste reti sono specificamente progettate per riconoscere immagini strutturate piccole senza parametri ridondanti. Grazie all'architettura leggera e all'esecuzione tramite ONNX Runtime, la latenza su una singola immagine su RTX 3090 varia da 0,32 a 0,67 ms. Tradotto in throughput, questo corrisponde a 14.000-3.000 targhe al secondo su una singola scheda.
Cosa C'è Sotto il Cofano e Come Funziona
Il repository include un model zoo pronto all'uso, script di training e strumenti di esportazione.
Modelli CCT Pronti all'Uso
L'autore ha preparato diverse versioni del modello:
cct-xs-v1-global-modelecct-xs-v2-global-model— le reti più piccole con latenza di 0,3-0,4 ms.cct-s-v1-global-modelecct-s-v2-global-model— varianti leggermente più profonde in cui la priorità è data all'accuratezza su angoli di visione complessi.
Le seconde versioni (v2) aggiungono una testa separata per classificare la regione o il paese della targa. Se la telecamera cattura traffico internazionale, il modello restituisce immediatamente sia il testo che il paese di origine della targa.
Selezione Flessibile del Runtime
Un punto dolente comune quando si distribuiscono reti neurali è essere legati a framework pesanti. Qui, l'inferenza è separata dal training. La libreria stessa si installa senza dipendenze pesanti e il backend ONNX Runtime viene selezionato per l'hardware target tramite pip extras:
# Для обычного процессора
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]
Questo è comodo se il progetto deve essere integrato in un container Docker leggero o eseguito su un microcomputer a un cancello.
Quick Start nel Codice
Lavorare con la libreria si riduce a un paio di righe. Prima, inizializza il recognizer passando il nome del modello desiderato dall'hub, poi fornisci il percorso a un'immagine o a un array NumPy.
from fast_plate_ocr import LicensePlateRecognizer
# Загружаем готовую предобученную модель
recognizer = LicensePlateRecognizer('cct-s-v2-global-model')
# Распознаем текст на вырезанной плашке
result = recognizer.run('test_plate.png')
print(result)
Se il modello supporta il rilevamento della regione, puoi richiedere un punteggio di confidenza:
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}")
C'è anche un metodo integrato per fare benchmark delle prestazioni sulla tua macchina:
recognizer.benchmark()
Training e Fine-Tuning per le Tue Targhe
Sebbene i modelli globali gestiscano ragionevolmente bene i formati standard, i progetti nel mondo reale spesso incontrano targhe specifiche: militari, diplomatiche, a due righe o formati regionali di un particolare paese.
Il training utilizza Keras 3, quindi puoi addestrare la rete con qualsiasi backend familiare — PyTorch, TensorFlow o JAX. Per installare le dipendenze per il training, basta eseguire:
pip install fast-plate-ocr[train]
Il repository contiene un Jupyter Notebook pronto all'uso (examples/tutorial_fine_tune_plate_model.ipynb) che guida attraverso il processo passo dopo passo:
- Preparazione di un dataset di ritagli etichettati e un dizionario di caratteri consentiti.
- Configurazione delle augmentation tramite un file YAML.
- Fine-tuning del modello sui tuoi dati.
- Esportazione dei pesi in ONNX, TFLite o CoreML.
La possibilità di esportare una rete addestrata in TFLite o CoreML elimina il problema se hai bisogno di integrare il riconoscimento direttamente in un'app mobile per ispettori o addetti ai parcheggi.
Cosa Tenere a Mente
Il progetto è focalizzato solo sul passaggio dell'OCR. Non cerca un'auto nel frame e non corregge la prospettiva della targa se è stata ripresa a un angolo acuto.
Se fornisci un intero frame con l'intera strada, il modello emetterà spazzatura. Un detector (YOLOv8, RT-DETR o qualsiasi altro) deve sempre precedere fast-plate-ocr per trovare le coordinate della targa e ritagliare l'immagine. Per risultati ottimali con una telecamera fortemente inclinata, aggiungi una trasformazione prospettica prima di passare all'OCR.
Per Chi È Questo Progetto
La libreria piacerà a chi costruisce sistemi reali di video analytics e combatte per la latenza in millisecondi:
- Sistemi di gestione parcheggi e barriere automatiche basati su mini-PC.
- Complessi di controllo peso e dimensioni e monitoraggio del traffico.
- App mobili per l'applicazione del parcheggio a pagamento.
Il progetto è open-source, il codice è chiaro e le dipendenze sono minime. Se sei stanco di combattere la lentezza delle librerie OCR universali sui compiti di trasporto, fast-plate-ocr farà risparmiare sia risorse del server che tempo di sviluppo.
Progetti correlati