[Python, Обработка изображений, Машинное обучение] Сервис распознавания капч, который больше не нужен

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
29-Июн-2021 08:32

Я уже рассказывал про свой опыт в области распознавания капчи. Разумеется, кроме чисто академического интереса у меня был и материальный - иногда приходится скачивать несколько файлов с обменника, а ждать паузу и вводить капчи я не люблю. Поэтому и пользуюсь программой для закачек под названием Universal Share Downloader, или сокращённо USD. Недавно сервис обмена файлами Turbobit в очередной раз внёс изменения в свой сайт, в результате чего моя программа оказалась бесполезной. Теперь я могу рассказать о сервисе распознавания поподробнее, уже не опасаясь приблизить этот момент. Может, рост числа бесплатных скачиваний в результате использования сервиса уже повлиял. Или это просто традиционная июньская пакость от обменника - то капчу поменяют, то скорость скачивания урежут.
Ну как так то?У USD есть активное сообщество, в котором разрабатываются и распространяются плагины для поддержки различных файлообменников. Там я выкладывал свою программу для распознавания капчи, чтобы облегчить процесс скачивания всем желающим. Версии с Тессерактом, потом с нейросетью и окончательный вариант - с использованием веб-сервиса на Heroku. Капча представляла собой довольно известную в прошлом Kohana, сейчас такая больше нигде не используется и спамерам неинтересна. Отправка файла осуществлялась РОST запросом. Экспериментальная клиентская часть была написана на Пайтоне, потом для сокращения размера и помещения в сборку я переписал её на AutoIt. Это вызвало проблемы с защитником в Windows 10 - он не оценил идею отправлять файлы куда-то в интернет (а может, совпали какие-нибудь сигнатуры) и стал её блокировать. И тут меня осенило: лучшая программа - это её отсутствие. Я связался с разработчиком плагина и предложил поместить отправку файла на распознавание прямо в плагин Турбобита. Правда, для этого пришлось добавить в сервис возможность приёма файлов в виде Base64 текста.Технически сервис представлял собой Flask приложение на Heroku, распознавание с помощью Keras и Tensorflow. Мне удалось уложиться в ограничения бесплатного использования - потребление дискового пространства составило 430 Мб. В самом начале принимались файлы, по которым можно было судить о номере попытки - в случае неудачи следующий файл шёл с другим именем. Я пытался вести статистику, но периодически прилетали серии с не зависящими от очерёдности именами - возможно, кто-то использовал сервис для разметки своих файлов. С отправкой капч в виде Base64 имена файлов стали недоступны, и я стал просто считать капчи. Сохранение файлов реализовал следующим образом: картинка и результат добавляются в словарь, при достижении нужного количества в памяти создается zip архив и капчи переносятся туда с добавлением к имени метки времени, затем архив отправляется на хранение. Бесплатный сервис на Heroku автоматически перезапускается примерно раз в сутки или при бездействии в течение 30 минут. При таком подходе часть капч теряется в случае перезапуска сервиса, но задачи сохранить абсолютно всё и не ставилось. Потом добавил возможность просмотра последней распознанной картинки. Правда, из-за того что страница с текстом и картинка запрашивались не одновременно, иногда можно было увидеть капчу, совсем не соответствующую тексту. Решил не исправлять, всё равно кроме меня никто эту страницу не смотрит. В какой-то момент добавил возможность просмотра собственного IP адреса - почему бы и нет, когда уже есть постоянно работающий сервис?
Два варианта интерфейса для отладкиСервис проработал около 8 месяцев, количество распознаваемых файлов за сутки колебалось от полутора до трех тысяч, были всплески до шести. Тренировал нейросеть несколько раз на 15000 файлах, последний раз в январе с учетом 250 обнаруженных за месяц ошибок. Логи я не сохранял, сами файлы в целях контроля точности можно было паковать в архивы и отправлять на Cloudinary. Включал сохранение два раза на пару месяцев, теперь у меня есть полтора гигабайта распознанных капч - чуть более 300 тысяч файлов. Судя по сохраняемым именам, явных ошибок там всего 13 штук, неявных при выборочном просмотре обнаружить не удалось. По-моему, неплохая точность распознавания, сам такого не ожидал.
Обнаруженные ошибки распознаванияКод программы доступен на GitHub, настройки Heroku и ключи авторизации Cloudinary передаются через переменные окружения.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_python, #_obrabotka_izobrazhenij (Обработка изображений), #_mashinnoe_obuchenie (Машинное обучение), #_captcha, #_python, #_ocr, #_neural_networks, #_algoritmy (алгоритмы), #_nejroseti (нейросети), #_raspoznavanie_teksta (распознавание текста), #_kapcha (капча), #_python, #_obrabotka_izobrazhenij (
Обработка изображений
)
, #_mashinnoe_obuchenie (
Машинное обучение
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 07:36
Часовой пояс: UTC + 5