Riconoscimento ottico dei caratteri (OCR)

Il riconoscimento ottico dei caratteri (OCR) è il processo di riconoscimento dei caratteri dalle immagini utilizzando tecniche di visione artificiale e apprendimento automatico. Questa app di riferimento dimostra come utilizzare TensorFlow Lite per eseguire l'OCR. Utilizza una combinazione di modello di rilevamento del testo e modello di riconoscimento del testo come pipeline OCR per riconoscere i caratteri di testo.

Iniziare

Se non conosci TensorFlow Lite e lavori con Android, ti consigliamo di esplorare la seguente applicazione di esempio che può aiutarti a iniziare.

Esempio Android

Se utilizzi una piattaforma diversa da Android, o hai già familiarità con le API di TensorFlow Lite , puoi scaricare i modelli da TF Hub .

Come funziona

Le attività OCR sono spesso suddivise in 2 fasi. Innanzitutto, utilizziamo un modello di rilevamento del testo per rilevare i riquadri di delimitazione attorno ai possibili testi. In secondo luogo, inseriamo i riquadri di delimitazione elaborati in un modello di riconoscimento del testo per determinare caratteri specifici all'interno dei riquadri di delimitazione (dobbiamo anche eseguire la soppressione non massimale, la trasformazione della prospettiva e così via prima del riconoscimento del testo). Nel nostro caso, entrambi i modelli provengono da TensorFlow Hub e sono modelli quantizzati FP16.

Benchmark delle prestazioni

I numeri dei benchmark delle prestazioni vengono generati con lo strumento qui descritto.

Nome del modello Dimensioni del modello Dispositivo processore GPU
Rilevamento del testo 45,9 MB Pixel 4 (Android 10) 181,93 ms* 89,77 ms*
Riconoscimento del testo 16,8 MB Pixel 4 (Android 10) 338,33 ms* N / A**

* 4 fili utilizzati.

** questo modello non può utilizzare il delegato GPU poiché sono necessarie le operazioni TensorFlow per eseguirlo

Ingressi

Il modello di rilevamento del testo accetta un tensore float32 4-D di (1, 320, 320, 3) come input.

Il modello di riconoscimento del testo accetta un tensore float32 4-D di (1, 31, 200, 1) come input.

Uscite

Il modello di rilevamento del testo restituisce un tensore di forma float32 4-D (1, 80, 80, 5) come riquadro di delimitazione e un tensore di forma float32 4-D (1,80, 80, 5) come punteggio di rilevamento.

Il modello di riconoscimento del testo restituisce un tensore di forma 2-D float32 (1, 48) come indici di mappatura nell'elenco alfabetico '0123456789abcdefghijklmnopqrstuvwxyz'

Limitazioni

  • L'attuale modello di riconoscimento del testo viene addestrato utilizzando dati sintetici con lettere e numeri inglesi, quindi è supportato solo l'inglese.

  • I modelli non sono sufficientemente generali per l'OCR in natura (ad esempio, immagini casuali scattate dalla fotocamera di uno smartphone in condizioni di scarsa illuminazione).

Quindi abbiamo scelto 3 loghi di prodotti Google solo per dimostrare come eseguire l'OCR con TensorFlow Lite. Se stai cercando un prodotto OCR di livello produttivo pronto all'uso, dovresti prendere in considerazione Google ML Kit . Il kit ML, che utilizza TFLite, dovrebbe essere sufficiente per la maggior parte dei casi di utilizzo dell'OCR, ma ci sono alcuni casi in cui potresti voler creare la tua soluzione OCR con TFLite. Alcuni esempi sono:

  • Hai i tuoi modelli TFLite di rilevamento/riconoscimento del testo che desideri utilizzare
  • Hai requisiti aziendali speciali (ad esempio, riconoscere testi capovolti) e devi personalizzare la pipeline OCR
  • Desideri supportare le lingue non coperte da ML Kit
  • I dispositivi dell'utente target non hanno necessariamente i servizi Google Play installati

Riferimenti