Logistics Bot Documentation

Telegram-bot with OCR for logistics system

Архитектура Telegram-бота для логистики с OCR (пассивный мониторинг)

Общая структура системы

Система будет состоять из следующих компонентов:

  1. Telegram Bot - пассивный мониторинг группового чата и автоматическая обработка изображений
  2. OCR модуль - компонент для распознавания текста с изображений накладных
  3. Обработчик данных - модуль для извлечения нужной информации из распознанного текста
  4. Google Sheets API клиент - компонент для записи данных в Google таблицы
  5. База данных - для хранения обработанных данных и логирования

Схема взаимодействия компонентов

+----------------+     +----------------+     +----------------+
|                |     |                |     |                |
|  Telegram Bot  | --> |  OCR модуль    | --> | Обработчик     |
|  (Python)      |     |  (Google Vision|     | данных         |
|                |     |  или другой)   |     |                |
+----------------+     +----------------+     +----------------+
        ^                                             |
        |                                             v
+----------------+                          +----------------+
|                |                          |                |
| База данных    | <----------------------- | Google Sheets  |
| (SQLite/Redis) |                          | API клиент     |
|                |                          |                |
+----------------+                          +----------------+

Функциональные модули

1. Telegram Bot (Python + python-telegram-bot)

  • Пассивный мониторинг - автоматическое отслеживание всех сообщений в групповом чате
  • Фильтрация изображений - определение изображений, которые являются фотографиями накладных
  • Автоматическая обработка - обработка изображений без необходимости команд от водителей
  • Отправка уведомлений - информирование о результатах обработки и возможных проблемах

2. OCR модуль

  • Предобработка изображений - улучшение качества изображений для повышения точности распознавания
  • Распознавание текста - извлечение текста из изображений
  • Обработка рукописного текста - специализированные алгоритмы для распознавания рукописных цифр

3. Обработчик данных

  • Парсинг текста - извлечение нужных данных из распознанного текста (нетто, брутто, тара, дата)
  • Валидация данных - проверка корректности распознанных данных
  • Форматирование данных - подготовка данных для записи в Google Sheets

4. Google Sheets API клиент

  • Аутентификация - безопасное подключение к Google API
  • Запись данных - добавление новых строк или обновление существующих в таблице
  • Чтение данных - получение информации из таблицы при необходимости

5. База данных

  • Хранение обработанных данных - сохранение информации о распознанных накладных
  • Отслеживание обработанных изображений - предотвращение повторной обработки одних и тех же изображений
  • Логирование - запись информации о процессе обработки и возникающих ошибках

Команды бота (только для администраторов)

  1. /start - начало работы с ботом, приветствие и инструкции
  2. /help - вывод справки по использованию бота
  3. /status - проверка статуса работы бота
  4. /report - запрос статистики по обработанным накладным
  5. /settings - настройка параметров работы бота

Сценарии использования

Сценарий 1: Автоматическая обработка накладной

  1. Водитель отправляет фото накладной в групповой чат
  2. Бот автоматически определяет, что сообщение содержит изображение
  3. Система выполняет OCR и извлекает данные (нетто, брутто, тара, дата)
  4. Система валидирует данные (проверяет соответствие брутто - тара = нетто)
  5. Система автоматически записывает данные в Google Sheets
  6. Бот отправляет в чат краткое подтверждение об успешной обработке или уведомление о проблеме

Сценарий 2: Обработка текстовых сообщений о статусе

  1. Водитель отправляет текстовое сообщение о загрузке/выгрузке в чат
  2. Бот анализирует текст сообщения с помощью NLP для определения типа статуса
  3. Система обновляет информацию о статусе водителя в базе данных и Google Sheets
  4. Бот отправляет краткое подтверждение (реакцию) на сообщение

Сценарий 3: Обработка сообщений о готовности к работе

  1. Водитель отправляет сообщение о готовности к работе в чат
  2. Бот анализирует текст сообщения для определения статуса готовности
  3. Система обновляет статус водителя в базе данных и Google Sheets
  4. Бот отправляет краткое подтверждение (реакцию) на сообщение

Обработка ошибок

  1. Ошибки распознавания - если OCR не может распознать текст с достаточной точностью, система делает запись в лог и отправляет уведомление администратору
  2. Ошибки подключения - при проблемах с подключением к Google API, система сохраняет данные локально и повторяет попытку позже
  3. Некорректные данные - если распознанные данные не проходят валидацию, система делает запись в лог и отправляет уведомление администратору
  4. Дублирование изображений - система отслеживает уже обработанные изображения для предотвращения повторной обработки

Технический стек

  1. Язык программирования: Python 3.10+
  2. Фреймворк для Telegram Bot: python-telegram-bot
  3. OCR решение: Google Vision API (для распознавания рукописных цифр и изображений низкого качества)
  4. База данных: SQLite (для простоты) или Redis (для производительности)
  5. Google Sheets интеграция: google-api-python-client
  6. Обработка изображений: OpenCV (для предобработки изображений)
  7. NLP для анализа текста: spaCy или NLTK (для обработки текстовых сообщений)
  8. Развертывание: Docker (для упрощения развертывания)

Особенности пассивного мониторинга

  1. Минимальное взаимодействие с водителями - бот работает в фоновом режиме, не требуя специальных команд
  2. Автоматическое определение типа контента - система самостоятельно определяет, является ли изображение накладной
  3. Обработка текстовых сообщений - анализ текстовых сообщений для определения статусов загрузки/выгрузки и готовности
  4. Минимальные уведомления - бот отправляет только краткие подтверждения об успешной обработке или уведомления о проблемах
  5. Администраторский интерфейс - специальные команды доступны только администраторам для управления ботом