Optical Character Recognition (OCR)
O reconhecimento ótico de caracteres (OCR) converte o texto de digitalizações e fotografias em caracteres legíveis por máquina. As etapas de deteção e reconhecimento, com código.
O reconhecimento óptico de caracteres (OCR) converte texto em imagens, como páginas digitalizadas, fotos, capturas de tela e quadros de vídeo, em caracteres legíveis por máquina que os softwares podem pesquisar, editar e analisar. Os primeiros sistemas comparavam cada caractere com modelos armazenados de fontes conhecidas. O OCR moderno usa aprendizado profundo para encontrar texto em qualquer parte de uma imagem e ler palavras e linhas inteiras de uma vez, lidando com fontes variadas, baixa resolução, perspectiva e fundos complexos. O OCR abrange tanto o texto em documentos, como faturas e livros, quanto o texto em cenas, como placas, rótulos de produtos e placas de veículos.
Como funciona o OCR#
A maioria dos sistemas de OCR executa dois modelos em sequência:
- Detecção de texto: Um detector encontra as regiões da imagem que contêm texto e produz uma caixa ou um polígono para cada palavra ou linha. Detectores de texto em cenas, como EAST, CRAFT e DBNet, predizem regiões de texto pixel a pixel, lidando com texto curvo e rotacionado.
- Reconhecimento de texto: Cada região é recortada, endireitada e redimensionada para uma altura fixa, e um reconhecedor lê seus caracteres. O projeto CRNN passa o recorte por uma CNN, lê as colunas de características resultantes da esquerda para a direita com uma LSTM bidirecional e as decodifica com classificação temporal conexionista (CTC), que alinha as predições por coluna a uma sequência de caracteres sem indicar onde cada caractere começa. Reconhecedores Transformer, como o TrOCR da Microsoft, geram os caracteres com um decodificador de texto.
O pré-processamento, como a binarização e a correção de inclinação, ainda ajuda em digitalizações de baixa qualidade, e o pós-processamento verifica a saída com dicionários, formatos esperados ou um modelo de linguagem. O EasyOCR reúne as duas etapas — um detector CRAFT e um reconhecedor CRNN — para mais de 80 idiomas:
import easyocr
# Load EasyOCR's CRAFT text detector and English CRNN text recognizer
reader = easyocr.Reader(["en"])
# Detect every text region in the photo, then read the characters inside it
results = reader.readtext("https://ultralytics.com/images/bus.jpg")
# Each result holds a 4-corner box, the recognized string, and a confidence score
for box, text, confidence in results:
if confidence > 0.5:
print(f"{text}: {confidence:.2f}")Ele imprime cero: 0.95 e emisiones: 0.99, as palavras escritas na lateral do ônibus. O detector também encontra o letreiro de destino matricial do ônibus e as letras pequenas nas janelas, mas o reconhecedor retorna sequências ilegíveis para eles, com níveis de confiança abaixo de 0,5, então o limiar os descarta.
Os documentos exigem uma etapa de organização do layout antes do reconhecimento. Um modelo de layout divide a página em blocos, cada tipo de bloco recebe um tratamento próprio e os resultados são remontados na ordem de leitura; assim, um artigo em duas colunas é lido uma coluna de cada vez:
A precisão é medida pela taxa de erro de caracteres (CER), o número de inserções, exclusões e substituições de caracteres necessárias para transformar a saída no texto correto, dividido pelo comprimento do texto correto, e pela taxa de erro de palavras (WER), calculada da mesma forma para palavras.
Mecanismos e modelos de OCR#
O mecanismo de código aberto Tesseract surgiu na Hewlett-Packard na década de 1980, foi lançado como código aberto em 2005 e teve desenvolvimento patrocinado pelo Google entre 2006 e 2018; a versão 4 adicionou um mecanismo de reconhecimento baseado em uma rede LSTM. Serviços na nuvem, como o Google Cloud Vision e o Amazon Textract, acrescentam extração de layouts, tabelas e formulários. Modelos de visão e linguagem leem cada vez mais documentos de ponta a ponta: o olmOCR, do Allen Institute for AI, converte páginas de PDF em texto limpo com um modelo de visão e linguagem ajustado, e modelos de documentos sem OCR respondem a perguntas sobre uma página sem primeiro gerar uma transcrição separada.
OCR em comparação com termos relacionados#
- Reconhecimento de escrita manual: também chamado de reconhecimento de texto manuscrito (HTR) ou reconhecimento inteligente de caracteres (ICR), lê a escrita manual, na qual as formas das letras variam muito mais do que na escrita impressa e os caracteres costumam se unir.
- Detecção de objetos: Um detector pode encontrar uma placa de pare como objeto, enquanto o OCR lê as letras S-T-O-P impressas nela. A própria etapa de detecção do OCR localiza o texto sem lê-lo.
- Classificação de imagens: Atribui um único rótulo à imagem inteira, como "fatura", enquanto o OCR extrai a sequência de caracteres dentro dela.
- Processamento inteligente de documentos: Amplia o OCR com análise de layout e reconhecimento de entidades nomeadas (NER) para extrair campos específicos, como a data, o fornecedor e o total de uma fatura, e inseri-los em sistemas empresariais.
Aplicações no mundo real#
- Reconhecimento de placas de veículos: Sistemas de cobrança de pedágio, estacionamento e fiscalização de trânsito detectam cada placa e depois a leem. Um modelo YOLO26 treinado com caixas de placas cuida da etapa de detecção, e sua variante de caixas delimitadoras orientadas ajusta caixas rotacionadas a placas inclinadas, para que cada recorte possa ser endireitado antes do reconhecimento.
- Digitalização de documentos: Bancos, seguradoras e governos transformam formulários, recibos e arquivos em texto pesquisável, e bibliotecas digitalizam livros impressos em grande escala.
- Acessibilidade e tradução: Leitores de tela e aplicativos de tradução com câmera leem placas, cardápios e rótulos em voz alta ou sobrepõem uma tradução à imagem ao vivo.
- Manufatura e logística: Câmeras leem códigos de lote, datas de validade e números de série nas linhas de produção. Os códigos de contêineres de transporte seguem a ISO 6346, cujos 11 caracteres terminam com um dígito de verificação calculado a partir dos 10 primeiros, permitindo que um leitor rejeite automaticamente a maioria dos códigos lidos incorretamente.










