Недавно я столкнулся с необходимостью конвертировать мои личные PDF-файлы в текст. Хотя для этой задачи было доступно множество существующих конвертеров PDF в текст, я не мог избавиться от чувства беспокойства по поводу загрузки моих личных документов на неизвестные серверы. Кто знает, что с ними может случиться и насколько они на самом деле в безопасности?

Я решил создать свой собственный конвертер PDF в текст (демо). С самого начала я знал, что это возможно, используя только Python.

Начиная

До этого, признаюсь, я не особо разбираюсь во фронтенд-разработке. Итак, я решил использовать PyWebIO, избавив меня от необходимости иметь дело с HTML и CSS.

Основные зависимости

Для начала я создал новый каталог проекта с именем pypdf2txt и инициализировал его с помощью Git и Poetry (моя виртуальная среда и менеджер пакетов для Python).

См. Как установить Poetry здесь. Альтернативно, вы всегда можете использовать старые добрые Пип и Венв.

Я включил необходимые зависимости — pdfminer.six для работы с PDF-файлами и pywebio для сборки веб-приложения.

Наконец, я создал файл main.py для хранения основных функций конвертера.

mkdir pypdf2txt
cd pypdf2txt
git init
poetry init
poetry add pdfminer.six pywebio
touch main.py

Необязательно: зависимости разработчиков

Я добавил autopep8 и ruff (вместо flake8) в качестве зависимостей разработки с помощью Poetry. Это поможет с автоматическим форматированием кода и линтингом:

poetry add -D autopep8 ruff

Преобразование PDF в текст

ПРИМЕЧАНИЕ. На протяжении всего этого пошагового руководства нам предстоит работать только с одним main.py.

Добавление описания сайта

Давайте начнем с чего-нибудь более простого, не так ли? Чтобы отобразить любой вывод в браузере, мы можем просто использовать модуль pywebio.output (ссылка).

# main.py

from functools import partial
from io import BytesIO, StringIO
from pathlib import Path

from pdfminer.high_level import extract_text_to_fp
from pywebio…