Reconocimiento óptico de caracteres (OCR)

El reconocimiento óptico de caracteres (OCR, por sus siglas en inglés) es el proceso de reconocimiento de caracteres de imágenes utilizando técnicas de visión por computadora y aprendizaje automático. Esta aplicación de referencia demuestra cómo usar TensorFlow Lite para hacer OCR. Utiliza una combinación de modelo de detección de texto y un modelo de reconocimiento de texto como canalización de OCR para reconocer caracteres de texto.

Empezar

Si es nuevo en TensorFlow Lite y está trabajando con Android, le recomendamos explorar la siguiente aplicación de ejemplo que puede ayudarlo a comenzar.

ejemplo de Android

Si está utilizando una plataforma que no sea Android, o si ya está familiarizado con las API de TensorFlow Lite , puede descargar los modelos desde TF Hub .

Cómo funciona

Las tareas de OCR a menudo se dividen en 2 etapas. Primero, usamos un modelo de detección de texto para detectar los cuadros delimitadores alrededor de posibles textos. En segundo lugar, alimentamos los cuadros delimitadores procesados ​​en un modelo de reconocimiento de texto para determinar los caracteres específicos dentro de los cuadros delimitadores (también debemos realizar la supresión no máxima, la transformación de perspectiva, etc. antes del reconocimiento de texto). En nuestro caso, ambos modelos son de TensorFlow Hub y son modelos cuantificados FP16.

Puntos de referencia de rendimiento

Los números de referencia de rendimiento se generan con la herramienta que se describe aquí .

Nombre del modelo Tamaño del modelo Dispositivo UPC GPU
Detección de texto 45.9 MB Píxel 4 (Android 10) 181,93ms* 89,77ms*
Reconocimiento de texto 16.8 MB Píxel 4 (Android 10) 338,33ms* N / A**

* 4 hilos utilizados.

** este modelo no pudo usar el delegado de GPU ya que necesitamos operaciones de TensorFlow para ejecutarlo

Entradas

El modelo de detección de texto acepta un tensor 4-D float32 de (1, 320, 320, 3) como entrada.

El modelo de reconocimiento de texto acepta un tensor 4-D float32 de (1, 31, 200, 1) como entrada.

Salidas

El modelo de detección de texto devuelve un tensor de forma 4-D float32 (1, 80, 80, 5) como cuadro delimitador y un tensor de forma 4-D float32 (1,80, 80, 5) como puntuación de detección.

El modelo de reconocimiento de texto devuelve un tensor 2-D float32 de forma (1, 48) como índices de asignación a la lista alfabética '0123456789abcdefghijklmnopqrstuvwxyz'

Limitaciones

  • El modelo de reconocimiento de texto actual se entrena con datos sintéticos con letras y números en inglés, por lo que solo se admite el inglés.

  • Los modelos no son lo suficientemente generales para OCR en la naturaleza (por ejemplo, imágenes aleatorias tomadas por la cámara de un teléfono inteligente en condiciones de poca luz).

Por eso, hemos elegido 3 logotipos de productos de Google solo para demostrar cómo hacer OCR con TensorFlow Lite. Si está buscando un producto de OCR de grado de producción listo para usar, debe considerar Google ML Kit . ML Kit, que usa TFLite debajo, debería ser suficiente para la mayoría de los casos de uso de OCR, pero hay algunos casos en los que es posible que desee crear su propia solución de OCR con TFLite. Algunos ejemplos son:

  • Tiene sus propios modelos TFLite de detección/reconocimiento de texto que le gustaría usar
  • Tiene requisitos comerciales especiales (es decir, reconocer textos que están al revés) y necesita personalizar la canalización de OCR
  • Quiere admitir idiomas que no están cubiertos por ML Kit
  • Los dispositivos de los usuarios de destino no necesariamente tienen instalados los servicios de Google Play.

Referencias