Этап 6. Тестирование и улучшение

Это архивная статья, больше не актуальна.

Для создания собственных модулей воспользуйтесь сервисом CapMonster Cloud. Подробную инструкцию можно найти по этой ссылке - Создание пользовательского модуля

После обучения модуля необходимо провести его тестирование.

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

Это очень важная информация, по ней Вы сможете понять, как повысить качество распознавания и уменьшить время работы модуля.

Настройки тестирования

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

  1. Количество потоков для тестирования.

  2. Значения фильтра Thresold.

  3. Минимальная дистанция между символами - очень важный параметр! Можно попробовать слегка увеличить или уменьшить. Актуально, если у Вас в ответах много лишних букв (увеличить) или много букв пропущено (уменьшить).

  4. Тип сравнения: полное совпадение = полное соответствие реальному ответу на каптчу, совпадение подстроки и частичное = настройка, которой следует пользоваться, если сайт принимает успешно частичный ответ на каптчу, а не полное соответствие. Тогда Вы можете заставить модуль считать правильными ответы, которые на самом деле только частично верные.

  5. Значение диапазона, если используете подстроку как тип сравнения. Количество верно отгаданных символов подряд, которые мы считаем как успешный ответ на каптчу.

  6. Можно попробовать включить/отключить быстрое распознавание, это тоже может повлиять на процент распознавания.

Вспомним ещё раз типы ошибок распознавания символа

Прежде чем перейти к ошибкам распознавания каптч, давайте вспомним, какие бывают ошибки распознавания символов:

  1. Неправильное распознавание - это когда символ, действительно есть, но распознаётся он не правильно. Например, мы показываем модулю символ «а», а он находит там символ «с».

  2. Пропуск символа - это когда символ есть, но модуль вообще не видит никакого символа, т.е. мы показываем ему символ «а», а модуль выдаёт, что тут ничего нет.

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

Улучшение распознавания

По сути, вся работа по улучшению процента распознавания у Вашего модуля сводится к балансу этих трёх видов ошибок распознавания символа. Т.е. в идеале Ваш модуль должен при неправильном распознавании иногда:

  1. Заменять правильный символ, неправильным. Например, вместо «captcha» выдавать «cagtcha».

  2. Не видеть тот символ, что есть. Например, вместо «captcha» выдавать «cptcha».

  3. Выдавать лишний символ в тексте каптчи. Например, вместо «captcha» выдавать «camptcha».

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

Основные ошибки и способы их устранения

Количество букв, выданных модулем очень мало, либо их нет, вообще:

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

  • Возможно, Вы установили параметр Минимальное расстояние между символами слишком большим. В таком случае, редкие распознанные символы будут правильными. Т.е. вместо текста «amcaptchatext» модуль будет выдавать что-то типа «aathet».

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

  • Возможно, центры масс определяются не там, где Вы определяли центры символов при их сборе. Если так, то Вы это увидите в тесте центров масс, кликая по каптче в местах найденных центров масс. Там отклика у модуля не будет, но он будет где-нибудь ниже или выше найденных центров масс. Это можно попытаться исправить без переобучения - увеличить разброс центра масс и количество дополнительных точек так, чтобы они начали попадать на те места, где модуль распознаёт символ. Либо переобучить модуль с увеличенным разбросом центра символа вместо (вместе с) увеличения разброса у центра масс.

2. При обучении зелёный график был близок к жёлтому. Красный был почти на нуле. Читайте про исправление такой ситуации в разделе обучения.

Количество букв, вполне подходит, но они все (или большинство) неправильные:

Если при этом обучение прошло хорошо, то, возможно, это проявление ошибки распознавания символов номер (3) - ложное срабатывание. Если так, то в тесте центров масс, кликая в центры символов Вы будете получать правильный ответ модуля, но кликая в центры масс, которые лежат рядом, не в центре символа, модуль будет выдавать кучу других символов, которых там нет.

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

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

То же что и предыдущая ошибка, только ещё параметр Минимальная дистанция между символами слишком маленький.

Внутри выданного модулем текста виден правильный текст, но он прорежен неправильными символами:

  1. Параметр Минимальная дистанция между символами слишком мал.

  2. Слишком много ошибок распознавания символов (3). В разделе обучения написано как уменьшить количество этих ошибок.

  3. Слишком низкий порог принятия символа.

  4. Комбинации 1, 2 и 3.