Оцифровка книг в формат DjVu в Linux
Содержание:
1.Шаг первый: подготовка сканера (Вы читаете данный раздел);
2. Шаг второй: сканирование;
3. Шаг третий: обработка;
4. Шаг четвертый: конвертирование.
В этой статье хочу поделиться опытом оцифровки книг в формат DjVu. Такая задача встала передо мною в ходе работы над краеведческой книгой про Киев. Я задумал отсканировать и выложить в приложениях к этой книге попавшие в руки дореволюционные издания о городе. Во всем процессе оцифровки было решено использовать только свободные технологии, поэтому выбор пал на следующий набор программ: XSane для сканирования, ImageMagick для обработки картинок, пакет DjVuLibre для сведения изображений в электронную книгу формата DjVu.
Вероятно, существуют более изящные и продуктивные способы, нежели примененный мною. В задачи входила лишь автоматизация оцифровки книг, чтобы на выходе получать готовый DjVu-документ. Сканирование производилось в ландшафтной ориентации: разрезать каждый разворот на две страницы не пришлось, так как считаю, что чтение книг более естественно, если видишь весь разворот, а не только одну страницу. Кроме того, такой подход упростил работу: не надо было думать, как автоматически разрезать каждую картинку на две (со сдвигом кадра и именованием выходных файлов). Впрочем, при желании автоматизируется и это.
И последнее: оптическое распознавание текста также не входило в мои планы. Тем более, что свободные OCR-движки вряд ли справились бы с дореволюционным правописанием (впрочем, в коммерческом мире дело обстоит немногим лучше).
Итак, начнем с настройки сканера. В Linux они поддерживаются через SANE (Scanner Access Now Easy, http://www.sane-project. org), который можно уподобить TWAIN в Windows с той разницей, что у TWAIN графический интерфейс жестко привязан к драйверу устройства. SANE - это API и набор бэкэндов, на которых лежит поддержка той или иной модели сканера. Таблицу сканеров, поддерживаемых стабильной версией SANE, можно найти тут: http://www.sane-project.org/sane-mfgs.html (список поддерживаемых версией из git - http://www.sane-project.org/lists/sane-mfgs-cvs.html). Обратите внимание на графу «Backend» - там идет ссылка на конкретный модуль поддержки сканера. Если у вас старый LPT-сканер, то в графе «Interface» обратите вни-мание, не указан ли в скобках режим EPP. Если да, то для работы сканера в SANE потребуется задать режим EPP для параллельного порта в BIOS CMOS Setup.
Устанавливая Sane, не забудьте поставить демон saned. Он обеспечивает возможность сканировать не только под root. В современных дистрибутивах Linux, как правило, USB-сканеры определяются автоматически утилитой настройки сканеров из какого-нибудь системного «центра управления». С LPT-сканерами хуже: мало того, что они плохо определяются из таких утилит, так еще и зачастую помечены как «не поддерживаемые», если вы пытаетесь «добавить» их через графический интерфейс. Советую руководствоваться таблицей с сайта SANE: если там сказано, что сканер работает - так оно и есть, вопреки всем графическим утилитам настройки.
Например, вот как я настроил свой старый ScanExpress CP1200+, который не работал и в Windows с момента появления XP. Собственно, пример довольно универсален, и скорее всего потребуется лишь изменить имена файлов бэкэнда и модели сканера:
- В BIOS CMOS Setup выбрал режим EPP для параллельного порта.
- Внес правки в конфигурационные файлы sane (требуются права root):
Здесь 0x378 - адрес LPT-порта (см. в BIOS), а cis1200+ - тип сканера. Просто найдите в конфиге строку для вашего сканера и раскомментируете её. Как вариант, можно там же не задавать сканер жестко, а включить автоматическое распознавание:
- Осталось лишь отсканировать - например, через XSane или xscanimage.
1.
2. Шаг второй: сканирование;
3. Шаг третий: обработка;
4. Шаг четвертый: конвертирование.
Введение и примечания
В этой статье хочу поделиться опытом оцифровки книг в формат DjVu. Такая задача встала передо мною в ходе работы над краеведческой книгой про Киев. Я задумал отсканировать и выложить в приложениях к этой книге попавшие в руки дореволюционные издания о городе. Во всем процессе оцифровки было решено использовать только свободные технологии, поэтому выбор пал на следующий набор программ: XSane для сканирования, ImageMagick для обработки картинок, пакет DjVuLibre для сведения изображений в электронную книгу формата DjVu.
Вероятно, существуют более изящные и продуктивные способы, нежели примененный мною. В задачи входила лишь автоматизация оцифровки книг, чтобы на выходе получать готовый DjVu-документ. Сканирование производилось в ландшафтной ориентации: разрезать каждый разворот на две страницы не пришлось, так как считаю, что чтение книг более естественно, если видишь весь разворот, а не только одну страницу. Кроме того, такой подход упростил работу: не надо было думать, как автоматически разрезать каждую картинку на две (со сдвигом кадра и именованием выходных файлов). Впрочем, при желании автоматизируется и это.
И последнее: оптическое распознавание текста также не входило в мои планы. Тем более, что свободные OCR-движки вряд ли справились бы с дореволюционным правописанием (впрочем, в коммерческом мире дело обстоит немногим лучше).
Шаг первый: подготовка сканера
Итак, начнем с настройки сканера. В Linux они поддерживаются через SANE (Scanner Access Now Easy, http://www.sane-project. org), который можно уподобить TWAIN в Windows с той разницей, что у TWAIN графический интерфейс жестко привязан к драйверу устройства. SANE - это API и набор бэкэндов, на которых лежит поддержка той или иной модели сканера. Таблицу сканеров, поддерживаемых стабильной версией SANE, можно найти тут: http://www.sane-project.org/sane-mfgs.html (список поддерживаемых версией из git - http://www.sane-project.org/lists/sane-mfgs-cvs.html). Обратите внимание на графу «Backend» - там идет ссылка на конкретный модуль поддержки сканера. Если у вас старый LPT-сканер, то в графе «Interface» обратите вни-мание, не указан ли в скобках режим EPP. Если да, то для работы сканера в SANE потребуется задать режим EPP для параллельного порта в BIOS CMOS Setup.
Устанавливая Sane, не забудьте поставить демон saned. Он обеспечивает возможность сканировать не только под root. В современных дистрибутивах Linux, как правило, USB-сканеры определяются автоматически утилитой настройки сканеров из какого-нибудь системного «центра управления». С LPT-сканерами хуже: мало того, что они плохо определяются из таких утилит, так еще и зачастую помечены как «не поддерживаемые», если вы пытаетесь «добавить» их через графический интерфейс. Советую руководствоваться таблицей с сайта SANE: если там сказано, что сканер работает - так оно и есть, вопреки всем графическим утилитам настройки.
Например, вот как я настроил свой старый ScanExpress CP1200+, который не работал и в Windows с момента появления XP. Собственно, пример довольно универсален, и скорее всего потребуется лишь изменить имена файлов бэкэнда и модели сканера:
- В BIOS CMOS Setup выбрал режим EPP для параллельного порта.
- Внес правки в конфигурационные файлы sane (требуются права root):
✓ В /etc/sane.d/dll.conf потребовалось раскомментировать упоминание имени файла - mustek_pp (у вас может быть другой, в зависимости от сканера).
✓ В /etc/sane.d/mustek_pp задал сканер соответствующей строкой:
scanner Mustek-1200cp+ 0x378 cis1200+
Здесь 0x378 - адрес LPT-порта (см. в BIOS), а cis1200+ - тип сканера. Просто найдите в конфиге строку для вашего сканера и раскомментируете её. Как вариант, можно там же не задавать сканер жестко, а включить автоматическое распознавание:
scanner mustek-cis1200+ * cis1200+
- Осталось лишь отсканировать - например, через XSane или xscanimage.
К слову
Меня удивляет, что корпорации, которые получают огромные прибыли от продажи сканеров (да и прочего железа), имея штат программистов, которые трудятся над драйверами под Windows и Mac OS, не выпускают драйверы для Linux. Ведь это потеря покупателей, т.к. линуксоиды не будут брать железо, несовместимое с их системой. Ведь не так сложно сделать вклад кода в тот же SANE. Что или кто мешает?..
Меня удивляет, что корпорации, которые получают огромные прибыли от продажи сканеров (да и прочего железа), имея штат программистов, которые трудятся над драйверами под Windows и Mac OS, не выпускают драйверы для Linux. Ведь это потеря покупателей, т.к. линуксоиды не будут брать железо, несовместимое с их системой. Ведь не так сложно сделать вклад кода в тот же SANE. Что или кто мешает?..