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 modelo de reconhecimento de texto como pipeline de OCR para reconhecer caracteres de texto.

iniciar

Se você é novo no TensorFlow Lite e está trabalhando com Android, recomendamos explorar o exemplo de aplicativo 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 no TF Hub .

Como funciona

As tarefas de OCR são frequentemente divididas em 2 etapas. Primeiro, usamos um modelo de detecção de texto para detectar as caixas delimitadoras em torno de textos possíveis. 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 benchmark 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 poderia usar delegado de GPU, pois precisamos de operações do TensorFlow para executá-lo

Entradas

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

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

Resultados

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

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

Limitações

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

  • Os modelos não são gerais o suficiente para OCR em estado selvagem (digamos, imagens aleatórias tiradas pela câmera de um smartphone em condições de pouca 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 um produto OCR de nível de produção pronto para uso, considere o Google ML Kit . O kit de ML, 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 construir 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 comerciais especiais (ou seja, reconhecer textos invertidos) e precisa personalizar o pipeline de OCR
  • Você deseja oferecer suporte a idiomas não cobertos pelo kit de ML
  • Os dispositivos dos usuários-alvo não têm necessariamente o Google Play Services instalado

Referências