KazNU-OCR-Layout
YOLOv8-модель для layout detection (определения структурных блоков) страниц казахской университетской газеты «Qazaq Universiteti». Часть пайплайна hybrid active learning newspaper OCR: модель находит на странице заголовки, колонки текста, фотографии, авторов и другие блоки — это первый шаг перед OCR-распознаванием текста.
Подробности подхода: см. hybrid_active_learning_newspaper_ocr.md в
исходном репозитории на GitHub (ссылка появится после публикации).
Версии
Все три версии — это последовательные итерации одного active learning цикла. Каждая следующая версия обучена на расширенном/исправленном датасете.
| Версия | Train/Val страниц | Классов | mAP50 (overall) | Что изменилось |
|---|---|---|---|---|
v1_retry |
40/10 | 11 | 0.614 | Первая модель, эталонная разметка 50 страниц |
v2 |
51/14 | 11 | 0.890 | + 15 доразмеченных сложных страниц (фоторепортажи) |
v3 |
51/14 | 9 | 0.958 | Убраны редкие шумные классы caption, continuation_marker |
Рекомендуется использовать v3 — самая точная и стабильная версия.
Классы (v3)
0: headline — заголовок статьи
1: text_column — колонка текста
2: photo — фотография/иллюстрация
3: author — автор статьи
4: page_number — номер страницы
5: masthead — шапка газеты
6: footer — футер страницы
7: teaser — анонс другой статьи
8: junk — мусор, декоративные элементы
Метрики v3 (per-class mAP50)
| Класс | mAP50 |
|---|---|
| headline | 0.952 |
| text_column | 0.984 |
| photo | 0.964 |
| author | 0.904 |
| masthead | 0.990 |
| footer | 0.995 |
| teaser | 0.913 |
Использование
from ultralytics import YOLO
model = YOLO("v3/best.pt")
results = model("page.png")
for box in results[0].boxes:
cls_name = model.names[int(box.cls)]
conf = float(box.conf)
print(f"{cls_name}: {conf:.3f}")
Ограничения
- Обучена и протестирована только на издании «Qazaq Universiteti» (вёрстка InDesign, казахский язык). Перенос на другие газеты/вёрстки не гарантирован без доразметки.
- Малый датасет (65 страниц) — редкие на странице элементы (например, таблицы, рекламные блоки) могут распознаваться нестабильно.
- Не делает OCR текста — только находит и классифицирует блоки макета.