Техническое задание: инструмент сверки счетов с банком, картами и бухгалтером
Общая цель
Нужен локальный инструмент (скрипт/небольшое приложение на Python), который запускается вручную раз в 1-2 месяца на моём компьютере и делает сверку между:
- Счетами, которые я выставил клиентам и получил от поставщиков (PDF-файлы и фото квитанций, лежащие в почте Gmail)
- Банковской выпиской (Excel)
- Расходами по кредитным картам (Excel, может быть несколько файлов — несколько карт)
- Excel-файлом от бухгалтера, в который он вносит счета для отчётности в налоговую и НДС
Что должен делать инструмент
1. Сбор счетов из почты (Gmail)
- Подключение через Gmail API (OAuth)
- Поиск писем за заданный период (например, последние 2 месяца) с вложениями
- Скачивание вложений: PDF-файлы и изображения (фото квитанций/чеков)
- Распознавание данных из каждого счёта: дата, сумма, название поставщика/клиента, номер счёта (если есть)
- Для PDF — извлечение текста напрямую
- Для изображений — распознавание текста (OCR), включая текст на иврите
2. Чтение Excel-файлов
- Банковская выписка (доходы и расходы)
- Один или несколько файлов расходов по кредитным картам
- Excel от бухгалтера со списком внесённых счетов (в нём есть только сумма + дата + название контрагента, единого номера счёта для сопоставления нет)
3. Логика сопоставления
Сопоставление записей между источниками по комбинации: сумма + дата (с допустимым отклонением) + название контрагента (нечёткое сравнение текста, т.к. названия могут немного отличаться).
4. Проверки, которые нужно выполнить
A. Выставлены ли счета на все доходыДля каждого поступления денег в банке — проверить, есть ли соответствующий счёт, который я выставил. Если нет — пометить как "доход без выставленного счёта".
B. Сохранены ли счета на все признанные расходыДля каждого расхода в банке/на картах, который относится к категории признанных расходов — проверить, есть ли сохранённый счёт. Если нет — пометить как "расход без сохранённого счёта".
C. Сверка со списком бухгалтераСравнить список счетов, которые я собрал (из почты), со списком, который бухгалтер внёс и отправил в налоговую/НДС. Пометить:
- Счета, которые я собрал, но которых нет в файле бухгалтера (возможно, не были переданы или не внесены)
- Записи в файле бухгалтера, для которых не нашёлся соответствующий счёт в моей коллекции
D. Проверка зарплатного листкаПроверить, что сумма, указанная в зарплатном листке, соответствует сумме, которая по факту списана/поступила в банке.
5. Итоговый отчёт
Результат — один Excel-файл с несколькими листами:
- Доходы без выставленного счёта
- Расходы без сохранённого счёта
- Счета, отсутствующие у бухгалтера
- Записи бухгалтера без соответствующего счёта
- Сверка зарплатного листка с банком
Несовпадения/проблемные строки должны быть визуально выделены (цветом).
Технические детали
- Язык: Python
- Excel: pandas + openpyxl
- PDF: извлечение текста (pdfplumber/PyMuPDF)
- OCR изображений: с поддержкой иврита (желательно использовать Claude API с поддержкой изображений вместо классического Tesseract, для лучшей точности с ивритом)
- Gmail API: google-api-python-client, OAuth (понадобится создать проект в Google Cloud Console — это будет сделано заказчиком/исполнителем совместно)
- Результат сохраняется как Excel-файл локально на компьютере
- Интерфейс: достаточно командной строки (CLI), без необходимости в веб-интерфейсе
Формат сдачи
- Исходный код проекта
- Краткая инструкция по запуску (включая, как подключить свой Gmail и где положить входные Excel-файлы)
- Инструкция по созданию credentials в Google Cloud Console, если это не было сделано заранее
Дополнительно
Готов предоставить примеры структуры Excel-файлов (банк, карты, файл бухгалтера) и примеры счетов (PDF и фото) для тестирования.