Reconocimiento óptico de caracteres (OCR)

El reconocimiento óptico de caracteres (OCR) es el proceso de reconocer caracteres a partir de imágenes utilizando técnicas de visión por computadora y aprendizaje automático. Esta aplicación de referencia muestra cómo usar TensorFlow Lite para realizar OCR. Utiliza una combinación de modelo de detección de texto y modelo de reconocimiento de texto como canal 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 ayudarle a comenzar.

Ejemplo de Android

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

Cómo funciona

Las tareas de OCR suelen dividirse en dos etapas. Primero, utilizamos un modelo de detección de texto para detectar los cuadros delimitadores alrededor de posibles textos. En segundo lugar, alimentamos cuadros delimitadores procesados ​​en un modelo de reconocimiento de texto para determinar caracteres específicos dentro de los cuadros delimitadores (también necesitamos realizar supresión no máxima, 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,93 ms* 89,77 ms*
Reconocimiento de texto 16,8 MB Píxel 4 (Android 10) 338,33 ms* N / A**

*Se utilizan 4 hilos.

** 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 float32 4-D de (1, 320, 320, 3) como entrada.

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

Salidas

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

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

Limitaciones

  • El modelo de reconocimiento de texto actual se entrena utilizando 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 iluminación).

Por eso, hemos elegido 3 logotipos de productos de Google solo para demostrar cómo realizar OCR con TensorFlow Lite. Si está buscando un producto OCR de producción listo para usar, debería considerar Google ML Kit . ML Kit, que utiliza TFLite por 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 el proceso de OCR.
  • Quiere admitir idiomas no cubiertos por ML Kit
  • Los dispositivos de tus usuarios objetivo no necesariamente tienen instalados los servicios de Google Play.

Referencias