---
license: apache-2.0
base_model:
- unsloth/Qwen3-VL-8B-Instruct-unsloth-bnb-4bit
- Qwen/Qwen3.5-9B
- lightonai/LightOnOCR-2-1B-base
- timm/convnext_large.fb_in22k_ft_in1k
pipeline_tag: image-to-text
tags:
- handwriting-recognition
- ocr
- htr
- safetensors
---
# road weights
Line readers and word-boundary models for the `road` handwritten-line transcription pipeline.






## ⚡ Quick start
This repository is public and ungated: downloads need no Hugging Face account or token.
With the accompanying `road` code:
```bash
bash install.sh # install the pinned environments
bash scripts/01_get_weights.sh --release bundle-001 # download and verify inference weights and bases
bash run_inference.sh --release bundle-001 # write outputs/submission/final_submission.csv
```
The downloader uses the immutable weight revision `96fa774b66a32e30f48bbe920121bcdff0548a19`.
It also downloads the two Qwen base models from the pinned repositories listed below.
To acquire the starting models for training, including the Kraken base hosted under `upstream/`:
```bash
bash scripts/01_get_weights.sh --release bundle-001 --training --bases-only
```
## 📦 Contents
Release `bundle-001`. Each reader comes in five versions, one per fold (`f0`–`f4`).
| Folder | Model | Input | Format | Size |
| --- | --- | --- | --- | --: |
| `qwen3vl_strip/` | Qwen3-VL 8B | single strip | LoRA adapter | 3.7 GB |
| `qwen3vl_nine/` | Qwen3-VL 8B | nine views | LoRA adapter | 3.7 GB |
| `qwen35_strip/` | Qwen3.5-9B | single strip | adapter | 2.8 GB |
| `qwen35_nine/` | Qwen3.5-9B | nine views | adapter | 2.8 GB |
| `lighton_strip/` | LightOnOCR-2 1B | single strip | full checkpoint | 20.2 GB |
| `lighton_nine/` | LightOnOCR-2 1B | nine views | full checkpoint | 20.2 GB |
| `convnext_large/` | ConvNeXt-large CTC | single strip | full checkpoint | 4.2 GB |
| `kraken_medium/` | Kraken medium CTC | single strip | full checkpoint | 0.3 GB |
| `segmenter/` | 2 word counters + 5 boundary finders | single strip | full checkpoints | 5.6 GB |
| `upstream/` | PP-OCRv6 (medium), byte-identical copy | – | original file | 64 MB |
Adapters load on their public base model, downloaded from its own repository at a pinned revision. Full checkpoints need nothing else.
Pinned base models
| Base | Revision | Used for |
| --- | --- | --- |
| [unsloth/Qwen3-VL-8B-Instruct-unsloth-bnb-4bit](https://huggingface.co/unsloth/Qwen3-VL-8B-Instruct-unsloth-bnb-4bit) | `b5b904c3fcdc7541adf2a2bb219b0ed95288c794` | loading `qwen3vl_*` |
| [Qwen/Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B) | `c202236235762e1c871ad0ccb60c8ee5ba337b9a` | loading `qwen35_*` |
| [lightonai/LightOnOCR-2-1B-base](https://huggingface.co/lightonai/LightOnOCR-2-1B-base) | `c1bc8eb6625be7b34178ff53481b242f7b8ffcb8` | training only |
| [timm/convnext_large.fb_in22k_ft_in1k](https://huggingface.co/timm/convnext_large.fb_in22k_ft_in1k) | `dc2e53fad264aa1fb4e5940e0d1c9b79ac6e0854` | training only |
| [PP-OCRv6 (medium)](https://doi.org/10.5281/zenodo.21788410), copy in `upstream/` | Zenodo record 21788410 | training only |
## 🔒 Integrity
[`manifest.json`](https://huggingface.co/DariusTheGeek/road-weights/blob/main/manifest.json) lists the size and SHA-256 of every file. The downloader checks each file against it and refuses any mismatch. Files never change within a release.
## ⚖️ Licences
The reader and word-boundary checkpoints are modified versions of the models below. The Kraken base under `upstream/` is an unchanged copy.
| Folders | Built on | Licence | Credit |
| --- | --- | --- | --- |
| `qwen3vl_*` | Qwen3-VL-8B-Instruct, 4-bit by Unsloth | Apache-2.0 | Qwen team, Alibaba Cloud |
| `qwen35_*` | Qwen3.5-9B | Apache-2.0 | Qwen team, Alibaba Cloud (© 2026 Alibaba Cloud) |
| `lighton_*` | LightOnOCR-2-1B-base | Apache-2.0 | LightOn |
| `convnext_large/`, `segmenter/` | ConvNeXt-large, via timm | Apache-2.0; original weights MIT | Liu et al., "A ConvNet for the 2020s" (2022); © Meta Platforms, Inc. and affiliates |
| `kraken_medium/`, `upstream/` | PP-OCRv6 (medium) | Apache-2.0 | Benjamin Kiessling (ALMAnaCH, Inria Paris) |
Full texts: [`LICENSE`](https://huggingface.co/DariusTheGeek/road-weights/blob/main/LICENSE) (Apache-2.0) and [`licenses/MIT-ConvNeXt.txt`](https://huggingface.co/DariusTheGeek/road-weights/blob/main/licenses/MIT-ConvNeXt.txt).
## 🙏 Credits
Using the Kraken files? Please cite [kraken](https://kraken.re) and credit the dataset providers listed on the [PP-OCRv6 record](https://doi.org/10.5281/zenodo.21788410).
Runs with
Each environment has its own hash-locked pins in the `road` code (`install/locks/.lock`). CUDA 12.8 builds.
| Environment | Python | Key packages | Loads |
| --- | --- | --- | --- |
| core | 3.10.12 | huggingface-hub 0.36.2, numpy 2.2.6, rapidfuzz 3.14.5 | download, weighted vote |
| seg | 3.11.13 | torch 2.10.0, timm 1.0.28, opencv-python-headless 4.14 | `segmenter/`, `convnext_large/` |
| kraken | 3.11.13 | torch 2.10.0, kraken 7.1.1, kenlm 0.3.0 | `kraken_medium/` |
| qwen3vl | 3.11.13 | torch 2.11.0, transformers 5.5.0, peft 0.20.0, unsloth 2026.9.2, bitsandbytes 0.50.2 | `qwen3vl_*` |
| qwen35 | 3.11.13 | torch 2.10.0, transformers 5.17.0, peft 0.19.1 | `qwen35_*` |
| lighton | 3.11.13 | torch 2.10.0, transformers 5.17.0 | `lighton_*` |