Добавить установку для Windows..
Установить Python
sudo apt-get install -y python3.12
sudo apt-get install -y python3.12-venv
sudo apt-get install python3.12-tk
sudo apt-get install python3.12-dev
Скачать исходный код с github
git clone https://github.com/Ev2geny/Sberbank2Excel.git
создать и активировать виртуальную среду
python3.12 -m venv .venv
source .venv/bin/activate
Установить пакеты
pip3 install -r requirements.txt
Запустить GUI
python core/sberbankPDF2ExcelGUI.py
Sberbank2Excel имеет модульную конструкцию, где для каждого типа выписки имеется отдельный модуль.
Таким образом для того чтобы добавить поддержку нового формата выписки необходимо создать и зарегистрировать новый модуль экстрактора.
Модуль типа extractor_XXXX.py
должен содержать класс, который наследует от абстрактного класса Extractor
и должен содержать имплементацию всех абстрактных методов этого класса.
Проще всего скопировать один из существующих экстракторов (например extractor_SBER_CREDIT_2110.py
, который специально для этого содержит большое число комментариев) и изменить код так, чтобы он соответствовал бы новому типу выписки.
Для облегчения разработки модули экстракторов содержат код для самотестирования, который работает, когда модуль запускается в качестве основной программы
if __name__ == '__main__':
Шаги по создания нового модуля экстрактора:
Шаг 1.1 Скопировать extractor_SBER_CREDIT_2110.py
под новым именем.
Шаг 1.2 В только что созданном модуле переименовать class SBER_CREDIT_2107(Extractor)
(к примеру class SOME_NEW_FORMAT(Extractor)
)
Шаг 1.3 Внести новое имя класса в самом низу модуля в строку, которая запускает автотестирование
extractors_generic.debug_extractor(SBER_CREDIT_2107, test_text_file_name=sys.argv[1])
Шаг 1.4 Внести необходимые изменения в методы класса SOME_NEW_FORMAT
, используя информацию из комментариев. Методы можно переписывать по одному, последовательно проверяя их запуская модуль из командной строки в качестве основной программы. При запуске модуля в качестве аргумента надо указать файл предварительно созданного промежуточного текстового варианта выписки (промежуточный текстовый вариант выписку будет создан автоматически при попытке сконвертировать неизвестный формат).
py extractor_XXXXXX.py bank_extract_converted_to_txt.txt
Это будет запускать функцию extractors_generic.debug_extractor
, которая сама расскажет, что она делает. В конечном итоге функция extractors_generic.debug_extractor
должна отрабатывать без ошибок.
После того как новый модуль экстрактора полностью протестирован изолированно, его надо зарегистрировать в модуле extractors.py
, используя в качестве образца уже зарегистрированные экстракторы
Теперь можно приступать к тестированию, пытаясь сконвертируя выписку обычным способом.
Если в планах сделать github pull request, то необходимо так же приложить анонимизированный графический образец новой выписки (см. примеры)
Пример полного набора изменений для добавления одного формата выписки можно посмотреть в этом коммите