RedFern.89, Ну, в связи с нехваткой времени, сначала теоретически напишу, потом кодом подкреплю, насколько это реально. Сравнить можно так: 1. Подготовить знак "Х" (его матрицу). 2. Затем можно начать сравнение, следующим образом: а) изменение "Х" (это может быть выполнено и разворотом, и деформацией) б) Оптимизировать под него матрицу. в) После каждого изменения мы находим размер матрицы и рендерим эталом в матрицу "Б". г) Записываем во временную переменную процент совпадения. д) После каждой операции мы записываем наибольшую вероятность в результат, и её (вероятности) соответствие в виде знака. е) Берём следующий эталон для сравнения и начинаем всё заново с пункта а, загрузив исходную подготовленную матрицу "Х", соответственно. Ну вот, такая вот теория.
нет. это сожрет всю память, и для сравнения с оригиналом придется сделать цикл на миллион а то и больше)) достаточно записать только основне варианты (a-z, 1-9) и использовать нейронные сети)) там хооть не нужно будет точных данных а хотябы приближенные)) думаю этот вариант полдойддет больше всего)
...Тем более что грамотно обученная нейросеть даёт ~95-98% верных распознаваний. Проверено и успешно используется
RedFern.89, Ну, не знаю, как насчёт сожрёт память - относительно быстро работает, хотя я уже оставил этот метод. Придумал кое-что поновее, верней, зачитался и честно стырил кое-какие идеи, совместив их)) Точность не потерял, и сами символы теперь меньше, чем за 1 мс определяются. Правда, не совсем стандартным нейро-сетевым способом, но всё-же. Теперь я вот думаю о линиях. Сбрутить их чтоли. Просто смотрю я на 7-значные капчи и думаю, что вот ну не подходят тут стандартные приёмы по разделению. Попробовал шуровать мысль, замеченную здесь кем-то (градиент слева-направо, справо налево). Ну да, чистит. Токо вот результат оставляет желать лучшего. Лучше таким макаром не чистить, всё-таки. Подсчитывать коэффициент взависимости от размеров картинки, и удалять длинные векторы... Тоже не катит. Больно уж высока вероятность потереть что-нить нужное. Вариант ещё есть в векторе подсчитывать градус отклонения. И если ловится "следующая" линия - собирать их воедино, а потом делить с резким возрастанием длинны, в зависимости от коэффициента размера картинки. - Вот это я ещё не пробовал, как раз ковыряюсь. Однако опять-таки, хорошо б, еслиб траблой были токо лини - я б их уже давно выкорчевал. Однако, слипшиеся символы - тоже вопрос. И если брутить картинку - то и линии не стОит лапать, имхо. Однако, гляжу я тут на эти компьютерные "поэзии" и понимаю, что вероятность брута в капчах 4 символа - может и составит процентов 80. Что при скорости распознования менее, чем в 50 мс даст желаемый результат. Однако, при более сложных вариантах, время возрастёт, а точность - прямопропорционально упадёт. А ведь можно! Выжимать более 80 процентов, независимо от сложности. Это можно сделать решив две основных задачи. Так что, собсне)) Такие дела) RDL_Rider, Это смотря какая нейросеть. 90% инфы, что я нашёл - не пригодна для подобных целей. Но мысль верная. Тем более, удалось кое-что реализовать, как я уже огласил. - Используется, только вот не в целях чтения каптч :-D Fliplab? Угу, началось с того, что "не вывести каптчу в TImage" было :-D
RDL_Rider, Пример встудию! А то теоретически - легко говорить, я пока реализаций нормального уровня не встречал. Все (и нейросетевики) только ахают и охают "ой, ой! проще каптча, чем антикаптча! ПисАть нельзя antigate!"
Ну, исходники антикапчи я, конечно же, выкладывать не буду, а простых примеров у меня в данный момент нет - все на сгоревшем венике. Но могу порекомендовать на доработку программу Neuro40 - сам с неё когда-то начинал.
RDL_Rider, Угу, что ещё предложишь? Файн-ридер? :-D Штук, вроде Neuro 40 - у самого написано в своё время много, и всё слишком просто. В общем, как я понял, здесь каждый второй пишет алгоритм распознавания каптч - просто выкладывать он, конечно же, его не будет :-D
В общем так. Я щас с телефона. Как приеду в питер, сяду за ноут и обучу нейросеть. Дайте мне алгоритм на разделение символов. Поуй на эти линии. Главное алгоритм. Я займусь опознанием и обучением.