Привет, ачат! Кто-нибудь занимался распознованием текста с картинки? желательно Perl или PHP но будет интересно посмотреть на общую логику, библиотеки и прочие идеи в других языках. вот такое мне нужно распознать
как-то так: 1) Чистим картинку Убираем шум. фоновый паттерн и прочую ерунду, чтоб не путалось под ногами. Подходов много (в одном Фотошопе фильтров штук десять наберется). многое, зависит от конкретики. Один из простейших подходов - медианный фильтр. То есть берем данный пиксел + его соседей и проводим "голосование" - светлые пиксели это голос за "белых". темные - за "черных" Кто победил, того цвет и ставим. В приведенном пример должно покатить; 2) Нарезание на символы Разделяем картинку на отдельные картинки для каждой буквы. Это ключевой шаг - если тут ошибиться, то все. К сожалению задача эта сложная, как рекапчу нарезать . скажем. знают только гугль и [strike]русская радистка[/strike] хрумер. но тут задача попроще: находим вертикакльные пробелы (те полностью белые колонки пикселов), режем по ним, потом отрезаем белое пространство сверху и снизу. Нарезаные буквы растягиваем/искажаем так, чтоб они точно помещались в прямоугольник фиксировнного размера - это будет матрица с которой рабоатет собственно распознаватель. Чем больше матрица тем больше вычислений, чем меньше - тем меньше полезной информации, надо подобрать золотую середину 3) Разпознавание образов. Опять таки для этого есть масса алгоритмов - сабж бескрайний. Важно очень собрать достаточную базу примеров, по которой настраивать алгоритм, с большой базой даже хреновый метод может взлететь, а без настройки даже лучшему ocr непонятно что делать Один довольно простой метод (тн Бейесовские веса): сначала смотрим сколько черных пикселей в каждой колонке и каждом столбце (напоминаю, что мы работаем с картинкой фиксированного размера). Получается две гистограммы. Заранее подсчитываем на тестовых примерах таблицу статсов для каждой колонки, столбца и возможного символа: "если в колонке X b черных пикселей, то в N случаях у нас " теперь при распознавании лезем в нашу таблицу и смотрим: в колонке 1 у нас набралось 5 черных пикселей, что в 140 тренировочеых примерах соответсвовало цифре 1, в 281 примерах - цифре 2 итп для каждой цифры берем "вес" = log(количества примеров). складываем вес по каждой цифре и по всем колонкам/строкам - выбираем победителя Тема широкая, по ней целые институтцкие курсы читают. Для затравки, конечно советую вики проштудировать, посмотреть на продукты типа https://code.google.com/p/tesseract-ocr/ http://jocr.sourceforge.net/ http://www.dc949.org/projects/stiltwalker/ http://www.karlgroves.com/2013/02/09/list-of-resources-breaking-captcha/ а дальше по обстоятельствам