Распознавание текста
Пришло время писать диплом, и решил я в качестве диплома написать программку которая будет распознавать печатный текст с фотографий. Для данных целей я планирую использовать нейронные сети, но это не суть важно.
Вопрос в следующем: как на изображении выделить участки с текстом (изображение помимо самого текста может содержать рисунки, графики и прочее) и как разбить полученные области содержащие текст на буквы\символы? Возможно кто сталкивался с подобным? На всякий случай, система будет реализовываться на яве, и если существуют какие-то готовые либы решающие данную задачу буду очень благодарен за подсказку.
UPD: возможно есть какая годная литература по обработке изображений, желательно на русском, но и на английском тоже сойдет
Ну вот...Напишет человек удачно дипломную прогу - и капче как идее придет капец. Ведь страшно подумать, что тогда начнется. Ужас, да и только.:)
Оффтопить,право же,не стоило:) ТС,чем вам не нравятся полустандартные средства распознавания текста?Т.е. я не знаю точно,может,задание такое–велик сделать,но если нет,то лучше готовым воспользоваться
Участки текста можно таки снова выделять нейронной сетью, но уже другой. Например, прошелся по тексту первой нейронной сеткой - выделил области. Дальше, с помощью аффинных преобразований приводишь эти куски текста к виду, чтобы он соответствовал количеству входных нейронов второй нейросетки. Прогоняешь, собственно, второй нейросеткой.
И снова совет: не ориентируйся на алфавитное расположение букв. Лучше их размести по критерию "схожести", если будешь делать нейросетку с одним выходом. Если же "победитель получает все", то это уже не так важно, лишь бы в скрытом слое было много нейронов, да и скрытых слоев лучше использовать два (в большем количестве они только так нагрузят процессор, что будешь рыдать кровью).
И последний совет: написать программу можно в течении дней 4х. Алгоритм элементарный (если ты взял за основу "обратное распространение"). Львиную долю времени у тебя займет настройка весов. Недели 2. Первые пару дней может выводить невменяемый бред.
Книги, в которых можно почитать про нейронные сети, я напишу вечером, когда буду дома, если не забуду;)
В общем-то вся изюминка проекта в том что я планирую распознавать только печатный текст на дейвайсе под управлением Android ОС. Т.е. в идеале, человек сфоткал документ, на выходе получил текст а не картинку. К сожалению пока что возникла техническая сложность связанная с платформой Android которая может не дать создать задуманное(((
hivewarrior а можно поподробнее на пальцах, как нейронкой выделить области с текстом? или где почитать? В нейросетях я относительный нуб и не очень представляю как можно просканировать картинку на наличие облайстей с текстом. Нейронка же на вход принимает вектор каких-то числовых значений и дает вектор/значение на выходе, как это может помочь в деле выделения текста?
Кстати особого желания писать нейронку с нуля нету, нашел уже готовую хорошую либу. Если кому интересно называется neuroph
Цитата: Inc(Dec(i))
...
hivewarrior а можно поподробнее на пальцах, как нейронкой выделить области с текстом? или где почитать? В нейросетях я относительный нуб и не очень представляю как можно просканировать картинку на наличие облайстей с текстом. Нейронка же на вход принимает вектор каких-то числовых значений и дает вектор/значение на выходе, как это может помочь в деле выделения текста?
...
Если текст с документов, то можно сканировать области определенного размера, а потом на выходе получать смещения и размеры, которые будут подаваться на нейросетку распознавания буквы. Так как размеры разные, то можно аффинными преобразованиями приводить их к стандарту, под который заточена нейросетка.
После этих манипуляций можно смещать входы нейросетки на смещение+ширина/высота, чтобы случайно не зацепить сканированную букву (но лучше n пикселей откатиться назад на всякий случай), и повторить до победного конца.
Мне видится этот алгоритм как-то так;)
Если снова не забуду, то список книг сегодня вечером напишу:rolleyes:
А начальные размеры области сканирования можно вычислять по относительной частоте черного (или более темных тонов, которые, скорее всего, текст). Проведи исследование, найди апроксимирующую функцию. Мат.статистика тебе в помощь. Или же снова нейросеть с одним входом и одним выходом, который покажет размер сканирующего квадрата.
М. Тим Джонс, Программирование искусственного интеллекта в приложениях. Очень хорошая книга с примерами. Описывает достаточно простым и понятным для всех языком. Разобран не один пример алгоритмов для ИИ, в том числе и нейронная сеть с обратным распространением ошибки.
Л.Г.Комарцова, А.В.Максимов, Нейрокомпьютеры Еще одна книга, но уже серьезная. Обоснованы нейронные сети с математической стороны, а не просто приведены алгоритмы. Но по прежнему язык остается не слишком сложный и читается запоем за 3-4 дня.
Две книги, которые лично мне очень помогли в понимании нейронных сетей. Хотя они морально и устарели и отражают скорее реалии 90х годов, но все равно ознакомиться стоит из-за базовости понятий и достаточно простого изложения материала.
Если нужны еще книги, то обращайся.