Оптическое распознавание символов - PullRequest
0 голосов
/ 16 марта 2011

Привет всем, я пытаюсь создать программу на Java, которая может читать цифры на экране, а также распознавать изображения на экране.Мне было интересно, как я могу этого добиться?Шрифт чисел всегда будет одинаковым.Я никогда не программировал ничего подобного раньше, но моя идея о том, как это работает, состоит в том, чтобы программа делала снимок экрана, затем накладывала изображение чисел на часть снимка экрана и проверяла, совпадают ли они, повторяя это для каждого числа.,Если это правильный способ сделать это, как бы я это записал в коде.

Заранее благодарен за любую помощь.

Ответы [ 3 ]

0 голосов
/ 23 марта 2011

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

Вот простой Java-апплет, который я написал и который делает это.

http://www.heatonresearch.com/articles/42/page1.html

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

0 голосов
/ 05 мая 2014

Один из более простых подходов - использовать сопоставление с шаблоном. Если шрифты одинаковы и / или размер (в пикселях) известен, то простое сопоставление с шаблоном может помочь вам. Если размер ввода неизвестен, вам может потребоваться создать копии изображений в разных масштабах и выполнить сопоставление в каждом масштабе. Один с экстремальным значением (наибольшее или наименьшее в зависимости от метода, который вы используете для сопоставления с шаблоном) является вашим результатом. Для получения подробной информации перейдите по этой ссылке

0 голосов
/ 16 марта 2011

Вы всегда можете обучить нейронную сеть, чтобы сделать это для вас.Иногда они могут быть довольно точными.Если вы используете что-то вроде Matlab, у него уже есть возможности для этого.Очевидно, есть библиотека нейронных сетей для Java (http://neuroph.sourceforge.net/), хотя я никогда не использовал ее лично.

Вот учебник по использованию нейрофа: http://www.certpal.com/blogs/2010/04/java-neural-networks-and-neuroph-a-tutorial/

...