trocr-pl-base / README.md
PiotrSty's picture
Publish experimental TrOCR PL run 2 with real-scan metrics
df28225 verified
|
Raw History Blame Contribute Delete
3.84 kB
metadata
license: mit
language:
  - pl
  - en
library_name: transformers
pipeline_tag: image-to-text
base_model: microsoft/trocr-base-printed
tags:
  - trocr
  - ocr
  - polish
  - historical-print
  - experimental
model-index:
  - name: trocr-pl-base
    results:
      - task:
          type: image-to-text
          name: OCR line recognition
        dataset:
          name: OCR Engine real-lines-v1
          type: PiotrStyla/OCR_engine
        metrics:
          - type: cer
            value: 0.11108010047446273
            name: CER
          - type: wer
            value: 0.3584
            name: WER

TrOCR PL Base — experimental

Eksperymentalny checkpoint microsoft/trocr-base-printed dostrojony metodą LoRA do drukowanego tekstu polskiego. Model przyjmuje obraz pojedynczej linii, a nie całą stronę dokumentu.

Status

Experimental — nie jest jeszcze modelem produkcyjnym. Checkpoint wyraźnie poprawia angielski baseline na polskich liniach, ale pełny pipeline stron jest ograniczony przez segmentację i nie powinien być oceniany wynikiem samego recognizera.

Wyniki

Zbiór Zakres CER WER
syntetyczny validation 200 linii 4,86% 21,41%
real-lines-v1 75 ręcznie wyciętych realnych linii 11,11% 35,84%
real-lines-v1, EN baseline te same 75 linii 81,91% 100,16%
print-pilot-v1 2 pełne strony z OpenCV segmentacją 66,17% 86,08%

Realne cropy pochodzą z dwóch historycznych polskich stron public domain. Referencje przygotował jeden autor bez niezależnej drugiej weryfikacji. Pełny wynik stron obejmuje detekcję, segmentację, kolejność i rozpoznawanie; nie jest wynikiem samego checkpointu.

Benchmark i predykcje: OCR_engine/benchmarks/real-lines-v1 oraz experiments/2026-09-13.

Trening

  • baza: microsoft/trocr-base-printed, rewizja 93450be3f1ed40a930690d951ef3932687cc1892,
  • dane: PiotrSty/ocr-pl-lines, 2000 syntetycznych linii train + 200 validation,
  • 3 epoki, batch 8 na T4 x2,
  • LoRA dekodera attention (q_proj, k_proj, v_proj, out_proj),
  • 3 047 424 trenowanych parametrów (0,9044%),
  • najlepszy checkpoint wybrany po CER: epoka 3,
  • Transformers 4.57.6, PEFT 0.19.1,
  • jawnie wyrównana strata tokenowa, bez podwójnego przesunięcia etykiet.

Pełna proweniencja, hashe próbek i wersje pakietów znajdują się w run.json. Adapter LoRA jest zachowany w adapter/; model główny jest scalony i można go ładować bez PEFT.

Użycie

from PIL import Image
from transformers import TrOCRProcessor, VisionEncoderDecoderModel

model_id = "PiotrSty/trocr-pl-base"
processor = TrOCRProcessor.from_pretrained(model_id)
model = VisionEncoderDecoderModel.from_pretrained(model_id)

image = Image.open("line.png").convert("RGB")
pixel_values = processor(image, return_tensors="pt").pixel_values
ids = model.generate(pixel_values, max_new_tokens=128)
print(processor.batch_decode(ids, skip_special_tokens=True)[0])

W silniku OCR model należy włączyć jawnie:

from ocr import OcrConfig, OcrEngine

config = OcrConfig(recognizer_pl="PiotrSty/trocr-pl-base", force_language="pl")
with OcrEngine(config) as engine:
    result = engine.recognize("document.png")

Ograniczenia

  • trenowany głównie na danych syntetycznych;
  • przetestowany tylko na małym pilocie historycznego druku;
  • niezweryfikowany na piśmie ręcznym, tabelach, formularzach i szerokim przekroju współczesnych dokumentów;
  • wymaga poprawnych cropów pojedynczych linii;
  • może degenerować na krótkich, zaszumionych liniach i znakach interpunkcyjnych;
  • confidence jest sygnałem niepewności, a nie skalibrowanym prawdopodobieństwem.