Reconhecimento óptico de caracteres (OCR)

O reconhecimento óptico de caracteres (OCR) é o processo de reconhecimento de caracteres de imagens usando visão computacional e técnicas de aprendizado de máquina. Este aplicativo de referência demonstra como usar o TensorFlow Lite para fazer OCR. Ele usa uma combinação de modelo de detecção de texto e um modelo de reconhecimento de texto como um pipeline de OCR para reconhecer caracteres de texto.

iniciar

Se você é novo no TensorFlow Lite e está trabalhando com Android, recomendamos explorar o aplicativo de exemplo a seguir que pode ajudá-lo a começar.

Exemplo Android

Se você estiver usando uma plataforma diferente do Android ou já estiver familiarizado com as APIs do TensorFlow Lite , poderá baixar os modelos do TF Hub .

Como funciona

As tarefas de OCR geralmente são divididas em 2 estágios. Primeiro, usamos um modelo de detecção de texto para detectar as caixas delimitadoras em torno de possíveis textos. Em segundo lugar, alimentamos caixas delimitadoras processadas em um modelo de reconhecimento de texto para determinar caracteres específicos dentro das caixas delimitadoras (também precisamos fazer supressão não máxima, transformação de perspectiva e etc. antes do reconhecimento de texto). No nosso caso, ambos os modelos são do TensorFlow Hub e são modelos quantizados FP16.

Referências de desempenho

Os números de referência de desempenho são gerados com a ferramenta descrita aqui .

Nome do modelo Tamanho do modelo Dispositivo CPU GPU
Detecção de texto 45,9 MB Pixel 4 (Android 10) 181,93ms* 89,77ms*
Reconhecimento de texto 16,8 MB Pixel 4 (Android 10) 338,33ms* N / D**

* 4 fios usados.

** este modelo não pode usar o delegado da GPU, pois precisamos de operações do TensorFlow para executá-lo

Entradas

O modelo de detecção de texto aceita um tensor 4-D float32 de (1, 320, 320, 3) como entrada.

O modelo de reconhecimento de texto aceita um tensor 4-D float32 de (1, 31, 200, 1) como entrada.

Saídas

O modelo de detecção de texto retorna um tensor 4-D float32 de forma (1, 80, 80, 5) como caixa delimitadora e um tensor 4-D float32 de forma (1,80, 80, 5) como pontuação de detecção.

O modelo de reconhecimento de texto retorna um tensor 2-D float32 de forma (1, 48) como os índices de mapeamento para a lista de alfabeto '0123456789abcdefghijklmnopqrstuvwxyz'

Limitações

  • O modelo de reconhecimento de texto atual é treinado usando dados sintéticos com letras e números em inglês, portanto, apenas o inglês é suportado.

  • Os modelos não são gerais o suficiente para OCR em estado selvagem (digamos, imagens aleatórias tiradas por uma câmera de smartphone em condições de baixa iluminação).

Por isso, escolhemos três logotipos de produtos do Google apenas para demonstrar como fazer OCR com o TensorFlow Lite. Se você estiver procurando por um produto OCR de nível de produção pronto para uso, considere o Google ML Kit . O ML Kit, que usa TFLite por baixo, deve ser suficiente para a maioria dos casos de uso de OCR, mas há alguns casos em que você pode querer criar sua própria solução de OCR com TFLite. Alguns exemplos são:

  • Você tem seus próprios modelos TFLite de detecção/reconhecimento de texto que gostaria de usar
  • Você tem requisitos de negócios especiais (ou seja, reconhecendo textos que estão de cabeça para baixo) e precisa personalizar o pipeline de OCR
  • Você deseja oferecer suporte a idiomas não cobertos pelo Kit de ML
  • Seus dispositivos de usuário de destino não têm necessariamente os serviços do Google Play instalados

Referências