Не уверен, но думаю так. Берем, к примеру, отсканированный листик из "Шпионских страстей"
, и начинаем анализировать эту картинку.
Для начала определяем строчки, это можно осуществить так: проводим виртуально вертикальную прямую и идем по ней сверху вниз. Смотрим 1-ый пиксел, записываем его цвет, смотрим 2-ой и т.д. Если последующий цвет пиксела отличается от предыдущего, то этот пиксел - есть цвет буквы (следует оговорится, что на листе нет картинок и цвет текста одинаков на всей странице). Теперь записываем высоту этой буквы (высота рассчитывается аналогично), то есть координаты верхних и нижних точек. Прибавляем по несколько пикселов сверху и снизу - это необходимо для заглавных букв и на случай еслистрока кривая. Таким же образом заносим в массив координаты всех строк на странице.
Теперь берем первую строчку. Проводим горизонтальные прямые по верхней и нижней границах первой строки, и, зная цвет буквы определаем ширину буквы. У нас получается, что буква теперь заключена в прямоугольник. Теперь просто необходимо сравнить этот прямоугольник с заготовленным массивом собственных букв-картинок и та в которой найдется больше всего совпадений и есть искомая буква и дальше таким же образом до конца строки. Где расстояние между буквами больше обычного, то это пробел между словами. И т.д. до конца страницы.
Все выше написанное есть сугубо личное предположение. Удачи.