Хакатон в рамкках конкурса Студент года НИЯУ МИФИ

Команда: тыкаем по кнопкам

Задача: Table of Content

Описание задачи

В рамках задачи предоставлен набор pdf файлов не имеющих table of content (TOC), работа с такими файлами требует значительно больше ручного труда, гораздо удобнее пользоваться ссылками и сразу переходить к странице с нужной темой.

Задача написать сервис по добавлению TOC в pdf файла. При этом необходимо рассмотреть три кейса:

  1. TOC уже есть на страницах файла в виде раздела Содержание, но не добавлен в TOC pdf файла.
  2. На страницах файла нет раздела Содержание, но есть четкое разделение файла на Главы\Разделы по заголовкам
  3. Файл не имеет выделенных Глав\Разделов, необходимо группировать страницы в разделы по понятному принципу и считать первую страницу группы началом Главы\Раздела.

Держатель кейса: IT-холдинг Т1

Решение

Ссылка на презентацию решения

В рамках решения представленной задачи был развернут веб-сервис, позволяющий загружать pdf-файлы. Ссылка на серис: https://yourproject7.ru

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

image info

С главной страницы (/v1/) можно попасть на страницу заполнения формы (/v1/form/). На странице с формой можно загрузить pdf-файл, а также указать некоторые вспомогательные настройки для более быстрого обработки файла. Однако если подсказки окажуться неверными, то обработка может занять несколько больше времени.

image info

image info

После отправки формы на сервер (/v1/form/filled), от сервера должен прийти ответ 201 Created, содержащий id файла в очереди обработки. А также должно произойти перенаправление на страницу ожидания (/v1/wait/:id). Каждую секунду frontend дергает ручку, ожидая окончания обработки файла.

image info

Как только пришел положительный ответ, происходит перенаправление на страницу выгрузки результата (/v1/result/:id).

image info

Структура Git-репозитория

Папка algorithms содержит код, отвечающий за парсинг pdf-файлов и собственно обработку этих файлов.

Папка algorithms\my_models содержит ML-модели и код для их обучения.

Папка frontend отвечает за весь frontend в проекте. Сам frontend выполнен с использованием фреймворка VUE.

Папки Hackathon24, result, wait, main и pdfform отвечают за backend-логику сервера (обработка запросов от пользователя и т.п.). Backend выполнен с использованием фреймворка Django.

Для развертывания проекта на сервере использовались Nginx и Gunicorn.