Архитектура Telegram-бота для логистики с OCR (пассивный мониторинг)
Общая структура системы
Система будет состоять из следующих компонентов:
- Telegram Bot - пассивный мониторинг группового чата и автоматическая обработка изображений
- OCR модуль - компонент для распознавания текста с изображений накладных
- Обработчик данных - модуль для извлечения нужной информации из распознанного текста
- Google Sheets API клиент - компонент для записи данных в Google таблицы
- База данных - для хранения обработанных данных и логирования
Схема взаимодействия компонентов
+----------------+ +----------------+ +----------------+
| | | | | |
| 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. База данных
- Хранение обработанных данных - сохранение информации о распознанных накладных
- Отслеживание обработанных изображений - предотвращение повторной обработки одних и тех же изображений
- Логирование - запись информации о процессе обработки и возникающих ошибках
Команды бота (только для администраторов)
/start- начало работы с ботом, приветствие и инструкции/help- вывод справки по использованию бота/status- проверка статуса работы бота/report- запрос статистики по обработанным накладным/settings- настройка параметров работы бота
Сценарии использования
Сценарий 1: Автоматическая обработка накладной
- Водитель отправляет фото накладной в групповой чат
- Бот автоматически определяет, что сообщение содержит изображение
- Система выполняет OCR и извлекает данные (нетто, брутто, тара, дата)
- Система валидирует данные (проверяет соответствие брутто - тара = нетто)
- Система автоматически записывает данные в Google Sheets
- Бот отправляет в чат краткое подтверждение об успешной обработке или уведомление о проблеме
Сценарий 2: Обработка текстовых сообщений о статусе
- Водитель отправляет текстовое сообщение о загрузке/выгрузке в чат
- Бот анализирует текст сообщения с помощью NLP для определения типа статуса
- Система обновляет информацию о статусе водителя в базе данных и Google Sheets
- Бот отправляет краткое подтверждение (реакцию) на сообщение
Сценарий 3: Обработка сообщений о готовности к работе
- Водитель отправляет сообщение о готовности к работе в чат
- Бот анализирует текст сообщения для определения статуса готовности
- Система обновляет статус водителя в базе данных и Google Sheets
- Бот отправляет краткое подтверждение (реакцию) на сообщение
Обработка ошибок
- Ошибки распознавания - если OCR не может распознать текст с достаточной точностью, система делает запись в лог и отправляет уведомление администратору
- Ошибки подключения - при проблемах с подключением к Google API, система сохраняет данные локально и повторяет попытку позже
- Некорректные данные - если распознанные данные не проходят валидацию, система делает запись в лог и отправляет уведомление администратору
- Дублирование изображений - система отслеживает уже обработанные изображения для предотвращения повторной обработки
Технический стек
- Язык программирования: Python 3.10+
- Фреймворк для Telegram Bot: python-telegram-bot
- OCR решение: Google Vision API (для распознавания рукописных цифр и изображений низкого качества)
- База данных: SQLite (для простоты) или Redis (для производительности)
- Google Sheets интеграция: google-api-python-client
- Обработка изображений: OpenCV (для предобработки изображений)
- NLP для анализа текста: spaCy или NLTK (для обработки текстовых сообщений)
- Развертывание: Docker (для упрощения развертывания)
Особенности пассивного мониторинга
- Минимальное взаимодействие с водителями - бот работает в фоновом режиме, не требуя специальных команд
- Автоматическое определение типа контента - система самостоятельно определяет, является ли изображение накладной
- Обработка текстовых сообщений - анализ текстовых сообщений для определения статусов загрузки/выгрузки и готовности
- Минимальные уведомления - бот отправляет только краткие подтверждения об успешной обработке или уведомления о проблемах
- Администраторский интерфейс - специальные команды доступны только администраторам для управления ботом