что это такое простыми словами

Содержание

👉 В этом разделе мы на примерах разбираем сложные айтишные термины. Если вы хотите почитать вдохновляющие и честные истории о карьере в IT, переходите в другие разделы.

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

Название — аббревиатура от английского предложения Completely Automated Public Turing Test To Tell Computers and Humans Apart. На русский его примерно можно перевести как «полностью автоматический тест Тьюринга для отделения компьютеров от людей». Это название очень длинное, поэтому его и сократили до «капчи».

Тестом Тьюринга называют испытание, которое может пройти только умеющее мыслить существо, — его придумал английский математик Алан Тьюринг. Мы подробнее расскажем о тесте ниже.

Профессия
Интернет-маркетолог
Получите за 12 месяцев практические навыки интернет-маркетинга для освоения digital-професcии, роста бизнеса или прорыва в карьере. Прокачайте навыки в таргете, контекстной рекламе, SMM и influence-маркетинге. Освойте аналитику на продвинутом уровне. Учитесь на собственном проекте или выполняйте задания на проектах наших партнеров.

Подробнее

Зачем нужна капча

Капча нужна, чтобы определить, кто пытается совершить операцию — человек или робот. Без ее прохождения нельзя выполнить то или иное действие: войти на сайт, авторизоваться, оставить комментарий. Задание обычно довольно простое для человека и практически невыполнимое для робота.

Зачем вообще отсеивать ботов? Есть несколько причин:

  • злоумышленники. Боты могут использоваться для разных видов атак на сайты. В первую очередь это DDoS-атаки — автоматизированные массовые запросы, которые перегружают сервер. Еще есть брутфорс — подбор логина и пароля с помощью робота, пробующего разные варианты практически бесконечно;
  • спам. Частый вариант использования бота — отправка «мусорных» рекламных сообщений, которые мешают полезному контенту;
  • махинации. Например, интернет-магазины иногда проводят ограниченные по времени акции вида «Успей купить», и роботы могут мониторить такие предложения, скупая весь акционный товар за несколько секунд.

Есть и роботы, которые не наносят вреда, например поисковые. От них защищаться капчей не нужно — потенциально опасных действий они не совершают.

Кто пользуется капчей

Капчу устанавливают владельцы сайтов или специалисты, которые занимаются их обслуживанием. Нужна она или нет — зависит от целей и задач ресурса, а еще от возможностей его владельцев.

Например:

  • капчу устанавливают для публикации комментариев на ресурсах, где живо общаются пользователи;
  • капча может появляться при авторизации или попытке купить товар, чтобы убедиться, что пользователя не взломали;
  • некоторые сервисы предлагают ввести капчу, если активность пользователя кажется им подозрительной. Иногда они срабатывают по ошибке, например из-за VPN или опечатки при вводе пароля.

Коммерческие сайты могут устанавливать капчу, чтобы защититься от парсинга — считывания данных со страниц с помощью робота. Но это обычно бесполезно, к тому же парсинг редко наносит прямой вред — только косвенный, так как помогает конкурентам собрать информацию.

Как может выглядеть капча

Распространенный вариант — картинка, на которой изображено сочетание из букв, слов или цифр. Чтобы пройти тест, нужно разобрать написанное и ввести результат в специальное поле. Но это не единственный тип. Кроме него, бывают:

  • простые вопросы, на которые может однозначно ответить человек, например, «Как звали Пушкина?»;
  • математические примеры, которые нужно решить и ввести результат;
  • мини-игры вида «Кликните на красную кнопку» или «Соберите пазл»;
  • выбор правильных вариантов из списка — обычно это задания вида «Укажите все картинки со светофорами».

Последний пример активно используется в популярном сервисе Google reCAPCHA. Он считается довольно надежным в сравнении с традиционными методами вроде сочетания букв.

Это не исчерпывающий список: вариантов капчи множество, а конкретное исполнение зависит только от фантазии ее создателей. Есть даже невидимая капча, которая делает выводы по деятельности пользователей, — ей пользуется Google.

Идея капчи: тест Тьюринга

Разгадывание капчи — это задача, которую легко выполнить человеку и невозможно решить примитивному роботу. Идея возникла несколько десятков лет назад как реализация теста Тьюринга.

Алан Тьюринг придумал эмпирический тест, задача которого — определить, может ли существо мыслить. Классический тест устроен так: у человека есть два невидимых собеседника — машина и другой человек. Если тот не может правильно определить, который из них робот, значит, машина способна к мышлению.

Позже было создано намного больше вариаций теста. Капча — один из них, но проверкой в ней занимается не абстрактный человек, а алгоритм.

До последнего времени тест Тьюринга не могла пройти ни одна машина. Недавно это удалось искусственному интеллекту LaMDA от Google. А некоторые рисунки нейросетей GPT-3 и DALL-E 2 уже невозможно отличить от человеческих. Но это не значит, что они могут мыслить: уже доказано, что прохождение теста говорит не о наличии мышления, а об умении его имитировать.

Как устроена капча

Капча — это примитивный тест Тьюринга, автоматизированный и публичный. В ее основе лежит алгоритм, который показывает задание посетителю, а потом считывает отправленный ответ.

Вопросы и задания реализованы по-разному. Иногда их придумывает сам человек — так чаще всего создают варианты с загадками, ответами на вопросы и математическими примерами. Но большинство задач капчи генерируются автоматически. Изображение создается на основе сгенерированного ответа, автоматически искажается, на него добавляются помехи — все это способен сделать компьютер.

Пока капча не пройдена, алгоритм не дает посетителю выполнить то или иное действие. Обычно он сообщает о неправильном ответе и снова дает пользователю задание. Когда оно выполнено, доступ открывается.

Некоторые современные варианты капчи — умные: они не включаются, если пользователь ведет себя естественно, и запускаются только при подозрительной активности. Например, посетитель отправляет слишком много сообщений, чересчур активно скачивает контент, зашел через VPN или анонимный режим.

Может ли робот обойти капчу

Капча может быть «сильной» и «слабой». «Слабую» капчу легко пройти роботам, а «сильную» — почти невозможно. Впрочем, у нее часто есть другой недостаток: ее становится тяжело пройти людям.

Распознавание. Технологии развиваются, и современные роботы запросто пройдут легкую капчу — такую, где символы расположены на контрастном фоне и не слишком искажены. Поэтому используются всё более сложные алгоритмы и задания.

Есть даже специальные сервисы для распознавания капчи. Впрочем, мы не рекомендуем ими пользоваться: для нормальных пользователей это излишне. К тому же они обычно рассчитаны на конкретный «вид» капчи.

Иногда для распознавания капчи могут использовать нейросети и компьютерное зрение.

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

А еще у капчи бывают уязвимости: например, ответ, который расположен прямо в названии картинки на странице. Робот может заметить его и ввести. Такая капча, по сути, нефункциональна.

Есть и более сложные способы: например, вирусные боты, которые перенаправляют капчу на живого пользователя, а потом читают, что он ввел. Пользователь может даже ничего не подозревать. Но такое встречается реже.

Как защитить капчу от роботов

Есть несколько способов: пользоваться более мощными алгоритмами или применять альтернативные виды защиты от спамеров и атак.

Более мощные алгоритмы — это или стандартная текстовая капча с символами, которые сложно разобрать, или другой вид задания. Например, довольно эффективной считается reCAPTCHA с распознаванием определенного вида изображений — не все боты достаточно тренированы, чтобы их различать.

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

Про альтернативные виды защиты, такие как специальные файерволы против атак, мы поговорим чуть ниже.

Преимущества капчи

Это просто. Установить капчу на сайт — довольно быстро и несложно: в интернете десятки плагинов, которые предлагают разные виды заданий. При этом некоторые из них довольно трудно обойти роботам.

Это удобно. Обычно сервисы капчи интегрируются в CMS, и управлять ими владелец сайта может прямо из административной панели.

Это дешево. Некоторые такие расширения для сайтов — бесплатные, другие стоят недорого и точно обходятся дешевле иных мер защиты. К тому же разработчик всегда может создать собственный алгоритм: статьи о том, как они устроены, есть в сети в открытом доступе.

Это эффективно. Конечно, существуют продвинутые роботы, которые могут обходить даже сложную капчу, но от большинства простейших ботов она защитит. Особенно если выбрать вариант с хорошим уровнем защиты.

Неудобство для пользователя. Пользователей может раздражать капча, особенно если она появляется слишком часто. Для информационных сайтов это не так критично, а вот для коммерческих важно: человек может уйти и не сделать заказ, который почти оформил. В результате компания может потерять клиента. К тому же падают поведенческие факторы: люди не выполняют какие-то действия, потому что не хотят тратить время на капчу.

Проблемы с доступностью. Отдельная категория пользователей может иметь особенности здоровья, мешающие распознать капчу. Сюда можно отнести плохое зрение, различные неврологические нарушения и иные состояния. Если вы создаете ресурс с расчетом в том числе на таких пользователей, вам стоит подумать об альтернативных вариантах.

Влияние на скорость. Чтобы подгрузить страницу с капчей, нужно больше времени, чем без нее. Поэтому страницы, где есть проверка, могут загружаться медленнее, а скорость загрузки — критично важный параметр. Он влияет и на поведение пользователей, и на отношение со стороны поисковых систем.

Непрочность. Некоторые популярные в прошлом виды капчи, например phpBB или vBulletin, сейчас считаются уязвимыми и неспособными защитить от роботов. И даже для более современных алгоритмов находятся способы обхода; впрочем, их намного меньше.

Чем можно заменить капчу

Некоторые считают, что капча как метод устарела: появляются более продуманные и продвинутые роботы. Действительно, сейчас в теории программа может преодолеть даже хорошо защищенные алгоритмы капчи.

Но это не значит, что капча совсем бесполезна, — это все еще удобный и нетребовательный метод, который помогает отсечь большую часть ботов. Просто, если вы беспокоитесь о защите сайта, капчу следует комбинировать с другими методами:

  • файерволами — они не пропускают вредоносный или подозрительный трафик;
  • спам-фильтрами — специальными расширениями, которые распознают и блокируют спам;
  • более сложным входом в аккаунт — например, двухфакторной аутентификацией через одноразовые коды или номер телефона;
  • фильтрами ботов — программами, которые отслеживают роботов по заранее заданным правилам;
  • сервисами защиты от злоумышленников — они платные, но успешно отсеивают даже полноценные DDoS-атаки.

Как установить капчу на сайт

Обычно для капчи существуют специальные плагины, которые встраиваются в CMS. Их нужно скачать и установить в систему управления контентом сайта по инструкции. Затем понадобится настроить плагин, например установить режим его включения, определить страницы, на которых он будет работать. После этого стоит протестировать, нормально ли работает капча: если что-то не так, есть риск, что действия пользователей будет блокировать все время.

На что обратить внимание при установке капчи

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

Помните, что роботы постоянно совершенствуются и капча не сможет защитить от всего. А если вы хотите создать свой уникальный алгоритм — можете разработать генератор капчи самостоятельно. Понадобится изучить основы программной работы с изображениями и принципы, которые помогают защитить капчу от распознавания роботом.

Если вы хотите узнать больше об интернет-технологиях, записывайтесь на наши курсы. Получите новую профессию в современной сфере, востребованную и увлекательную.

Профессия Интернет-маркетолог Получите за 12 месяцев практические навыки интернет-маркетинга для освоения digital-професcии, роста бизнеса или прорыва в карьере. Прокачайте навыки в таргете, контекстной рекламе, SMM и influence-маркетинге. Освойте аналитику на продвинутом уровне. Учитесь на собственном проекте или выполняйте задания на проектах наших партнеров.

Подробнее

Сбор данных с обходом капчи посредством PyAutoGui, Keras и Tensorflow

Время прочтения: 7 мин.

Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).

Была поставлена следующая задача: необходимо получить информацию на определенном веб-ресурсе (упустим его наименование) на основе файла Excel со списком определенных данных (на 2000 строк).

В связи с тем, что все методы автоматизированного парсинга и скрапинга невозможны, а время ограничено, обращаем внимание, что нам подойдет и эмулятор мыши и клавиатуры.

Для работы простого эмулятора нам потребуются библиотеки:

import time, pyperclip
import pandas as pd
import pyautogui
import os
import re

Но есть одно препятствие: ввод капчи, которая имеет вид:

На просторах интернета можно найти множество алгоритмов по работе с капчами в рамках машинного обучения, и мы воспользуемся одним из них. Ознакомиться с нашим выбором можно здесь — https://habr.com/ru/post/464337/

Нашей же задачей останется обучить уже готовый алгоритм.

import urllib
import urllib.request
HEADERS = {'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
          'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537. 36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'}
for i in range(1, 1001):
    html = r'здесь была ссылка на ресурс'
    urllib.request.urlretrieve(html, r"здесь пусть сохранения файлов/number" + str(i) + '.jpg')

Как видно из кода, для обучения модели было скачено 1000 изображений. Далее их необходимо обработать: разрезать и распределить по директориям в зависимости от чисел на изображениях. Воспользуемся кодом ниже:

from PIL import Image
import glob
for file in glob.glob(r'\*.jpg')
    img = Image.open(file)
    area1=(2,0,29,45) #спереди,сверху,справа,снизу)
    img1 = img.crop(area1) 
    area2=(29,0,51,45) #спереди,сверху,справа,снизу)
    img2 = img.crop(area2)
    area3=(51,0,71,45) #спереди,сверху,справа,снизу)
    img3 = img.crop(area3)
    area4=(71,0,91,45) #спереди,сверху,справа,снизу)
    img4 = img.crop(area4)
    area5=(91,0,110,45) #спереди,сверху,справа,снизу)
    img5 = img. crop(area5)    
    img1.save(r"путь сохранения\\"+filename+"1"+".jpg")
    img2.save(r"путь сохранения\\"+filename+"1"+".jpg")
    img3.save(r"путь сохранения\\"+filename+"1"+".jpg")
    img4.save(r"путь сохранения\\"+filename+"1"+".jpg")
    img5.save(r"путь сохранения\\"+filename+"1"+".jpg")

Для обучения модели формируем следующую логику директории:

В dat мы разобрали числа по папкам от 0 до 9, где в каждой из папок располагается соответствующее число. Например, 0 (ноль):

В сумме получилось по 500 изображений в каждой из папок.

train_simple.py – файл для обучения модели.

И самое главное — директория output, где будет располагаться обученная модель.

Подготовительная работа выполнена, осталось обучить модель. Открываем командную строку, переходим в нашу директорию и вводим команду:

python train_simple.py --dataset dat --model output/simple_nn.model --label-bin output/simple_nn_lb.pickle --plot output/simple_nn_plot. png

Модель для распознавания капчи обучена. Видим следующий результат:

Это означает, что на обучающем наборе достигнута верность — 98,2%, на контрольном — 97,8 % и на тестовом — 97,8 %. Ориентируемся на последнее значение. Посмотрим на визуальную интерпретацию модели в директории output файл simple_nn_plot.png:

Помним, что 100% результата не будет. В целом, распознавание 5 чисел занимает около 10 сек.

Итак, подключим файл для распознавания к нашему основному коду:

import sys
sys.path.append('путь до директории, где лежит директория с обученной моделью')
import captcha

Следующая задача – выяснить все необходимые координаты для работы эмулятора мыши.

import pyautogui
import keyboard      
while True:
    if keyboard.is_pressed('space'):
        mouse_x, mouse_y = pyautogui.position()
        print(mouse_x, mouse_y)  

Суть проста: наводим мышкой на нужную позицию, нажимаем «пробел» и получаем нужные нам координаты. Перейдем к основному коду эмулятора:

Пишем функцию для упрощения общего кода.

def click(x, y, n, key):
    pyautogui.click(x, y, button=key) 
    time.sleep(n)

time.sleep(2) 
# Переходим в папку с проектом, где лежит обученная модель
os.chdir(путь до директории проекта\project')

# Формируем два датафрейма: в первом содержится наш файл, а второй будет содержать итоговую информацию после отработки кода.
df1 = pd.read_excel(r'путь до excel-файла\значения_для_проверки_.xlsx')
df1=df1[:]
df2 = pd.DataFrame()

Логика проста: данные из столбца нашего Excel-файла будут вноситься в поле ввода на веб-ресурсе, после – распознается и вводится капча, нажимается кнопка проверки и текстовый результат проверки вносится во второй датафрейм, формируя таким образом таблицу Excel с итоговыми данными, взятыми из веб-ресурса.

for i in range(0, len(df1[' id '])):  
 	 # 1) Поле ввода значения из таблицы excel:
    click(174, 461, 1, 'left')     
    pyautogui. typewrite(str(df1['id'][i])) # вводит в поле ввода из столбца «id» значение n-ой строки
    time.sleep(2)

	 # 2) Блок работы с капчей
    while True:       
        click(150, 679, 1, 'left') # поле ввода капчи   
        
        click(361, 673, 2, 'right') # ПКМ по изображению
        click(501, 688, 3, 'left') # скачать
        click(582, 565, 5, 'left') # сохранить
        
        # Изображение скачено, теперь необходимо эту распознать капчу. Для этого мы используем ранее подключенный созданный нами модуль
      numbers = captcha.content() 

        click(150, 679, 3, 'left') # поле ввода капчи
        pyautogui.typewrite(numbers) # вводит распознанную капчу
        
        time.sleep(3) 
        click(323, 773, 5, 'left')  # кнопка «проверить»         
        pyperclip.copy('') # очищаем буфер обмена

        # 3) Следующий блок проверки. Если капча введена не верно, то возвращаемся в начало цикла
        pyautogui. click(140, 713, button='left', clicks=3) # проверка
        time.sleep(3)         
        pyautogui.hotkey('ctrl', 'c') # копируем  
        valid = pyperclip.paste()   
        time.sleep(1) 
    
        if re.findall(r'ведите\s', valid):   
            os.remove("number.jpg")
        else:   
            os.remove("number.jpg")
            break                
  
# 5) Если капча введена верно, то сохраняем значения в переменные.
    pyautogui.click(190, 156, button='left', clicks=3)
    time.sleep(2) 
    pyautogui.hotkey('ctrl', 'c')
    time.sleep(2) 
    result = pyperclip.paste()
    time.sleep(1) 
    
    pyautogui.click(177, 187, button='left', clicks=3)
    time.sleep(2) 
    pyautogui.hotkey('ctrl', 'c')
    time.sleep(2) 
    description = pyperclip.paste()
    time.sleep(1) 
    
# 6) Блок формирования результирующей таблицы. Формируем строку в новый датафрейм. 
    new_row = {'id': df1['id'][i], 'number': df1['text'][i], 'text': result, 'description': description}
    print(i, new_row)
    df2 = df2.append(new_row, ignore_index=True)    
    pyautogui.scroll(1000) # Перемещаемся снова наверх.

Код содержит несколько логических блока:
• Работа с полем ввода с данными из исходной таблицы Excel. DataFrame(df1) исходной таблицы Excel, где лежат данные, содержит столбец «id». Значения в столбце содержат до 10 символов. Работа кода предполагает, что берется значение из строки «i» столбца «id» в соответствии с номером круга цикла. Пока значения в столбце не закончатся, цикл не прервется.
• Работа с капчей. Создаем бесконечный цикл, условием выхода из которого будет правильный ввод капчи. Мы качаем изображение капчи, вызываем функцию из сформированного ранее модуля, далее происходит попытка ввода. Если капча введена верно, то цикл прерывается и мы переходим к следующему логическому блоку, если нет, то возвращаем в начало цикла, удаляя скаченное изображение.
• Немного о логике проверки ввода. В случае неудачного ввода, на главной странице появляется предупреждение и не пропадает, более того, текст предупреждения можно копировать. Последним и воспользуемся. Чтобы проверить введена ли капча правильно, мы ищем текст по конкретным координатам и проверяем, что там сказано, если советуют повторить попытку ввода, то, соответственно, возвращаемся в начало цикла.
• Блок извлечения данных при верном вводе капчи. Все просто: мы берем и копируем нужный нам текст по определенным координатам, сохраняя этот текст в переменные.
• Блок формирования результирующей таблице. Создается словарь с нужными нам данными. Этот словарь представляет собой одну строку в таблице.
Теперь мы автоматизировали сбор данных и подключили модель машинного обучения для распознавания капчи, что позволило увеличить скорость работы в сравнении с человеческими ресурсами.
Удачи в кодировании 😊

Нейронная сеть для распознавания капчи | Хуу-Тхань Нгуен | Startup

Captcha — это компьютер, генерирующий текстовые изображения, используемые для различения взаимодействий людей и машин. Обычно изображение капчи состоит из фиксированного количества символов (например, цифры, буквы). Эти символы не только искажены, масштабированы до нескольких разных размеров, но также могут перекрываться и пересекаться несколькими случайными линиями. Два типа капчи, показанные на рис. 1, определяются количеством категорий символов (0..9, A..Z) и длину текста (например, 5 зеленых и 6 черных изображений).

Рис. 1. Примеры двух наборов данных с капчей.

В этом блоге я представляю и сравниваю две модели глубокого обучения, решающие задачу распознавания капчи. Каждая модель состоит из сверточных слоев для изучения визуальных особенностей. Затем эти функции передаются на полностью связанные слои для вычисления окончательного предсказания капчи. Мои архитектуры активно используются для всех видов капчи, только C и L различаются из-за соответствующих свойств капчи. Детали этих моделей будут описаны в разделе 2.9.0003

Для оценки производительности этих моделей были собраны два набора данных капчи, называемые GRN и BLK, состоящие из 507 и 610 изображений соответственно. Подробная информация об этих наборах данных будет упомянута в разделе 3.

В общем, одна банковская система позволяет пользователям неправильно вводить капчу до 5 раз подряд. В этом проекте я стремлюсь решить две упомянутые капчи, чтобы пройти эту систему в более чем 99,9% случаев. Предположим, что каждая капча имеет одинаковую вероятность p для правильного распознавания. Тогда вероятность того, что модель даст неверные ответы 5 раз непрерывно, равна (1-p)⁵ . Для этого моя цель эквивалентна (1-p)⁵ < 0,001 , что приводит к p > 0,75 . Другими словами, хороший результат для проекта определяется как глобальная точность более 75%.

Типичное решение общей проблемы распознавания капчи: (1) найти метод обработки изображения, чтобы разделить изображение капчи на несколько небольших изображений, содержащих отдельные символы, затем (2) использовать сверточную нейронную сеть для распознавания каждого из этих изображений и, наконец, (3) объединить их, чтобы произвести распознавание всей капчи. В то время как шаг (2), распознавание изображений отдельных символов, был популярен и эффективно решался с момента существования задачи MNIST, решение для шага (1) зависит от уровня сложности разделения символов внутри одного изображения. Например, сложно найти общий метод разделения символов в каждом из упомянутых наборов данных GRN и BLK. Это, очевидно, влияет на предсказание на шаге (3). Следовательно, для решения подобных капч необходимо найти мощную методологию, которая напрямую распознает всю капчу. Другими словами, три вышеупомянутых шага будут объединены только в один шаг.

Общая идея комплексного подхода состоит в том, чтобы получить входные данные в виде одного изображения капчи размером Ш*В и создать на выходе матрицу M размером C*L , где C — это число. категорий этикеток, а L — длина этикетки. В котором значение M_i,j представляет собой оценку достоверности, которая затем передается на уровень softmax для получения вероятности того, что метка в позиции j принадлежит к категории символов 9. 0005 и . В следующем разделе я представляю две архитектуры глубокого обучения, а именно Arch-A и Arch-B для создания такой матрицы.

Проект архитектуры

Рис. 2. Дизайн двух моделей глубокого обучения Arch-A и Arch-B для взлома общих изображений CAPTCHA.

В общем, Arch-A и Arch-B, описанные на рис. 2, состоят из двух основных модулей: сверточного (conv) модуля и полносвязного (fc) модуля. Их конверсионный модуль имеет такой же дизайн с четырьмя конверсионными блоками, которые отвечают за изучение визуальных функций. Каждый из трех первых свёрнутых блоков содержит два свёрточных слоя с размером ядра 9.0005 3*3 , за которым следует слой максимального объединения для фильтрации функций с высоким откликом. Последний блок conv содержит только один размер ядра 1*1 для преобразования глубины слоя в C , что является количеством категорий символов. Кроме того, функции пакетной нормализации и ReLU помещаются после каждого конверсионного слоя.

Полностью подключенный модуль Arch-A и Arch-B отличается. Подобно обычным моделям распознавания, таким как VGG, Arch-A (1) выравнивает последний вывод модуля conv, затем (2) передает его в многоуровневую сеть персептронов, которая состоит из 2 слоев, в данном случае для производить выходной размер L соответствует длине этикетки. Между тем, полносвязный модуль в Arch-B разбивается на два этапа: вертикальный fc и горизонтальный fc. Это разделение вынуждает Arch-B поддерживать пространственную информацию сверточных выходных данных при изучении его полносвязных параметров. Обратите внимание, что в полностью подключенных модулях как Arch-A, так и Arch-B используется отсев 50%, чтобы создать эффект ансамбля и избежать переобучения.

Реализация

Для этих задач классификации я использую функцию перекрестной потери энтропии для обеих моделей. Пусть 9_{n,l,c} как оценка вероятности символа в позиции l изображения x_n для его метки подсчета истинности c , тогда функция потерь определяется следующим образом:

Наборы данных

Таблица 1: Статистика наборов данных GRN и BLK.

Статистика двух наборов данных капчи GRN и BLK представлена ​​в таблице 1. Они перемешаны и разделены в пропорции 70% : 15% : 15% на наборы для обучения, тестирования и проверки.

Оценка производительности

Я использую две меры, локальная точность и глобальная точность , для оценки. Локальная точность сравнивает каждый предсказанный отдельный символ с реальным символом в той же позиции в строке капчи, подсчитывает количество правильных пар и затем делит на общее количество символов для получения соответствующей точности. Вычисление глобальной точности основано на сравнении всей предсказанной строки капчи с истинной.

Таблица 2: Производительность Arch-A и Arch-B на наборе данных GRN и BLK.

Таблица 2 сравнивает производительность Arch-A и Arch-B на двух наборах данных GRN и BLK. С точки зрения локальной точности, нет существенной разницы между Arch-A и Arch-B. Другими словами, с точностью более 90% они оба хорошо распознают отдельные символы. Это отражает эффективность модуля conv при изучении визуальных функций. Между тем, глобальная точность намного лучше показателей Arch-B с разрывом в 10% по сравнению с Arch-A. Это доказывает эффективность разделения вертикальной ФК и горизонтальной ФК при распознавании капчи, представляющей собой последовательность символов заданной фиксированной длины.

Рисунок 3: Распределение точности Arch-B по меткам символов. Рисунок 4: Некоторые неправильные ответы Arch-B.

На рис. 3 показана точность меток символов Arch-B для двух наборов данных. Большинство персонажей предсказаны впечатляюще, примерно на 100%. Кроме того, некоторые символы, такие как 4, 6 в GRN и E, T в BLK, предсказываются менее точно с точностью около 90%. В GRN символы случайным образом выделены жирным шрифтом и курсивом, цифра 4 ошибочно классифицирована как 1 (рис. 4a), а цифра 6 ошибочно классифицирована как 0 (рис. 4b). Между тем, набор данных BLK содержит несколько пересекающихся строк над символами. Буква T ошибочно классифицируется как D, H, P, Y (рис. 4в). Буква Е с одним горизонтальным сегментом посередине ошибочно классифицируется как шум, и модель дает ответ как соседний символ (рис. 4г).

Рисунок 5: Распределение точности Arch-B по положению символа.

На рис. 5 показано распределение точности Arch-B по положению метки в последовательности капчи. Хотя в GRN нет существенных различий, лучшие характеристики символов слева и справа по сравнению со средними символами можно увидеть в более сложном наборе данных BLK. Интуиция подсказывает, что средние символы имеют больше соседей и больше подвержены шумовому эффекту от пересекающихся линий, что приводит к меньшему граничному пространству, другими словами, к меньшему количеству подсказок, которые нужно распознать, чем к левым и правым боковым символам.

В этом блоге я представил проект по распознаванию капчи. Проект работает с двумя наборами данных GRN и BLK, которые содержат зашумленные изображения капчи. Предлагаются две модели глубокого обучения, которые имеют сходство в сверточном модуле, но отличаются полностью связанными модулями. Arch-B, который сохраняет пространственную информацию в полностью подключенном модуле, обеспечивает лучшую производительность. С точки зрения общей точности, он показывает точность около 90% для GRN и 80% для BLK, что лучше, чем предыдущее ожидание 75%. Однако из-за сложных звуков некоторые символы классифицируются неправильно. В последовательности капчи средние символы, как правило, распознаются труднее, чем левые и правые боковые символы. Поскольку капча представляет собой последовательность заданных символов (цифр, букв) с различными способами представления на шумном фоне, для повышения эффективности распознавания очень перспективным подходом является трансферное обучение.

распознавание капчи · Темы GitHub · GitHub

Вот 61 публичный репозиторий соответствует этой теме…

керломз / captcha_trainer

Звезда 2,6к

ДжексонЯнг / капча-tensorflow

Звезда 881

2капча / 2captcha-питон

Звезда 276

нетCaptchaAi / hCaptchaSolverApi

Звезда 235

чуп / Капча-Распознавание

Звезда 113

Дионис1902 / AccountGeneratorHelper

Звезда 78

Symb1OS / Blackdesert-fishbot

Звезда 63

Дефазий / vkCaptchaBreaker

Звезда 60

2капча / 2captcha-csharp

Звезда 52

2капча / 2captcha-перейти

Звезда 47

2капча / 2captcha-php

Звезда 40

2капча / 2captcha-решатель

Звезда 33

ДедИнк / vk_captchasolver

Звезда 31

дукн / Captcha-распознавание-Keras

Звезда 31

нетCaptchaAi / hCaptchaSolver.

user.js Звезда 30

2капча / 2captcha-java

Звезда 26

Джеффри Устц / Captcha-идентификатор

Звезда 19

нетCaptchaAi / noCaptcha_extension

Звезда 14

2капча / 2captcha-cpp

Звезда 13

Нейр-Финанс / Captcha-Recognition-Digit-Number

Звезда 12

Улучшить эту страницу

Добавьте описание, изображение и ссылки на капча-распознавание страницу темы, чтобы разработчикам было легче узнать о ней.