O Dia da Comunidade de ML é dia 9 de novembro! Junte-nos para atualização de TensorFlow, JAX, e mais Saiba mais

Reconhecimento óptico de caracteres (OCR)

O reconhecimento óptico de caracteres (OCR) é o processo de reconhecimento de caracteres a partir 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 de Android

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

Como funciona

As tarefas de OCR costumam ser divididas em 2 estágios. Primeiro, usamos um modelo de detecção de texto para detectar as caixas delimitadoras em torno dos 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). Em nosso caso, os dois modelos são do TensorFlow Hub e são modelos quantizados FP16.

Benchmarks de desempenho

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 pode usar delegado de GPU, pois precisamos de operações do TensorFlow para executá-lo

Entradas

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

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

Saídas

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

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

Limitações

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

  • Os modelos não são genéricos 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).

Portanto, 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 de OCR produção de grau ready-to-use, você deve considerar Google Kit ML . 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 que estão de cabeça para baixo) e precisa personalizar o pipeline de OCR
  • Você deseja oferecer suporte a idiomas não abrangidos pelo kit de ML
  • Seus dispositivos de usuário-alvo não têm necessariamente o Google Play Services instalado

Referências