trOCR: Revolucionando o reconhecimento de texto com Transformers

Alcance precisão humana na extração de texto impresso, manuscrito e em múltiplos idiomas.

O que é a API trOCR?

trOCR (Optical Character Recognition baseado em Transformers) é o modelo inovador de OCR da Microsoft que utiliza arquiteturas Transformer para oferecer precisão incomparável no reconhecimento de texto. Diferente dos sistemas OCR tradicionais que dependem apenas de redes convolucionais, o trOCR integra vision transformers (ViTs) com modelagem sequencial, permitindo compreender contexto e relações espaciais no texto - mesmo em entradas complexas como notas manuscritas, digitalizações de baixa resolução ou caracteres complexos.

Principais vantagens do trOCR:

  • Reconhecimento quase humano: Excelente na leitura de cursivas e textos distorcidos onde OCRs tradicionais falham.
  • Multilíngue: Modelos pré-treinados suportam inglês, francês, alemão e outros, com capacidade de adaptação para mais idiomas.
  • Solução completa: Combina detecção e reconhecimento de texto em um único fluxo.
  • Integração simplificada: Construído na biblioteca Transformers da Hugging Face para fácil implementação em fluxos existentes.

Desde a digitalização de arquivos históricos até processamento de faturas - o trOCR estabelece um novo padrão de desempenho para OCR em aplicações reais.

GitHub

Estatísticas do GitHub

Nome:
Linguagem:
Estrelas:
Garfos:
Licença:
O repositório foi atualizado pela última vez em

Por que escolher trOCR?

  • Baseado em Transformers: Supera modelos CNN com 15-20% mais precisão em benchmarks como IAM Handwriting.
  • Especialista em manuscritos: O modelo trocr-base-handwritten alcança mais de 90% de precisão em texto cursivo.
  • Pré-processamento mínimo: Robusto contra variações de fonte, orientação e ruído de fundo.
  • Processamento em lote: Processa múltiplas imagens com aceleração quase linear em GPUs.
  • Customizável: Ajuste para dados específicos (ex.: receitas médicas, comprovantes).

Instalação

O trOCR requer PyTorch ou TensorFlow e a biblioteca Transformers da Hugging Face. Para melhor desempenho, recomendamos ambiente com GPU:

Instalar com PyTorch (GPU recomendado)


pip install transformers torch torchvision
pip install datasets  # Opcional para ajustes

Atenção: Os modelos microsoft/trocr-base requerem ~1.5GB de espaço por variante (impresso/manuscrito). Garanta armazenamento e RAM suficientes (8GB+ para processamento em lote).

Exemplos de código

Explore as capacidades do trOCR com estas implementações práticas. Todos os exemplos assumem dependências instaladas.

trOCR processando texto manuscrito e impresso

Exemplo 1: Reconhecimento de escrita manual

Este exemplo demonstra a capacidade do trOCR em decifrar cursivas. O modelo (trocr-base-handwritten) foi treinado na base IAM Handwriting Database, ideal para notas, cartas ou documentos históricos.

Reconhecimento de manuscritos


from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

# Carregar processador e modelo (especializado em manuscritos)
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")

# Abrir e preparar imagem
image = Image.open("nota_manuscrita.jpg").convert("RGB")  # Garantir formato RGB
pixel_values = processor(image, return_tensors="pt").pixel_values  # Normalizar e redimensionar

# Gerar previsões de texto
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Texto reconhecido: {text}")

Dica: Para melhores resultados com manuscritos:

  • Use digitalizações com 300+ DPI
  • Garanta iluminação adequada sem sombras
  • Recorte para regiões de texto quando possível

Exemplo 2: Processamento de documentos impressos

Para texto impresso (livros, faturas etc.), o modelo trocr-base-printed oferece precisão quase perfeita. Este exemplo mostra como processar um documento digitalizado:

Extração de texto impresso


from transformers import pipeline
from PIL import Image

# Usar pipeline Hugging Face para simplicidade
ocr = pipeline("image-to-text", model="microsoft/trocr-base-printed")

# Processar documento
image = Image.open("contrato.png").convert("RGB")  # Converter para RGB
results = ocr(image)

# Estruturar resultados
for idx, item in enumerate(results):
    print(f"Página {idx + 1}: {item['generated_text']}")

Desempenho: Em uma GPU NVIDIA T4, processa ~3 páginas/seg. Para operações em massa, use processamento em lote (veja Exemplo 3).

Exemplo 3: Processamento em lote

O trOCR suporta inferência em lote para maximizar hardware. Este exemplo processa múltiplas imagens em paralelo:

Extração paralela de texto


import torch
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

# Inicializar
device = "cuda" if torch.cuda.is_available() else "cpu"
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-printed")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-printed").to(device)

# Preparar lote
image_paths = ["doc1.jpg", "doc2.jpg", "doc3.jpg"]
images = [Image.open(path).convert("RGB") for path in image_paths]

# Processar lote
pixel_values = processor(images, return_tensors="pt").pixel_values.to(device)
generated_ids = model.generate(pixel_values)
texts = processor.batch_decode(generated_ids, skip_special_tokens=True)

# Exibir resultados
for path, text in zip(image_paths, texts):
    print(f"{path}: {text[:50]}...")  # Mostrar primeiros 50 caracteres

Orientações de tamanho de lote:

GPU VRAMTamanho recomendado
8GB4-8 imagens (1024x768)
16GB+16-32 imagens

Dicas avançadas

Para melhorar ainda mais o desempenho do trOCR:

  • Pré-processamento: Use OpenCV para correção angular e ajuste de contraste:

    Melhoria de imagem

    
        import cv2
        img = cv2.imread("documento_baixa_qualidade.jpg")
        img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)  # Corrigir orientação
        img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]  # Binarizar
        
    
  • Ajuste fino: Adapte a dados específicos:

    Script de ajuste

    
        from transformers import Seq2SeqTrainingArguments
        args = Seq2SeqTrainingArguments(
            output_dir="./trocr-ajustado",
            per_device_train_batch_size=8,
            num_train_epochs=3,
            save_steps=1000,
            evaluation_strategy="steps"
        )
        # Consulte a documentação do Hugging Face para configuração completa
        
    

Conclusão

O trOCR redefine o possível no reconhecimento óptico de caracteres ao combinar arquiteturas Transformer com visão computacional. Sua capacidade de lidar com tudo - desde rabiscos até documentos multilíngues - o torna essencial para:

  • Projetos de arquivamento: Digitalize manuscritos históricos preservando formatação.
  • Fluxos jurídicos/médicos: Extraia texto de documentos sensíveis com trilhas de auditoria.
  • Acessibilidade: Gere texto alternativo para imagens em escala.

Com melhorias contínuas da Microsoft e da comunidade open-source, o trOCR continua expandindo os limites da tecnologia de reconhecimento de texto.

Produtos Similares

 Portugese