trOCR: Revoluce v rozpoznávání textu s transformery

Dosažení lidské přesnosti v extrakci textu z tištěného, rukopisného a vícejazyčného obsahu.

Co je trOCR API?

trOCR (Transformer-based Optical Character Recognition) je průlomový OCR model od Microsoftu, který využívá sílu transformerových architektur pro nepřekonatelnou přesnost v rozpoznávání textu. Na rozdíl od konvenčních OCR systémů, které spoléhají pouze na konvoluční sítě, trOCR kombinuje vision transformery (ViTs) s modelováním sekvence na sekvenci, což mu umožňuje porozumět kontextu a prostorovým vztahům v textu - dokonce i u náročných vstupů jako ručně psané poznámky, nízko kvalitní skeny nebo složité písmo.

Hlavní výhody trOCR:

  • Lidská úroveň rozpoznávání: Vyniká v čtení kurzivy a deformovaného textu, kde tradiční OCR selhává.
  • Vícejazyčná podpora: Předtrénované modely podporují angličtinu, francouzštinu, němčinu a další s možností doladění pro další jazyky.
  • Kompletní pipeline: Kombinuje detekci a rozpoznání textu do jediného procesu.
  • Snadná integrace: Postaveno na Hugging Face's Transformers knihovně pro jednoduché nasazení.

Od digitalizace historických archivů po zpracování faktur - trOCR nastavuje nový standard v OCR technologiích.

GitHub

Statistiky GitHubu

Název:
Jazyk:
hvězdy:
Vidlice:
Licence:
Úložiště bylo naposledy aktualizováno v

Proč zvolit trOCR?

  • Transformerová technologie: Přesahuje CNN modely o 15-20% vyšší přesností na benchmarkových datech jako IAM Handwriting.
  • Specializace na rukopis: Model trocr-base-handwritten dosahuje přesnosti nad 90% u kurzivy.
  • Minimální předzpracování: Robustní vůči variacím písma, orientace a šumu v pozadí.
  • Škálovatelnost: Zpracovává dávky obrázků s téměř lineárním zrychlením na GPU.
  • Přizpůsobitelnost: Možnost doladění na doménově specifická data (lékařské předpisy, účtenky).

Instalace

trOCR vyžaduje PyTorch nebo TensorFlow a knihovnu Hugging Face Transformers. Pro optimální výkon doporučujeme použít prostředí s GPU:

Instalace s PyTorch (doporučeno GPU)


pip install transformers torch torchvision
pip install datasets  # Volitelné pro doladění modelu

Poznámka: Modely microsoft/trocr-base vyžadují ~1.5GB úložného prostoru na variantu (tištěný/rukou psaný text). Zajistěte dostatek úložiště a RAM (8GB+ pro dávkové zpracování).

Příklady kódu

Prozkoumejte možnosti trOCR prostřednictvím těchto praktických ukázek. Všechny příklady předpokládají, že máte nainstalované potřebné závislosti.

trOCR zpracovávající ručně psaný a tištěný text

Příklad 1: Rozpoznání ručně psaného textu

Tento příklad demonstruje schopnost trOCR rozpoznávat kurzivní písmo. Model (trocr-base-handwritten) byl trénován na IAM Handwriting Database, což jej činí ideálním pro poznámky, dopisy nebo historické dokumenty.

Rozpoznání rukopisu


from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

# Načtení procesoru a modelu (specializovaného na rukopis)
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")

# Otevření obrázku a předzpracování
image = Image.open("handwritten_note.jpg").convert("RGB")  # Zajistěte formát RGB
pixel_values = processor(image, return_tensors="pt").pixel_values  # Normalizace a změna velikosti

# Generování predikcí textu
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Extrahovaný text: {text}")

Tip: Pro nejlepší výsledky s rukopisem:

  • Použijte skeny s rozlišením 300+ DPI
  • Zajistěte správné osvětlení bez stínů
  • Pokud možno ořízněte na oblasti s textem

Příklad 2: Zpracování tištěných dokumentů

Pro psaný nebo tištěný text (knihy, faktury apod.) model trocr-base-printed poskytuje téměř dokonalou přesnost. Tento příklad ukazuje, jak zpracovat naskenovaný dokument:

Extrakce tištěného textu


from transformers import pipeline
from PIL import Image

# Použití Hugging Face pipeline pro zjednodušení
ocr = pipeline("image-to-text", model="microsoft/trocr-base-printed")

# Zpracování dokumentu
image = Image.open("contract.png").convert("RGB")  # Převod do RGB
results = ocr(image)

# Výstup strukturovaných výsledků
for idx, item in enumerate(results):
    print(f"Strana {idx + 1}: {item['generated_text']}")

Poznámka k výkonu: Na GPU NVIDIA T4 zpracuje ~3 strany/sekundu. Pro hromadné operace použijte dávkování (viz Příklad 3).

Příklad 3: Dávkové zpracování pro efektivitu

trOCR podporuje dávkové zpracování pro maximalizaci využití hardwaru. Tento příklad zpracovává více obrázků paralelně:

Paralelní extrakce textu


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

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

# Příprava dávky
image_paths = ["doc1.jpg", "doc2.jpg", "doc3.jpg"]
images = [Image.open(path).convert("RGB") for path in image_paths]

# Zpracování dávky
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)

# Zobrazení výsledků
for path, text in zip(image_paths, texts):
    print(f"{path}: {text[:50]}...")  # Zobrazení prvních 50 znaků

Doporučení pro velikost dávek:

GPU VRAMDoporučená velikost dávky
8GB4-8 obrázků (1024x768)
16GB+16-32 obrázků

Pokročilé tipy

Pro další vylepšení výkonu trOCR:

  • Předzpracování: Použijte OpenCV pro narovnání a úpravu kontrastu:

    Vylepšení obrázku

    
        import cv2
        img = cv2.imread("low_quality_doc.jpg")
        img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)  # Oprava orientace
        img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]  # Binarizace
        
    
  • Doladění modelu: Adaptace na specifickou doménu s vlastními daty:

    Skript pro doladění

    
        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"
        )
        # Pro kompletní nastavení viz dokumentace Hugging Face
        
    

Závěr

trOCR překonává limity optického rozpoznávání znaků kombinací transformerových architektur s počítačovým viděním. Jeho schopnost zpracovat vše od poznámek po vícejazyčné dokumenty jej činí nepostradatelným pro:

  • Digitalizaci archivů: Konverze historických rukopisů s zachováním formátování.
  • Právní/zdravotnické workflow: Extrakce textu z citlivých dokumentů s možností auditování.
  • Zpřístupňování obsahu: Generování alternativních textů k obrázkům ve velkém měřítku.

S průběžnými vylepšeními od Microsoftu a open-source komunity trOCR neustále posouvá hranice technologie rozpoznávání textu.

Podobné Produkty

 Czech