Презентацию к проекту можно рассмотреть в виде картинок в папке images, там же показаны примеры работы
Глобальная задача: разработать детектор элементов документа по картинке
- Создать генератор документов (
docx
илиpdf
) для получения обучающей выборки - Сформировать из документов набор данных: картинки и координатную разметку к ним
- Обучить модель на этих данных
В целях генерации датасета была создана структура классов, а также консольная утилита для запуска скрипта.
- Рандомная генерация с убывающей вероятностью появления для каждого класса
- Разнообразные формулы
- Картинки из датасета в 3000 изображений (ссылка на датасет)
- Генерация графиков с помощью
matplotlib
- Код структурирован по модулям
- Эффективная генерация документов с использованием нескольких ядер процессора
В целях разметки датасета была создана структура классов и консольная утилита.
- Выделение всех заданных классов с почти стопроцентной точностью
- Использование библиотеки
PyMuPdf
вместо предложенной в техническом задании - Возможность визуализации результата разметки (активируется отдельным флагом при запуске)
Для решения задачи использовался созданный датасет, а модели дообучались на основе YOLOv10
.
Detectron2
YOLOv10nano
YOLOv10small
YOLOv10medium
Модель YOLOv10medium, обученная на 100 эпохах, была выбрана по итогам рассмотрения метрик и визуальной оценки.
Для использования модели был создан Swagger с помощью FastAPI
.
- При загрузке изображения Swagger возвращает JSON с разметкой.
- Создан Docker-образ для быстрого развёртывания проекта.
Пространство для улучшений:
- Тестирование моделей с более серьёзными параметрами
- Использование более мощных вычислительных ресурсов
- Расширение генерации, включая многоколоночные абзацы
По результатам работы было выполнено ТЗ, созданы утилиты для датасета и обучена модель с precision=0.966.