Вернуться к разделу "Материалы по сканированию и оцифровке бумажных книг".


Использование DjVu Imager


English version

1. Введение

Что такое "DjVu Imager" и зачем он нужен?

Программа DjVu Imager v2.9 (1,17 МБ) предназначена для кодирования в DjVu сканов книг, содержащих иллюстрации (полутоновые и/или многоцветные - см. термины в Приложении ниже). Программа имеет cвободно-бесплатную лицензию "GPL 2 и выше" и полностью открытые исходные коды (73 КБ).

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

Примеры сканов с иллюстрациями:

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

Всё дело в том, что текст и иллюстрации - это слишком разнородные вещи (для формата DjVu). Они и   кодируются при создании DjVu-файла по-разному - точнее, противоположными по смыслу способами.

Текст кодируется максимально чётко, а вот иллюстрации - наоборот, значительно "размываются" (по резкости).

Поэтому при кодировании таких сканов (текст с иллюстрациями) возникала проблема: как именно их кодировать? В те времена было всего лишь 3 возможных варианта: либо кодировать их "как текст" (режим DjVuBitonal), либо "как иллюстрацию" (режим DjVuPhoto), либо в режиме автоматической сегментации (автоматическое создание DjVuDocument).

Рассмотрим это на примере конкретного скана:

Рис. 3. Исходный скан с полутоновой
картинкой (взято с сайта U235).

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

Рис. 4. Исходный скан кодированный "как текст".

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

Рис. 5. Исходный скан кодированный "как иллюстрация".

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

Рис. 6. Исходный скан кодированный с автоматической сегментацией.

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

ВАЖНО: Из-за этих ошибок автоматической сегментации в своё время возникло и широко распространилось ложное мнение о том, что "формат DjVu портит картинки" и поэтому "его нельзя использовать".

И однажды был найден выход из этой проблемы. Человек по имени manfred предложил так называемый "Метод разделённых сканов" - четвёртый способ.

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

Рис. 7. Текст, отделённый от скана "текст с иллюстрациями" (по методу разделённых сканов).

Называется "передний субскан".

Рис. 8. Иллюстрация, отделённая от скана "текст с иллюстрациями" (по методу разделённых сканов).

Называется "задний субскан".

Такой подход полностью закрывает проблему кодирования сканов "текст с иллюстрациями":

Рис. 9. DjVu-файл, полученный методом разделённых сканов.

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

С момента открытия метода разделённых сканов технология его практической реализации претерпевала разнообразные изменения. В конечном итоге все эти изменения вылились в создание программы DjVu Imager, которая реализует метод разделённых сканов практически-удобным способом.

Схема применения DjVu Imager выглядит так:


Scan Tailor Featured -> DjVu Small v0.4 -> DjVu Imager v2.9

Сначала в программе Scan Tailor Featured сканы "текст с иллюстрациями" разделяются на "текст" (передний субскан) и "иллюстрации" (задний субскан) - как показано на рисунках 7 и 8. "Передний" - потому что он является прототипом будущего переднего слоя DjVu, а "задний" - соответственно, заднего.

Далее передние субсканы кодируются в DjVu при помощи программы DjVu Small.

DjVu Imager кодирует в DjVu задние субсканы, и тут же "наклеивает" получившиеся DjVu-файлы иллюстраций на DjVu-файлы текста (вышедшие из DjVu Small).

2. Использование

Рассмотрим весь процесс кодирования в DjVu сканов с иллюстрациями подробнее (на примере случая серых сканов (Greyscale) - как наиболее типичный).

2.1. Обработка в Scan Tailor Featured

Загружаем в Scan Tailor Featured сырые сканы книги (в режиме Greyscale или Color - т.е. не в чёрно-белом). Обрабатываем их как обычно до стадии "Вывод". Для тех, кто сталкивается со Scan Tailor впервые: читайте инструкцию к нему.

2. На стадии "Вывод" сканы, содержащие полутоновые иллюстрации, обрабатываем особым образом. Для этого (на стадии "Вывод") делаем следующее:

а. При выбранном в списке миниатюр скане с полутоновой иллюстрацией в группе элементов управления "Режим" переключаемся в режим "Смешанный" (для обычных сканов - т.е. без полутоновых иллюстраций - используем режим "Черно-белый"):

Рис. 10. Выбор "смешанного" вывода для текущего скана в Scan Tailor.

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

ВАЖНО: Обратите внимание - параметр "Режим" ("Чёрно-белый" - "Цветной / Серый" - "Смешанный") - это странично-зависимый параметр! То есть, каждый скан из загруженных может иметь свой режим (любой на выбор из этих 3-х). Это распространённая ошибка - пользователи зачастую не понимают этот момент, им кажется, что если самый первый скан в списке имеет режим (к примеру) "Чёрно-белый" - то, значит (якобы) и все остальные сканы имеют этот же режим. В общем случае это не так.

б. Переключитесь на вкладку "Зоны картинок". Автоматически распознанные зоны полутоновых иллюстраций выделятся пульсирующим синим цветом:


Рис. 11. Картинка выделяется (в Scan Tailor) пульсирующим синим цветом.

в. В случае, если зоны иллюстраций распознались неправильно (неточно), их следует подправить вручную (путём расстановки корректирующих ручных зон в виде произвольных многоугольников - по правой кнопке мыши). Подробнее о корректирующих ручных зонах смотрите тут.

 

 

 

 

 

 

 

 

 

 

 

3. После окончания процесса сканобработки неоходимо сделать экспорт готовых сканов. В меню Инструменты выберите пункт Экспорт... и Вы увидите окно экспорта:

Рис. 12. Окно экспорта готовых сканов в Scan Tailor Featured.

Экспорт сканов - это средство для получения готовых сканов, переименованных в "сплошную последовательность имён" вида 0001.tif, 0002.tif, ... , 0010.tif, ..., 0100.tif, ... .

Дело в том, что Scan Tailor создаёт выходные файлы (в папке out текущего проекта) с довольно своеобразными именами, в которых закодировано исходное имя файла и левое-правое положение страницы. А для цели последующего создания DjVu-файла крайне важная именно сквозная нумерация имён файлов.

Флажок "Папка экспорта по умолчанию":

Если его установить, то программа автоматически создаст папку "Export" внутри папки "out", относящейся к данному проекту, и осуществит экспорт сканов туда.

Если не установить, то тогда Вы сможете указать программе любую желаемую папку экспорта. Но даже и в этом случае программа создаст внутри указанной папки папку "Export", и осуществит экспорт сканов в неё. Т.е. при любом состоянии флажка "Папка экспорта по умолчанию" сканы будут экспортироваться в папку "Export".

Флажок "Разделять смешанный вывод":

Если его установить, то при экспорте готовые "смешанные" сканы будут разделяться на пары "передний субскан" и "задний субскан". При этом внутри папки "Export" будут автоматически созданы подпапки "1" и "2" - в которые будут помещаться соответственно передние и задние (одноимённые) субсканы.

Если не установить, то разделение сканов не будет осуществляться, и экспорт сведётся просто к получению сканов (в папке "Export"), переименованных в сплошную последовательность имён (что тоже полезно - для последующего обычного случая DjVu-кодирования).

Рекомендуется установить оба флажка - "Разделять смешанный вывод" и "Папка экспорта по умолчанию" (как на рисунке 12).

Нажмите на кнопку "Экспорт" и дождитесь окончания экспорта.

4. На этом работа в Scan Tailor Featured окончена. Закройте программу (сохранив проект на всякий случай).

2.2. Обработка в DjVu Small v0.4 и выше

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

Создание DjVu-заготовки ничем не отличается от обычного использования DjVu Small при кодировании чёрно-белых сканов. Для получения DjVu-заготовки нужно просто закодировать в DjVu содержимое подпапки "1" папки "Export", полученной из Scan Tailor Featured (рекомендуемый профиль кодирования - "User BW"). И всё. DjVu-заготовка готова! На этом участие DjVu Small завершено.

2.3. Обработка в DjVu Imager

DjVu Imager создаёт из задних субсканов, полученных в Scan Tailor Featured, DjVu-картинки (см. термины в Приложении ниже), и вклеивает их в DjVu-заготовку, полученную в DjVu Small.

Последовательность работы с программой выглядит так:

1. Нажмите кнопку Опции и установите галку Произвольные файлы. Это отключит в диалоге открытия файлов фильтр имён файлов в нотации ScanKromsator (изначально DjVu Imager создавался под ScanKromsator).

2. Загружаем подпапку "2" папки "Export", полученную в Scan Tailor Featured (т.е. субсканы заднего фона - которые содержат полутоновые иллюстрации).

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

sep06.GIF (3191 bytes)

Рис.13.

Дважды щёлкните мышью по номеру файла (обведённому красным кружком) и введите свой номер страницы (если хотите исправить автоматически определённый номер). Этим Вы измените номер той страницы в многостраничной DjVu-заготовке, куда будет вклеена данная иллюстрация.


ВАЖНО: Наиболее рекомендовано ВСЕГДА загружать в DjVu Imager сканы (т.е. задние субсканы - будущие иллюстрации) в таком формате имён:

0001.tif, 0002.tif, 0003.tif, ..., 0010.tif, ..., 0100.tif, ... (формат файлов неважен, допускается, к примеру, BMP и т.п., а также номера не обязаны ни начинаться с единицы, ни идти подряд).

То есть с такими именами, которые легко и однозначно могут быть преобразованы в натуральные числа.

Пример: 0002.bmp, 0018.bmp, 0100.bmp - эти задние субсканы вставятся как иллюстрации соответственно на страницы номер 2, 18 и 100 многостраничной DjVu-заготовки.

Этим Вы всегда гарантированно избежите возможных проблем (с неправильной вставкой иллюстраций).

Неправильный пример: 001_scan_23.tif - по такому имени файла DjVu Imager'у будет трудно определить номер той страницы многостраничной DjVu-заготовки, куда следует подклеить данный задний субскан в качестве иллюстрации.

Прошу обратить на это особое внимание.

4. Выставляем параметры кодирования. Их 2: ДЗФ (делитель (разрешения) заднего фона) и Качество задн. фона (качество заднего фона). Рекомендуемое значение для ДЗФ - от 2 до 4.

Что такое ДЗФ: Это аббревиатура - "делитель заднего фона". Спецификация формата DjVu допускает, что задний фон может храниться в DjVu-файле с геометрическими размерами (длина и ширина) в 1..12 раз меньше, чем слой маски (переднего плана). Но при открытии такого DjVu-файла любой DjVu-просмотрщик автоматически и незаметно для пользователя масшабирует такой задний фон назад к нормальному размеру. ДЗФ и задаёт - во сколько раз (от 2 до 12) мы хотим уменьшить хранимый размер заднего фона в при создании DjVu-файла.

ДЗФ - это самое эффективное средство для регулировки соотношения "размер/качество" вклеиваемых иллюстраций (в будущем DjVu).

 

Что такое Качество задн. фона: Оно задаёт значение опции -slices у утилиты c44.exe (используемой для создания DjVu-иллюстраций) по следующей формуле:

- Всегда используются не более 4 чанков (хотя максимально возможно до 15).

- Первый чанк всегда равен 70.

- Текущее значение бегунка прибавляется к значению первого чанка. Реальный диапазон регулирования получается равным от 70 до 120 (хотя максимально возможно до 210, однако это не имеет никакого практического смысла, т.к. качество не растёт после 120).

- Текущее значение бегунка делится поровну между оставшимися 3 чанками. А именно делится на 16 с остатком - и полученные числа (включая остаток) назначаются 3 чанкам. В случае значения бегунка > 48 второй чанк увеличивается на 1 или 2 (чтобы не вводить 5-ый чанк).

Практически параметр Качество задн. фона можно вообще не использовать - он мало что даёт.

5. Для каждого субскана заднего фона в списке можно задать индивидуальные значения параметров кодирования (ДЗФ и Качество задн. фона). Для этого кликните мышкой на нужный элемент списка загруженных файлов, выберите селектор Текущий файл и установите желаемые значения ДЗФ и Качество задн. фона. При этом текущий файл выделится жирным шрифтом в списке. Для сброса индивидуальных значений параметров кодирования (данного файла - т.е. того, который выделен в списке) выберите селектор Все файлы. Для сброса индивидуальных значений (параметров кодирования) всех файлов предусмотрена кнопка С - при её нажатии всем "индивидуальным" файлам выставятся текущие настройки "общих" файлов (т.е. "индивидуальные" файлы полностью уравняются с "общими" - тем самым перестав быть "индивидуальными").

6. Нажмите кнопку Пуск и подождите. DjVu Imager создаст для каждого заднего субскана 1-слойный DjVu-файл в режиме "DjVuPhoto" - только задний фон без маски и без переднего плана (я называю их условно "DjVu-картинка"). В результате получится множество одностраничных DjVu-картинок. Сразу после окончания кодирования программа автоматически сгенерирует временный многостраничный DjVu-файл, в который будет "склеено" всё полученное множество одностраничных DjVu-картинок, и откроет его на просмотр в установленом в системе DjVu-просмотрщике. Этот временный файл нужен лишь для удобства просмотра полученного результата - чтобы сразу "оптом" просмотреть результат.

7. Для визуального подбора индивидуальных значений параметров кодирования (для отдельных элементов списка) предусмотрена кнопка Текущий - она кодирует текущий элемент списка файлов с его текущими параметрами (т.е. фактически независимо от того, "индивидуальный" это файл или "групповой") и тут же открывает его на просмотр в установленом в системе DjVu-просмотрщике.

8. Варьируя и комбинируя по-разному параметры кодирования (ДЗФ и Качество задн. фона) то ли для всех сразу, то ли для каждого отдельного заднего субскана, и просматривая получающийся результат в установленом в системе DjVu-просмотрщике, добейтесь оптимального соотношения "размер/качество" получаемого множества одностраничных DjVu-картинок.

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

9. Нажмите кнопку Источн. и выберите в появившемся окне DjVu-заготовку, полученную в предыдущем пункте (по умолчанию - файл "DjVu Encoded.djvu" на Рабочем столе). Нажмите на кнопку Вставить в DjVu. Программа соберёт копию DjVu-заготовки (по пути, указанному в поле слева от  кнопки Назнач. - по умолчанию это Рабочий Стол - и с суффиксом "out" по умолчанию) и автоматически вклеит одностраничные DjVu-картинки из полученного множества (из п. 2.3.6) в соответствующие места копии DjVu-заготовки (ориентируясь по именам DjVu-картинок).

В результате мы получим полностью готовую к употреблению DjVu-книгу с иллюстрациями.

Программа DjVu Imager обсуждается на форуме здесь. Там можно задать любой вопрос по использованию программы и решить любое затруднение.


3. Вариант для ScanKromsator

Вместо Scan Tailor Featured можно использовать программу ScanKromsator по следующей схеме:


ScanKromsator v5.92 -> DjVu Small v0.4 (и выше) -> DjVu Imager v2.9

ВАЖНО: Наиболее рекомендуемой является схема работы через Scan Tailor Featured, поскольку он, в отличие от ScanKromsator v5.92, имеет механизм авто-определения зон иллюстраций - что радикально упрощает технологию вклейки иллюстраций. В ScanKromsator v5.92 зоны иллюстраций - чисто ручные.

ВАЖНО: В последних версиях ScanKromsator появилась возможность создавать DjVu-файлы по методу разделённых сканов - внутри самой программы. Однако, ввиду многочисленных ошибок текущей последней версии программы, воспользоваться данным функционалом практически невозможно.


3.1. Обработка в ScanKromsator v5.92


Рис. 14. Исходный скан с полутоновой
картинкой (взято с сайта U235).
Картинка заключена в Picture-зону
(в СканКромсаторе v5.92) - прямоугольник
из редкого красного пунктира.

1. Загружаем в ScanKromsator v5.92 сканы книги (в режиме Greyscale), содержащие полутоновые иллюстрации (как обычно).

2. Составляем задание для кромсания: расставляем опции, резаки и т.п. (как обычно).

3. В процессе составления задания заключаем попадающиеся на сканах полутоновые иллюстрации в Picture-зоны (выделяем на глаз мышкой и по правой кнопке назначаем тип зоны как Picture-зона) (см. рис. 14).

4. Пройдя по всем сканам и составив задание, нажимаем на кнопку Process!.

5. Переходим в главное окно и в меню Zones -> Picture zone -> Merge zones... ставим флажок Create separate files for non-b/w zones и жмём ОК.

6. ScanKromsator v5.92 обработает каждый скан, где присутствует хоть одна Picture-зона, особым образом:

- Каждый такой скан будет "разбит" на 2 т.н. "субскана" - субскан переднего плана (foreground subscan) и субскан заднего фона (background subscan). (см. рис. 15 и 16).

- Субскан переднего плана (в чёрно-белом формате) - это исходный скан за вычетом полутоновой картинки.

- Субскан заднего фона (в сером или цветном формате) - это исходный скан за вычетом всего, что не относится к полутоновой картинке (если на исходном скане 2 или более Picture-зоны, то все они адекватно переносятся на субскан заднего фона).

Рис. 15. Субскан переднего плана (foreground subscan) - чёрно-белый.

Рис. 16. Субскан заднего фона (background subscan) - серый.

Скачать пример для DjVu Imager с этими файлами (664 КБ) (взято с сайта U235) (Содержит 1 небольшую DjVu-заготовку и 1 TIF-иллюстрацию для неё).

Таким образом, субсканы получаются такими, чтобы при прозрачном наложении второго на первый получился исходный скан.

7. На выходе из ScanKromsator v5.92 мы получаем папку out, в которой находится смесь простых сканов, пар субсканов, и т.п.

ИТОГ: Таким образом, ScanKromsator v5.92 разбивает каждый исходный скан с иллюстрацией (где есть Picture-зоны) на соответствующую ему пару субсканов.

Примечание: Для создания пар субсканов вовсе не обязательно использовать именно ScanKromsator v5.92 - можно применить любой иной графический редактор. Причём в DjVu Imager предусмотрен настраиваемый фильтр имён задних субсканов - что позволяет настроить его на работу со сторонним графическим редактором.


3.2. Обработка в DjVu Small после ScanKromsator

В этом варианте всё выглядит немного посложнее, чем в варианте со Scan Tailor Featured.

Для этого варианта в DjVu Small, начиная с версии 0.3.2, добавлена новая опция - "DjVu Imager". Эта опция включена по умолчанию.

При использовании этой опции подразумевается, что субсканы имеют имена в базовой нотации СканКромсатора 5.92, а именно:

- Субсканы переднего плана: 0001.tif, 0002.tif, ..., 0100.tif, ...
- Субсканы заднего фона 0001.sep.tif, 0002.sep.tif, ..., 0100.sep.tif, ...

Однако, в DjVu Small, начиная с версии v0.4.1 совместимость с DjVu Imager расширена ещё больше: DjVu Small v0.4 и выше включает в себя настраиваемый фильтр имён DjVu Imager-файлов, отсеиваемых при открытии - чтобы не ограничиваться одной-единственной ScanKromsator-схемой именования файлов. Теперь Вы можете сделать, например, так:

- Субсканы переднего плана: 0001.tif, 0002.tif, ..., 0100.tif, ...
- Субсканы заднего фона 0001.back.tif, 0002.back.tif, ..., 0100.back.tif, ...

или так:

- Субсканы переднего плана: 0001.tif, 0002.tif, ..., 0100.tif, ...
- Субсканы заднего фона back0001.tif, back0002.tif, ..., back0100.tif, ...

или так:

- Субсканы переднего плана: 0001.fore.tif, 0002.fore.tif, ..., 0100.fore.tif, ...
- Субсканы заднего фона back0001.tif, back0002.tif, ..., back0100.tif, ...

Допускаются любые буквенные (точнее, нецИфровые) приставки-суффиксы к цИфровым именам файлов.

Последовательность работы с программой выглядит как обычно:

1. Загружаем папку out, полученную в ScanKromsator v5.92 в предыдущем пункте - прямо "как есть", т.е. без какой-либо рассортировки её содержимого по сортам сканов (обычные, картинки, и т.п.). Благодаря опции "DjVu Imager", DjVu Small v0.4 и выше автоматически отсеет на входе всё "лишнее" для него содержимое папки out (задние субсканы и вырезанные из них иллюстрации) и загрузит в программу только обычные сканы и передние субсканы с вырезанными из них иллюстрациями (из папки out). Можно просто "перетащить" и "бросить" (через Drag-n-Drop) папку out в окошко "Введите файл(ы):".

2. Выбираем профиль кодирования (обычно это User BW) и нажимаем кнопку "Пуск".

3. Через некоторое время получаем (по умолчанию на Рабочем столе) файл "DjVu Encoded.djvu". Это - DjVu-заготовка - т.е. DjVu-книга без иллюстраций.

Примечание: При обычной работе (без иллюстраций) DjVu Small v0.4 и выше используется точно также. Опцию "DjVu Imager" отключать не обязательно.

Программа DjVu Small обсуждается на форуме здесь. Там можно задать любой вопрос по использованию программы и решить любое затруднение.


3.3. Обработка в DjVu Imager (после ScanKromsator)

1. Загружаем папку out, полученную в ScanKromsator v5.92 в п. 3.1 - прямо "как есть", т.е. без какой-либо рассортировки её содержимого по сортам сканов (обычные, картинки, и т.п.). Можно просто "перетащить" и "бросить" (через Drag-n-Drop) папку out в окошко "Введите файл(ы):".

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

При этом по умолчанию подразумевается, что субсканы имеют имена в базовой нотации СканКромсатора 5.91, а именно:

- Субсканы переднего плана: 0001.tif, 0002.tif, ..., 0100.tif, ...
- Субсканы заднего фона 0001.sep.tif, 0002.sep.tif, ..., 0100.sep.tif, ...

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

- Субсканы переднего плана: 0001.tif, 0002.tif, ..., 0100.tif, ...
- Субсканы заднего фона 0001.back.tif, 0002.back.tif, ..., 0100.back.tif, ...

или применить любые иные варианты именования файлов - точно также, как и в пункте 3.2.

Далее различие между вариантами для Scan Tailor и ScanKromsator исчезает.


Технические подробности (для продвинутых пользователей):

DjVu Imager представляет из себя дальнейшее развитие идей, заложенных в программу DjVu Sep (которую уже следует считать устаревшей и не рекомендуемой к использованию).

Программа использует комбинацию методов подклейки фона и раскраски маски. Я предлагаю назвать её условно "технология вклейки иллюстраций". Возможный английский вариант: "Pic-paste technology".

Можно сказать, что DjVu Imager не может работать "сам по себе" - а только в связке с двумя другими программами: Scan Tailor Featured (ScanKromsator) и DjVu Small v0.4 и выше (или любой другой DjVu-кодировщик).

Смысл используемого подхода состоит в том, чтобы подменить (при кодировании в DjVu) автоматическую сегментацию иллюстраций (с использованием documenttodjvu - обычный вариант) ручной (с использованием СК или СТ). Это даёт полный контроль над сегментацией, обеспечивающий следующие преимущества:

1. Исключение ошибок кодирования (визуальных артефактов).

2. Возможность подобрать вручную для каждой иллюстрации оптимальное соотношение сжатия "размер-качество".

3. Оптимальное сжатие (в DjVu) различных по своей сути объектов - текста и полутоновых рисунков.

DjVu Imager следует применять для сканов, например, всевозможных каталогов (см. рис. 1), или же учебников по использованию компьютера с изображениями диалоговых окон (см. рис. 2) и т.п. - то есть для всех книг с иллюстрациями (полутоновыми и многоцветными).

DjVu Imager создаёт из задних субсканов DjVu-картинки (см. термины в Приложении ниже) при помощи консольной утилиты fi_c44.

Затем DjVu Imager извлекает из них чанки BG44 и вставляет их в соответствующие страницы DjVu-заготовки - методом подклейки фона. При этом DjVu Imager создаёт и вставляет на эти же страницы чанк-раскраску маски FGbz  - методом раскраски маски (чтобы обеспечить валидность изменяемого DjVu-файла - страницы DjVu-книги).

При этом, если данная страница DjVu-заготовки уже имеет чанк переднего плана FG44 или чанк-раскраску FGbz (как правило, так бывает, если имеется цветной текст)- то чанк FGbz не создаётся и не вставляется (за ненадобностью).

Если же данная страница DjVu-заготовки уже имеет чанк заднего плана BG44 (паразитный фон; так быть категорически не должно) - то он отбрасывается и заменяется на новый BG44-чанк, содержащий вставляемую иллюстрацию. (Остальные (необрабатываемые) страницы DjVu-заготовки могут иметь задний фон).

Информация о Scan Tailor

Автор алгоритма авто-определения зон иллюстраци в Scan Tailor - U235, там используется детектирование растрового зерна иллюстраций за счёт морфологических операций.

Принцип разделения "смешанных" сканов при экспорте в Scan Tailor Featured состоит в следующем: Scan Tailor в режиме "Смешанный" производит такие сканы в режиме серого (Greyscale), где изображение текста приводится к 2-цветному (номера цветов - чёрный (0) и белый (255), а полутоновое изображение на том же скане насильно приводится в диапазон цветов 1-254. Благодаря этому экспорт однозначно разделяет исходный "смешанный" скан на соответствующую пару субсканов.

Краткое описание принципа работы DjVu Imager

Для понимания сущности работы DjVu Imager нужно иметь общее представление о структуре формата DjVu. DjVu-файлы могут быть как одностраничными, так и многостраничными. Многостраничный DjVu-файл - это просто последовательность одностраничных DjVu-файлов в "одном флаконе". Я их называю условно "DjVu-страницы" или "страницы DjVu-файла".

Каждая страница в многостраничном DjVu-файле может быть в следующем варианте:

1. Только слой маски (чёрно-белый). Как правило, это текст (но ещё в маске бывают штриховые картинки).
2. Только задний фон (серый или цветной). Это полутоновая (цветная) иллюстрация или просто цветной фон.
3. Сразу все 3 слоя: расцветка маски (хотя бы просто сплошно-чёрная), маска, и задний фон.
4. Нет ни одного стандартного DjVu-слоя - а только как бы пустая ссылка (точнее, один лишь чанк INFO). Это выглядит как чисто белая страница в WinDjView.

Одностраничный DjVu-файл может быть только в вариантах с 1 по 3-ий.

DjVu Imager берёт вариант №1 ("Только слой маски") и превращает его в вариант №3 ("Сразу все 3 слоя") - попутно делая сплошно-чёрную расцветку маски (без этого нельзя по стандарту DjVu). Делается всё это, естественно, только на тех страницах в многостраничном DjVu-файле, куда нужно вклеить иллюстрации - остальные не трогаются (чаще всего они идут в варианте без иллюстраций, т.е. "Только слой маски" - но это не обязательно, они могут быть хоть со всеми 3 слоями). Также ещё бывает, когда DjVu Imager выполняет вариант №2 ("Только задний фон") - над страницей в варианте №4 ("Нет ни одного стандартного DjVu-слоя") - но это довольно редкий случай.

Если же DjVu Imager'у нужно вклеить иллюстрацию на уже 3-слойную DjVu-страницу - то тогда DjVu Imager'у приходится насильно отбрасывать имеющийся задний фон и вставлять свой новый (в качестве иллюстрации). В принципе, можно как-то усовершенствовать DjVu Imager - чтобы он каким-либо способом комбинировал старый задний фон с новым (чтобы старый задний фон не пропадал) - но едва ли это кому-нибудь нужно.

2. О формуле соответствия размеров субсканов.

В соответствии со спецификацией формата DjVu (DjVu, 456 КБ), DjVu Imager налагает определённые требования к пиксельным размерам передних и задних субсканов. Они должны быть либо равны (самый частный и наиболее простой случай, достигаемый автоматически при использовании Scan Tailor Featured), либо задний субскан может быть меньше переднего в 2..12 раз. В этом случае пиксельные размеры заднего субскана вычисляются по формуле из http://djvu.cvs.sourceforge.net/viewvc/djvu/djvulibre-3.5/tools/csepdjvu.cpp?revision=1.29&view=markup строка 1080 и 1081:

// Check background reduction
for (bgred=1; bgred<=12; bgred++)
{
     int subw = (w + bgred - 1) / bgred;
     int subh = (h + bgred - 1) / bgred;
     if (subh == (int)pix->rows() && subw == (int)pix->columns())
     // Found reduction factor
     return pix;
}
// Failure
     G_THROW("Background pixmap size does not match foreground");
     return 0;
}

где subw и subh - ширина и длина заднего субскана, w и h - ширина и длина переднего субскана, bgred - фактор уменьшения (от 1 до 12).

Т.е. взяв длину в пикселях переднего субскана и зная фактор уменьшения (от 2 до 12), мы можем по этой формуле вычислить длину в пикселях уменьшенного в фактор раз заднего субскана (то же самое касается ширины). DjVu Imager допускает ввод задних субсканов, заведомо уменьшенных по указанной формуле (а не только задних субсканов, равных по размеру передним субсканам). Параметр ДЗФ в этом случае не следует использовать - поскольку задние субсканы уже изначально уменьшены пользователем (а обычно это делается через ДЗФ - т.е. когда субсканы одинакового размера).

В любом случае, если размеры текущего заднего субскана не соответствуют размерам соответствующего ему переднего субскана (по указанной формуле), то DjVu Imager выдаёт следующее сообщение об ошибке:

Размеры иллюстрации такой-то не коррелируют с размерами соответствующей обклеиваемой DjVu-страницы. Вставка прервана.

Такая ошибка никогда не возникнет, если Вы использовали Scan Tailor Featured. Если такая ошибка возникла - то Вам нужно вручную сравнить размеры переднего и заднего текущих субсканов - с целью удостовериться, соответствует ли соотношение между ними (размерами) указанной формуле. Наверняка окажется, что какой-нибудь размер заднего субскана (длина или ширина) неправилен на один-два пикселя.


4. Заключение

Использование DjVu Imager сильно напоминает использование DjVu Sep и метод разделённых сканов (МРС). Например,  и в том, и другом случае создаются 2-х-слойные DjVu-файлы.

Однако, на мой взгляд, DjVu Imager и использумый им подход более перспективен, чем DjVu Sep и даже чем МРС.

Комбинация методов подклейки фона и раскраски маски (используемая в DjVu Imager) - это гораздо более гибкий в работе инструмент, нежели чем МРС. Рассмотрим детали подробнее:

Преимущества DjVu Imager:

1. Использование полнофункцинальной консольной утилиты fi_c44 для создания DjVu-картинок (в DjVu Sep для этого используется csepdjvu, у которого данная функциональность немного обрезана по богатству опций (то же самое - в msepdjvu). (Все опции fi_c44 пока не реализованы в текущей версии DjVu Imager).

2. Распространение действия словаря разделённых символов на передние субсканы (этого нет в DjVu Sep, но есть в msepdjvu).

3. ВАЖНО: Полная ликвидация необходимости использования коммерческой консольной утилиты msepdjvu (её функциональность полностью и эквивалентно подменяется функциональностью documenttodjvu).

4. Большая скорость работы DjVu Imager по сравнению с DjVu Sep (за счёт применения консольной утилиты fi_c44 и отсутствия кодирования в DjVu переднего субскана).

5. Возможность иллюстрирования чужого готового DjVu-файла без его (частичного) декодирования (и небольшого ухудшения) (DjVu Sep так не может).

Недостатки DjVu Imager:

1. Проверка на соответствие между DjVu-заготовкой и вставляемыми в неё DjVu-картинками выдаёт не слишком подробное сообщение об ошибке (это можно реализовать в будущих версиях).

2. Проблема паразитного фона:

Те страницы DjVu-заготовки, куда подклеиваются иллюстрации, не должны иметь задний фон (разве что пустой белый). Это принципиальный недостаток DjVu Imager, обусловленный закрытостью исходного кода documenttodjvu.

Для обеспечения этого условия (отсутствие заднего фона) важно правильно производить разбиение Picture-зон на этапе обработки в СТ или в СК (в п.2.1) - следя за тем, чтобы на передний субскан не попало ничего такого, что классификатор documenttodjvu мог бы впоследствии автоматически и самостоятельно отправить в задний фон. Как правило, это могут быть всякого рода не-текстовые объекты с большим количеством цветов. Их нужно вручную выделять в зоны иллюстраций - не оставляя их на самом скане.

Или же взамен можно включить (в п. 2.2) опции подавления заднего фона в documenttodjvu:

--threshold-level=<0-100>

Опция threshold-level взаимодействует с опциями pix-filter-level и shape-filter-level с целью определить, какие объекты изображения принадлежат переднему плану, а какие - заднему фону. Величина 0 указывает, что все объекты должны быть помещены на передний план; а величина 100 указывает, что все объекты должны быть помещены в задний фон. Значение по умолчанию - 75, что подходит для большинства документов.

--pix-filter-level=<0-100>

Опция pix-filter-level определяет баланс между пикселями переднего плана и заднего фона. Величина 0 указывает, что максимальное число пикселей должно попасть на передний план, а величина 100 указывает, что максимальное число пикселей должно попасть в задний фон. Величина 50 является оптимальной для большинства 300 dpi документов. Значение по умолчанию - 25.

Увеличьте pix-filter-level, чтобы убрать очень маленькие объекты из переднего плана, смягчить края и убрать растрирование. Уменьшите, чтобы избежать выпадения пикселей букв. Это наиболее эффективная опция для управления сделкой между передним планом/задним фоном; всегда старайтесь регулировать её в первую очередь.

Для большей информации о переднем плане и заднем фоне см. "Процесс сегментации".

--shape-filter-level=<0-100>

Опция shape-filter-level определяет баланс помещения спорных объектов на передний план или в задний фон. Спорный объект имеет характеристики, подходящие как для переднего плана, так и для заднего фона. Во время сегментации этот объект может оказаться в ненадлежащем слое, потому что documenttodjvu должен "угадать", куда его поместить. Объекты на переднем плане имеют более низкое цветовое разрешение, так что сомнительные объекты, помещённые в этот слой, могут выглядеть ненатурально. (Брови, например, могут выглядеть так, как если бы кто-то нарисовал их от руки). Объекты в заднем фоне имеют более низкое разрешение в целом, так что края сомнительных объектов, помещённых в этот слой, могут выглять размазанными.

Назначьте shape-filter-level целое число между 0 и 100. Величина 0 указывает, что каждый сомнительный объект должен быть помещён на передний план. Величина 100 указывает, что каждый сомнительный объект должен быть помещён в задний фон.

Определение того, какие объекты лучше выглядят на переднем плане / в заднем фоне, требует экспериментов. Если Вы не удовлетворены видом закодированного изображения, закодируйте его снова с другим значением shape-filter-level, чтобы найти подходящий баланс между объектами переднего плана / заднего фона.

ПРИМЕЧАНИЕ: Объекты переднего плана в целом занимают меньше места, и только они попадают на вход модуля IRIS OCR.

Для большей информации о переднем плане и заднем фоне см. "Процесс сегментации".

Это единственный скользкий момент в использовании комбинации методов подклейки фона и раскраски маски (применяемых в DjVu Imager). Однако для обычных случаев работы с DjVu Imager такая ситуация крайне редка и нехарактерна.

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

Преимущества DjVu Sep:

1. Отсутствие проблемы паразитного фона.


5. Приложение.

Термины статьи:

1. Субскан - одна из 2 компонент исходного скана после "разбиения" скана с полутоновой иллюстрацией в Scan Tailor Featured или в СканКромсаторе. Прототип какого-либо слоя будущего DjVu-файла.

4. Субскан переднего плана (передний субскан) (foreground subscan) - чёрно-белый (малоцветный) субскан - прототип слоя переднего плана будущего DjVu-файла.

5. Субскан заднего фона (задний субскан) (background subscan) - серый (цветной) субскан - прототип слоя заднего фона будущего DjVu-файла.

6. Пара субсканов - совокупность переднего и заднего субсканов, вместе соответствующих одному и тому же исходному скану.

7. DjVu-картинка - 1-слойный одностраничный DjVu-файл в режиме "DjVuPhoto" (только задний фон, без маски и без переднего плана).

8. DjVu-заготовка - DjVu-книга без страниц, содержащих иллюстрации (полутоновые или многоцветные).

9. DjVu-книга - готовый к использованию многостраничный DjVu-файл с иллюстрациями.

grey_image.jpg (6737 bytes)

bw_image.gif (32913 bytes)

Рис. 12. Полутоновая иллюстрация Рис. 13. Чёрно-белый рисунок

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

color_image.jpg (11496 bytes)

lowcolor_image.gif (5363 bytes)

Рис. 14. Многоцветная иллюстрация Рис. 15. Малоцветный рисунок

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


Программа DjVu Imager обсуждается на форуме здесь. Там можно задать любой вопрос по использованию программы и решить любое затруднение.


Автор: monday2000.

9 июня 2009 г.

Обновлено: 13 февраля 2013 г.

Старая версия статьи

E-Mail  (monday2000 [at] yandex.ru)

Hosted by uCoz