распознавание антиботовских картинок

юни
На сайте с 01.11.2005
Offline
901
#81
tar729:
Так вот примерно то же самое делается и с графическими образами, смысл в которых также заключен не в самих пикселах, а в структуре их расположения, т.е в форме.

Чтобы эту структуру вытащить из картинки, необходимо делать то, что я предложил. Ясно?

А что Вы предложили? Вам совершенно верно указывают, что индуктивные принципы здесь неприменимы.

Графолог-криминалист получит значительно большее "разрешение матрицы", при тщательном исследовании почерка преступника, а не мелкой картинки на мониторе - почерка, предполагающего не 4-8 цифр, разбодяженных черточками, а осмысленное предложение, написанное в определённом душевном состоянии, пером со множеством характеристик, и на бумаге, перед богатством фактуры которой меркнут тысячи сложнейших капчей.

Даже при этом высказываются лишь предположения, а не строится, ряд за рядом, результат стропроцентной "автоматической" ретроконверсии.

А в Вашем случае нет никаких предпосылок для выявления "мыслеформ" (как и любых других абстрактных конструкций), якобы заложенных в созданных алгоритмически, графических числовых образах. И с чего Вы взяли, что Вам удастся как найти этот порядок, так и перевести его без потерь в другую систему координат?

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

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

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

Надеюсь, исчезнет.

https://a-parser.com/ - парсер для профессионалов SEO, маркетологов, арбитражников и SaaS, https://searchengines.guru/ru/forum/944108 - прокси-сервис на базе операторов домашнего интернета, сотни тысяч IP-адресов, канал от 20 Мбит
[Удален]
#82
Jeck:
Вот вы говорите про две матрицы

>М1: (параметр ширины 4)
>0101
>0111
>0101
>
>М2: 6
>001010
>001111
>001010

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

это не я говорю про 2 разные матрицы, а мой оппонент...

удаление шума (волнистые линии, и пр)

не проблема вовсе.

даже измененная геометрия не проблема...

[Удален]
#83

"А что Вы предложили? Вам совершенно верно указывают, что индуктивные принципы здесь неприменимы."

это я как раз об этом говорю. я применяю дедуктивные принципы и настаиваю на них.

"А в Вашем случае нет никаких предпосылок для выявления "мыслеформ" (как и любых других абстрактных конструкций), якобы заложенных в созданных алгоритмически, графических числовых образах. И с чего Вы взяли, что Вам удастся как найти этот порядок, так и перевести его без потерь в другую систему координат?"

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

вот тогда и перевод из одной системы в другую будет правильным по определению.

glumworks
На сайте с 22.09.2007
Offline
21
#84

Искренне, внимательно, с усердием читал постов 20 уважаемого ТЗ. Пытался понять о чем речь. Но увы.

Можно вас попросить подробнее объяснить ваше видение решение проблемы с капчей? Я вижу некоторые выходы, скажем, использовать нейросети... Но ваш метод очень неясно описан и запутан. Можно рассмотреть работу вашего алгоритма на примере самой обычной капчи из Яндекса? Вот такая картинка:

[ATTACH]11734[/ATTACH]

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

С уважением.

jpg 1.jpg
[Удален]
#85

ну вот, долгожданный конструктив.

для матрицы 128*64 будет ровно 3413 шаблонов, естесственно, для каждого шрифта одного кегля.

но давайте начнем сначала.

сканируем весь рисунок попиксельно в большую матрицу, скажем 512*64.

наша задача выделить сначала шумы и объект.

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

это надо пояснять? Т.е. каким образом ищутся закономерности в матрице?

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

То же самое мы делаем для столбцов (но я не видел волнистые капчи по вертикали...но делать это все равно надо)

Затем мы начинаем поиск пикселов с одинаковыми расстояниями между собой.

Если расстояния одинаковые (т.е. найдена закономерность), мы эти пикселы удаляем.

И так мы делаем со всеми 64 строчками в матрице. Таким образом, мы избавились от ПРЕДПОЛОЖИТЕЛЬНО волнистой

линии.

Но пока еще рано совсем выбрасывать эти данные, нужно присвоить им весовые коэффициенты помехи 50% и выше. Потому что в капче символы могут повториться 3 раза, причем симметрично.

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

В любом случае, следует обрабатывать матрицу без этих пикселов и применить (подставить) их в самом конце анализа, если весовые коэффициенты по определению всего символа будет не удовлетворительным, а все матрицы уже использовались.

[Удален]
#86

итак, с помехами разобрались. если у кого какие вопросы-задавайте.

теперь нам нужно выделить объекты (предположительно символы).

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

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

Вывод о ширине шрифта мы делаем, исходя из анализа не одной строчки, а всех.

Так мы определяем тип капчи и имеем некоторые сведения о шрифте, которые нам тоже пригодятся (если мы распознаем еще и шрифт и владеем множеством шаблонов).

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

при этом тройка и восьмерка по середине, окажется незакрашенной.

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

[Удален]
#87

Мы знаем толщину шрифта. У нас есть шаблоны для похожего шрифта и средняя полная матрица для него (в нашем случае 64*128). Вот эту среднюю матрицу и применяем. Если есть много матриц для разных кеглей и шрифтов, начинаем работать с той коллекцией, которая наиболее подходит по весовому коэффициенту (смотрим коэффициент заполнения и толщину шрифта), а потом будем работать со всеми коллекциями, если весовые коэффициенты будут не удовлетворительными.

Так нам удасться разделить 96 на 9 и 6 но 18 примется за один объект (будет использована матрица для М).

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

искаженная геометрия:

Замечали когда-нибудь, что для того, чтобы посмотреть на повернутый объект, мы наклоняем голову? Задайтесь вопросом почему?

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

Нам следует сделать то же самое, т.е. каждый выделенный объект мы разворачиваем, т.е. сдвигаем все нижние пикселы последней строки вправо или влево (в зависимости от того куда ближе) так, чтобы крайний нижний пиксел оказался на одной вертикальной линии с крайним верхним. То же самое делаем для средней или 2-х средних строк, но сдвиг будет уже не на 18 пикселов (к примеру), а на 9.

в середине верхней четверти сдвиг будет на 4, а в середине нижней четверти на 13

Ну, эта процедура математическая, не думаю, что тут у вас непонятки с этим возникнут.

Вот теперь можно работать с этой матрицей.

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

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

[Удален]
#88

когда с объектами определились, теперь определяемся с выбором шаблонных матриц для них. Для 64*128 напомню, это 3413 шаблонов. Для 1 естесственно меньше, для буквы М, матрица вообще 128*128, соответственно и шаблонов для нее намного больше (считать неохота).

Если весовые коэффициенты для 18 оказались слишком низкие и ничего не помогло, дробим этот объект на 2 (причем, один на стандартного размера, а другой для малого), и получаем уже 1 и 8, для которых свои шаблоны подойдут.

[Удален]
#89

а дальше начинается самое интересное.

дедуктивный анализ, используя фрагменты преобразованной исходной матрицы и их сравнение с соответствующими фрагментами из шаблонов, коих в среднем для англоязычного капча (26+10)*3413 (это все для одного шрифта определенного кегля.), если капч чувствителен к регистру, то шаблонов уже 62*3413.

но зато и качество определения близко к 99%, как и у человека собсно, для капчей.

сравнение фрагментов для О и J в нижней части полной матрицы 24*128 даст высокие показатели соответствия по весу (тут надо бы рисунок привести и показать, какие фрагменты сравниваются, но и так вроде понятно).

Но верхние части будут совсем разные для соответствующих фрагментов приведенного оригинала и шаблона.

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

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

По умолчанию, маленькие матрицы (для символов 1,j, i) работают с максимальным разрешением и шаблонами 2*2, и если геометрия исказила расположение точки над i, то при достаточно высоком разрешении (где точка будет состоять из скажем, 16 пикселов), часть этих пикселов все равно окажется обнаруженными, а с учетом того, что 1, с кем можно было бы перепутать этот символ, отличается в нижней и верхней части, ошибка слишком маловероятна.

Замечу, что человеческий мозг работает с матрицами примерно 300*300 (зависит от человека конкретного), проверить на себе можно кому интересно, попытайтесь понять, начиная с какого расстояния между собой вам сложно определить 2 буквы на мониторе.

DyaDya
На сайте с 11.04.2007
Offline
147
#90
tar729:
а дальше начинается самое интересное.
дедуктивный анализ, используя фрагменты преобразованной исходной матрицы и их сранение с соответствующими фрагментами из шаблонов, коих в среднем для англоязычного капча (26+10)*3413 (это все для одного шрифта определенного кегля.)

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

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

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий