@rvboris/sberparse
v1.2.7
Published
Конвертация выписок Сбербанка из PDF в JSON/CSV
Readme
sberparse
Конвертация PDF-выписок Сбербанка в структурированные JSON и CSV.
Английская версия: README.en.md.
Установка
Требуется Node.js 24+.
Правила разработки и pull request описаны в CONTRIBUTING.md.
pnpm add -g @rvboris/sberparseИспользование
# Конвертация в CSV (по умолчанию)
sberparse ./statement.pdf
# Конвертация в JSON
sberparse ./statement.pdf -t json
# Запись в конкретное имя выходного файла
sberparse ./statement.pdf -o ./output/my-extract
# Принудительный выбор extractor-а без автоопределения
sberparse ./statement.pdf -f SBER_DEBIT_2604
# Обратный порядок транзакций
sberparse ./statement.pdf -r
# Отключить строгую проверку баланса
sberparse ./statement.pdf --no-balance-check
# Сохранить промежуточный текстовый файл
sberparse ./statement.pdf --intermТочки входа CLI
- запуск из исходников:
src/cli.ts - команда oclif:
src/commands/index.ts - production bin:
dist/cli.js
Использование как библиотеки
import { parsePdf, transactionsToCsv, transactionsToJson } from "@rvboris/sberparse";
const result = await parsePdf("./statement.pdf", {
reverse: false,
balance_check: true,
});
const jsonText = transactionsToJson(
result.transactions,
result.extractor_name,
result.errors,
);
const csvText = transactionsToCsv(result.transactions, result.columns_info);Флаги CLI
-o, --output— имя выходного файла без расширения-f, --format— принудительный выбор extractor-а-t, --type—jsonилиcsv-r, --reverse— развернуть порядок транзакций--balance-check/--no-balance-check— включить или отключить строгую проверку баланса--interm— сохранить промежуточный текст
Поддерживаемые форматы
SBER_DEBIT_2604— формат дебетовой выписки апреля 2026, текущий по умолчаниюSBER_DEBIT_2603— формат дебетовой выписки марта 2026, legacy-совместимость
CI/CD и workflow
В репозитории есть два основных входных workflow GitHub Actions:
Test— запускается наpull_requestи делегирует проверки в reusable test workflowRelease Please— реализован в.github/workflows/npm-publish.yml; запускается наpushвmain, ведёт release PR, валидирует release branch и release commit, создаёт GitHub Release и публикует пакет в npm в том же workflow run
Общие проверки вынесены в .github/workflows/reusable-test.yml:
pnpm install --frozen-lockfilepnpm run typecheckpnpm run lint:cipnpm run test:coverage- публикация summary по coverage
Как работает релиз
Релизы автоматизированы через release-please.
- Изменения попадают в
mainс Conventional Commits, напримерfeat:,fix:иchore:. - Workflow
Release Pleaseоткрывает или обновляет release PR. - В release PR обновляются:
- версия в
package.json CHANGELOG.md
- версия в
- Тот же workflow находит текущую release branch и валидирует её через reusable test workflow.
- После merge release PR
release-pleaseсоздаёт GitHub Release. - Если релиз создан в этом run, тот же workflow валидирует release commit, собирает пакет и публикует его в npm с provenance.
Интегрированный release workflow остаётся в .github/workflows/npm-publish.yml, потому что именно это имя файла соответствует текущей настройке npm trusted publishing для пакета.
Лицензия
MIT
