С чем едят книги

Иногда получается так, что книга, которую надо оцифровать, и сканер не находятся рядом во времени и пространстве. В таком случае приходится использовать фотоаппарат или мобильный телефон. Качество таких «сканов» ужасно и недопустимо для последующей печати или обработке OCR-системами (OCR — Optical Character Recognition, оптическое распознование текстов).

На самом деле не все так плохо. Если Вы пользователь какого-нибудь популярного дистрибутива Linux, то на Вашем компьютере уже есть все, что нужно. Собственно нам понадобится редактор изображений — GIMP. Не беспокойтесь, умение рисовать абсолютно не нужно.

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

Итак, приступим. Запускаем GIMP и открываем нашу фотографию.

Сразу, чтобы забыть о балансе белого, мы откажемся от цветного изображения и все переведем в оттенки серого. Для этого выбираем в меню: Цвет — Обесцветить. После этого появится диалог, в котором будет предложено выбрать основу для оттенков серого. Опробовав все варианты, больше всего мне понравился результат от пункта «Светимость». После выбора не забудьте нажать Ок, чтобы применить фильтр.

Далее необходимо выравнять яркость по всему листу. Для этого запускаем Цвет — Ретинекс. В появившемся диалоговом окне выбираем уровень «Низкий», все крутилки и вертелки выставляем в максимальное положение (подобрано эмпирическим путем). Жмем Ок. Следим, чтобы полоса процесса внизу картинки дошла до конца.

Такую фотографию уже можно распечатывать. Но мы будем жадными и не будем желать лишнего расхода тонера/чернил на отрисовку серого фона.

Фактически наша задача свелась к тому, чтобы сделать белое белым, а черное — черным.

Жмем Цвет — Порог.

Каждый пиксель в оттенках серого представляется значениями от 0 до 255 (могут быть и другие интервалы, но чаще всего используется именно этот). Тут черные пиксели обозначаются нулями, а белые — 255. Все промежуточные значения обозначают оттенки серого.

Сейчас мы будем выставлять порог, который задаст два следующих правила:

  • если пиксель больше либо равен этому порогу, то сделать его белым;
  • если пиксель меньше этого порога, то сделать его черным.

Выставляем ползунок треугольного вида в положение, когда текст четкий и количество шумов минимально, жмем Ок.

Можно сделать небольшую косметику. Выбираем на панели инструментов «Выделение» и выделяем (извините за игру слов) наш текст. Далее в меню Выделение — Инвертировать. Жмем кнопку Delete и получаем наш снимок, но очищенный от ненужной мишуры.

Сохраняем и используем картинку по целевому назначению.
Результат в оригинале можно просмотреть, нажав на эту ссылку.
В статье использовались уменьшенные копии рисунков.

Автор статьи: Иван Сурженко