Недавно передо мной встала обыденная задача - отсканировать документ и привести его в вид, удобный для чтения на компьютере. Сам документ представляет собой брошюру, сделанную из листов A4. Проделав все этапы и получив замечательный результат я решил поделиться опытом с вами.
Содержание:
0. Подготовка программного обеспечения.
1. Сканирование.
2. Обработка изображений (разрезание пополам, выравнивание, обработка полей).
3. Сжатие изображений с помощью алгоритма djvu.
4. Склейка страниц в единый документ.
5. Листинг скриптов, используемых для обработки файлов.
0. Подготовка программного обеспечения. Для работы понадобятся:
1. Для сканирования я использую замечатльную программу XSane. Параметр сканирования я выбрал следующие:
Качество: 600dpi
Формат: tiff (можно было использовать и например png)
Цветовая гамма: штриховая (два цвета - черный и белый)
XSane автоматически нумерует и сохраняет полученные после сканирования изображения, что весьма удобно.
2. Следующий этап - обработка изображений. Она производиться с помощью программы ScanTailor.
Для начала необходимо создать рабочий каталог с необходимыми файлами, который потом будет выбран программой в качестве рабочего.
Работа программы состоит из следующих этапов:
После прохождения последнего этапа в рабочем каталоге появится каталог out с разультатами работы программы в виде кучи новых обработанных файлов, при чем именованных достаточно логично для следующего этапа обработки.
3. Настал черед сжать изображения с помощью библиоткеки djvulibre. Для решения этой задачи разумно воспользоваться скриптом, использующим утилиты с интерфейсом командной строки из пакета djvulibre. Для выполнения скрипта понадобится командный интерпретатор, или оболочка. Можно использовать bash или что-то иное из sh-совместимых оболочек.
4. Теперь склеим полученные файлы djvu:
5. Листинг скриптов для обработки файлов.
Скрипт сжатия черно-белых изображений:
Содержание:
0. Подготовка программного обеспечения.
1. Сканирование.
2. Обработка изображений (разрезание пополам, выравнивание, обработка полей).
3. Сжатие изображений с помощью алгоритма djvu.
4. Склейка страниц в единый документ.
5. Листинг скриптов, используемых для обработки файлов.
0. Подготовка программного обеспечения. Для работы понадобятся:
- Программы XSane и ScanTailor.
- Sh-совемстимый командный интерпретатор (желательно современный, например bash или zsh).
- Библиотека djvulibre.
$ sudo apt-get install djvulibre-bin
zsh xsane scantailor
1. Для сканирования я использую замечатльную программу XSane. Параметр сканирования я выбрал следующие:
Качество: 600dpi
Формат: tiff (можно было использовать и например png)
Цветовая гамма: штриховая (два цвета - черный и белый)
XSane автоматически нумерует и сохраняет полученные после сканирования изображения, что весьма удобно.
2. Следующий этап - обработка изображений. Она производиться с помощью программы ScanTailor.
Для начала необходимо создать рабочий каталог с необходимыми файлами, который потом будет выбран программой в качестве рабочего.
Работа программы состоит из следующих этапов:
- Установление правильной ориентации изображений.
- Разрезание станиц пополам, если таковое наобходимо.
- Поворот страниц.
- Вырезаниеиз изображений контента (текстов рисунков).
- Создание полей.
- Вывод.
После прохождения последнего этапа в рабочем каталоге появится каталог out с разультатами работы программы в виде кучи новых обработанных файлов, при чем именованных достаточно логично для следующего этапа обработки.
3. Настал черед сжать изображения с помощью библиоткеки djvulibre. Для решения этой задачи разумно воспользоваться скриптом, использующим утилиты с интерфейсом командной строки из пакета djvulibre. Для выполнения скрипта понадобится командный интерпретатор, или оболочка. Можно использовать bash или что-то иное из sh-совместимых оболочек.
#!/bin/bash
Сам скрипт лежит в каталоге с изображениями, которые именованы примерно так: 100_0447_1L.tif 100_0447_2R.tif 100_0448_1L.tif, то есть по порядку, что нам и надо. Необходимо обработать все изображения, поэтому целесообразно использовать цикл$ for i in *.tif; do
Библиотека djvulibre требует специфичного формата pbm, поэтому сконвертируем в него наши изображения:$ convert -format pbm $i "$i.pbm"
Теперь их можно сжать в djvu $ cjb2 -dpi 600 -clean "$i.pbm" "$i.djvu"
Удалим промежуточные файлы $ rm -f "$i.pbm"
Завершаем цикл done
4. Теперь склеим полученные файлы djvu:
$ djvm -c file.djvu *.djvu
Когда документ готов, отдельные файлы вряд ли понадобятся, поэтому удалим все кроме file:$ rm -f [^file]*.djvu
После обработки у меня размер изображенний уменьшился с 20 Мб до 500 Кб, то есть в 40 раз. Внушительно, не правда ли? При этом качество восприятия информации существенно увеличилось.5. Листинг скриптов для обработки файлов.
Скрипт сжатия черно-белых изображений:
#!/bin/bash
for i in *.tiff; do
convert -format pbm $i "$i.pbm"
cjb2 -dpi 600 -clean "$i.pbm" "$i.djvu"
rm -f "$i.pbm"
done
Скрипт сжатия серых изображений:#!/bin/bash
for i in *.tiff; do
convert $i -format pgm "$i.pgm"
c44 -dpi 600 -percent 6 "$i.pgm" "$i.djvu"
# percent 6 - степень сжатия изображения
rm -f "$i.pgm"
done
Скрипт конкатенации (объединения) файлов djvu:#!/bin/bash
djvm -c file.djvu *.djvu
# следующая строка - по потребности
rm -f *[^file].djvu
Комментариев нет:
Отправить комментарий