PDF файлы являются универсальным средством работы с документами, которое обладает следующими преимуществами:
- возможность цифровой подписи и шифрования содержимого
- встроенные средства table-of-contents
- поддержка графики
- кроссплатформенность
Однако, при работе с PDF файлами, в особенности с большими файлами, возникают следующие проблемы:
- отсутствие удобной навигации по документу
- документы являются отсканированными, нет возможности выделить текст
Данное решение позволяет структурировать и провести анализ содержимого PDF файла, выделить содержание и добавить содержание в документ для удобной навигации.
Решение представлено в виде backend-части с Telegram-ботом для удобного взаимодействия с системой и серверной части, на которой обрабатывается сам PDF файл.

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

Чтобы запустить у себя, нужно создать бота в телеграм через BotFather. Записать его токен. Создать у себя переменную окружения TOKEN_API_BOT_FH и записать в неё токен полученный от BotFather. Запустить main.py у себя для отладки, или если хотите чтоб бот работал долго в фоне, то (установив у себя докер), запустить образ, собранный с репозитория на GitHub, командой:
docker run --pull always -e TOKEN_API_BOT_FH=$TOKEN_API_BOT_FH -d evgeny105/fintech_projectЭта команда автоматически проверит, не обновился ли образ на DockerHub (обновление происходит после каждого push в GitHub) и запустит образ в фоне.
Проверить, запущен ли образ можно командой docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9652e8a353b4 evgeny105/fintech_project "python main.py" 36 seconds ago Up 33 seconds sweet_mestorfЛоги контейнера можно посмотреть с помощью docker logs 9652e8a353b4
Остановить контейнер можно командой docker stop 9652e8a353b4
Для запуска серверной части необходимо иметь установленным в системе tesseract, библиотеки для русского языка, а также зависимости:
pip install -r server_requirements.txtСерверная часть htttp-server.py осуществляет прием файла PDF, поиск в нем содержания и добавление найденного содрежания в файл с возможностью навигации.
python htttp_server.py