Skip to content

dayanovtt/qr_crop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QR Crop Bot

Telegram-бот, который принимает PDF с QR-кодами и возвращает его с каждой страницей, обрезанной по квадрату вокруг QR-кода и текстовой подписи.

Структура проекта

qr_crop_bot/
├── .env.example           - шаблон переменных окружения
├── .gitignore
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── main.py                - точка входа
├── bot/
│   ├── handlers.py        - Telegram-хэндлеры
│   └── messages.py        - тексты сообщений
└── processing/
    ├── qr_detector.py     - детект QR контурным методом
    ├── text_detector.py   - OCR подписи через pytesseract
    ├── cropper.py         - квадратная обрезка
    └── pipeline.py        - основной пайплайн обработки PDF

Деплой на сервер

1. Создать бота

  1. Написать @BotFather -> /newbot
  2. Скопировать полученный BOT_TOKEN

2. Подготовить сервер

Минимальные требования: 2 CPU / 2 GB RAM (OCR при 300 DPI - ресурсоёмкая операция).

# Ubuntu/Debian - установка Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

3. Загрузить проект на сервер

Вариант A - через git:

git clone <your-repo-url> qr_crop_bot
cd qr_crop_bot

Вариант B - через scp (загрузить архив):

# На локальной машине:
scp qr_crop_bot.zip user@your-server-ip:~/

# На сервере:
unzip qr_crop_bot.zip
cd qr_crop_bot

4. Настроить окружение

cp .env.example .env
nano .env   # вставить BOT_TOKEN и при необходимости изменить параметры

Содержимое .env:

BOT_TOKEN=123456789:AAXXXXXXXXXXXXXXXXXXXXXX

DPI=300
PADDING=20
BATCH_SIZE=50

5. Запустить

docker compose up -d --build

Бот запустится в фоне и будет автоматически перезапускаться при перезагрузке сервера (restart: unless-stopped).


Управление

# Статус контейнера
docker compose ps

# Логи в реальном времени
docker compose logs -f

# Логи из файла (ротируются, хранятся в ./logs/bot.log)
tail -f logs/bot.log

# Остановить
docker compose down

# Пересобрать и перезапустить после изменений в коде
docker compose up -d --build

# Обновить только .env без пересборки образа
docker compose up -d

Параметры обработки (.env)

Переменная По умолчанию Описание
BOT_TOKEN - Токен от @BotFather, обязателен
DPI 300 Разрешение растеризации. Меньше 200 — QR может не найтись
PADDING 20 Отступ в пикселях от контента до края кропа
BATCH_SIZE 50 Страниц за один батч (уменьшить при нехватке RAM)

About

QR code cutting for printing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors