Bem-vindo ao curso "Visão computacional: detecção de texto em placas de carro"! Meu nome é João Miranda e serei seu instrutor nesta jornada!
João Miranda é um homem branco de olhos e cabelos castanhos escuros. Usa barba e bigode curtos, e os cabelos são de comprimento médio, presos em um coque, com as laterais raspadas. Veste uma camiseta lisa na cor azul escuro. Ao fundo, há uma parede com iluminação esverdeada.
Neste curso, construiremos um projeto de visão computacional para detectar textos em placas de veículos. Aprenderemos a aplicar diversos pré-processamentos em imagens, além de utilizar a ferramenta Tesseract OCR para detectar os caracteres presentes nessas imagens.
Para acompanhar este curso, é necessário que você tenha noções da linguagem Python.
Vamos lá?
O intuito do nosso projeto é detectar textos em placas de carros de forma automatizada. Esse processo, em visão computacional, é conhecido como OCR, sigla para Optical Character Recognition, ou Reconhecimento Ótico de Caracteres, em português.
Para realizar essa tarefa utilizaremos a ferramenta Tesseract OCR, que precisa ser instalada diretamente no computador. Executaremos os códigos no Google Colab, que utiliza uma máquina Linux, portanto, nossos comandos corresponderão a este sistema operacional.
Em uma célula, coloque !
, para acessar o terminal, seguida do comando sudo apt install tesseract-ocr
, e execute. Este passo instala o Tesseract no computador do Colab.
!sudo apt install tesseract-ocr
Para ter acesso ao comando de instalação em outros sistemas operacionais, consulte a documentação do Tesseract.
Agora, vamos instalar a biblioteca PyTesseract, do Python, que deve se conectar com o software instalado. Utilizaremos o seguinte comando:
!pip install pytesseract
É possível que, ao executar a instalação do PyTesseract, surja uma mensagem de erro responsável por informar que existia uma versão anterior da biblioteca Pillow que precisou ser desinstalada para dar lugar a uma nova versão a fim de poder baixar o PyTesseract.
Neste caso, é preciso reiniciar o ambiente de execução para que a versão mais recente seja adotada no Google Colab. Para isso, temos duas opções: clicar no botão "RESTART RUNTIME", que aparece abaixo do aviso, ou em Ambiente de execução>Reiniciar ambiente de execução, na barra superior do Colab.
Após reinicar o ambiente, não será necessário refazer os passos anteriores.
Para utilizar a versão em português da ferramenta, precisamos acessar o GitHub do Tesseract e clicar na opção "tessdata", no readme, que contém o arquivo das línguas disponíveis. Procure "por.traineddata", que corresponde à Língua Portuguesa, e faça o download.
Após baixar o arquivo, você pode fazer seu upload para a sessão do Colab clicando na opção "Fazer upload para o armazenamento da sessão", presente no ícone "Arquivos", na barra lateral. No entanto, sempre que abrir o Colab em diferentes dias, seria necessário refazer este upload manualmente. Como estamos utilizando o Linux, usaremos comandos responsáveis por baixar e salvar esse arquivo de maneira automatizada.
Primeiro, criaremos uma pasta com o comando !mkdir
e a nomearemos de tessdata
.
!mkdir tessdata
Após executar o comando anterior, perceba que a pasta foi criada nos arquivos desta sessão.
Em seguida, usaremos um código que fará o download do arquivo diretamente do GitHub e o colocará na pasta que acabamos de criar. Para isso, em uma nova célula, coloque o comando !wget -O
seguido do caminho da pasta onde o arquivo deve ser salvo ./tessdata/
e o nome que deve ser dado ao arquivo salvo por.traineddata
. Em seguida, adicione a url do dowload que consta na opção "View raw", dentro do arquivo "por.traineddata", no GitHub https://github.com/tesseract-ocr/tessdata/blob/main/por.traineddata?raw=true
. O comando ficará assim:
!wget -O ./tessdata/por.traineddata https://github.com/tesseract-ocr/tessdata/blob/main/por.traineddata?raw=true
Execute-o.
O ambiente está pronto para utilizarmos o Tesseract, em português, com a linguagem Python. A seguir, faremos o upload de uma imagem a fim de detectar os textos presentes nela!
Agora que instalamos a ferramenta Tesseract, veremos como utilizá-la para detectar textos em uma imagem!
Iniciaremos importando a biblioteca anteriormente instalada, PyTesseract, e a biblioteca OpenCV, utilizada para tratar e trabalhar com imagens.
Em uma célula, executaremos os comandos a seguir:
import cv2
import pytesseract
Agora, veremos as versões dessas bibliotecas que estão sendo utilizadas. Assim, se gerar algum erro, você identificará se está usando a mesma versão que consta na máquina do instrutor. Para isso, execute o comando a seguir que deve retornar a versão 4.6.0 do OpenCV.
cv2.__version__
Em seguida, verifique a versão do PyTesseract, que deve ser 0.3.9.
pytesseract.__version__
Agora faremos a leitura de uma imagem do trecho de um livro. Para isso, vá em "Arquivos", na barra lateral, e em "Fazer upload para o armazenamento da sessão". Em seguida, selecione a imagem chamada "trecho_livro.png" e aguarde o carregamento.
As imagens que serão utilizadas no curso foram disponibilizadas na etapa "Preparando o ambiente". Mas você também pode baixá-las clicando neste link.
Em uma nova célula, criaremos a variável imagem
, onde vamos chamar a biblioteca OpenCV cv2
e sua função .imread()
para realizar a leitura deste arquivo. Esta função recebe como parâmetro o caminho da imagem entre aspas. Para ter acesso ao caminho, vá em "Arquivos", na barra lateral esquerda, clique com o lado direito do mouse sobre "trecho_livro.png" e em "Copiar caminho".
imagem = cv2.imread('/content/trecho_livro.png')
Execute esta célula e, em uma nova, solicite a visualização de imagem
com a função do OpenCV imshow()
.
cv2.imshow(imagem)
Se você está usando o Colab, provavelmente a execução de visualização gerou um erro. Este erro é muito comum e ocorre porque a função utilizada gera uma quebra nas sessões do Jupyter. Utilizaremos, então, a sugestão dada por esse erro: importar a função cv2_imshow
, do Google Colab. Para isso, execute o código a seguir:
from google.colab.patches import cv2_imshow
Agora solicite novamente a visualização fazendo uso da função importada:
cv2_imshow(imagem)
Ao executar a célula, observe que nos é retornado a imagem do trecho do livro digitalizada.
"- Um mal é um mal, Stregobor - retrucou seriamente o bruxo, pondo-se de pé. - Menor, maior, médio, tanto faz... As proporções são convencionadas e as fronteiras, imprecisas. Não sou um santo eremita e não pratiquei apenas o bem ao longo de minha vida. Mas, se me couber escolher entre dois males, prefiro abster-me por completo da escolha. Está na hora de ir embora. Ver-nos-emos amanhã."
Veremos, agora, se o PyTesseract consegue realizar a leitura do texto presente na imagem.
Em uma nova célula, criaremos uma variável texto
onde chamaremos a função pytesseract.image_to_string()
, que receberá a variável imagem
como parâmetro. Esta função será responsável por transformar a imagem em uma string (dado do tipo texto).
texto = pytesseract.image_to_string(imagem)
Ainda nesta célula, insira o comando de visualização print(texto)
para que a variável texto
seja impressa na tela.
texto = pytesseract.image_to_string(imagem)
print(texto)
Ao executar este comando, ele nos retornará o texto contido na imagem:
"- Um mal é um mal, Stregobor - retrucou seriamente 0 bryxo, pondo-se de pé. - Menor, maior, médio, tanto faz... As porgdes sao convencionadas e as fronteiras, imprecisas. um santo eremita e nao pratiquei apenas 0 bem ao longo de minha vida. Mas, se me couber escolher entre dois males, prefiro abster-me por completo da escolha. Esta na hora de ir embora. Ver-nos-emos amanha. S pro- 40 SOU"
Perceba que ele conseguiu identificar a maioria dos caracteres de forma correta, embora tenha trocado o artigo "o" pelo número 0, a letra "u" por "y" e não tenha colocado alguns sinais de acentuação. Observe, ainda, que as duas últimas linhas não correspondem ao texto, o que também sugere uma falha na leitura. Como podemos melhorá-la?
Para aprimorar essa decodificação, utilizaremos o arquivo da Língua Portuguesa baixado anteriormente, informando que queremos utilizar essa língua. Podemos, ainda, adotar uma segmentação de páginas que ajude a melhor identificar esse texto.
Sendo assim, em uma nova célula, execute o seguinte comando:
!tesseract --help-psm
Ele nos retorna as formas de segmentação de página disponíveis no Tesseract. A forma de número 6, "Assume a single uniform block of text", melhor atende às nossas expectativas, porque assume que a imagem se trata de um bloco uniforme de texto. Nós a utilizaremos no código seguinte.
Criaremos uma variável de configuração config_tesseract
, que deve receber o nome do arquivo referente à Língua Portuguesa '--tessdata-dir
e a pasta onde está localizado tessdata
. Em seguida, colocaremos a configuração de segmentação de página --psm 6'
.
config_tesseract = '--tessdata-dir tessdata --psm 6'
Execute esta célula para salvar essa configuração no Tesseract e, em uma nova, tentaremos ler novamente o texto. Para isso utilizaremos a mesma função texto = pytesseract.image_to_string(imagem)
, mas, além do parâmetro imagem
, passaremos, também, os argumentos lang = 'por'
, referente à língua que deve ser detectada, e config = config_tesseract
, que informa que devem ser usadas as configurações passadas na variável config_tesseract
.
texto = pytesseract.image_to_string(imagem, lang = 'por', config = config_tesseract)
Adicione, ainda, o comando de visualização print(texto)
.
texto = pytesseract.image_to_string(imagem, lang = 'por', config = config_tesseract)
print(texto)
Ao executar esta célula, perceba que nos retornará o seguinte texto:
"- Um mal é um mal, Stregobor - retrucou seriamente o bryxo, pondo-se de pé. - Menor, maior, médio, tanto faz... As proporções são convencionadas e as fronteiras, imprecisas. Não sou um santo eremita e não pratiquei apenas o bem ao longo de minha vida. Mas, se me couber escolher entre dois males, prefiro abster-me por completo da escolha. Está na hora de ir embora. ; Ver-nos-emos amanhã."
Perceba que a letra "o", antes reconhecida como "0", agora foi corretamente identificada, assim como os sinais de acentuação gráfica. Note, também, que não há mais os caracteres " S pro- 40 SOU" contidos no fim do bloco e que nada correspondiam com o texto. Os únicos erros que permanecem são a troca do "u" pelo "y", na palavra "bruxo", e um ponto e vírgula (;), erroneamente colocado após a frase "Está na hora de ir embora. ;". Sendo assim, podemos considerar que o Tesseract conseguiu realizar uma boa leitura do texto contido na imagem!
A seguir, aplicaremos esse mesmo processo na imagem de uma placa de veículo. Vamos lá?
O curso Visão computacional: detecção de texto em placas de carro possui 151 minutos de vídeos, em um total de 53 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.