AlexandreSheva/rukopys-qwen3-vl-8b-page
<!-- This model card has been generated automatically according to the information the Trainer had access to. You should probably proofread and complete it, then remove this comment. -->
RUKOPYS Qwen3-VL 8B Page LoRA
Page-level LoRA adapter for Qwen/Qwen3-VL-8B-Instruct, fine-tuned for Ukrainian handwritten document understanding.
This model takes a full scanned page as input and predicts structured JSON regions: bounding boxes, region type, language metadata, and transcribed text. It was built as part of an end-to-end HTR pipeline for the RUKOPYS handwritten document dataset: data curation, supervised fine-tuning dataset generation, QLoRA training, inference, evaluation, and Kaggle-style submission export.
What It Does
- Parses full-page Ukrainian handwritten documents.
- Returns structured region-level JSON instead of plain OCR text.
- Supports document AI workflows where layout and transcription must be evaluated together.
- Serves as the first public baseline LoRA adapter from this project.
Training Data
Trained on the curated RUKOPYS MVP dataset:
`AlexandreSheva/rukopys-curated-mvp`
The dataset is a cleaned derivative of UkrainianCatholicUniversity/rukopys, prepared for page-level vision-language fine-tuning, crop-level transcription, and layout detection experiments.
Output Format
The expected output is JSON similar to:
[
{
"bbox": [10, 20, 300, 80],
"type": "handwritten",
"language": "uk",
"text": "..."
}
]Notes
This is the original public 8B page-level adapter. For the improved checkpoint, use:
`AlexandreSheva/rukopys-qwen3-vl-8b-page-a100-v2`
Limitations
Optimized for Ukrainian handwriting and RUKOPYS-style documents. Sensitive to image quality, scan resolution, and page layout. Should be validated on target documents before production use. The adapter is Apache-2.0, but the training data derives from a CC BY-NC-SA 4.0 dataset.
Training procedure
Training hyperparameters
The following hyperparameters were used during training:
- learning_rate: 0.0002
- trainbatchsize: 1
- evalbatchsize: 1
- seed: 42
- gradientaccumulationsteps: 8
- totaltrainbatch_size: 8
- optimizer: Use OptimizerNames.ADAMWTORCHFUSED with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
- lrschedulertype: linear
- training_steps: 600
Training results
Framework versions
- PEFT 0.19.1
- Transformers 5.0.0
- Pytorch 2.11.0+cu128
- Datasets 4.8.5
- Tokenizers 0.22.2
