Поиск:

Ответ в темуСоздание новой темы Создание опроса
> распознавание таблиц, с фотографии 
:(
    Опции темы
BSOD
Дата 20.3.2011, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 1.11.2004
Где: Гомель

Репутация: нет
Всего: 3



Вот вдруг возникла такая задача (даже не задача, а пока просто интерес)

есть фотография, на ней некий бланк, по сути - просто сетка (таблица) с одинаковыми ячейками.
нужно собсно эту таблицу распознать (фотография не обязательно ровная (фото с телефона например)), найти непустые ячейки и содержимое этих ячеек вывести (само содержимое не распознавать конечно, это уже другая задача)
так вот вопрос: как вообще это происходит, какие алгоритмы используются, какие идеи, на сколько это сложно реализовать, есть ли какие-то готовые компоненты и.т.д.?

я знаю, что что-то похожее делает googles (для android), когда решает судоку. 


--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
VictorTsaregorodtsev
Дата 20.3.2011, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: 3
Всего: 8



BSOD, поспрашивай у народа, пользующегося Abbyy form reader, насколько там хорошо распознаются "кривые" сканы таблиц. Если распознаются - то готовое решение можно купить ;)

Еще можно поглядеть в сторону алгоритма сжатия в djvu-формат. Там компрессор распознает на странице блоки текста (строки и колонки) и картинки - и жмёт эти 2 разных типа "данных" разными алгоритмами. Может, что-то специфичное там есть и для определения форм/табличек. Но вроде бы этот распознаватель раньше не умел работать с поворотами листов (т.е. если лист на сканере лежал криво - то блоки на этой странице не ловились и вся страница жалась как одна картинка, т.е. наиболее неоптимальным способом). Может быть, можно будет доработать этот распознаватель под работу с аффинными преобразованиями скана (как раз для фото с телефона или фотика - там к повороту листа добавится еще и непараллельность плоскостей листа и фотоматрицы, т.е. получится изображение с некоторой "перспективой"). В общем, djvu-шный алгоритм анализа скана открыт - можно разобраться с его логикой и попытаться доработать под задачу (если получится).

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

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

Т.е. задачка решаема, я бы за такой проект взялся (естественно, если бы заказчик деньги платил).
PM MAIL WWW   Вверх
maxim1000
Дата 20.3.2011, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



для определения ориентации можно воспользоваться тем, что в таблице не просто есть вертикальные и горизонтальные линии на её границе, но и тем, что их много (в том числе и внутри)

т.е. попробовать выделить все места, где рисунок похож на линию и выбрать наиболее подходящее направление (естественно, с точностью до 90 градусов)

ну а потом опять пораспознавать линии и понаходить клеточки(ну и их содержимое, соответственно)

обнаруживать линии можно попробовать с помощью преобразования Хафа: http://en.wikipedia.org/wiki/Hough_transform

Это сообщение отредактировал(а) maxim1000 - 20.3.2011, 21:23


--------------------
qqq
PM WWW   Вверх
BSOD
Дата 21.3.2011, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 1.11.2004
Где: Гомель

Репутация: нет
Всего: 3



всем Спасибо за ответы! 

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

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


--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.