Распознать числа в изображениях - PullRequest
17 голосов
/ 09 марта 2010

Я искал ресурсы для распознавания чисел в изображениях в Интернете. Я нашел много ссылок, предоставляющих много ресурсов на эту тему. Но, к сожалению, это больше сбивает с толку, чем помогать, я не знаю, с чего начать.

У меня есть изображение с 5 числами, без помех (без капчи или чего-то в этом роде). Цифры черные на белом фоне, написаны стандартным шрифтом.

Моим первым шагом было разделение чисел. Алгоритм, который я сейчас использую, довольно прост, он просто проверяет, является ли столбец полностью белым и, следовательно, пробелом. Затем он обрезает каждый символ, так что вокруг него нет белой рамки. Это работает довольно хорошо.

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

Может ли кто-нибудь дать мне подсказку о том, как это делается?

Это не имеет значения, но я буду реализовывать это на C # или Java. Я нашел несколько библиотек, которые справились бы с этой задачей, но я бы хотел реализовать это сам, чтобы чему-то научиться.

1 Ответ

14 голосов
/ 09 марта 2010

Почему бы не взглянуть на использование механизма OCR с открытым исходным кодом, такого как Tesseract?

http://code.google.com/p/tesseract-ocr/

C # Оболочка для Тессеракта

http://www.pixel -technology.com / бесплатная / tessnet2 /

Java Wrapper для Tesseract

http://sourceforge.net/projects/tessocrinjava/

Хотя вы можете и не подумать об использовании сторонней библиотеки для ее самостоятельной реализации, существует огромный объем работы, которая сводится к интеграции стороннего инструмента. Имейте также в виду, что что-то, что может показаться простым (признавая число 5 против числа 6), часто очень сложно; мы говорим тысячи и тысячи строк сложного кода. По крайней мере, посмотрите на исходный код tesseract, и у вас будет веская причина использовать стороннюю библиотеку.

Вот еще один SO вопрос, который даст вам некоторые идеи об используемых алгоритмах: https://stackoverflow.com/questions/850717/what-are-some-popular-ocr-algorithms

...