OCR: Как сравнивать изображения, сортировать непревзойденно и делать это быстро? - PullRequest
1 голос
/ 22 февраля 2009

Мне удалось сохранить каждый символ в растровом изображении, и я ищу способ быстро определить, какой это символ.

Поэтому я собираюсь сохранить все возможные символы в массиве 1 и 0 и сравнить их с массивом растрового изображения, которое я только что получил.

Я мог бы сделать простые проверки, такие как сравнение количества черных пикселей, сравнение размеров и т. Д., Но все эти проверки медленные (только предположение ...).

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

Спасибо за вашу помощь.

Свен

1 Ответ

2 голосов
/ 22 февраля 2009

В мире OCR очень редко встречается "идеальное совпадение" между целевым ресурсом и вашим исходным сравниваемым ресурсом.

На самом деле это огромная область науки, но вот хороший тезис по этому вопросу, который должен дать вам некоторые базовые знания: http://www.discover.uottawa.ca/~qchen/my_papers/master_thesis.pdf

Обратите внимание, что подобные алгоритмы очень трудоемки и в настоящее время оптимизированы для стандартного процессора x86.

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

1) Сравните размер массивов, если они разные, это не то, что вы ищете

2) Сравнить хэш-значение для каждого растрового изображения

3) Сравнение каждого бита / байта один за другим, и как только вы видите разницу, это не то, что вы ищете

4) Победа, вы нашли совпадение:)

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

)

Удачи

[РЕДАКТИРОВАТЬ] Глядя на комментарий в своем OQ, я скажу, что поиск хеш-таблицы или словарной структуры будет для вас самым быстрым. Это или двоичное дерево поиска. Оба очень зависят от вашего генератора хеш-ключей:)

[EDIT2 (xD)] "Это псевдоним текста, сгенерированного компьютером. Фон отличается, но текст всегда имеет один и тот же цвет." Там довольно важная информация: P Всегда ли одинаковый размер текста / растровых изображений? Я бы посоветовал либо реализовать свой собственный алгоритм хеширования, в котором вы отбрасываете предустановленные цвета фона, так что значение хэширования зависит только от цвета текста (и формы этого тоже), либо просто переписывает все пиксели фона в ваших целях. быть того же цвета, что и ваш оригинал (или просто установить исходный фон на фон ваших целей? Снова зависит от того, с какими данными вы сражаетесь здесь - вам нужно больше информации :)).

...