Tamanho de fonte
Alto contraste
Altura de linha
extrair texto de imagem

Como extrair texto de imagem com OCR e OpenAI: um guia completo

Avatar de Rebeca Honorio Rebeca Honorio
18 minutos de leitura 28 dias atrás

Você já se perguntou como é possível transformar uma imagem cheia de texto em um documento editável? Essa mágica acontece graças ao OCR, ou Reconhecimento Óptico de Caracteres. Neste guia, vamos explorar como você pode usar Python e ferramentas como OpenCV e Tesseract para extrair texto de imagem de forma eficiente. Se você é um programador intermediário em Python, este artigo é para você!

Você pode também assistir ao nosso vídeo abaixo, onde o nosso professor Lorenzo explica detalhadamente como copiar textos de imagens usando OCR e OpenAI!

O que é OCR (Reconhecimento Óptico de Caracteres)?

O OCR, sigla para “Optical Character Recognition” (Reconhecimento Óptico de Caracteres), é uma tecnologia avançada que transforma documentos digitalizados em dados editáveis e pesquisáveis. Ela identifica e analisa caracteres presentes em imagens, PDFs e fotos, convertendo-os em texto. O OCR utiliza algoritmos sofisticados que examinam padrões visuais, reconhecendo letras, números e símbolos em uma ampla gama de fontes e formatos.

Essa tecnologia é particularmente única porque torna o conteúdo digital mais acessível, permitindo que documentos antes apenas visuais sejam transformados em informações textuais utilizáveis em sistemas de automação, busca e edição.

Como funciona o OCR?

O processo de funcionamento do OCR envolve a captura de uma imagem de um documento, que pode ser uma página de um livro, um extrato bancário, um contrato ou qualquer outro documento físico. Uma vez capturada a imagem, os algoritmos de OCR identificam e separam os caracteres presentes na imagem, analisando o layout, os espaçamentos e os padrões de escrita. Depois disso, o sistema converte esses elementos visuais em texto legível por máquina.

O OCR trabalha em 3 etapas diferentes:

  1. Pré-processamento da imagem: a imagem é ajustada para melhorar a precisão do reconhecimento, removendo ruídos e ajustando contraste e brilho.
  2. Reconhecimento de caracteres: após o ajuste, o algoritmo escaneia a imagem em busca de caracteres, comparando-os com bancos de dados para identificar letras, números e outros símbolos.
  3. Conversão em texto editável: por fim, o conteúdo identificado é transformado em texto digital, pronto para ser utilizado em softwares de edição, pesquisa e armazenamento.

Importância do OCR em aplicações tecnológicas

O OCR é uma ferramenta que vai muito além de apenas digitalizar documentos. Ele traz uma verdadeira revolução para empresas que buscam otimizar suas operações. Ao automatizar processos manuais, como a inserção de dados, o OCR reduz drasticamente os custos operacionais e aumenta a produtividade, liberando sua equipe para se concentrar em tarefas mais estratégicas. E o melhor de tudo? Ele minimiza erros humanos, o que é importante em setores que lidam com grandes volumes de documentos, como bancos, hospitais e empresas de logística.

Outra grande vantagem do OCR é sua capacidade de tornar a informação mais acessível. Para pessoas com deficiência visual, por exemplo, o OCR converte textos impressos em formatos digitais que podem ser lidos por softwares especializados. 

Além disso, o OCR elimina a necessidade de armazenamento físico de documentos, economizando espaço e facilitando a organização e a busca por informações. Empresas que adotam o OCR em processos como a verificação de documentos durante o onboarding de clientes conseguem acelerar essa etapa, garantindo a autenticidade das informações e oferecendo uma experiência muito mais ágil e eficiente.

Por que usar Python para implementar OCR?

A resposta para essa pergunta é simples: Python é uma das linguagens de programação mais populares e eficazes para implementar OCR devido à sua simplicidade e a vasta quantidade de bibliotecas disponíveis que facilitam a manipulação de imagens e a implementação de algoritmos de reconhecimento de texto. Isso por si só já é uma excelente razão para usar Python quando o objetivo é extrair texto de imagem ou documentos digitalizados. 

Além do mais, Python consegue usar bibliotecas como OpenCV e Pillow, que permitem realizar operações complexas de processamento de imagem com poucas linhas de código. Isso significa que você pode se concentrar na lógica do seu projeto em vez de se perder em detalhes técnicos. 

Vantagens de usar Python para OCR

  1. Automatização de tarefas: essa linguagem de programação permite que você automatize tarefas repetitivas, como a leitura e extração de informações de documentos digitalizados, aumentando a eficiência e reduzindo erros humanos.
  2. Integração com outras ferramentas: Python se integra facilmente com outras bibliotecas e ferramentas. Por exemplo, você pode usar o OpenCV para pré-processar imagens e melhorar a qualidade do OCR ou o Pandas para análise e manipulação de dados extraídos, permitindo um fluxo de trabalho completo.
  3. Escalabilidade: Python é uma linguagem altamente escalável, o que significa que pode lidar com grandes volumes de imagens de maneira eficiente. Em ambientes corporativos, onde é comum lidar com enormes quantidades de documentos diariamente, Python consegue processar essas demandas sem sacrificar o desempenho.

Agora que você já entende o funcionamento do OCR, suas vantagens, importância e os motivos pelos quais o Python é ideal para essa tarefa, é hora de explorar as bibliotecas que facilitarão o processo. Veja abaixo as cinco bibliotecas essenciais para usar no OCR:

5 bibliotecas populares para OCR em Python

Python oferece uma vasta gama de bibliotecas que são perfeitas para quem deseja implementar OCR de maneira simples e eficiente. Vamos explorar algumas das mais populares:

  1. Tesseract OCR: o Tesseract é uma das ferramentas mais populares e amplamente utilizadas para OCR. Ela é open-source, o que significa que qualquer pessoa pode usá-la gratuitamente e até contribuir com seu desenvolvimento. Sua maior força está na precisão e na capacidade de lidar com múltiplos idiomas e scripts. O Tesseract é particularmente eficiente para converter imagens e PDFs digitalizados em textos editáveis, sendo altamente configurável para diversos tipos de documentos.
  2. Pytesseract: Pytesseract é um “wrapper” em Python para o Tesseract. Em vez de usar comandos no terminal ou configurar processos mais complicados, o Pytesseract permite que você chame o Tesseract diretamente no seu código Python, simplificando a implementação.
  3. OpenCV: embora seja mais conhecida por suas funcionalidades de visão computacional, o OpenCV também desempenha um papel importante no OCR. Antes de aplicar o reconhecimento de texto, o OpenCV pode ser usado para pré-processar imagens, por exemplo, ajustando o contraste, removendo ruídos ou redimensionando imagens.
  4. Wand: Wand é uma biblioteca Python que utiliza o ImageMagick para manipulação de imagens. Essa combinação permite que você realize operações complexas para editar imagens, o que pode ser muito útil antes de aplicar o OCR. Quando você manipula imagens com o Wand, você pode preparar documentos com formatações complicadas ou imagens com baixa resolução para que o Tesseract possa extrair texto com mais precisão.
  5. OCRopus: por último, temos o OCRopus, uma ferramenta avançada que vai além do Tesseract, oferecendo suporte a diversos idiomas e recursos adicionais. Essa biblioteca é ideal para projetos que requerem funcionalidades mais complexas, como a extração de texto em documentos com múltiplas colunas ou layouts difíceis de interpretar.

Preparando o ambiente para OCR com Python

Antes de começar a extrair texto de imagens utilizando OCR com Python, é fundamental configurar o ambiente de desenvolvimento de forma adequada. A seguir, veremos como preparar o ambiente para trabalhar com essa tecnologia, desde a instalação do Python até a configuração de bibliotecas específicas, como o OpenCV e o Tesseract.

Instalação do Python e bibliotecas necessárias

O primeiro passo para realizar OCR em Python é garantir que a linguagem esteja instalada na sua máquina. Caso ainda não tenha o Python instalado, acesse o site oficial python.org e faça o download da versão mais recente.

Após a instalação do Python, será necessário instalar algumas bibliotecas que facilitarão o processo de OCR. Duas bibliotecas essenciais para essa tarefa são:

  1. OpenCV: utilizada para processar e manipular imagens, a biblioteca OpenCV é uma das mais populares quando se trata de visão computacional em Python. Ela permitirá que você manipule as imagens antes de realizar a extração do texto.
  2. Pytesseract: essa biblioteca atua como uma interface para o Tesseract OCR, o motor de OCR desenvolvido pelo Google. O Pytesseract permite que você integre a funcionalidade do Tesseract diretamente em seus scripts Python.

Para instalar essas bibliotecas, basta usar o comando pip, que é o gerenciador de pacotes do Python. Abra seu terminal ou prompt de comando e execute o seguinte:

pip install opencv-python pytesseract

Isso instalará o OpenCV e o Pytesseract, que serão usados para carregar e processar as imagens, além de realizar a conversão dos caracteres visuais em texto editável.

Configurando o Tesseract OCR

Embora o Pytesseract seja uma interface para o Tesseract OCR, você precisará ter o Tesseract OCR instalado em sua máquina. O Tesseract é o motor principal que realizará a conversão de caracteres. Ele pode ser baixado e instalado de acordo com o sistema operacional:

  • Para Windows, você pode baixar a versão mais recente no GitHub do Tesseract.
  • Para Linux e macOS, o Tesseract pode ser instalado via gerenciadores de pacotes, como apt no Ubuntu ou brew no macOS:
# Linux (Ubuntu/Debian)
sudo apt install tesseract-ocr

# macOS (com Homebrew)
brew install tesseract

Após a instalação do Tesseract, é importante garantir que o Python saiba onde o executável do Tesseract está localizado. No Windows, isso pode ser feito especificando o caminho diretamente em seu script Python. Por exemplo:

import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

Configuração do ambiente virtual

Para manter as dependências do seu projeto organizadas e evitar conflitos de versões com outros projetos, é ideal criar um ambiente virtual. Ambientes virtuais isolam bibliotecas e pacotes, garantindo que seu projeto use apenas as versões específicas necessárias.

Primeiro, crie e ative o ambiente virtual. Assim, todas as dependências serão instaladas apenas no ambiente e não globalmente:

  1. Instalar  a biblioteca virtualenv:
pip install virtualenv

2. Em seguida, crie o ambiente virtual para o seu projeto:

virtualenv nome_do_ambiente

3. Ative o ambiente virtual:

No Linux/macOS:

source nome_do_ambiente/bin/activate

No Windows:

nome_do_ambiente\Scripts\activate

Com o ambiente virtual ativado, você poderá instalar as bibliotecas necessárias (como OpenCV e Pytesseract) sem afetar outras instalações do Python em sua máquina. Tudo o que você instalar usando pip será restrito ao ambiente virtual.

Para instalar as dependências, use o comando abaixo:

pip install opencv-python pytesseract

Verificando a instalação

Após configurar o ambiente e instalar as bibliotecas, você pode verificar se tudo está funcionando corretamente com um pequeno teste:

  1. Crie um arquivo Python, por exemplo, ocr_test.py.
  2. Adicione o seguinte código, que carrega uma imagem e tenta extrair o texto:
import cv2
import pytesseract


# Carregar a imagem
imagem = cv2.imread('imagem_exemplo.png')


# Usar o Tesseract para extrair o texto da imagem
texto = pytesseract.image_to_string(imagem)


# Exibir o texto extraído
print(texto)

Substitua ‘imagem_exemplo.png‘ pelo caminho de uma imagem que você queira testar. Se tudo estiver configurado corretamente, o Python exibirá o texto contido na imagem.

Tem como extrair texto de uma imagem?

Com certeza! E quando falamos de usar OCR com Python, a primeira grande etapa é garantir que você esteja lidando com imagens da melhor qualidade possível. Afinal, a precisão do seu reconhecimento de texto pode depender diretamente do que você faz antes de extrair essas informações. Vamos juntos explorar como carregar e pré-processar suas imagens utilizando a incrível biblioteca OpenCV!

Como carregar uma imagem usando OpenCV

Carregar uma imagem em Python é simples e rápido, especialmente com a OpenCV ao seu lado. Aqui está um exemplo prático para você começar:

import cv2


imagem_path = './imagem.jpg'  # Substitua pelo caminho da sua imagem
imagem = cv2.imread(imagem_path)


if imagem is None:
    print("Erro ao carregar a imagem.")
else:
    print("Imagem carregada com sucesso.")

Vamos descomplicar:

  1. Importando a biblioteca: a primeira linha é tudo o que você precisa para abrir as portas do mundo da manipulação de imagens. Ao importar a OpenCV, você já está a um passo de realizar coisas incríveis!
  2. Carregando a imagem: com cv2.imread(), você lê sua imagem facilmente. Mas fique atento: se o caminho estiver errado ou a imagem não for encontrada, você receberá uma mensagem de erro. É sempre bom ficar de olho nisso!
  3. Verificando se deu tudo certo: não tem nada mais frustrante do que achar que tudo está funcionando e descobrir que não. A verificação ajuda a evitar essa dor de cabeça!

Técnicas de pré-processamento para melhorar a qualidade da imagem

Agora que sua imagem está carregada, é hora de dar uma boa ajustada nela. O pré-processamento é essencial para garantir que o OCR funcione corretamente, ela é a chave para melhorar a qualidade do reconhecimento de texto. Aqui estão algumas técnicas que você pode aplicar:

Conversão para escala de cinza 

Transformar sua imagem em escala de cinza simplifica tudo. Isso não só reduz a complexidade, mas também torna o reconhecimento de texto muito mais eficiente.

imagem_cinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)

Binarização 

Binarizar a imagem (transformá-la em preto e branco) ajuda a separar o texto do fundo. Isso é especialmente útil quando o contraste não está tão bom. Vamos deixar tudo mais claro!

_, imagem_binaria = cv2.threshold(imagem_cinza, 128, 255, cv2.THRESH_BINARY)

Remoção de Ruídos 

Ninguém gosta de barulho, certo? Aplicar filtros ajuda a suavizar a imagem e remover ruídos indesejados, tornando o texto muito mais legível.

imagem_suavizada = cv2.GaussianBlur(imagem_binaria, (5, 5), 0)

Detecção de bordas 

Destacar os contornos do texto pode fazer toda a diferença! Essa técnica ajuda a tornar as letras mais definidas, o que é fundamental para um OCR preciso.

imagem_bordas = cv2.Canny(imagem_suavizada, 100, 200)

Ajuste de contraste 

Um bom ajuste de contraste pode fazer toda a diferença na legibilidade do texto. Usando os fatores de contraste e brilho, você pode destacar ainda mais as informações importantes da sua imagem:

alpha = 1.5  # Fator de contraste
beta = 50    # Fator de brilho
imagem_processada = cv2.convertScaleAbs(imagem_suavizada, alpha=alpha, beta=beta)

Mostrando os resultados

Depois de todo esse trabalho duro, é hora de ver o que você criou! Você pode usar as funções cv2.imshow() e cv2.waitKey() para visualizar suas imagens:

cv2.imshow('Imagem Original', imagem)
cv2.imshow('Imagem em Escala de Cinza', imagem_cinza)
cv2.imshow('Imagem Binarizada', imagem_binaria)
cv2.imshow('Imagem Suavizada', imagem_suavizada)
cv2.imshow('Imagem com Bordas', imagem_bordas)


cv2.waitKey(0)  # Espera até que uma tecla seja pressionada
cv2.destroyAllWindows()  # Fecha todas as janelas abertas

Agora você já sabe como carregar e pré-processar imagens para OCR! Essa é uma parte essencial do processo, e investir tempo aqui significa garantir que seu reconhecimento de texto será preciso e eficiente. À medida que você se familiariza com essas técnicas, sinta-se à vontade para experimentar e ajustar conforme necessário. 

Não se esqueça: a prática leva à perfeição!

Como extrair texto de uma imagem com Tesseract

Agora que sua imagem está pré-processada e pronta para o reconhecimento, é hora de entrar em ação e extrair o texto com o poderoso Tesseract. Vamos dar uma olhada em como instalar, configurar e usar essa ferramenta incrível!

Como instalar e configurar o Tesseract

Antes de começarmos a extrair texto, precisamos ter o Tesseract instalado no seu sistema. Não se preocupe, o processo é bastante simples. Aqui estão as instruções específicas para cada sistema operacional:

Extraindo texto da imagem

Agora que o Tesseract está configurado, vamos extrair o texto da sua imagem pré-processada. É tão fácil quanto parece:

import cv2
import pytesseract

# Configurar o caminho do Tesseract (caso necessário)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# Carregar a imagem
imagem = cv2.imread('imagem_exemplo.png')

# Extrair o texto sem pré-processamento
texto = pytesseract.image_to_string(imagem, lang='por')
print(f'Texto extraído: {texto}')

E pronto! Você terá o texto extraído da sua imagem. 

Pós-processamento do texto extraído

Após a extração, é comum realizar um pós-processamento para limpar e formatar o texto reconhecido. Afinal, você quer que o resultado final esteja o mais apresentável possível. Vamos ver algumas técnicas que podem ajudar nisso:

  1. Filtrando caracteres indesejados: é normal que o Tesseract cometa alguns erros ou inclua caracteres que não desejamos. Um exemplo de como limpar isso é:
import re

texto_filtrado = re.sub(r'[^a-zA-Z0-9\s]', '', texto)
print(f'Texto filtrado: {texto_filtrado}')

Aqui, usamos expressões regulares para remover tudo que não seja letras, números ou espaços.

  1. Tratamento de erros comuns: o Tesseract pode ter dificuldades com fontes não convencionais ou imagens de baixa qualidade, resultando em alguns erros no texto extraído. Por isso, é importante revisar o que foi reconhecido e aplicar correções sempre que necessário. Você pode usar funções de substituição para corrigir palavras específicas ou mesmo revisar manualmente para garantir a precisão.

Exemplos práticos de OCR

O OCR encontra inúmeras aplicações no dia a dia, desde a extração de textos de documentos impressos até o reconhecimento de caracteres em placas de sinalização. Vamos explorar algumas dessas aplicações práticas para mostrar como essa tecnologia pode facilitar processos e trazer eficiência.

Como extrair texto de imagem ?

A extração de texto de documentos físicos é uma das aplicações mais comuns e úteis do OCR. Imagine ter pilhas de documentos para digitalizar e converter em texto editável. O OCR torna isso simples e rápido. O processo envolve etapas claras:

  1. Carregar a imagem: com o uso de bibliotecas como OpenCV, você pode facilmente carregar a imagem do documento.
  2. Pré-processamento: antes de aplicar o OCR, é necessário limpar a imagem para garantir precisão no reconhecimento. Isso pode incluir a conversão para escala de cinza, binarização e remoção de ruídos.
  3. Aplicação do Tesseract: após o pré-processamento, o Tesseract entra em ação para extrair o texto.

Veja como isso funciona na prática:

import cv2
import pytesseract

# Carregar a imagem
imagem_path = './documento.jpg'
imagem = cv2.imread(imagem_path)

# Pré-processamento
imagem_cinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
_, imagem_binaria = cv2.threshold(imagem_cinza, 128, 255, cv2.THRESH_BINARY)

# Extração de texto
texto = pytesseract.image_to_string(imagem_binaria)
print(texto)

Esse simples exemplo de código demonstra como Python, combinado com OpenCV e Tesseract, facilita a extração de textos de documentos impressos.

Reconhecimento de texto em placas de sinalização

Outra aplicação fascinante do OCR é o reconhecimento de texto em placas de sinalização, como placas de veículos. O processo, apesar de similar à extração de texto em documentos, tem suas particularidades, já que precisa lidar com diferentes condições de captura, como iluminação e ângulos.

  1. Captura da imagem: a imagem da placa é capturada por câmeras estratégicas em locais como pedágios ou estacionamentos.
  2. Segmentação: a placa é isolada do restante da imagem, o que pode exigir técnicas de pré-processamento mais específicas.
  3. Reconhecimento: após a segmentação, o OCR identifica os caracteres e os compara com bases de dados para fins de identificação.

Esses exemplos mostram como o OCR pode ser aplicado para simplificar tarefas que antes demandavam um grande esforço manual, trazendo mais agilidade e precisão para diversas áreas.

Trilha de Visão Computacional da Asimov Academy

Até aqui, você aprendeu o básico sobre OCR e como extrair texto de imagens usando Python. Agora é o momento de ir além! Com a Trilha Visão Computacional, da Asimov Academy, você dominará as principais ferramentas e frameworks para criar projetos inteligentes que manipulam vídeos e imagens. Considere explorar a Trilha, onde você encontrará cursos e projetos práticos que podem ajudá-lo a se aprofundar ainda mais no tema.

Por que escolher essa trilha?

  • Comece do zero e vá até o avançado em Python;
  • Aprenda a usar bibliotecas poderosas como OpenCV, Pillow e MediaPipe;
  • Desenvolva habilidades práticas por meio de projetos guiados passo a passo.

Inicie agora sua jornada!


Descubra mais sobre a trilha e transforme sua carreira! 

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov