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.
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.
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 VRAM | Doporučená velikost dávky |
---|---|
8GB | 4-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.