В рамках задачи предоставлен набор pdf файлов не имеющих table of content (TOC), работа с такими файлами требует значительно больше ручного труда, гораздо удобнее пользоваться ссылками и сразу переходить к странице с нужной темой.
Задача написать сервис по добавлению TOC в pdf файла. При этом необходимо рассмотреть три кейса:
- TOC уже есть на страницах файла в виде раздела Содержание, но не добавлен в TOC pdf файла.
- На страницах файла нет раздела Содержание, но есть четкое разделение файла на Главы\Разделы по заголовкам
- Файл не имеет выделенных Глав\Разделов, необходимо группировать страницы в разделы по понятному принципу и считать первую страницу группы началом Главы\Раздела.
Держатель кейса: IT-холдинг Т1
В рамках решения представленной задачи был развернут веб-сервис, позволяющий загружать pdf-файлы. Ссылка на серис: https://yourproject7.ru
Сервис работает достаточно слабый, поэтому могут быть задержки в работе.
С главной страницы (/v1/
) можно попасть на страницу заполнения формы (/v1/form/
).
На странице с формой можно загрузить pdf-файл, а также указать некоторые вспомогательные настройки для более быстрого обработки файла. Однако если подсказки окажуться неверными, то обработка может занять несколько больше времени.
После отправки формы на сервер (/v1/form/filled
), от сервера должен прийти ответ 201 Created, содержащий id файла в очереди обработки.
А также должно произойти перенаправление на страницу ожидания (/v1/wait/:id
). Каждую секунду frontend дергает ручку, ожидая окончания обработки файла.
Как только пришел положительный ответ, происходит перенаправление на страницу выгрузки результата (/v1/result/:id
).
Папка algorithms
содержит код, отвечающий за парсинг pdf-файлов и собственно обработку этих файлов.
Папка algorithms\my_models
содержит ML-модели и код для их обучения.
Папка frontend
отвечает за весь frontend в проекте. Сам frontend выполнен с использованием фреймворка VUE.
Папки Hackathon24
, result
, wait
, main
и pdfform
отвечают за backend-логику сервера (обработка запросов от пользователя и т.п.). Backend выполнен с использованием фреймворка Django.
Для развертывания проекта на сервере использовались Nginx и Gunicorn.