Uma introdução ao Reconhecimento Ótico de Caracteres (OCR)

A tarefa de reconhecer e extrair texto de imagens por vias artificiais, chamada de reconhecimento ótico de caracteres (OCR, optical character recognition), teve um início bastante prematuro considerando outras tarefas automatizadas. Já em 1914, Emanuel Goldberg desenvolveu um máquina capaz de ler caracteres e convertê-los em código telegráfico padrão. Tanto tempo de desenvolvimento pode nos levar a pensar que esta tarefa já está solucionada, mas não é o caso. Atualmente, os métodos de extração são desafiados com imagens cada vez mais complexas, o que exige novas abordagens e tecnologias.

O OCR pode ser descrito como a conversão de imagens contendo texto digitado, escrito a mão ou impresso, em caracteres que uma máquina é capaz de entender. A imagem em questão pode ser um documento escaneado ou fotografado, onde o texto é o principal objeto de interesse, ou imagens menos direcionadas, como uma fotografia de um cenário onde aparecem placas e fachadas.

As primeiras versões de sistemas de OCR eram treinadas com caracteres isolados, de uma única fonte por vez. Hoje em dia, os sistemas mais recentes, baseados em machine learning, são capazes de acomodar a maioria das fontes e de formatos de imagem. Alguns sistemas podem até reproduzir a fonte e a disposição do texto na imagem original, gerando por exemplo uma camada com texto traduzido que pode ser sobreposto à imagem original numa abordagem de realidade aumentada. (Para ver isso em funcionamento, abra o aplicativo do Google Tradutor no seu smartphone, clique em Câmera e aponte para um objeto com texto escrito.)

A tarefa em si apresenta graus variados de dificuldade. O texto de um documento digitado, por exemplo, tem uma estrutura bem definida, com uma linha seguindo outra, os caracteres são uniformes em formato e espaçamento, e costuma haver uma clara delimitação da área de redação. Já no outro extremo, podemos citar textos escritos a mão, que nem sempre seguem uma lógica padronizada de posicionamento, e que tem uma enorme variedade de formatos; e os textos que ocorrem em objetos fotografados em um cenário, que também têm posicionamento e formatação variados.

A técnica costuma ser empregada para permitir a edição e busca eletrônica em texto originalmente em formato impresso, o armazenamento da informação em formato compactado, a disponibilização online, e mais recentemente, para usar o texto como fonte de dados em computação cognitiva, tradução mediada por máquina, conversão de texto para fala e mineração de textos.

O OCR costuma ser considerado um campo de pesquisa no reconhecimento de padrões, na inteligência artificial e na visão computacional. Os procedimentos mais tradicionais de OCR geralmente aplicam filtros às imagens para fazer com que os caracteres se evidenciem de seu fundo, fazem a detecção de contorno para reconhecer os caracteres individuais, e finalmente usam algoritmos de classificação para identificar os caracteres. Quando o texto é padronizado e está bem definido, estes protocolos costumam ser suficientes, mas nem sempre este é o caso. Às vezes não é possível separar os caracteres, seja no caso de texto escrito, seja porque a definição das imagens não permite sua distinção clara. Para estas situações, temos hoje disponíveis abordagens especializadas baseadas em deep learning.

O EAST (Efficient Accurate Scene Text detector) é um modelo que usa camadas convolucionais para extrair características das imagens. Durante seu processamento, características em diferentes níveis de processamento são retirados e tratados matricialmente, levando à identificação de bounding boxes onde o texto aparece na imagem. Este algoritmo é utilizado somente para identificar a localização do texto, não sendo capaz de convertê-lo em caracteres, mas seus resultados podem ser processados por outro método.

As redes neurais recorrentes convolucionais (CRNN, convolutional-recurrent neural networks) aplicam, como o nome deixa claro, uma parte convolucional para extrair características da imagem, as quais são organizadas em colunas que são então tratadas pela parte recorrente bidirecional, a qual identifica relações entre os caracteres presentes. O resultado do módulo recorrente é por fim tratado por uma camada de transcrição, que elimina caracteres redundantes e ausentes usando métodos probabilísticos para produzir texto coerente.

A técnica chamada SEE (Semi-Supervised End-to-End Scene Text Recognition) usa uma abordagem mais ousada. Os autores desenvolveram um modelo que recebe uma imagem e a anotação de seu texto, sem a presença de bounding boxes, e o algoritmo deve então aprender a extrair o texto fornecido da imagem. Se por um lado a definição do problema é mais fácil, por outro sua parametrização é mais complicada. O modelo usa duas redes concatenadas; a primeira transforma a imagem em uma “sub-imagem” mais fácil de interpretar, e a segunda é uma rede LSTM que faz o reconhecimento do texto.

Uma das bibliotecas mais populares para visão computacional, a OpenCV, oferece integração com o Tesseract, um módulo que vem sendo desenvolvido desde a década de 1980, e que hoje pode aplicar deep learning na forma de uma rede LSTM para oferecer uma ferramenta robusta de OCR. Dentro do framework do OpenCV, é possível utilizar um detector de textos como o EAST para identificar sua localização, e depois fazer sua interpretação usando o Tesseract.

Por fim, não podemos deixar de mencionar as APIs das principais empresas fornecedoras de serviços de computação na nuvem. Google, Amazon e Microsoft fornecem plataformas específicas para o reconhecimento de textos em imagens de forma rápida e fácil.


Graças à sofisticação implementada pelas redes neurais, os métodos de OCR hoje são muito mais abrangentes que há poucos anos. Se antes estávamos limitados a interpretar textos com caracteres padronizados em um documento bem estruturado, hoje já conseguimos utilizar ferramentas para ler o mundo ao nosso redor, como letreiros e placas, onde há muito mais ruído, mudanças de formato e direção, e até textos manuscritos com seus estilos específicos. A tarefa costuma ser facilitada quando dividida em duas fases, uma primeira onde a localização do texto é identificada, e uma segunda onde o texto é decifrado. Apesar de os algoritmos disponíveis não alcançarem uma precisão absoluta, vários parâmetros podem ser ajustados para melhorar os resultados, como por exemplo os tamanhos das margens das bounding boxes que delimitam o texto nas imagens. Apesar dos pesares, nunca foi tão fácil recuperar texto a partir de outro formato para processamento computacional.

2 comentários em “Uma introdução ao Reconhecimento Ótico de Caracteres (OCR)”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.