Создание электронной копии книги в формате DjVu в Linux

Материал из Викиучебника — открытых книг для открытого мира
Перейти к: навигация, поиск

Этот учебник посвящён описанию примера создания электронной копии книги в формате DjVu (дежавю) в операционной системе GNU/Linux.

Программное обеспечение[править]

  1. Linux Mint 17.1 Xfce — дистрибутив GNU/Linux.
  2. Драйвер вашего сканера.
  3. XSane — получение сканов, изображений страниц книги со сканера.
  4. Geeqie — просмотр сканов.
  5. Scan Tailor 0.9.11.1 — обработка сканов.
  6. GIMP — редактирование скана обложки.
  7. DjVuLibre — создание и чтение файлов DjVu.
  8. img2djvu (скрипт) — конвертирование страниц, обработанных в Scan Tailor в режиме «Смешанный». Скрипт выполняет разделение страниц на слой текста и слой иллюстраций для их раздельного конвертирования в формат DjVu с целью экономии размера файла готовой книги и ускорения её обработки при просмотре. См. Принцип работы img2djvu. Если в проекте нет страниц, обработанных в режиме «Смешанный», то можно обойтись без использования этого скрипта.
  9. ImageMagick — работа с изображениями (необходима для img2djvu).
  10. Tesseract (+ tesseract-ocr-rus) — оптическое распознавание текста оглавления.
  11. YAGF — графический интерфейс для Tesseract.
  12. DjVuSmooth (пакет djvulibre-bin) — добавление интерактивного оглавления в документ DjVu.
  13. QpdfView (+ qpdfview-djvu-plugin) — просмотр документов DjVu и PDF.
  14. Viewnior — просмотр и кадрирование изображений.

Дополнительные программы

  • DjView4 — извлечение DjVu страниц из документа, а также конвертирование документа и его отдельных страниц в другие форматы: PDF, PNG и др.

Сканирование[править]

Выбор параметров в XSane

  • Число страниц: 999 (примерное)
  • Цель: Файл
  • Путь сохранения: (создать и выбрать папку); название первого файла: 0001.jpeg
  • Шаг: +1 (нумерация файлов будет такой: 0001.jpeg, 0002.jpeg, 0003.jpeg…)
  • Формат: JPEG
  • Профиль цветности (режим сканирования): — Цветной.
  • Тип изображения: Полная палитра цветов (фото).
  • Разрешение сканирования (по осям X, Y): 200 DPI (точек на дюйм) — оптимальное соотношение качества получаемых изображений и времени сканирования.
  • В строке меню главного окна выбрать «Окна» --> «Показывать дополнительные параметры». В окне дополнительных параметров выбрать «Ожидать нажатия кнопки».

Последовательно сканируем страницы книги по одной или по две сразу (разворотом). Сохраняем одну ориентацию страниц при сканировании. Качество сканирования контролируем программой Geeqie. Обращаем внимание на место соединения страницы с переплётом — в нём могут образовываться затемнённые области, которые при обработке превращаются в чёрные полосы, закрывающие текст, чтобы избежать их, необходимо хорошо прижимать книгу к стеклу сканера в месте переплёта. Для начала сканирования каждой страницы используем кнопку на корпусе сканера. Изображения будут автоматически сохраняться в указанной папке. Все страницы будут иметь порядковые названия 0001.jpeg, 0002.jpeg, 0003.jpeg… — это важно, так как при конвертировании в DjVu программа-обработчик будет собирать их в книгу в той же последовательности.

Улучшение резкости сканов

Для улучшения резкости сканов используем нерезкую маску. Открываем терминал в папке со сканами и вводим команду-цикл, обрабатывающую все JPEG файлы

for file in *.jpeg; do convert -unsharp 0 $file $file; done

Значения параметра -unsharp выбраны по умолчанию: radius 0, sigma 1.0, gain 1.0, threshold 0.05.

Примеры соотношения размера скана в пикселях с его разрешением для сканеров формата A4:

  • 1272 × 1754 — 150 dpi.
  • 1696 × 2339 — 200 dpi.
  • 2544 × 3509 — 300 dpi.

Создание книги без обработки сканов[править]

1. Сканируем книгу в режиме цветного фото с разрешением 200 dpi в формате jpeg. Стараемся располагать книгу на стекле сканера строго вдоль или поперёк (по краю сканерного столика) для правильной ориентации изображения, так как оно не будет больше корректироваться (кроме поворота на 90 градусов).

Сначал сканируем переднюю и заднюю обложку, прикладывая внешний длинный край обложки к краю сканерного столика. Развернуть скан обложки и откадрировать его можно в Viewnior или GIMP.

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

for file in *.jpeg; do convert -rotate 180 $file $file; done

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

Если сканы или изображения не в формате jpg или ppm, то сначала их конвертируем в ppm. Пример:

for file in *.png; do convert $file ${file%png}ppm; done

2. Если книга сканировалась по две страницы на скан, то придаём им правильную ориентацию. Поворачиваем на 90 (270) градусов по (против) часовой стрелке (команда ImageMagick):

for file in *.jpeg; do convert -rotate 90 $file $file; done

3. Обрезаем поля (кадрируем). Например, в программе Viewnior (Изображение --> Обрезать).

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

4. Конвертируем в djvu:

for file in *.jpeg; do c44 -dpi 200 $file > ${file%jpeg}djvu; done
for file in *.ppm; do c44 -dpi 200 $file > ${file%ppm}djvu; done

5. Собираем в книгу:

djvm -c Kniga.djvu *.djvu

В книгу желательно добавить оглавление.

Создание книги с обработкой сканов в Scan Tailor[править]

Обработка сканов в Scan Tailor состоит из 6 основных операций:

  1. Исправление ориентации — поворот страниц на угол, кратный 90 градусов.
  2. Разрезка страниц — разделение разворота книги на две отдельных страницы или обрезка лишней части при постраничном сканировании.
  3. Компенсация наклона — горизонтальное выравнивание строк текста на странице. Образовавшиеся после обрезки пустые страницы в начале и конце книги удаляем.
  4. Полезная область — определение границ области с печатными данными (обрезка пустых полей).
  5. Поля — добавление пустых полей с подгонкой страниц к одному общему размеру, выравнивание полезной области. Примерные размеры полей (мм): нижнее 5, слева и справа по 6, верхнее 7. Выравнивание по середине нижнего края (при нумерации страниц снизу).
  6. Вывод — итоговая обработка: фон страницы очищается до чисто белого, шрифт становится чисто чёрным с чётким начертанием букв. Страница готова к конвертированию в формат DjVu.

На выводе есть дополнительные вкладки с двумя часто используемыми функциями:

  • Зоны картинок — активна при выборе режима вывода «Смешанный». Здесь можно вручную исправить автоматическое определение границ иллюстраций на странице. Возможны 3 свойства выделяемых областей:
    • «Вычесть из всех слоёв» — область будет обработана в режиме «Чёрно-белый».
    • «Добавить к авто-слою» — область будет обработана в режиме «Цветной / Серый».
    • «Вычесть из авто-слоя» — область будет обработана в режиме «Чёрно-белый», но внутри этой области можно создавать зоны со свойством «Добавить к авто-слою».
  • Зоны заливки — выделение областей для удаления случайных посторонних элементов на странице.

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

Контроль[править]

Необходимо проверять, как Scan Tailor обрабатывает сканы:

  • 1. Исправление ориентации — здесь ошибиться может только пользователь.
  • 2. Разрезка страниц — возможны ошибки при определении границ разделения страниц. Можно контролировать во время обрезки.
  • 3. Компенсация наклона — ошибки программы возможны в случае, если на странице есть только изображения, без строчек текста (нет прямолинейных ориентиров).
  • 4. Полезная область — возможны включения посторонних элементов или наоборот, обрезка полезной информации. Самый часто встречающийся дефект обработки. Для проверки сначала можно отсортировать на этом этапе страницы «Сортировка по возрастающей ширине и высоте». Переход по страницам клавишами «Pg Up/Down».
  • 5. Поля — здесь ошибок программы нет, так как параметры выставляются вручную, однако может потребоваться переключение отдельных страниц на «выравнивание по середине верхнего края» (в случае отсутствия номера страницы при нумерации снизу).
  • 6. Вывод — ошибки возможны в случае, если выбран режим «Смешанный». Программа может неправильно определять границы картинок. Исправляется путём ручного определения их границ на боковой вкладке «Зоны картинок».

Обработка обложки[править]

Обложку обрабатывают отдельно, вне Scan Tailor’а:

  • В программе GIMP изменить ориентацию скана обложки и откадрировать его.
  • При необходимости отрегулировать яркость и контраст.
  • Сконвертировать отредактированный скан в DjVu
for file in *.jpeg; do c44 -dpi 200 $file > ${file%jpeg}djvu; done
for file in *.jpg; do c44 -dpi 200 $file > ${file%jpg}djvu; done

Если для конвертирования страниц будет использоваться img2djvu, то djvu-файл обложки необходимо присоединить к готовому djvu-файлу книги: поместить их в одну папку и дать команду

djvm -c Kniga.djvu *.djvu

или

djvm -i out.djvu 000.djvu 1

Если img2djvu не используется, то djvu-файл обложки разместить в папке out, созданной Scan Tailor’ом.

Конвертирование в DjVu[править]

Перед конвертированием проверяем отсутствие пропусков, повторов страниц, правильность их последовательности и отсутствие на них посторонних объектов.

Без img2djvu[править]

Если в папке Out все файлы tif обработаны в режиме «Чёрно-белый», то в ней необходимо открыть терминал и последовательно дать две команды, первая из которых конвертирует tif в djvu, а вторая — собирает отдельные страницы в книгу:

for file in *.tif; do cjb2 -dpi 600 $file ${file%tif}djvu; done
djvm -c Kniga.djvu *.djvu

После этого, при необходимости, в djvu-файл книги необходимо добавить оглавление.

С img2djvu[править]

Если в папке Out есть файлы tif, созданные в режиме «Смешанный», то необходимо использовать программу img2djvu:

  • Помещаем файл скрипта img2djvu в папку с jpeg-сканами, где находится папка Out.
  • Открываем терминал в этой же папке и даём команду
./img2djvu -l 1 -d 600 out

, где -l 1 — разделение текста и иллюстраций с наилучшим качеством кодирования последних,
-d 600 — разрешение обработанных сканов,
out — название папки.

По умолчанию, img2djvu применяет к изображениям параметры «-contrast -blur 0x1»: -contrast увеличивает контраст, а -blur размывает полиграфический растр. Чтобы отключить это, необходимо запускать img2djvu с параметром -p "":

./img2djvu -l 1 -d 600 -p "" out

После конвертирования всех страниц создаётся файл электронной книги out.djvu (по названию имени папки, в которой находятся обработанные сканы). Осталось присоединить djvu-файл обложки.

Примечание: Если при выставленном масштабе 100 % в программе для просмотра книга выглядит меньше или больше своего истинного размера, значит было неправильно указано разрешение сканов в программе Scan Tailor (что очень влияет на качество обработки), либо неправильно указано разрешение при кодировании в DjVu.

Оглавление[править]

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

При необходимости, предварительно, программой YAGF + Tesseract распознаём текст с обработанных в Scan Tailor страниц оглавления книги. Открываем созданный DjVu-файл книги программой DjVuSmooth и добавляем в него оглавление.

Для исправления структуры оглавления, при возможных ошибках визуального редактирования, используем команды:
Извлечение оглавления DjVu книги с его записью в текстовый файл:

djvused Kniga.djvu -u -e print-outline > Oglavlenie

Добавление оглавления в DjVu книгу из текстового файла:

djvused Kniga.djvu -s -e "set-outline Oglavlenie"

, где Oglavlenie — имя текстового файла.

Пример оформления оглавления
Содержание
Предисловие
1. Название 1 главы
1.1. Название раздела 1 главы 1
1.2. Название раздела 2 главы 1
2. Название 2 главы
2.1. Название раздела 1 главы 2
2.2. Название раздела 2 главы 2

Книга готова!

Принцип работы img2djvu[править]

Скрипт img2djvu разделяет и по отдельности конвертирует текстовое изображение и иллюстрации с обработанных в Scan Tailor сканов в режиме вывода «Смешанный». Страницы, обработанные в режиме вывода «Чёрно-белый», сразу конвертируются в DjVu.

Отделение текстового изображения (чёрного цвета) с записью результата в fore.pbm:

for file in *.tif; do convert -threshold 1 $file ${file%tif}pbm; done

Отделение иллюстраций (оттенков серого и цветных) с записью результата в back.ppm. Параметр -contrast увеличивает контраст, а -blur — размывает полиграфический растр:

for file in *.tif; do convert -fill white -opaque black -contrast -blur 0x1 $file ${file%tif}ppm; done

Конвертирование слоя текстового изображения fore.pbm в sjbz.djvu:

for file in *.pbm; do cjb2 -dpi 600 $file ${file%.pbm}-sjbz.djvu; done

Конвертирование слоя иллюстраций back.ppm в back.djvu:

for file in *.ppm; do c44 -dpi 600 $file ${file%.ppm}-back.djvu; done

Создание чанка слоя текстового изображения sjbz.cnk из sjbz.djvu:

for file in *-sjbz.djvu; do djvuextract $file Sjbz=${file%djvu}cnk; done

Создание чанка слоя иллюстраций bg44.cnk из back.djvu:

for file in *-back.djvu; do djvuextract $file BG44=${file%djvu}cnk; done

Объединение чанков слоя текстового изображения и слоя иллюстраций с созданием файла страницы page.djvu:

for file in *-sjbz.cnk; do djvumake ${file%-sjbz.cnk}.djvu INFO=,,600 Sjbz=$file BG44=${file%-sjbz.cnk}-back.cnk FGbz=#black; done

Удаление промежуточных файлов:

rm -f *.pbm *.ppm *-sjbz.djvu *-back.djvu *.cnk

Другие команды DjVuLibre[править]

Добавление, удаление, извлечение DjVu страниц[править]

Добавление
djvm -i Kniga.djvu 3.djvu 3

, где 3.djvu — имя файла третьей страницы,
3 — порядковый номер страницы в документе.

Удаление
djvm -d Kniga.djvu 3

, где 3 — порядковый номер удаляемой из документа страницы.

Извлечение

Всех страниц

djvused Kniga.djvu -e "save-indirect page.djvu"

Отдельных страниц

djvused Kniga.djvu -e "select 5; save-page-with 5.djvu"

, где Kniga.djvu — документ,
select 5 — пятая страница в документе,
5.djvu — имя файла сохраняемой пятой страницы.

Конвертирование DjVu в TIFF[править]

Конвертирование отдельных страниц документа DjVu в многостраничный TIFF:

ddjvu -format=tiff -page=3-5,7 Kniga.djvu 3457.tif

, где -page=3-5,7 — номера страниц 3, 4, 5, 7.

Конвертирование всех страниц документа DjVu в многостраничный TIFF:

ddjvu -format=tiff Kniga.djvu Kniga.tif

Конвертирование всех страниц документа DjVu в отдельные файлы-страницы TIFF:

ddjvu -format=tiff -eachpage Kniga.djvu %d.tif

Конвертирование также можно сделать программой DjView.

Некоторые команды ImageMagick и LibTiff[править]

Конвертирование одного формата в другой (пример)
for file in *.ppm; do convert $file ${file%ppm}png; done
Поворот на 90, 180 или 270 градусов по часовой стрелке
for file in *.jpeg; do convert -rotate 90/180/270 $file $file; done
Обрезка изображения

Справа на 1 %:

for file in *.jpg; do convert -crop 99%x100%+0+0 $file $file; done

Слева на 1 %:

for file in *.jpg; do convert -gravity NorthEast -crop 99%x100%+0+0 $file $file; done

Сверху на 1 %:

for file in *.jpg; do convert -gravity SouthEast -crop 100%x99%+0+0 $file $file; done

Снизу на 1 %:

for file in *.jpg; do convert -crop 100%x99%+0+0 $file $file; done
LibTiff

Извлечение всех tif страниц из tif документа:

tiffsplit Kniga.tif

См. также[править]