OCR — Da Introdução à Aplicação

Lucas de Brito Silva
Data Hackers
Published in
4 min readJul 14, 2020
Photo by David Travis on Unsplash

OCR é um acrônimo que representa Optical Character Recognition (Reconhecimento ótico de caracteres) e a sua principal motivação foi de reconhecer caracteres a partir de imagens, principalmente, e de mapas de bits, dessa forma, facilitando a manipulação desses caracteres identificados.

Como os estudos dessa tecnologia são uma realidade desde 1950, hoje temos bastante ferramenta que são consolidadas no mercado e gratuitas, inclusive, das quais posso citar:

  1. GORC (http://jocr.sourceforge.net/)
GORC Logotipo

2. Online OCR (https://www.onlineocr.net/)

Online OCR Logotipo

3. Tesseract OCR (https://github.com/tesseract-ocr/)

Tesseract OCR Logotipo

Todavia, quando se trata de fama na comunidade de desenvolvedores, vemos que o Tesseract possui grande destaque, incluindo até mesmo um repositório no GitHub que da suporte a quem deseja utiliza-lo e possui uma documentação completa.

https://github.com/tesseract-ocr/

Dos pontos de destaque, vale citar que o tesseract é desenvolvido em C, porém o mesmo possui um Wrapper em Python o qual é denominado Pytesseract, sendo disponibilizado no PIP (https://pypi.org/project/pytesseract/) e em Anaconda (https://anaconda.org/conda-forge/tesseract), para quem tem mais familiaridade com Python (que é o meu caso).

Instalação e teste

A instalação de tesseract no sistema Linux pode ser feita em poucos comandos:

$ sudo apt install tesseract-ocr
$ sudo apt install libtesseract-dev

E o mesmo ocorre com macOS. Há uma variação entre MacPorts e Homebrew, mas nesse post citarei apenas a versão de Homebrew:

$ brew install tesseract

Após realizar a instalação do tesseract, é possível realizar OCR em apenas um comando, assim, já extraindo algumas palavras da imagem.

OBS.: A linguagem padrão é inglês, dependendo do texto, não será possível capturar a palavra/frase.
Caso pretenda trabalhar com outra linguagem, é necessário fazer algumas instalações adicionais (https://github.com/tesseract-ocr/tesseract/wiki#other-languages).

Imagem utilizada para o teste 1
Resultado do teste 1

Implementação com Pytesseract

A implementação com Pytesseract é bem simples também em que com poucas linhas de código pode-se obter resultados satisfatórios, como o código abaixo:

Imagem utilizada para teste 2 e 3
Resultado do teste 2

No resultado é possível observar que alguns traços são detectados sem uma existência real. Dessa forma, utilizaremos o seguinte código que conta com o apoio da biblioteca OpenCV para realizar algumas tratativas na imagem.

No resultado é possível observar que alguns traços são detectados sem uma existência real. Dessa forma, utilizaremos o seguinte código que conta com o apoio da biblioteca OpenCV para realizar algumas tratativas na imagem.

Resultado do teste 3

Os resultados também apresentaram algumas falhas e isso é comum em OCR, a maior diferença, na verdade, foi no tempo de execução, em que, provavelmente, pela imagem ter um tratamento prévio, isso promove agilidade no processamento.

Os resultados também apresentaram algumas falhas e isso é comum em OCR, a maior diferença, na verdade, foi no tempo de execução, em que, provavelmente, pela imagem ter um tratamento prévio, isso promove agilidade no processamento.

Imagem após tratativas do código

Curiosidade crucial

Na documentação do tesseract um ponto que merece muito destaque, quando tratamos de desenvolvimento com uso dessa biblioteca é o tópico de melhoria da qualidade de saída, ou seja, é um tópico que nos auxilia na melhoria do resultado, dessa forma temos advindos mais concisos e mais assertividade.

Dentre os tópicos citados nessa documentação, encontramos dicas quanto:

  • Redimensionamento
  • Binarização
  • Remoção de Ruído
  • Dilatação / Erosão
  • Rotação / Deskewing
  • Bordas
  • Transparência / Canal Alfa
  • Ferramentas / Bibliotecas

O que pode ser estudado mais detalhadamente em:

--

--