Leitura De Palavras Simples - Fichas De Leitura Palavras Simples - FDPLEARN
Fichas De Leitura Palavras Simples - FDPLEARN

Como fazer leitura de palavras simples em imagens e documentos

Você já tentou extrair texto de uma imagem? Funciona bem quando o original é limpo. Começa a falhar quando a foto tá tremida, com iluminação ruim ou quando o fundo não é branco. É isso que a maioria das pessoas descobre na prática. A abordagem mais direta é usar OCR com Tesseract. Você instala a biblioteca, passa a imagem e lê o resultado. Simples assim para casos básicos. Mas existem detalhes que vão determinar se o processo leva dois minutos ou duas horas.

O básico da leitura de palavras simples

Um OCR convencional funciona em três etapas. Primeiro você converte a imagem para preto e branco com threshold. Depois o algoritmo identifica regiões de texto e as separa por linha e palavra. Por fim, cada região é comparada com um modelo de caracteres e classificada. O resultado é texto puro, mas a qualidade depende completamente da qualidade da imagem de entrada. Para leitura de palavras simples, o Tesseract 5 com o modelo traineddata português é suficiente na maioria dos casos. A instalação é trivial: pip install pytesseract, baixar o Tesseract do site oficial e configurar o caminho no código. Mas configurá-lo corretamente faz toda diferença nos resultados finais.

Implementação prática

Aqui está o código que eu uso no dia a dia. Não é sofisticado, mas funciona consistentemente para documentos escaneados e fotos razoavelmente boas.

import pytesseract
from PIL import Image
import cv2
import numpy as np

def ler_texto_simple(img_path):
    img = cv2.imread(img_path)
    cinza = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    binario = cv2.threshold(cinza, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
    texto = pytesseract.image_to_string(binaria, lang='por')
    return texto.strip()

O segredo aqui é o threshold adaptativo. Eu nunca uso threshold fixo porque luz desigual estraga tudo. O THRESH_OTSU calcula automaticamente o nível ideal baseado na histograma da imagem. Isso elimina a necessidade de ajustar manualmente para cada foto que você recebe.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Problema real que eu encontrei

Tinha um cliente que enviava recibos digitais como screenshot do celular. As imagens vinham com ruído de compressão JPEG, texto levemente inclinado e uma marca d'água diagonal cortando o conteúdo. O OCR padrão retornava lixo em cerca de 60% das palavras. O resultado era inútil para processamento automático. Minha solução foi adicionar três etapas antes do OCR: correção de inclinação com detecção de contours, remoção de marca d'água usando morphological operations e aumento de contraste local com CLAHE. O código ficou maior, mas a taxa de acerto subiu para acima de 94%. Se você está lidando com documentos similares, vale o esforço extra.

Limitações que ninguém menciona

OCR para leitura de palavras simples tem problemas conhecidos que são ignorados em tutoriais básicos. Fontes manuscritas são praticamente impossíveis de ler automaticamente. Números de série com letras similares como O e 0 geram erros silenciosos — o OCR não avisa que errou, ele só entrega o resultado errado. Documentos antigos com tinta desbotada produzem resultados inconsistentes dependendo da iluminação. Outro problema é a língua portuguesa. O Tesseract foi treinado majoritariamente com inglês. Palavras com acentos, ç e Nh às vezes saem erradas mesmo quando o resto do texto é perfeito. Sempre valide resultados críticos manualmente ou use validação por dicionário com python-language-tools antes de confiar no output.

Se o seu caso envolve formulários estruturados, campos preenchidos à mão ou documentos muito antigos, considere alternar para APIs pagas como Google Vision ou AWS Textract. Elas custam dinheiro, mas lidam melhor com cenários difíceis que o Tesseract open-source simplesmente não resolve.

Dicas para melhorar a leitura de palavras simples

Se você quer resultados melhores sem complicar demais, comece por aqui. A Resolução da imagem deve ser pelo menos 300 DPI. Imagens menores que isso produzem texto borrado e illegível. Evite rotas de PDF diretamente — extraia as páginas primeiro como PNG ou TIFF. O Tesseract lê pixels, não vetores. Pré-processamento é mais importante do que configuração. Uma imagem bem preparada com threshold adequado resolve 80% dos problemas. Só ajuste parâmetros avançados se o resultado ainda não satisfatório depois de melhorar a imagem de entrada. Palavras com hífens no final da linha são divididas incorretamente quase sempre. Use config = --psm 6 para assumir bloco uniforme de texto e reduza esse problema.

O download do Tesseract com suporte a português está disponível em github.com/tesseract-ocr/tesseract/wiki#windows. Baixe a versão 5.x e o arquivo por.traineddata para a pasta tessdata. O Python wrapper é instalado via pip e funciona com qualquer versão do Python 3.8 ou superior.