Проект: Делаем лучшие фото для визы  Публичный пост
30 октября 2025  306
ОХУЕННО
Делаем лучшие фото для визы
https://t.me/photovisa_bot

Делали ли вы электронную визу в Индию? А, может, в Южную Корею? Или подавались на лотерею Green Card в США? Если да, то вы точно знаете, что для заявки на все эти документы надо прикрепить фотографию определённого размера с целым набором требований...

А такое ну просто необходимо автоматизировать!

И, как можно догадаться, сайтов для автоматизации фотографий на документы просто куча. Только вот есть одна проблема: все эти сайты хотят много денег - от 5 до 12 долларов за приведение фото к нужным требованиям.

Терпеть такое я, конечно же, не стал и написал своего бота в Телеграме, который делает это всё бесплатно.

С чего всё началось

Сидел я одним зимним вечером на диване. А моя девушка планировала поезду с подругами в Китай и в это время заполняла анкету на визу (да-да, тогда еще нужны были визы!).

Когда она всё заполнила, я подошёл поинтересоваться, как все прошло. И вдруг обнаружил, что для подачи заявки она с подругами купила создание фото на визу за 400 рублей. Тогда я подумал про себя: "А отличный бизнес можно сделать - удаляем задний фон, выравниваем лицо на фото - и ко мне потекут горы денег. Богатство и слава! АХАХАХАХАХ!" И благополучно забыл об этом.

И вот, спустя почти год, мне на работе стало скучно, и я решил, что пора приниматься за дело (естественно, в рабочее время). Получилось сделать бота быстро и хорошо (в течении одной недели), поэтому решил оставить его бесплатным для всех.

Я после продажи фото на визу (на самом деле бот бесплатный!)
Я после продажи фото на визу (на самом деле бот бесплатный!)

Придумываем архитектуру

Делаем мы приложение для себя, поэтому самое главное - чтобы его было приятно разрабатывать. Поэтому в выборе архитектуры я полагался только на свои специфичные вкусы.

Я люблю Телеграм-ботов - их просто и быстро делать, поэтому будем делать свой собственный Телеграм-миниапп для обработки фото на визы.

Вот такая будет архитектура
Вот такая будет архитектура

Чтобы сделать Телеграм-миниапп, у нас будут следующие компоненты:
Bot server
Обычный сервер на питоне, который:

  • обрабатывает сообщения от пользователя в чате

  • дает ему ссылку на фронтенд

  • принимает от фронтенда запрос на обработку фото и кладет его в очередь

  • когда фото готово, отправляет его пользователю в чат

Frontend miniapp
А вот это у нас будет сайт на React!
Если давать юзеру интерфейс через чат Телеграма, то это неудобно (как из огромного списка стран для документов найти нужную?) и не очень красиво (хочется показать приятный лоадер, пока генерируем фото). А миниаппы в Телеграме позволяют нам открыть свой сайт и избавиться от всех этих проблем.
Этот сайт будет:

  • давать пользователю возможность выбрать страну, выбрать тип документа и загрузить фото

  • показывать красивый лоадер, пока мы генерируем для пользователя фото

Photo processing worker

Это будет простенький сервис на питоне, который:

  • принимает фото из очереди

  • обрабатывает его и передает нашему Bot Server'у

Что ж, архитектура спланирована, пора приступать к реализации.

Займемся скраппингом данных

У каждой страны и у каждого документа есть свои требования к:

  • размерам (в пикселях, мм или дюймах)
  • расположению лица на фото (какой размер лицо занимает по высоте, размер отступа от верха фото до макушки и т.д.)
  • размеру файла (у некоторых документов в Китае максимальный размер 40кб)
  • цвету заднего фона (некоторые просят голубой фон вместо белого)

Так как же нам их получить? Все просто - украсть с других сайтов. Вместо тысячи слов вот вам ссылка на репозиторий со скриптами для скраппинга и нормализации данных с одного известного сайта для виз + готовые JSON-файлы.

Создаем worker для обработки фото

Для обработки фото нам понадобится удаление заднего фона, поиск лица и его ключевых точек на картинке.

Удаление заднего фона - задача очень известная и решений опубликовано куча. Но не все они нам подойдут - тот же rembg довольно старый и плохо работает с волосами (а у нас их планируется много). Я решил взять свежую модельку ZhengPeng7/BiRefNet для поиска маски заднего фона.

Как видно, rembg оставляет артефакты на волосах Роберта Паттинсона
Как видно, rembg оставляет артефакты на волосах Роберта Паттинсона

Моделька довольно большая и на CPU работает медленно, поэтому пришлось взять тачку с RTX 3060 чтобы работало быстрее.

Для поиска лица и ключевых точек мы возьмем dlib. Он старенький, но в этой задаче нам ювелирная точность не понадобится.

Работает просто прекрасно
Работает просто прекрасно

Создаем сервер для нашего бота

Мы сделали worker, но чтобы отпралять туда запросы нам нужно обрабатывать запросы от пользователей в чате Телеграма. Давайте напишем бота!

Для создания бота я взял библиотечку python-telegram-bot, чтобы обрабатывать сообщения в чате Телеграма от пользователей и давать им ссылку на наш миниапп. И добавил FastAPI для двух роутов - один чтобы пользователь отправлял свою картинку и мы слали её в очередь, второй - чтобы принимать готовое фото от worker'а и слать его юзеру в чат.

Готовим фронтенд для миниаппа

Для frontend'а мы делаем все максимально просто - берем create-react-app и копируем дизайн текстов и кнопок как у бота @BotFather. И все, наш фронтенд готов!

Обходим ограничения Роскомнадзора

Наши три компонента системы готовы, и если мы их успешно задеплоили, то приложение должно работать без проблем. Так ведь?

Если вы, как и я, выбрали для деплоя фронтенда AWS, то у вас возникнут некоторые сложности... У ребят из России, когда они пользовались мобильным интернетом от МТС, фронтенд моего миниаппа просто не открывался (получается МТС блочат весь трафик на AWS?).

У меня как раз был сервер в Германии на хостинге hosting-russia.ru, к которому Роскомнадзор, похоже, относится более лояльно. Сделаем его прокси-сервером!

Делаем небольшую настройку NGINX для переадресации трафика с нашего сервера на AWS и Роскомнадзор перестал быть нам страшен. Пользователи из России спокойно смогут сгенерировать себе любые фотографии для виз!

Финальный результат

Посмотреть результат и сгенерировать себе фото на документы можно в photovisa_bot - абсолютно бесплатно и без регистрации.

Примеры работ
Примеры работ

Спасибо, что дочитали пост до конца! Думаю, теперь у вас не возникнет никаких проблем с созданием фото себе на визу ;)

Аватар Андрей Аникин
Андрей Аникин @andreasCaG
Computer vision engineerSportradar
📍Пафос, Кипр

Тг @andreascag

Разработчик с 7+ годами опыта. Разрабатывал несколько лет фронтенд для букмекерской компании, последние 4 года работаю Computer Vision инженером в спортивной сфере

4 комментария 👇

Бро, это просто великолепно!
Это спасение от головняка с фотографиями на Госуслугах!
Спасибо огромное!

  Развернуть 1 комментарий

@djbelyak, Спасибо за отзыв!

В боте действительно есть поддержка фоток для Госуслуг, но я особо об этом кейсе применения не задумывался 😅

  Развернуть 1 комментарий
Mark Rudak Machine Learning Product Owner 4 часа назад

Круто, спасибо!

Как ни приду в фото студию, постоянно говорят то сядь ровно,т о подбородок выше, то рот закрыть и т.д.
Однако не знаю насколько поза и т.д на фотке важны

Планируешь ли как-то над этим поработать?

  Развернуть 1 комментарий

@markrudak, 100% хочу побольше всяких проверок накидать, которые критичны для фото на визу.

У меня в беклоге такие проверки на качество лежат:

  • поза анфас, смотрит в камеру
  • рот закрыт, глаза открыты, подбородок виден
  • фото загружено норм качества
  • волосы не растрёпанные
  • хорошее освещение

Надо только в руки себя взять и сделать их 😁

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб