Skip to content

Python-скрипт для автоматического извлечения и структурирования данных о движении денежных средств из PDF-выписок Т-Банка (бывший Тинькофф Банк) в формат JSON.

License

Notifications You must be signed in to change notification settings

dllpl/tbank-cash-flow-pdf-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

tbank-cash-flow-pdf-parser-by-python

Python-скрипт для автоматического извлечения данных о движении денежных средств из PDF-выписок Т-Банка (Tinkoff) и сохранения их в структурированном формате JSON.

Проект ориентирован на работу с PDF-файлами, содержащими текстовый слой (не сканами), и учитывает особенности форматирования банковских выписок: многострочные описания операций, дублирование дат и сумм, а также служебную информацию банка.


🚀 Возможности

  • 📄 Извлечение текста из PDF с помощью pdfplumber
  • 🔍 Парсинг только нужного раздела выписки:
    • начало: «Движение средств за период»
    • конец: «Пополнения:»
  • 🧹 Игнорирование юридической и служебной информации банка
  • 🔗 Склейка многострочных операций в одну логическую запись
  • 🧠 Разбор операций с помощью регулярных выражений
  • 📤 Экспорт результата в output.json

🧩 Как работает скрипт

1. Извлечение текста из PDF

Текст извлекается постранично. Парсинг начинается после строки
«Движение средств за период» и заканчивается перед «Пополнения:».

Строки, содержащие юридическую или служебную информацию (БИК, ИНН, лицензия и т.д.), автоматически игнорируются.


2. Склейка многострочных операций

Каждая новая операция определяется по строке, начинающейся с даты формата ДД.ММ.ГГГГ.

Если строка не начинается с даты, она считается продолжением предыдущей операции и добавляется к ней. Это позволяет корректно обрабатывать длинные описания платежей.


3. Разбор строки операции

После склейки каждая строка разбирается регулярным выражением, которое извлекает:

  • 📅 дату и время операции
  • 📅 дату списания
  • 💰 сумму в валюте операции
  • 💰 сумму операции в валюте карты
  • 🧾 описание операции
  • 💳 последние цифры карты (если присутствуют)

Если строку не удалось разобрать, она выводится в консоль с предупреждением.


4. Формирование результата

Каждая операция сохраняется в виде объекта и добавляется в итоговый список.

Пример результата:

{
  "Дата и время операции": "03.09.2025 21:29",
  "Дата списания": "03.09.2025 21:30",
  "Сумма в валюте операции": "-955.00 ₽",
  "Сумма операции в валюте карты": "-955.00 ₽",
  "Описание операции": "Внешний перевод по номеру телефона +79600000000",
  "Номер карты": "8296"
}

About

Python-скрипт для автоматического извлечения и структурирования данных о движении денежных средств из PDF-выписок Т-Банка (бывший Тинькофф Банк) в формат JSON.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages