Усі кейси

Кейс · Дистрибуція · 2026

Фото накладної — і вона вже в базі

Telegram-бот для обліку накладних Нової Пошти: бере ТТН зі штрихкоду, отримувача, телефони й адресу — через AI, зберігає в базу й пересилає фото в робочу групу. Пошук за прізвищем чи телефоном — в один дотик.

Клієнт
Дистрибуція
Напрям
Склади в Києві й Чернівцях
Стек
Python · aiogram 3 · Gemini · zxing-cpp · Tesseract 5 · SQLite
📦

Подача експрес накладних

бот

14:07 ✓✓

✅ Накладну збережено

ТТН20450000000851

ОтримувачПетренко Олег

Телефон+380 67 000 00 00

СкладЧернівці

КудиКиїв, відділення №25

↗ перейти до повідомлення✉ написати отримувачу
📎Повідомлення🎤
1фото — і накладна в базі з усіма полями
3рівні розпізнавання: штрихкод, Gemini, Tesseract
2 ГБRAM достатньо: важких моделей на сервері немає
пт 18:00щотижневий CSV-звіт адміністраторам

01 Задача

Переписувати ТТН, прізвище й телефон з фото накладної — ручна робота з помилками в цифрах. А знайти потрібну накладну в стрічці чату, коли телефонує дилер, — ще кілька хвилин на кожен дзвінок.

02 Що ми зробили

5 складових одного процесу

01

Три рівні розпізнавання

Номер ТТН — зі штрихкоду Code128. Поля — Gemini Flash прямо з картинки. Tesseract з українською мовою — запасний: працює, якщо AI недоступний, і дозаповнює лише критичні поля.

02

База без дублів

Запис за номером ТТН: повторне фото оновлює ту саму картку й те саме повідомлення в групі — посилання на нього не змінюється.

03

Пошук в один дотик

За прізвищем, останніми цифрами телефона чи ТТН. Під результатом — «перейти до повідомлення» і «написати отримувачу» з готовим текстом.

04

Ролі й захист

Білий список користувачів, автобан чужих у групі, захист дилерів від перебору, пошук дилера — лише за останні 14 днів.

05

Звітність

Експорт у CSV для Excel, архівація старих записів, щоп’ятниці о 18:00 — звіт за тиждень адміністраторам.

03 Як проходить накладна

Крок за кроком

  1. 1

    Фото або файл

    Файл до 10 МБ одразу на диску, у черзі — до 100 накладних, розпізнаються строго по одній.

  2. 2

    Штрихкод

    Номер ТТН зі штрихкоду Code128 — без помилок OCR у цифрах.

  3. 3

    AI

    Gemini Flash читає отримувача, відправника, телефони й адресу.

  4. 4

    Перевірка

    Немає ТТН чи отримувача з телефоном — запис не вноситься, бот просить переслати файлом.

  5. 5

    База і група

    Картка користувачу, фото з підписом — у робочу групу.

Результат

  • Накладна з’являється в базі з фото, ТТН і контактами одразу після надсилання фото.
  • Нерозпізнане не потрапляє в базу мовчки: бот просить переслати або уточнити діалогом /fix.
  • Одна накладна — рівно один платний виклик AI: автоматичного перемикання між провайдерами немає, тож подвійної оплати теж.

Під капотом

  • Python, aiogram 3, SQLite з upsert за номером ТТН
  • Gemini Flash через стандартну бібліотеку, без SDK; DeepSeek Vision — експериментально, перемикач в адмін-меню
  • Знеособлена статистика викликів: провайдер, токени, затримка, вартість — без ПІБ, телефонів і адрес
  • systemd з MemoryMax=512M — працює на сервері з 2 ГБ RAM
  • pytest на ізольованій базі; інструкція для користувачів українською

Почнімо

Покажіть процес, який забирає найбільше часу

Розберемо його до кроку й покажемо, що з цього можна прибрати: готовим модулем або інтеграцією під ваші системи.