/Sberbank2Excel

конвертация выписки сбербанка по карте из формата PDF в формат Excel

Primary LanguagePythonMIT LicenseMIT

Sberbank2Excel

Расширяемая утилита для конвертации выписки Сбербанка по карте из формата PDF в формат Excel. (С возможностями расширения для выписок других банков).

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

Sberbank2Excel.PNG

Разработчик: ev2geny собака gmail.com

Содержание

Функционал

  • Конвертация одного или многих файлов PDF - выписки за один раз
  • Поддерживает несколько форматов выписки. См. Приложение А. Список поддерживаемых форматов
  • Легко расширяется для поддержки дополнительных форматов в том числе возможно и выписок из других банков (см. CONTRIBUTING.md)
  • Автоматическое определение формата выписки
  • Верификация баланса по транзакциям и по шапке. Утилита вычисляет баланс по всем найденным транзакциям и сравнивает это число с балансом, вычисленным по информации в шапке выписки (к примеру баланс_по_шапке = СУММА ПОПОЛНЕНИЙ - СУММА СПИСАНИЙ - СУММА СПИСАНИЙ БАНКА). Если эти два числа не совпадают, то выписка по умолчанию не создаётся. Это даёт высокую вероятность того, что если Excel файл был создан, то конвертация прошла без ошибок.

Как пользоваться

Подготовка

  1. Скачайте последнюю версию программы
  2. Разархивируйте ZIP файл в отдельную директорию и найдите sberbankPDF2ExcelGUI.exe

Конвертация

Шаг 1 Запустите sberbankPDF2ExcelGUI.exe

Шаг 2 Выберите один или несколько файлов выписки Сбербанка по карте в формате PDF

Шаг 3 Нажмите "Сконвертировать выбранные файлы"

Результат: утилита создаст файлы с расширением .xlsx

Примечания:

Опции Не удалять промежуточный текстовый файл и Игнорировать результаты сверки баланса по транзакциям и в шапке выписки используются в основном для отладки, сообщениях о проблемах или для тестирования.

Опция Изменить порядок трансакций на обратный используется для того, чтобы изменить порядок трансакций в Excel файле на обратный. Т.е. в этом случае первая трансакция в PDF файле будет последней в Excel файле и наоборот.

См. также Приложение В. Запуск приложения из командной строки

ЧаВо

Куда посылать донаты?

Если вы пользуетесь программой Sberbank2Excel и она вам нравится, вы можете рассмотреть возможность поддержать автора этой программы, сделав донат. Любая поддержка будет приветствоваться автором и поможет ему сохранить мотивацию и интерес к работе.

Способы переслать донаты

YooMoney (МИР, UnionPay, Mastercard, Visa, Maestro)

На каких Операционных Системах (ОС) работает утилита?

  • Windows начиная с Windows 8.1 (на Windows 7 не работает!)

В дополнение к этому можно запускать утилиту на macOS и Linux, но в на данный момент в регулярных релизах исполняемого файла для этих ОС не создаётся. Поэтому надо либо создавать его самостоятельно, либо запускать утилиту из среды Python (см. инструкцию разработчика.)

Утилита не конвертирует / не поддерживает мою выписку. Что делать?

Перед релизом утилита тестируется на конвертацию всех поддерживаемых форматах (см. Приложение А. Список поддерживаемых форматов) на всех доступных автору вариантах выписки. Если на Вашей выписке утилита не работает, либо если есть потребность добавить новый пока не поддерживаемый формат выписки, то существуют следующие варианты. (Варианты отсортированы в порядке возрастания сложности решения для Вас но одновременно в порядке убывания рисков связанных с конфиденциальностью данных для Вас же):

1. Попросить автора добавить поддержку вашего формата выписки. Для этого нужно выслать автору:

  • pdf-вариант выписки

2. Попросить автора добавить поддержку вашего формата выписки, выслав автору анонимизированные данные. Для этого потребуется выслать:

3. Добавить новый формат выписки самостоятельно используюя инструкцию разработчика.

Антивирус атакует утилиту и не даёт ей работать либо даже скачать. Что делать?

Антивирусные программы пытаются определить вирусы по одним им известным алгоритмам. Часто они блокируют всё, что им кажется подозрительным, включая Sberbank2Excel. Одновременно с этим все известные автору производители антивирусных программ позволяют выслать им подозрительный файл для более пристального изучения, после чего разблокируют его в следующем апдейте базы данных вирусов. К примеру для Microsoft Windows Defender файл надо посылать сюда. Для Symantec сюда. Автор как правило "согласовывает" каждый новый релиз как минимум с Microsoft Windows Defender. Таким образом если антивирусная программа, установленная на Вашем компьютере атакует Sberbank2Excel, то возможны следующие варианты действия:

  • Согласовать вопросы с производителем антивируса самостоятельно
  • Попросить это сделать автора. Автору потребуется информация о типе антивирусной программы, атакующей утилиту.

Обратная связь

Для сообщения об ошибках или пожеланиях по улучшению лучше всего воспользоваться функционалом системы github

На общие темы начните дискуссию здесь

Либо напишите письмо разработчику: ev2geny собака gmail.com

Приложения

Приложение А. Список поддерживаемых форматов


Банк Формат Описание MasterCard VISA Трансакции в иностранной валюте Известные проблемы
Сбербанк SBER_DEBIT_2005 Дебетовая карта образца мая 2020 года OK ??? ОК
Сбербанк SBER_DEBIT_2107 Дебетовая карта образца июля 2021 года OK ??? ОК
Сбербанк SBER_CREDIT_2110 Кредитная карта образца октября 2021 года (ТДВФН) ??? OK OK? 13
Сбербанк SBER_PAYMENT_2208 Платёжный счёт образца августа 2022 года (ТДВФН) НП НП НП?
Сбербанк SBER_DEBIT_2212 Дебетовая карта образца декабря 2022 года OK ??? ОК
Сбербанк SBER_PAYMENT_2212 Платёжный счёт образца декабря 2022 года НП НП ОК
Сбербанк SBER_SAVING_2303 Выписка из лицевого счёта по вкладу «Сберегательный счет» образца марта 2023 года (ТДВФН). Также должно работать с другими типами сберегательных счетов (Активное долголетие и т.д.) НП НП НП
Сбербанк SBER_DEBIT_2303_CHELYABINSK История операций по дебетовой карте за период. Образца марта 2023 года (ТДВФН). ???Челябинск?? ОК ? НЕТ
Сбербанк SBER_PAYMENT_2406 Платёжный счёт образца июня 2024 года НП НП ОК 43
Сбербанк SBER_PAYMENT_2407 Платёжный счёт образца июля 2024 года НП НП ОК 52
Сбербанк SBER_SAVING_2407 Выписка из лицевого счёта по вкладу «Накопительный счет» образца июля 2024 года (ТДВФН). НП НП НП
Сбербанк SBER_DEBIT_2408 Дебетовая карта образца августа 2024 года OK ??? ОК
Сбербанк SBER_CREDIT_2409 Кредитная карта образца сентября 2024 года НП НП ОК? 51

Легенда и сокращения

ОК - поддерживается

??? - неизвестно (не протестировано)

ОК? - точно неизвестно (не протестировано) но вроде должно работать

НП - не применимо

ТДВФН - точная дата выпуска формата неизвестна

Приложение Б. Как безопасно пересылать проблемный файл

В случае если происходит ошибка в конвертации выписки, либо есть потребность добавить новый формат, разработчику потребуется доступ к проблемной/новой выписке для исправления программы. Если из соображений конфиденциальности нет возможности переслать разработчику изначальную выписку, можно переслать анонимизированный промежуточный текстовый файл. Для этого надо сделать следующее:

  • При ошибке конвертации конвертер создаст промежуточный текстовый файл с расширением .txt. Этот файл содержит текстовую информацию из pdf-выписки, которая в дальнейшем должна была быть использована для создания Excel - файла. Однако не вся текстовая информация используется для создания Excel файла. Задача состоит в том чтобы удалить неиспользуемую конфиденциальную информацию либо заменить используемую конфиденциальную информацию, но сделать это таким образом чтобы конвертер всё еще распознавал бы структуру файла и смог бы выполнить проверку вычисления сумм транзакций. Инструкция показывает что можно удалять, что можно заменять, а что нужно оставить без изменений.
  •  Используйте текстовый редактор и инструкцию чтобы удалить конфиденциальную информацию из промежуточного текстового файла (номер карты, фамилию, имя и т.д.). Т.к. для конвертер различает символ табуляции и пробелы, то рекомендуется использовать текстовый редактор, который показывает символы табуляции чтобы случайно не удалить их. Рекомендуемый текстовый редактор для этих целей: Notepad++
  • Старайтесь удалять или менять как можно меньше информации. На выходе должно получиться что-то типа этого: пример анонимизированного промежуточного текстового файла
  • Попытайтесь сконвертировать теперь уже анонимизированный текстовый файл используя всё тот же sberbankPDF2ExcelGUI (для этого на Шаге 2 при выборе файлов надо разрешить выбор любых файлов, а не только .pdf)
  • Убедитесь, что при попытке конвертации анонимизированного текстового файла конвертер выдаёт такое же сообщение об ошибке, как и при попытке конвертации PDF файла.
  • Перешлите анонимизированный текстовый файл разработчику (ev2geny собака gmail.com) вместе с информацией об ошибке.

Приложение В. Запуск приложения из командной строки

Для запуска приложения из командной строки надо использовать модуль sberbankPDF2Excel.py

usage: sberbankPDF2Excel.py [-h] [-o OUTPUT_EXCEL_FILE_NAME] [-b]
                            [-f {SBER_DEBIT_2107,SBER_DEBIT_2005,SBER_CREDIT_2107,SBER_PAYMENT_2208}] [-t {xlsx,csv}] [-i]
                            input_file_name

Конвертация выписки банка из формата PDF или из промежуточного текстового файла в формат Excel или CSV.

positional arguments:
  input_file_name       Файла для конвертации

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT_EXCEL_FILE_NAME, --output OUTPUT_EXCEL_FILE_NAME
                        Имя файла (без расшмрения) который будет создан в формате Excel или CSV
  -b, --balcheck        Игнорировать результаты сверки баланса по транзакциям и в шапке выписки
  -f {SBER_DEBIT_2107,SBER_DEBIT_2005,SBER_CREDIT_2107,SBER_PAYMENT_2208}, --format {SBER_DEBIT_2107,SBER_DEBIT_2005,SBER_CREDIT_2107,SBER_PAYMENT_2208}
                        Формат выписки. Если не указан, определяется автоматически
  -t {xlsx,csv}, --type {xlsx,csv}
                        Тип создаваемого файла
  -i, --interm          Не удалять промежуточный текстовый файт

На данный момент эта утилита не включена в выпускаемые релизы. Поэтому необходимо либо сгенерировать её самостоятельно либо запускать из среды Python (см. CONTRIBUTING.md)