Вопрос

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

Существует несколько решений, которые используют людей для решения CAPTCHA от имени пользователя, например: ВебВизиум и Солона, но они зависят от наличия операторов-добровольцев (например, у Солоны, очевидно, есть только один доброволец, поэтому вам придется надеяться, что он не спит, когда вам понадобится помощь).

Мне пришло в голову, что объем решений CAPTCHA, необходимых слепым людям, очень невелик - я думаю, менее нескольких сотен в день в такой густонаселенной стране, как Великобритания.Это означает, что в отличие от плохих людей, которые хотят выполнить действие много раз за короткий период, служба помощи CAPTCHA для слепых может позволить себе выделить значительные вычислительные ресурсы - например, облако компьютеров в Амазон EC2 - к идентификации представленного текста.

Мой вопрос таков:Предполагая, что вас не очень заботит скорость и у вас много доступных компьютеров, существуют ли алгоритмы, которые позволяют вам решать распространенные сегодня CAPTCHA с искажением текста, например те, которые используются реКапча?Или эти проблемы действительно неразрешимы даже при наличии большого количества ресурсов и времени?

Несколько примечаний:

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

  2. Я знаю, что старая капча Yahoo была сломана несколько лет назад с использованием алгоритма, который работает за считанные секунды на одном компьютере.Я спрашиваю, можно ли взломать современные CAPTCHA, возможно, медленнее и с большим ресурсом.

  3. Мне известно, что появляются новые типы CAPTCHA, которые требуют от пользователей идентифицировать котят или ориентировать картинку.Они еще не получили широкого распространения, поэтому я сейчас просто спрашиваю об искажении текста.

Это было полезно?

Решение

По сути, решение CAPTCHA с искажением текста состоит из трех отдельных этапов:

  1. Узнайте, где находятся интересные места
  2. Разбить текст на отдельные буквы
  3. Распознать буквы

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

Интересный сайт, на котором можно узнать, как взломаны CAPTCHA, — сайт Исследовательская группа OCR.

Другие советы

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

Однако спамеры нашли очень эффективный способ взлома наиболее популярных CAPTCHA.Они просто нанимают дешевых рабочих, чтобы они их читали, в обмен на несколько центов за рабочий аккаунт.В результате существует небольшая индустрия взлома CAPTCHA для создания миллионов учетных записей, которые затем можно использовать для рассылки большего количества спама.По сравнению с суммой, полученной спамерами, затраты практически нулевые.Аналогичное решение могут использовать слепые/глухие люди, которые отправят изображение CAPTCHA какому-нибудь дешевому рабочему в Китае или где-то еще, где он ответит правильными словами, и слепой/глухой человек сможет продолжить.К сожалению, слепым людям эта услуга нужна лишь несколько раз, а спамерам нужен непрерывный поток, поэтому эти работники вместо этого предпочтут работать на спамеров.(Зарплата выше.) Тем не менее, лучшим решением было бы отправить CAPTCHA какому-нибудь другу, позволить ему прочитать и/или расшифровать ее и вернуть ответ.

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

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

Алгоритм можно создать, хотя и медленный.Имея 26 строчных и 26 заглавных букв и 10 цифр, придумать алгоритм не составит большого труда.Однако при использовании шрифтов с засечками и без засечек количество комбинаций придется удвоить.Тем не менее, если вы попытаетесь изогнуть все буквы так же, как буква в CAPTCHA, вы сможете обнаружить букву, которая больше всего покрывается буквой CAPTCHA.И это будет наиболее вероятный кандидат.Вам все еще нужно удалить с изображения линии, грязь и другие артефакты, которые человеческому глазу распознать легче, чем компьютеру.Вам потребуются следующие шаги:

  1. Очистите изображение.
  2. Определите расположение букв.
  3. Для каждой буквы 3А.Определите кривую буквы, проверив левую сторону.3б.Сделайте наложение всех возможных букв/цифр, чтобы найти ту, которая лучше всего ее перекрывает.(Это наиболее вероятная буква.)
  4. Найдя слово, проверьте словарь, чтобы убедиться, что это настоящее слово.(Если только в CAPTCHA не используются настоящие слова.)

Несмотря на то, что они могут перекручивать буквы в CAPTCHA, должно быть возможно обнаружить использованное ими вращение, просто взглянув на левую сторону каждой буквы, а затем попытавшись применить одну и ту же кривую к каждой букве.(52 комбинации плюс 10 цифр, если также используются цифры.) По сути, вы пытаетесь поместить рамку вокруг каждой буквы, а затем проверить, какая буква будет содержать наименьшее количество пробелов.Это наиболее вероятное письмо.

Основная причина, по которой это не часто используется для оптического распознавания символов, — это потребность в скорости.Шаг 3a/b обычно выполняется медленно, особенно если вам нужно учитывать стиль шрифта.


Увеличение этого ответа, но в ответ на один из комментариев:

Существует несколько способов очистки изображения.Вам понадобится цветовая фильтрация, шумоподавление и алгоритм, способный распознавать зашумленные линии на изображении.А ДЕФКОН Слайд-шоу, на которое вы указали, показывает несколько простых методов фильтрации части шума.Это показывает, что базовый инструмент обработки изображений уже может сделать изображение более четким для чтения машиной.Простое размытие очистит случайные точки и тонкие линии, а цветные фильтры отфильтруют шумные цвета.Следующим шагом будет попытка поместить в рамку каждую букву CAPTCHA, надеясь, что система сможет распознать их местоположение.Я не знаю никаких практических алгоритмов для этого, но должны быть способы их распознать.Существует программное обеспечение, которое может создавать векторные изображения из растровых изображений, поэтому должно быть программное обеспечение, способное вычислять рамку вокруг буквы.Вполне вероятно, что у этого ящика не будет прямоугольных углов, поэтому вам придется исказить все 52 буквы, чтобы они соответствовали одному и тому же ящику.Курсив или жирный шрифт не должны иметь большого значения, поскольку эти стили являются лишь дополнительными искажениями.Однако шрифт с засечками или без засечек имеет значение.Шрифты с засечками, как правило, имеют больше шипов и орнаментов.К счастью, существуют алгоритмы, которые могут превратить коробку в любую другую фигуру с четырьмя углами.

Обычные приложения OCR предполагают, что буквы в основном прямые, и просто проверяют несколько горячих точек, чтобы найти совпадение.Поэтому иногда они ошибаются из-за шума.Чтобы взломать CAPTCHA, вам потребуется более точное сопоставление, предпочтительно «исключающее ИЛИ» изображения буквы CAPTCHA с изображением одной из 52 букв, а затем подсчет количества черных и белых пятен для расчета соотношения.Если предположить, что белый = 1 и черный = 0, результат XOR должен быть почти черным для наилучшего соответствия.

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


Еще один комментарий, больше текста.:-)

Сегментация может быть проблемой, но ее можно решить.Это просто чрезвычайно сложно.Но когда вы очистите изображение, можно будет вычислить две линии.Одна линия касается нижней части каждой буквы, а вторая линия касается верхней части.Однако хорошие CAPTCHA больше не будут помещать буквы в одни и те же строки, а не очень хорошие можно взломать, просто следуя по строкам.(Предполагать?ReCAPTCHA помещает буквы между двумя строками!) При использовании двух строк вы знаете, что первая буква будет начинаться слева, поэтому вы можете попробовать наложить туда все 52 варианта, пока не найдете совпадение.Когда вы найдете один, двигайтесь вправо, чтобы найти второй.И дальше, пока не прочтете все буквы.Имея две линии, которые помогут вам, вам не понадобится полная коробка.

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

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

Мой ответ на ваш вопрос "действительно ли эти проблемы действительно неразрешимы даже с большим количеством ресурсов и времени?" это отметить, что это сама причина, по которой капчас работает.

Насколько я понимаю, цель CAPTCHA — доказать, что вы человек, а не спам-бот.reCAPTCHA — это новый подход к этой теме, поскольку он использует изображения, которые представляют собой текст, который не может быть распознан механизмами OCR (оптического распознавания символов).Разница между человеком и машиной в этом случае заключается в том, что специализированные алгоритмы попытались интерпретировать это изображение и потерпели неудачу, в то время как «нормальный» человек обладает внутренней способностью интерпретировать текст последовательно по-человечески.При этом мы надеемся, что в будущем кто-нибудь придумает более совершенные механизмы оптического распознавания символов, чтобы меньше вмешательства человека в оцифровку мировой информации.Мы надеемся, что кто-нибудь найдет приемлемое решение этой конкретной проблемы.

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

Внедрение CAPTCHA, безусловно, сделало Интернет менее доступным для людей с нарушениями зрения, и я согласен с вами, что вы называете это серьезной проблемой, заслуживающей большего внимания и заботы.Однако, хотя CAPTCHA можно и непоследовательно обходят на популярных веб-сайтах, я не думаю, что это жизнеспособное долгосрочное решение для тех, кто в этом нуждается.Действительно, день, когда варианты CAPTCHA в настоящее время присутствуют на таких сайтах, как Facebook, Google, MySpace и т. д.могут быть надежно и последовательно сломаны, наступит день, когда они устареют и от них откажутся либо в пользу более сильных вариантов того же самого, либо в пользу совершенно нового решения (как вы и предполагали, отличие кошек от собак на картинках было популярной альтернативной тенденцией).

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

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

Что касается технической стороны вашего вопроса, то я не думаю, что наличие только дополнительных вычислительных мощностей позволит вам надежно и последовательно взламывать CAPTCHA.Спам приносит МНОГО денег, и вы можете быть уверены, что теневые SEO-компании и спамеры имеют в своем распоряжении большое количество серверов.Как упомянул Йоханнес Россель, если вы хотите узнать больше о том, как это делается и в чем заключаются технические трудности, изучите оптическое распознавание символов (OCR) и посмотрите на широкий спектр искажений цифр и букв, которые происходят на сайтах с высокой посещаемостью.

Этот связанный вопрос SO содержит ряд хороших идей, в том числе разговор о ДЕФКОН в котором утверждается, что использование нескольких оптических символов и голосование нарушают многие простые CAPTCHA.Это предполагает возможный метод решения:распределите задачу по нескольким серверам, на каждом из которых параллельно работает один или несколько инструментов OCR, соберите результаты и выберите наиболее популярный ответ.Комментарии приветствуются.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top