/ Модель

Характеристики

Контекст
512 токенов
Лицензия
Apache 2.0
Архитектура
vision-encoder-decoder · dense
Базовая модель
trocr-base-handwritten-ru
Библиотека
transformers
Опубликована
3 мая 2026

trocr-kgb-archive

Описание изображенийИзображение → текст3 профессии

Модель TrOCR распознаёт отдельные строки рукописного русского и украинского текста на изображениях советских архивных документов.

873скачиваний за 30 дней1лайквеса обновлены4 мая 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Распознавание текста» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Hukyl/trocr-kgb-archive — модель Andrii Shalaiev для распознавания строк рукописного кириллического текста на изображениях советских архивных документов XX века. Она предназначена для OCR отдельных строк, преимущественно на русском языке; также может обрабатывать украинский и смешанный текст. Модель основана на TrOCR с архитектурой VisionEncoderDecoderModel и создана двухэтапным дообучением с LoRA на базе kazars24/trocr-base-handwritten-ru. В репозитории опубликован объединённый чекпойнт, для которого адаптер не требуется при инференсе.

Модель обучалась на украинских рукописных строках из UkrainianCatholicUniversity/rukopys и небольшом целевом наборе архивных строк с разметкой; в набор также входили даты с кириллическими, латинскими, арабскими и римскими цифрами. На отложенной выборке указаны CER 0,152 и WER 0,439. Лицензия — Apache-2.0.

Модель рассчитана на рукописные строки, похожие на обучающие примеры. Она хуже работает с незнакомыми стилями письма, сильно стилизованным почерком и письмом до XX века; печатный и машинописный текст не входил в обучение. Длинные строки могут обрезаться после 64 новых токенов, а оценку последовательности не следует использовать как показатель уверенности.

Сценарии применения

  • распознавание рукописных строк в архивных документах XX века
  • оцифровка рукописных записей на русском языке
  • распознавание украинских рукописных строк
  • извлечение рукописных дат из архивных изображений

Ограничения

Модель предназначена для отдельных строк рукописного текста и может ошибаться на незнакомых почерках, сильно стилизованном письме и текстах до XX века; печатный текст не поддерживается. Строки длиннее 64 новых токенов могут обрезаться, а оценка последовательности не является надёжной мерой уверенности.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

trocr-kgb-archive

A TrOCR model fine-tuned for line-level Cyrillic handwriting recognition on Soviet-era archival documents.

Model description

A two-stage LoRA fine-tune of kazars24/trocr-base-handwritten-ru for handwritten Russian (and occasional Ukrainian) text in 20th-century archival material.

  • Stage 1 — domain-prep LoRA on UkrainianCatholicUniversity/rukopys (~6 000 Ukrainian-handwritten line-level crops), merged into the base.
  • Stage 2 — target-domain LoRA on ~2 500 hand-annotated archival crops, merged into the Stage 1 base to produce the published checkpoint.

The two-stage recipe is what produces the gain: Stage 1 is roughly a wash on the target domain when measured zero-shot, but it provides a strong handwriting prior that the small target-domain Stage 2 fine-tune builds on.

This repository hosts the fully merged checkpoint — there is no PEFT adapter at inference time. from_pretrained returns an ordinary VisionEncoderDecoderModel.

Intended uses

  • Line-level OCR of handwritten Cyrillic strips — single-line crops similar in shape to the training inputs.
  • Russian primarily, with occasional Ukrainian and mixed-language content tolerated.
  • Reasonable performance on handwritten dates containing mixed Cyrillic / Latin / Arabic / Roman numeral conventions (see Evaluation).

Limitations

  • Small training set (~2 000 unique handwritten lines). The model has limited language-modeling power and will degrade on out-of-distribution writing styles, highly stylized hands, or scripts from earlier than the 20th century.
  • Handwritten only. Typewriter-printed Cyrillic was not part of training; for that text class, use a typewriter/print-oriented Cyrillic OCR model (e.g. PaddleOCR with the East-Slavic recognizer).
  • Date-format dependency. Date crops may use Cyrillic month numerals (Х), ASCII Latin Roman (XI), Arabic (12), or mixed conventions. The model emits its own convention; downstream users with a specific target convention should normalize predictions.
  • Confident errors. Beam search does not buy headroom in failure cases (the second-best beam is typically identical to top-1). Don't use top-1 sequence score as a confidence signal.
  • Greedy ≈ beam-4 on the validation corpus (Δ < 0.001 CER). Greedy decoding is recommended for speed; the saved generation_config defaults to it.
  • Length cap. max_new_tokens=64 was the training cap; longer lines may be truncated.

How to use

from transformers import VisionEncoderDecoderModel, TrOCRProcessor
from PIL import Image
import torch

model = VisionEncoderDecoderModel.from_pretrained("Hukyl/trocr-kgb-archive")
processor = TrOCRProcessor.from_pretrained("Hukyl/trocr-kgb-archive")
model.eval()

# Single-line crop, RGB
img = Image.open("line.jpg").convert("RGB")
pixel_values = processor(images=img, return_tensors="pt").pixel_values

with torch.inference_mode():
    generated_ids = model.generate(pixel_values, max_new_tokens=64, num_beams=1)

text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(text)

For GPU inference: model.to("cuda") and pixel_values = pixel_values.to("cuda") before generate.

Training data

  • Stage 1: UkrainianCatholicUniversity/rukopys, train split — gold-annotated Ukrainian handwritten line crops.
  • Stage 2: ~2 564 hand-annotated line-level crops from an internal Cyrillic handwritten archival corpus, split 80 / 20 train / val with a stratified seed (label × length-bucket).

Per-label distribution after the Stage 2 train / val split:

LabelTotal cropsShare
General handwritten text2 36492 %
Handwritten dates2008 %

Training procedure

Stage 1 — Рукопис domain prep

HyperparameterValue
AdapterLoRA, r=32, α=64, dropout=0.10, target=attn_ffn, no DoRA
OptimizerAdamW
Learning rate2e-4
Warmup ratio0.1
Batch size4
Epochs10
Patience6
Eval decodingbeam=4

The Stage 1 LoRA is merged into the base via merge_and_unload() to produce a self-contained VisionEncoderDecoderModel checkpoint, which is then used as the base for Stage 2.

Stage 2 — Target-domain fine-tune

HyperparameterValue
AdapterLoRA, r=32, α=64, dropout=0.10, target=attn_ffn, no DoRA
OptimizerAdamW
Learning rate5e-5
Warmup ratio0.1
Batch size8
Epochs8
Patience8 (effectively no early stop)
metric_for_best_modelCER
load_best_model_at_endTrue
Eval decodinggreedy (beams=1)

After training, the Stage 2 LoRA is merged into the Stage 1 base. The published artifact is the result of that merge — a single self-contained VisionEncoderDecoderModel.

Augmentation (Stage 2)

Each train source crop produced 10 augmented variants (offline, written to disk; no online aug). Per variant: 1 geometric transform + 1-2 photometric transforms, sampled uniformly from per-label registries.

GroupTransforms
GeometricMarginManipulation, Rotation (±1–5°), ElasticDistortion, BaselineWarp
PhotometricPaperColourShift (LAB), GaussianNoise, JpegCompression, ContrastGamma, MorphologicalOp (erode/dilate)

Evaluation

Held-out 513-row val (greedy decoding):

MetricValue
Overall CER0.152
Overall WER0.439
CER on general handwritten lines0.150
CER on handwritten dates0.168
Exact-match accuracy~36 %

Greedy decoding was confirmed equivalent to beam=4 (Δ < 0.001 CER) on this corpus, so the published generation_config defaults to num_beams=1 for inference speed.

Train-set memorization (sanity check)

Reported as a sanity check, not a production-relevant number: across the full corpus (train + val mixed, 2 564 crops), CER drops to ~0.04 because the model has memorized its training portion. The honest, generalization-relevant number is the val-only 0.152 above.

Authors

Acknowledgements

License

Released under Apache-2.0.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
VisionEncoderDecoderModel
Ревизия весов
deb8202

0 моделей