Автор Тема: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)  (Прочитано 17802 раз)

MetaSpirit

  • Новичок
  • *
  • Сообщений: 15
    • ICQ клиент - 334848279
    • Просмотр профиля
    • Творческая Мастерская R.A.S.Lab
DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« : 10 ПЭТРам 2011, 12:29:28 »
Итак, последовательность создания DjVu–документа примерно такова (на примере Ubuntu):

1 этап. Сканирование. (перенесено).

2 этап. Сканобработка.
Основным инструментом для сканобработки будет  Scan Tailor, т.к. есть нативная версия для Linux и ставится из стандартного репозитория Ubuntu или можно скачать с офф. сайта.

Дополнительно можно использовать windows-версии СканКромсатора, а также Book Restorer. Запускаются они через WINE (загрузчик Windows-программ). СК удалось запусть vv. 5.91 и 5.93, 5.92b работать отказалась. Book Restorer тоже работает, но только нормальная версия, не портабельная.

Дополнительно можно почитать "Обработка сфотографированых/отсканированных страниц документов с помощью imagemagick"

3 этап. Собственно DjVu-кодирование. Опционально: добавление текстового слоя, создание оглавления и алфавитного указателя, а также добавление метаинформации.

Литература к ознакомлению. Наиболее полно данный этап расписан в статье "Создание Djvu документов в Linux от А до Я", где автор использует DjVuLibre и ImageMagick. Создание документов DJVU в Linux  http://mydebianblog.blogspot.com/2008/05/djvu.html . Добавление текстового слоя, используя родные Linux-утилиты, расписано в статье "KBookOCR for Linux". Дополнительно можно почитатать "Улучшение качества DJVU книг".

Кодирование DjVu:
 - однопроходный DjVu кодер - img2djvu (спасибо m7876)
 - скрипт any2djvu-bw для кодирования Ч/Б изображений (автор не известен, нашел в просторах интернета)
monday2000
Цитировать
- Для создания DjVu-книг под Linux существует ещё и такое давнишнее решение, как так называемый "Конвейер" от are: http://www.djvu-soft.narod.ru/soft/all2djvu.htm . По идее, он охватывает весь цикл создания DjVu-книги.
 - Print to DjVu through KPrinter  http://www.novell.com/coolsolutions/tools/17525.html
 - Scan to DjVu - http://www.novell.com/coolsolutions/tools/17462.html

Редактирование DjVu:
 - утилита djvupages (спасибо m7876)
Цитировать
Она умеет удалять и перемещать страницы, резать файл на отдельные DjVu файлы, вырезать многостраничный фрагмент, конвертировать страницы в TIFF и даже посылать выбранную страницу в GIMP, а после редактирования кодировать заново и вставлять на место.
- didjvu - использует Gamera framework для разделения передних и задних слоев, которые потом могут быть закодированы в DjVu-файл.
 - djvusmooth — это графический редактор файлов DjVu, который позволяет:
  * редактировать метаданные документа,
  * редактировать структуру документа (закладки),
  * исправлять случайные ошибки в слое скрытого текста.

И еще, набор инстументов python-djvulibre для работы с библиотеки DjVuLibre, реализованный на Python.

Также можно использовать windows программы, запуская их через WINE.
Что мы имеем:
 - программы от Lizardtech. Консольные утилиты работают без проблем. Из GUI удалось запустить только Lizardtech DjVu Document Express Editor Pro 6.0.1 Build 1320 LE. Остальные не запустились, скорее всего из-за того, что требуют для своей работы .net Framework.
 - DjVu Small и DjVu Imager работают, но есть баг, когда выбираешь пункт открыть папку, то кнопка "ОК" неактивна в любом случае.
 - ABBYY FineReader 8.0 Professional Edition Multilanguage работает.
 - DjVu OCR v2.4beta работает.
 - единственный момент, во всех GUI программах долго выбираются несколько файлов через Ctrl, либо через Shift, на это время (от нескольких сек. до мин.) программа может не отвечать на запросы (или даже виснуть), но это проблема самого Вайна.


Пока на этом все. Тема будет дополнятся. Продолжение следует...
« Последнее редактирование: 12 ПЭТРам 2011, 13:54:34 от MetaSpirit »

m7876

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #1 : 11 ПЭТРам 2011, 07:50:43 »
Пробовали ли Вы img2djvu и djvupages (https://github.com/ashipunov) ?

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #2 : 11 ПЭТРам 2011, 09:51:18 »
MetaSpirit
Спасибо за тему, очень интересный и актуальный вопрос в принципе. Будем обсуждать. ;)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #3 : 11 ПЭТРам 2011, 16:41:50 »
MetaSpirit
Цитировать
1 этап. Сканирование книги. Для работы используется SANE.

Есть некое новшество - ScanTWAIN. Вот описание: http://www.linuxcenter.ru/news/2009/03/12/9316/ . Что это такое, любопытно. Кроме того, принят стандарт TWAIN 2.1, см. http://www.twain.org/ - что тоже может таить новые возможности (в т.ч. и для сканирования под Windows).
Цитировать
2 этап. Сканобработка.
ИМХО сейчас можно полностью обойтись без СканКромсатора. Всё жизненно важное, что умеет делать СК, уметь делать и СТ.
Цитировать
Book Restorer тоже работает.
Портабельный? Или обычный?
Цитировать
3 этап. Собственно DjVu-кодирование.
Жаль, что под Линукс нет коммерческого специализированного решения. Точнее, есть Linux DjVu SDK - но его пока в глаза никто не видел. Его описание есть тут:
https://www.caminova.net/en/downloads/download.aspx?id=17

Остаётся лишь использовать Windows-DjVu-кодировщики под Linux. DjVuLibre-кодировщики (minidjvu, cjb2) - это, конечно, не очень серьёзно пока.
Оптимальнее всего ИМХО было бы суметь заставить работать documenttodjvu.exe (его можно взять из DjVu Small, например) под Linux. Этого было бы вполне достаточно - GUI для Линукса не очень актуален, но в случае необходимости его правильнее всего было бы сделать специально для Linux (не пытаясь заставить работать тот же DjVu Small под Linux).
Цитировать
Консольные утилиты работают без проблем.
А как это делается? Тоже через WINE? А нет ли более простого варианта - как заставить работать тот же documenttodjvu.exe как-нибудь без WINE? Не существует ли своего рода "портабелизации" консольных Windows-утилит под Linux?
DjVu Imager вообще не следует пытаться переносить под Linux - разумнее сделать аналогичную программу прямо под Linux - что уже и было сделано: http://www.djvu-scan.ru/forum/index.php?topic=96.0 .
« Последнее редактирование: 11 ПЭТРам 2011, 16:56:31 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #4 : 11 ПЭТРам 2011, 17:15:15 »
Цитировать
- ABBYY FineReader 8.0 Professional Edition Multilanguage работает.
 - DjVu OCR v2.4beta работает.
Это хорошо, конечно. Но есть и альтернативный вариант - ABBYY FineReader под Linux: http://www.ocr4linux.com/ . Это командно-строчная программа, которая умеет к тому же экспортировать OCR-данные (с координатами) в XML (аналог hOCR) - что исключает необходимость в DjVu OCR.

Правда, я пока не слышал, чтобы кто-нибудь реально воспользовался этой программой. Да она ещё и не вылеченная пока. И не всем она нравится. Вот мнение are с Руборда:
Цитировать
finereader/linux проработает год,потом поменяются системные библиотеки на линуксе и - привет.
Думаю, подробнее об этой программе можно расспросить на форуме ABBYY.

Для создания DjVu-книг под Linux существует ещё и такое давнишнее решение, как так называемый "Конвейер" от are: http://www.djvu-soft.narod.ru/soft/all2djvu.htm . По идее, он охватывает весь цикл создания DjVu-книги. Что там внутри - я точно не знаю, поскольку сам Линуксом не пользуюсь никаким.

Ещё материалы по теме:

Создание документов DJVU в Linux  http://mydebianblog.blogspot.com/2008/05/djvu.html

Просмотр DjVu под Linux:

Evince  http://projects.gnome.org/evince/

Okular  http://okular.kde.org/formats.php

Как-то я спросил у Леона Боту (он заядлый линуксод), как он создаёт DjVu - он ответил, что при помощи Any2DjVu Server http://any2djvu.djvuzone.org/ .

Ещё утилиты для сканирования-обработки под Linux:

gscan2pdf  http://gscan2pdf.sourceforge.net/ - сканирование в DjVu и PDF.

unpaper - http://unpaper.berlios.de/#download - обработка сканов ("предшественник" Scan Tailor, ИМХО вряд ли имеющий сейчас хоть какое-то значение).

Print to DjVu through KPrinter  http://www.novell.com/coolsolutions/tools/17525.html

Scan to DjVu - http://www.novell.com/coolsolutions/tools/17462.html

MetaSpirit

  • Новичок
  • *
  • Сообщений: 15
    • ICQ клиент - 334848279
    • Просмотр профиля
    • Творческая Мастерская R.A.S.Lab
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #5 : 11 ПЭТРам 2011, 18:31:34 »
m7876
Цитировать
Пробовали ли Вы img2djvu и djvupages (https://github.com/ashipunov) ?
Опробовал. Слишком много настроек в консоли. Нет значений по умолчанию, т.е. нельзя ее  (img2djvu) запустить в папке с изображениями и получить DjVu-файл. Скрипт по принципу "все в одном" и отходит от основной идеологии Linux, как говорит monday2000 - "вредный универсализм".
Цитировать
Идеология UNIX/Linux - один компонент или одна программа должны выполнять только какую-то одну задачу, но зато выполнять её хорошо. ("UNIX-way"). Программы под Linux напоминают конструктор LEGO (например, если существует программа для проверки орфографии, то её используют при разработке текстового редактора, или если уже существует мощная консольная программа для скачивания файлов, то проще написать к ней графический интерфейс (a.k.a Front-end), и т.д).
Вот пример простого скрипта для кодирования черно-белых изображений, использующий DjVuLibre:
#!/bin/bash
#
# any2djvu-bw
#

if [ -z `which anytopnm` -o -z `which ppmtopgm` -o -z `which pgmtopbm`\
-o -z `which cjb2` ]; then
usage
echo "Error: anytopnm, ppmtopgm, pgmtopbm and cjb2 are needed"
echo
exit 1
fi

shopt -s extglob


DEFMASK="*.tiff"
DPI=300
# uncomment the following line to compile a bundled DjVu document
OUTFILE="output.djvu"

function usage() {
echo
echo "usage:"
echo
echo "$0 [\"REGEXP\"]"
echo " converts single pages with the default mask $DEFMASK (or REGEXP if provided)"
echo " in the current directory to single-page black and white djvu documents"
# uncomment the following line to compile a bundled DjVu document
echo " and bundles them as a djvu file $OUTFILE"
echo
}

if [ -n "$1" ]; then
MASK=$1
else
MASK=$DEFMASK
fi

for i in $MASK; do
if [ ! -e $i ]; then
usage
echo "Error: current directory must contain files with the mask $MASK"
echo
exit 1
fi
if [ ! -e $i.djvu ]; then
echo "Procesing file $i"
anytopnm $i | ppmtopgm | pgmtopbm -value 0.499 > $i.pbm
# in netpbm >= 10.23 the above line can be replaced with the following:
# anytopnm $i | ppmtopgm | pamditherbw -value 0.499 > $.pbm
cjb2 -dpi $DPI $i.pbm $i.djvu
rm -f $i.pbm
echo "Created $i.djvu"
fi
done

# uncomment the following line to compile a bundled DjVu document
echo "Compiling $OUTFILE"
djvm -c $OUTFILE $MASK.djvu
echo "Created $OUTFILE"

monday2000
Цитировать
Остаётся лишь использовать Windows-DjVu-кодировщики под Linux. DjVuLibre-кодировщики (minidjvu, cjb2) - это, конечно, не очень серьёзно пока.
При использовании documenttodjvu.exe в режиме 'bitonal' размер конечного файла получается несколько меньше, чем при использовании cjb2. Разница у книги в 250 стр. и разрешением 600 dpi составила около 1mb.
Цитировать
Не существует ли своего рода "портабелизации" консольных Windows-утилит под Linux?
Только перекомпилировать исходный код под Linux. Иначе только WINE или аналогичная программа.

Цитировать
Для создания DjVu-книг под Linux существует ещё и такое давнишнее решение, как так называемый "Конвейер" от are: http://www.djvu-soft.narod.ru/soft/all2djvu.htm . По идее, он охватывает весь цикл создания DjVu-книги. Что там внутри - я точно не знаю, поскольку сам Линуксом не пользуюсь никаким.
Опробуем и изложим свои мысли.
« Последнее редактирование: 11 ПЭТРам 2011, 21:03:18 от MetaSpirit »

m7876

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #6 : 12 ПЭТРам 2011, 06:59:38 »
Цитировать
Опробовал. Слишком много настроек в консоли.
Я не думаю, что это плохо. Есть настройки по умолчанию, и есть широкие возможности для тюнинга.
Цитировать
Нет значений по умолчанию, т.е. нельзя ее  (img2djvu) запустить в папке с изображениями и получить DjVu-файл.
Как это?! Настройки по умолчанию ЕСТЬ, и МОЖНО запустить img2djvu на папку с изображениями и получить DjVu-файл. Может быть, Вы пробовали какой-то другой img2djvu?
Цитировать
Скрипт по принципу "все в одном" и отходит от основной идеологии Linux...
Давайте тогда разбираться с идеологией. В основе UNIX лежит в том числе конвейерная обработка при помощи множества последовательно запускающихся утилит, каждая из которых делает что-то одно. Самые известные примеры -- это скрипты запуска системы и скрипты Makefile. img2djvu устроен точно также, как эти скрипты или как приведенный Вами выше скрипт.
Кстати говоря, при помощи img2djvu уже сделано немало (более сотни) книг. Попробуйте, это и вправду удобно ;) Кстати, а Вы сами как делаете свои книги? Можно на них посмотреть?
Нет ли у Вас чего-нибудь конструктивного сказать? Может быть, что-то надо исправить или добавить?
« Последнее редактирование: 12 ПЭТРам 2011, 07:09:56 от m7876 »

MetaSpirit

  • Новичок
  • *
  • Сообщений: 15
    • ICQ клиент - 334848279
    • Просмотр профиля
    • Творческая Мастерская R.A.S.Lab
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #7 : 12 ПЭТРам 2011, 11:35:50 »
m7876
Цитировать
Может быть, Вы пробовали какой-то другой img2djvu?
Использовал версию из https://github.com/ashipunov/img2djvu
Цитировать
Настройки по умолчанию ЕСТЬ, и МОЖНО запустить img2djvu на папку с изображениями и получить DjVu-файл.
В README сказано:
Цитировать
SIMPLE USE

> img2djvu out

(where "out" is a name of folder wich contains some images)

img2djvu will output some diagnostics: first, total number of files in folder, then will show processing status of every file. Skipped non-graphic files are labeled with dots (.), graphic files are labeled with angle brackets (<>). Black and white pages are labeled with B or M (if minidjvu used), color pages with C, F (if cpaldjvu used) or L (if layer separation used). OCR labeled as an additional layer (+1) or additional plus (+). Aggressivity is the number of enclosed brackets (e.g., <<<>>> for -a 2).
т.е. все равно, даже при простом использовании, минимально необходимо указать папку с изображениями в строке инициализации. Или я не прав?
Цитировать
Давайте тогда разбираться с идеологией. В основе UNIX лежит в том числе конвейерная обработка при помощи множества последовательно запускающихся утилит, каждая из которых делает что-то одно. img2djvu устроен точно также
Не спорю как конвейер скрипт работает просто отлично, но, ИМХО, лучше было бы разделить на 3 отдельных скрипта:
  • скрипт для кодирования передних субсканов
  • скрипт для кодирования задних субсканов
  • скрипт для собирания DjVu-книги из отдельных файлов (передних и задних DjVu-файлов субсканов)
Немного проясню почему так думаю, напр., создал DjVu-книгу, но при просмотре выяснилось, что некоторые цветные страницы очень плохо закодировались, но так как DjVu-кодер однопроходной, то чтобы перекодировать эти страницы с другими настройками необходимо перекодировать всю книгу, а если кодеры раздельные, то тогда можно было бы только пережимать плохие страницы, а остальные не трогать.

Цитировать
Кстати, а Вы сами как делаете свои книги? Можно на них посмотреть?
На Ubuntu я только 12 дней. Поэтому и создал данную тему, т.к. данный вопрос слабо освещен в интернете.

В Windows делал по такому принципу: ScanKromsator -> DjVu Small -> DjVu Imager -> ABBYY FineReader 8.0  -> DjVu OCR  -> DjVu Hyperlinks Editor и финальные правки в Lizardtech DjVu Document Express Editor Pro 6.0.1 Build 1320. Пример книги - http://depositfiles.com/files/41j2bdwso
В Ubuntu:
Scan Tailor  уже освоил.
Теперь пытаюсь плотнее разобратся со скриптом img2djvu.
Свою первую книгу в Линуксе делал так (книга черно-белая): Scan Tailor -> any2djvu-bw -> ABBYY FineReader 8.0 (через WINE) -> DjVu OCR  (через WINE) -> Lizardtech DjVu Document Express Editor Pro 6.0.1 Build 1320 LE (через WINE)

Все мои книги находятся на сайте http://www.raslab.info/, но только с пометкой "релиз: RASLab.info", а также внутри книг можно встретить логотип "RASLab OCR". Книги сканирую с 2003 года.

Цитировать
Нет ли у Вас чего-нибудь конструктивного сказать? Может быть, что-то надо исправить или добавить?
Все мысли изложу в теме "Однопроходный DjVu кодер".

Первый пост обновлен!
« Последнее редактирование: 12 ПЭТРам 2011, 13:23:07 от MetaSpirit »

m7876

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: DjVu-книгоделание в GNU/Linux (Debian, Ubuntu)
« Ответ #8 : 12 ПЭТРам 2011, 20:55:31 »
Цитировать
...минимально необходимо указать папку с изображениями в строке инициализации. Или я не прав?
Вы правы, но разве это трудно -- указать название папки? Или Вы хотите, чтобы скрипт работал как команда make, без аргументов? Это можно сделать, но это необычный подход.
Цитировать
ИМХО, лучше было бы разделить на 3 отдельных скрипта:
    * скрипт для кодирования передних субсканов...
Зачем? Чтобы усложнить себе жизнь? Ведь тогда теряется то самое, что Вы хотели абзацем раньше -- простота использования!
Цитировать
...создал DjVu-книгу, но при просмотре выяснилось, что некоторые цветные страницы очень плохо закодировались...
А у Вас есть пример? Хотя бы несколько страниц? Очень интересно было бы посмотреть на такой случай.
Цитировать
...тогда можно было бы только пережимать плохие страницы, а остальные не трогать
Тогда их все равно придется как-то отделять, например, в особую папку. А это можно делать и сейчас, безо всяких проблем.
Цитировать
Книги сканирую с 2003 года...
Спасибо за информацию! Всегда хорошо знать "кто есть кто". Я на Linux с 1999 года, но эпизодически, а плотно только с прошлого сентября. Книги выкладываю в библиотеку "Флора и фауна" (гуглится). Сканирую с 1995 года. Всего отсканировал и/или обработал около 2,5 тыс. книг.