Revelation: Handwritten to Data
Project status: DoneA reproducible, open-weight OCR pipeline for Ukrainian handwritten documents, built for AI HOUSE's Kaggle "Handwritten to Data" competition. A YOLO v6 typed detector cuts each page into regions, Qwen2.5-VL-7B-Instruct (with type-specific LoRA specialists) reads the handwriting, and a CSV builder reconstructs valid submissions. Reached ~84% region-level and ~79% page-level character accuracy on internal validation, running inference on a single NVIDIA H100 80GB GPU.
Notes
The project command center for AI HOUSE's Kaggle Handwritten to Data competition. The goal: build a reproducible, open-weight Ukrainian handwritten document OCR pipeline that can run inference on a single NVIDIA H100 80GB GPU.
The Pipeline
The task was never "just read handwriting" — it was three jobs pretending to be one:
- Detect regions — a YOLO v6 typed detector points at the page and labels each rectangle (text, table, and other region types).
- Recognize handwriting —
Qwen/Qwen2.5-VL-7B-Instructreads each crop, with type-specific LoRA specialists (school, archive, university, dictation) nudging the base model toward each document style. - Rebuild the submission — a CSV builder turns the recognized regions back into the exact format Kaggle expects, where row count, JSON validity, and region order decide the score.
Results
v17 0.56819 best GLM-OCR routed system
v18 0.67364 first Qwen-VL LoRA submission
v19 0.71352 larger mixed-source Qwen-VL LoRA
v20 0.75185 archive specialist promoted near the end
On internal validation the pipeline reached roughly 16% region-level CER and 21% page-level CER — about 84% character accuracy on cropped regions and 79% on full-page reconstruction.
What It Taught Me
The recognizer decided most of the score, but validation decided which recognizer was real. Adapters helped, yet routing made them complicated. Agents (Codex and Claude) did most of the ML work, but only because the repo carried enough docs, experiment logs, and reproducible commands to keep them in context.
A full, non-technical retrospective is linked from this page — covering GLM-OCR, the Qwen-VL pivot, adapters, validation loops, and discovering the Ukrainian ML scene.