/ Модель

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

Лицензия
Apache 2.0
Архитектура
d_fine · dense
Базовая модель
docling-layout-egret-xlarge
Библиотека
transformers
Опубликована
8 июн 2026

dfine-egret-x-rukopys

Поиск объектовИзображение → bounding_boxes6 профессий

Дообученный детектор D-FINE-X для поиска и классификации семи типов областей на рукописных украинских страницах.

95скачиваний за 30 дней0лайковвеса обновлены30 июл 2026

Бенчмарки

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

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

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

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

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

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

Hukyl/dfine-egret-x-rukopys — модель обнаружения объектов для анализа рукописных украинских страниц. Она разработана Hukyl на основе D-FINE-X и дообучена на размеченном наборе Rukopys; архитектура включает backbone HGNetV2 и декодер в стиле RT-DETR. Модель содержит около 62,7 млн параметров и распознаёт семь типов областей: рукописный и печатный текст, формулы, таблицы, аннотации, изображения и графики.

Модель предназначена для поиска и классификации областей документа перед передачей распознавателям текста или формул. На отложенной выборке из 133 страниц mAP@50 составила 0,6704, а mAP@50–95 — 0,4441; качество заметно различается между классами. Модель обучали и оценивали при размере изображения 640×640; результаты для документов иных типов не проверялись. Слабыми классами являются аннотации и изображения, а малое число примеров некоторых категорий делает их метрики нестабильными. Веса распространяются по лицензии Apache-2.0; обучающие данные Rukopys указаны с лицензией CC BY 4.0.

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

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

Ограничения

Обучение и оценка проводились только на рукописных украинских страницах при размере 640×640; качество для других типов документов не проверено. Детекция аннотаций и изображений слабее, а метрики редких классов нестабильны из-за малого числа примеров.

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

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

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

Также подходит для

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

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

Открыть на Hugging Face

dfine-egret-x-rukopys

A D-FINE-X (DFineForObjectDetection, ~62.7M params) document-layout detector for handwritten Ukrainian pages, fine-tuned on the Rukopys dataset with a 7-class head: 0 handwritten · 1 printed · 2 formula · 3 table · 4 annotation · 5 image · 6 graph.

TL;DR

value
ArchitectureD-FINE (HGNetV2 backbone, RT-DETR-style decoder with fine-grained distribution refinement), DFineForObjectDetection
Parameters~62.7M
Init fromdocling-project/docling-layout-egret-xlarge (17-class document-layout checkpoint)
Classeshandwritten, printed, formula, table, annotation, image, graph
Decodingset prediction, 300 object queries, no NMS
Gold-val mAP@50 / mAP@50-950.6704 / 0.4441 (macro over 7 classes)
Inputa document page image, 640×640
Outputclass-labeled region bounding boxes

Intended use

Detecting and classifying page regions on handwritten Ukrainian documents, upstream of region recognizers (e.g. Hukyl/trocr-large-rukopys for text, Hukyl/trocr-base-rukopys-formula for formulas). For a stronger single detector on the same task, see Hukyl/doclayout-yolov10-rukopys.

How to use

import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForObjectDetection

repo = "Hukyl/dfine-egret-x-rukopys"
model = AutoModelForObjectDetection.from_pretrained(repo).eval()
processor = AutoImageProcessor.from_pretrained(repo)

image = Image.open("page.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
    outputs = model(**inputs)

# threshold ~0.5-0.6 is a balanced operating range
target_sizes = torch.tensor([image.size[::-1]])  # (height, width)
result = processor.post_process_object_detection(
    outputs, threshold=0.5, target_sizes=target_sizes
)[0]
for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
    print(model.config.id2label[label.item()], round(score.item(), 3), box.tolist())

Files

model.safetensors, config.json,   the shipped checkpoint — loads directly
preprocessor_config.json          with from_pretrained
training_meta.json                recorded recipe + the shipped checkpoint's metrics
metrics.json                      val metrics, aggregate + per-class
selection_comparison.json         the two checkpoint-selection axes side by side
training_log.jsonl                per-epoch loss / mAP / P / R curves

Head re-initialisation (17 → 7)

The backbone, encoder, decoder, and the class-agnostic box-regression head load from the base checkpoint as-is; the classification head is re-initialised to the 7 Rukopys classes, with id2label/label2id baked into the config.

Training

Fine-tuned on the human-labeled Rukopys train split via the 🤗 Trainer. The image processor applies a deterministic 640×640 resize with ImageNet normalisation.

Hyperparameters (as launched)

hyperparametervalue
epochs60 (early stopping, patience 15 on val mAP@50)
batch / image size32 / 640
optimizer / scheduleAdamW, linear decay
learning rate1e-4
warmup ratio0.1
weight decay1e-4
freezenone
augmentationnone
eval / checkpoint cadenceevery epoch
checkpointbest val mAP@50 (epoch 24)
seed42

The full recorded recipe ships in training_meta.json; per-epoch curves in training_log.jsonl.

Checkpoint selection

The run tracked two selection axes; val loss and val mAP@50 are anti-correlated across this run (Pearson ≈ −0.81). This repo ships the mAP@50-selected checkpoint.

selected onmAP@50mAP@50-95precisionrecall
val mAP@50 (shipped)0.67040.44410.89710.8787
val loss0.64130.43560.91840.8695

Class distribution (region counts)

classtrainval
handwritten19,4202,157
printed26642
formula2,545347
table12814
annotation49460
image1154
graph545
total23,0222,629

Results

Held-out val split of the Rukopys train data: 133 pages / 2,629 regions (stratified holdout, seed 42). mAP is threshold-free with box matching at IoU 0.50 (mAP@50–95 averages IoU 0.50:0.95); precision and recall are reported at a fixed confidence ≥ 0.50 operating point (class-aware greedy matching at IoU ≥ 0.50). Per-class precision/recall are not recorded.

Aggregate (macro over 7 classes)

metricvalue
mAP@500.6704
mAP@50-950.4441
precision0.8971
recall0.8787

Per class

classnmAP@50mAP@50-95
handwritten2,1570.93290.5960
printed420.65450.3685
formula3470.90440.6107
table140.85220.4763
annotation600.25610.1148
image40.45150.4149
graph50.64110.5272

We also acknowledge that printed/table/annotation/image/graph n is quite small, so measuring detection metrics against them is quite noisy.

Limitations

  • annotation (mAP@50 0.26) and image (mAP@50 0.45) are weak classes.
  • Trained and evaluated at 640×640; very small or dense regions on high-resolution scans may benefit from a higher inference resolution.
  • Precision/recall are reported at the conf ≥ 0.50 operating point; calibrate the inference threshold against your own target metric.
  • Handwritten Ukrainian school/archival-style pages only; behaviour on other document types is untested.
  • Single seed and validation split — no across-run variance estimate.

Training data & attribution

datasetsourcelicenserole
RukopysUkrainianCatholicUniversity/rukopysCC BY 4.0gold fine-tune

Model weights are Apache-2.0, inherited from D-FINE and the base checkpoint.

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
DFineForObjectDetection
Ревизия весов
6c4574e

0 моделей