Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Защита от роботов.

Возвращаясь к защите от роботов. Есть такой сайт BeeOnline [ <<> ] . Он позволяет отправлять сообщения абонентам сети «Билайн». Формочка отправки сообщений защищена от роботов традиционной картинкой, на которой написано число. Требуется — написать робота, которому эта картинка существенной помехой не являлась.

Трудности две: во-первых, цифры расположены на разной высоте, во-вторых, картинка зашумлена. Но есть и хорошие новости: цифры равной ширины, всегда на одних и тех же местах по горизонтали, шрифт всегда один и тот же.

Если бы не было шумов, можно было бы просто подсчитывать суммы значимых точек по вертикали и сравнивать их с просчитанными заранее значениями — так я обходил защиту одного из web-mail.

Шум сильно мешает. Я попробовал убирать точки, вокруг которых находится менее трёх точек. Помогло. Далее подсчитал вертикали в цифрах, усреднил значения по нескольким картинкам и просчитал «отпечатки» цифр.

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

Погрешность — порядка 2-3%. Плохо отличает сильно зашумлённые 8 и 9. Можно, конечно, считать ещё и горизонатали, вводить самокоррекцию и т.д., но мне не хочется. 3% — вполне нормальный процент ошибок, распозналось неправильно — можно повторить. Мне хватит.

Сама программа — тут [ >>> ].

Ctrl ←Mabilla
11 комментариев
Mash 2003

Хакир. :)

Мелочи жизни: в rss относительный урл ушёл.

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Mash:

Ну, а почему бы в RSS не быть относительному урлу? :)

A!e% 2003

Эх, а ведь можно было бы просто вычитанием из каждой цифры всех по-очереди (шрифт-то одинаковый) найти минимум… :) А потом уже отфильтровать помехи. Процент удач должен вырости. Но это я навскидку, не видел картинок…

Можно еще фильтры понапридумывать, которые будут шум убивать. Такие есть…

Евгений Степанищев (bolknote.ru) 2003

Комментарий для A!e%:

Много чего можно напридумывать. :) Смысл? :)

Yras 2003

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

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Yras:

Почитать на какую тему?

SteveRay 2003

Привет!
Очень интересная тема кстати. Я по надобности сталкивался с подобным вопросом, только там ситуация сложнее — картинка с цифрами была JPEG. Причем степень сжатия разная, так что у цифр нет четких границ. Удаление этой размытости не дает нужного результата, так как цифры заметно меняют форму. Я так подумал и решил работать не с отдельными пикселами, а с чем-то более высоко уровневым. Я рассекаю цифру прямыми и считаю количество пересечений. Получается прямо какой-то искусственный интеллект — работает дяже с разными шрифтами.
Может у кого еще идеи есть, а то уж больно актуален вопрос.

Евгений Степанищев (bolknote.ru) 2003

Комментарий для SteveRay:

Весьма интересно :)) Попробуй почитать литературу по OCR, если такая существует, о распозновании образов.

Hoha 2003

Ну…. :) надо не литературу читать, а пойти поучиться на кафедру ММП ВМиК МГУ. Там как раз занимаются распознаванием образов. Если кому очень сильно надо, могу поделиться умными материалами по этой проблеме, там достаточно серьёзные алгоритмы. Кстати могу обрадовать — мы впереди планеты всей в этом деле )). Например довольно успешно распознаются тексты на всяких там старославянских языках (рукописные ессно ;]). Опять же есть проги — которые по этим самым алгоритмам (кстати с шумами там проблем особых нет), те же циферки с билайна распознают только в путь. Правда проги на дельфе написаны :(
Эх… учился бы там, на сях бы писал :) выгнали, ссуки, 2 раза ;) Опять же кому сильно надо, могу поделиться….

Yras 2003

2 Bolk: вот на ту самую литературу по OCR.гугл кое-что дал ,но жиденько.
2 Hoha:Если материали не сильно большие,то закинь на Yras_game(сабака)mail.ru

Евгений Степанищев (bolknote.ru) 2003

Комментарий для Yras:

Попробуй зайти во всякие amazon/bolero, посмотреть книги.