![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| CyClon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
В общем, хочу попробовать написать скрипт, которой будет распознавать цифры на картинке. В качестве картинки решил взять картинку из регистрации IPB, т.к. она более интерестна, чем на других форумах или CMS + не нужно мучаться с буквами и т.д.
В общем, в качестве картинки берем: http://proteam.com.ru/image.jpg Цель: получить переменную:
Итак, меня интересует на данный момент несколько вопросов: 1. Теория распознания. Что нужно сделать сначала, что потом и т.д. В общем как распознать картинку за меньшее время и меньшей затратой ресурсов. И возможно ли это средствами PHP (Я считаю, да 2. Какие функции нужно использовать при распознани, т.к. чтобы я мог конекретно прочитать манул по определенным функциям. Вообще меня интересует функцию обрезания изображения, чтобы сразу после получения изображения обрежат его, т.к. цифры на картинке появляются в одном и том же месте и ежду ними и краем картинки немаленькое количество пустого пространства, которое скрипт анализирует и тратит на него время и системные ресурсы. Также функция обрежания нужно для сравнивания с эталонами каждой цифры, т.к. полностью картинку сравнить неудастся в связи с большым кол-во эталоном (999999 штук). Вот код, который я уже написал - сравнение двух картинок и определение процента совпадения:
Это сообщение отредактировал(а) CyClon - 26.9.2006, 11:18 |
||||
|
|||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
В общем, для начала нужно получить из http://proteam.com.ru/image.jpg - http://proteam.com.ru/edit.jpg. Как это сделать средствами PHP, то есть обрезать?
И еще вопрос: функция imagecolorat возвращает так называемые "индексы цветов". Что они обозначают, как из индекса получить RGB цвет? То есть я хочу произвети проверку не цвет, и светлые цвета откинуть. Добавлено @ 11:48 P.S. Обрезав картинку мы экономим ~65% времени и ресусрсов, ну учитывая время и ресурсы на саму обрезку. Кол-во пикселей оригинальной картинки = 210 * 65 = 13650 Кол-во пикселей обрезаной картинки = 147 * 32 = 4704 Экономия = 100 - (4704 / 13650) * 100 ~ 66% Так что варианты "Анализируй полностью, нах резать" не предлагать |
|||
|
||||
| Garret |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 16.9.2006 Где: Киев Репутация: нет Всего: 2 |
Эх спаммер...
Попробуй взять с captcha.ru |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 2 Всего: 32 |
![]() Слабо? =) А вообще, если нужен универсальныый вариант, то копать надо в сторону нейросетей. PHP в этом плане мало чем поможет. -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Делал бы ради спама, делал бы универсально. Просто хочется написать скрипт, который сможет распознать цифры, попрактиковаться с GD2 и вообще пару раз испытать
Жестко. Я в 10 классе, решать такое не умею |
|||
|
||||
| Garret |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 16.9.2006 Где: Киев Репутация: нет Всего: 2 |
Я закончил курс высшей математики и тоже не решу
|
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Естественный отбор ;)
Кто что может сказать по теме. Смотрел http://captcha.ru/ - весело. Только исходников там нет, а работает вроде быстро |
|||
|
||||
| Garret |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 16.9.2006 Где: Киев Репутация: нет Всего: 2 |
CyClon, исходники там есть, посмотри внимательнее.
|
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Процесс немного продвигается - обрезал изображение с помощью функции imagecopy до нужных размеров. Теперь интересует, как повысить контраст и определить цвет пикселя в RGB, а не индексом.
Хочу затереть все светлые пиксели. чтобы осталось только цифры. Потом нарисовать эталонов и вуоля. Добавлено @ 12:54 Да нет, там вроде только исходники защиты, то есть чтобы заменить этот код на более совершенный. А исходников распознания не видел. Сейчас еще посмотрю. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 2 Всего: 32 |
imagecolorat() + GD 2.0 + картинка, созданная при помощи imagecreatetruecolor() Их там и нет. -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Ты реаьлно думаешь реализовать алгоритм FineReader'a? Слишком высокие амбиции...
Читай про нейросети, как сказал Мутоген, а лучше займись чем-ть реально реализуемым. |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Ребят вы или не читаете или хз что... Я же сказал, пишу этот скрипт только ради практики работы с GD2, чтобы потом, при создании графического счетчика я не лез в мануал за справкой по imagestring. Также просто хочется написать хитрый, но не муторный скрипт, которые на интернет-свалках не валяются, как гостевые книги и голосовалки. Голосование или ту же гостевую книгу писать - не для меня. Единстевнное, над чем там нужно подумать - организация БД / каталогов / работы скрипта. А сам скрипт - потсоянные запросы в БД, обрабока и вывод.
А по делу - вроде бы все сделал, все работает. Единственные проблемы - это чудесное превращение указателя (resouce) и число (int) и вылет ошибки и то, что я не знаю, как убрать фон. Мне нужно как то убрать все кроме более-менее черного цвета, т.к. сравнивает обсолютно не правильно, ведь фон содердит основное кол-во пикселей. Подскажите как затереть задний фон или сравнивать только темные пиксели. С ошибкой попробую пока сам разобарться. Это сообщение отредактировал(а) CyClon - 26.9.2006, 18:05 |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Так кто нибудь может рассказать, как убрать фон и оставить только фицры или сравнивать только темные пиксели? Кстати, на счет createimagetruecolor, когда его создаю, то получается черный квадрат, а с createimage норм все.
Это сообщение отредактировал(а) CyClon - 26.9.2006, 19:07 |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Значит, вернулся к этой теме
|
|||
|
||||
| ВасяТриллер |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.9.2005 Репутация: нет Всего: 1 |
||||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Я это уже как-то читал, токо мало чем помогло
|
|||
|
||||
| capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: нет Всего: 13 |
Да, написать распознавалку captcha не так просто, но возможно. Я например ради интереса написал распознавалку для captcha с почтового сервера http://www.nm.ru/. Пример можно глянуть на http://capitanstudio.net.ru/captcha_nm/index.php Процент распознавания 100%. Картинка лёгкая. Белыми цифрами по синему фону. Вот сам код:
Написал за 20 минут. Лень было делать красивый код, думаю и так всё понятно. Обрезаем картинку, делаем трассировку по цифрам и ищем белые пиксели, дальше считаем их и точки по оси Y. Сравниваем с эталоном и получаем ответ. |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Спс за код, посмотрю, может что хорошее вычерпну
|
|||
|
||||
| -SMall- |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 29.5.2007 Репутация: нет Всего: нет |
Есть ли шансы распознать вот эти варианты?
1. ![]() 2. |
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: нет Всего: 42 |
Шансы всегда есть
Основная слабость первой captcha: шумовые линии значительно тоньше линий цифр. А значит, легко убираются операциями математической морфологии (сжатие/расширение). Отсутствие пересечений и разные цвета позволяют легко отделить буквы друг от друга. Во второй сначала убирается чересполосица. Сравниваем количество черных и белых пикселей на вертикали (для надежности можно работать с площадью узкой полоски шириной чуть больше ширины буквы) и если количество черного превосходит - инвертируем цвета. А можно и просто вычислить шаг полос. Он же не меняется, как и их ширина. Беспорядочные точки убираются сжатием/расширением. Буквы не пересекаются и не деформированы, что тоже не добавляет стойкости captcha. Возможно, проблемой являются жирные полосы, которые могут пересекать буквы. Чтобы сказать, насколько они являются проблемой, нужно увидеть их закономерности (количество/длина/расположение/пересечение с буквами и друг с другом) на большем количестве примеров. Но это все, если кто-то займется именно Вашей captcha. Если Ваш ресурс не представляет какой-то исключительной ценности, вероятность того, что ею займутся спамеры пропорциональна ее распространенности в сети. Это сообщение отредактировал(а) Golda - 9.6.2007, 22:18 -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| XseZ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
может кто поможет с кодом
|
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: нет Всего: 42 |
Э нет, так не пойдет. На этом форуме помогают понять, как построить защиту, а не как взламывать чужие системы
-------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Графика | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |