trOCR: Revolusjonerer tekstgjenkjenning med Transformere

Oppnå menneskelig nøyaktighet i tekstutvinning for trykt, håndskrevet og flerspråklig innhold.

Hva er trOCR API?

trOCR (Transformer-basert optisk tegngjenkjenning) er Microsofts banebrytende OCR-modell som utnytter transformatorarkitekturer for enestående nøyaktighet i tekstgjenkjenning. I motsetning til tradisjonelle OCR-systemer som kun bruker konvolusjonelle nettverk, kombinerer trOCR vision transformers (ViT) med sekvens-til-sekvens-modellering, noe som gjør at den forstår kontekst og romlige relasjoner i tekst – selv for utfordrende inndata som håndskrevne notater, lavoppløselige skanninger eller komplekse skrifttyper.

Nøkkelfordeler med trOCR:

  • Menneskelignende gjenkjenning: Utmerker seg på kursiv håndskrift og forvrengt tekst der tradisjonell OCR svikter.
  • Flerspråklig støtte: Forhåndstrente modeller støtter engelsk, fransk, tysk og mer, med mulighet for tilpasning til andre språk.
  • Helhetlig løsning: Kombinerer tekstdeteksjon og -gjenkjenning i én strømlinjeformet prosess.
  • Sømløs integrasjon: Bygget på Hugging Faces Transformers-bibliotek for enkel implementering i eksisterende arbeidsflyter.

Fra digitalisering av historiske arkiver til fakturabehandling – trOCR setter en ny standard for OCR-ytelse i virkelige bruksområder.

GitHub

GitHub-statistikk

Navn:
Språk:
Stjerner:
Gafler:
Tillatelse:
Repository ble sist oppdatert kl

Hvorfor velge trOCR?

  • Transformer-drevet: Overgår CNN-baserte modeller med 15-20% høyere nøyaktighet på benchmark-datasett som IAM Handwriting.
  • Spesialist på håndskrift: Modellen trocr-base-handwritten oppnår over 90% nøyaktighet på kursiv tekst.
  • Minimal forbehandling: Robust mot variasjoner i skrifttype, orientering og bakgrunnsstøy.
  • Skalerbar inferens: Behandler bilder i batch med nesten lineær akselerasjon på GPU-er.
  • Tilpassbar: Finjuster med domene-spesifikke data (f.eks. medisinske resepter, kvitteringer).

Installasjon

trOCR krever PyTorch eller TensorFlow og Hugging Face Transformers-biblioteket. For optimal ytelse anbefales GPU-miljø:

Installer med PyTorch (GPU anbefales)


pip install transformers torch torchvision
pip install datasets  # Valgfritt for finjustering

Merk: Modellene microsoft/trocr-base krever ~1.5GB lagringsplass per variant (trykt/håndskrevet). Sikre tilstrekkelig lagring og RAM (8GB+ for batchbehandling).

Kodeeksempler

Utforsk trOCRs muligheter med disse praktiske eksemplene. Alle eksempler forutsetter installerte avhengigheter.

trOCR behandler håndskrevet og trykt tekst

Eksempel 1: Gjenkjenning av håndskrevet tekst

Dette eksempelet viser trOCRs styrke i å tyde kursiv håndskrift. Modellen (trocr-base-handwritten) er trent på IAM Handwriting Database, og er ideell for notater, brev eller historiske dokumenter.

Håndskriftsgjenkjenning


from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

# Last inn prosessor og modell (spesialisert for håndskrift)
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")

# Åpne bilde og forbehandle
image = Image.open("håndskrevet_notat.jpg").convert("RGB")  # Sikre RGB-format
pixel_values = processor(image, return_tensors="pt").pixel_values  # Normaliser og endre størrelse

# Generer tekstforutsigelser
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Gjenkjent tekst: {text}")

Tips: For beste resultater med håndskrift:

  • Bruk skanninger med 300+ DPI
  • Sikre riktig belysning for å unngå skygger
  • Beskjær til tekstområder der mulig

Eksempel 2: Behandling av trykte dokumenter

For maskinskrevet eller trykt tekst (bøker, fakturaer osv.) leverer trocr-base-printed-modellen nesten perfekt nøyaktighet. Dette eksempelet viser behandling av et skannet dokument:

Tekstutvinning fra trykt materiale


from transformers import pipeline
from PIL import Image

# Bruk Hugging Face pipeline for enkelhet
ocr = pipeline("image-to-text", model="microsoft/trocr-base-printed")

# Behandle dokument
image = Image.open("kontrakt.png").convert("RGB")  # Konverter til RGB
results = ocr(image)

# Strukturerte resultater
for idx, item in enumerate(results):
    print(f"Side {idx + 1}: {item['generated_text']}")

Ytelsesnotat: På en NVIDIA T4 GPU behandles ~3 sider/sek. For bulkoperasjoner, bruk batchbehandling (se Eksempel 3).

Eksempel 3: Batchbehandling for effektivitet

trOCR støtter batch inferens for maksimal hardwareutnyttelse. Dette eksempelet behandler flere bilder parallelt:

Parallell tekstutvinning


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

# Initialiser
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)

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

# Behandle batch
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)

# Vis resultater
for path, text in zip(image_paths, texts):
    print(f"{path}: {text[:50]}...")  # Vis første 50 tegn

Råd om batchstørrelse:

GPU VRAMAnbefalt batchstørrelse
8GB4-8 bilder (1024x768)
16GB+16-32 bilder

Avanserte tips

For ytterligere å forbedre trOCRs ytelse:

  • Forbehandling: Bruk OpenCV for retting og kontrastjustering:

    Bildeforbedring

    
        import cv2
        img = cv2.imread("lav_kvalitet_dok.jpg")
        img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)  # Fiks orientering
        img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]  # Binariser
        
    
  • Finjustering: Tilpass til ditt domene med egendefinerte data:

    Finjusteringsskript

    
        from transformers import Seq2SeqTrainingArguments
        args = Seq2SeqTrainingArguments(
            output_dir="./trocr-finetuned",
            per_device_train_batch_size=8,
            num_train_epochs=3,
            save_steps=1000,
            evaluation_strategy="steps"
        )
        # Se Hugging Face-dokumentasjon for full oppsettskonfigurasjon
        
    

Konklusjon

trOCR omdefinerer mulighetene for optisk tegngjenkjenning ved å kombinere transformatorarkitekturer med datamaskinsyn. Dens evne til å håndtere alt fra kladder til flerspråklige dokumenter gjør den uunnværlig for:

  • Arkivprosjekter: Digitaliser historiske manuskripter med bevart formatering.
  • Juridiske/medisinske arbeidsflyter: Trekk ut tekst fra sensitive dokumenter med revisjonsspor.
  • Tilgjengelighetsteknologi: Generer alt-tekst for bilder i stor skala.

Med løpende forbedringer fra Microsoft og åpen kildekode-samfunnet fortsetter trOCR å presse grensene for tekstgjenkjenningsteknologi.

Lignende Produkter

 Norsk