SLAYER OCR — frozen Qwen3-VL historical adapter 0.5, v1
Frozen experimental reference, not a production promotion or a SOTA claim. This release preserves the exact saved historical LoRA checkpoint and its DEV-selected strength 0.5, pinned base model, inference profile, measured runtime code, predictions, references and evidence. Further experiments must use another version instead of overwriting this snapshot.
Recorded results
| Scope | Pages | CER micro | WER micro | Errors/missing |
|---|---|---|---|---|
| Amended provisional full-page DEV v4 | 15 | 13.872895165670832% | 51.66553365057783% | 0 |
| Frozen PolOCRBench test A | 36 | 18.794129465567058% | 56.68535825545171% | 1 |
The frozen 36-page A target below 16% is not met. The failed generation is included as an empty hypothesis, not removed. Known A reference defects remain unchanged. DEV is an amended single-review draft, not independently adjudicated gold or a new holdout. Its score uses NFC and whitespace only; A additionally folds typographic quotes, following its frozen protocol. Do not conflate scopes.
These are scores from unchanged saved predictions, independently recomputed while freezing. No new training, GPU inference or test A measurement was run. The original checkpoint completed one epoch, 17 optimizer steps, on 65 scope-correct historical training regions, with an original 51-step schedule. Strength 0.5 was selected on DEV before the already completed A measurement. This is an adapted-model track, not zero-shot.
Native PaddleOCR-VL-1.6 was measured separately on the same DEV and scored 21.749049429657794% CER; its recorded outputs and audit are retained. It is not part of this model and is not used as a fallback or reference-text correction.
What is frozen
adapter/: original, unmerged PEFT LoRA weights and configuration, unchanged. 33,030,144 parameters; rank 16, alpha 32. Weight SHA-256:2bb80027372f35132a5328ab4442ea533c660c17c01fff1e2557fa1e39ee240f.- Base:
PiotrSty/slayer-ocr-qwen3vl-4b-frozenat immutable commit2f5de2dc7bc70a683d53be1792d60e459a2d2c6d. Base weights are not duplicated in this adapter repository; every required base file hash is pinned. inference-recipe.json: runtime NF4 double quantization, fp16 compute, nonquantized fp32 / vision fp16 layout, fused expanded-KV SDPA, greedy decode, 262,144 minimum pixels, 4,194,304 maximum pixels, 4,096 new tokens and EOS guard.prompt-A.txtand its original organizer prompt source; no spelling correction or language-model postprocessing.runtime/: exact 20 source files saved by the measured GPU run. The recorded GitHub checkout commit is only a bootstrap: at least one critical runtime source differs from it. Do not substitute that checkout for the frozen files.ocr.py: single-page entry point using the pinned base, original checkpoint and existing measured helper functions; no training or automatic retry.evidence/: original pilot metadata, DEV selection recipe, v4 reference metadata and checksum identities, saved controls, all 36 A predictions and scores, and CPU score recomputations. Scans are not duplicated; immutable dataset revisions and image hashes are retained.freeze-manifest.jsonandchecksums.json: explicit scope and payload hashes.
Strength 0.5 is a runtime multiplier of the LoRA delta, not a learning rate. The stored adapter was not rescaled or merged. Loading it at the PEFT default strength 1.0, using an unpinned base or changing the dtype/attention policy does not reproduce this profile. Generic AutoPEFT loading is not the recorded runner.
Download and use
hf download PiotrSty/slayer-ocr-qwen3vl-hist-0p5-frozen --revision qwen3vl-hist-0p5-v1-20261013 --local-dir slayer-ocr-hist-0p5-v1
python slayer-ocr-hist-0p5-v1/ocr.py --verify-only
pip install -r slayer-ocr-hist-0p5-v1/requirements.txt --extra-index-url https://download.pytorch.org/whl/cu128
python slayer-ocr-hist-0p5-v1/ocr.py page.png
The last command requires an NVIDIA CUDA GPU. It downloads only the pinned base
model files if needed; existing Hub cache is reused. An existing verified base
snapshot can instead be supplied using --base-dir /path/to/frozen-base.
Output is raw JSON with transcription and generation health. A non-EOS result
is returned as an error with exit status 1; it is not silently retried or fixed.
For strict reproducibility, use the 40-character Hub commit resolved by the
release tag, not main. The package versions recorded in the GPU measurement
are pinned; this is not a complete transitive dependency lock.
The packaged entry point was checked through CPU payload verification, helper
imports and its CUDA refusal path. GPU inference was not rerun for the newly
packaged CLI; the retained measured runtime and checkpoint are the provenance
for the historical results. --verify-only is integrity verification, not an
accuracy measurement.
Attribution and boundaries
Base model: Qwen3-VL-4B-Instruct,
Apache-2.0, via the separately frozen base snapshot. Its original source-copy
provenance limitations remain; this freeze does not turn those historical
identification limits into an original GPU-cache checksum.
Historical training corpus:
PiotrSty/impact-psnc-polish-ocr
at c7cb156fb95d2880699c33725bbaf1fbc1008fea; test and overlapping collections
were excluded by the recorded protocol. DEV references remain ineligible for
training. No production configuration or benchmark reference is changed by
this release.