galaxyman 09.02.2010 18:46

How-to`sУлучшение качества DJVU книг

Очень часто попадаются интересные книги в формате djvu. Но к сожалению качество некоторых книг не очень хорошее. К основным дефектам можно отнести:
серый фон на страницах;
некоторые страницы перевернуты на 90-180 град;
страницы идут попарно - разворотами, такие неудобно читать на небольшом экране нетбука.

Как исправить такую книгу расскажу под катом.


Перед началом работы убедитесь, что установлены пакеты:
libtiff-tools, djvulibre-bin и imagemagick.

Итак имеем файл книги inputfile.djvu. Примерно такого качества:
%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.png
Преобразуем его сначала в многостраничный tiff:

Сжатие без компрессии (размер файла может достичь до нескольких Гб! в зависимости от количества страниц и качества книги)
ddjvu -v -format=tiff inputfile.djvu output.tiff

Сжатие с компрессией (размер файла до 500 Мб)
ddjvu -v -format=tiff -quality=80 inputfile.djvu output.tiff

Если книга небольшая, до 200 стр., то параметр качества -quality=80 можно не указывать, при этом tiff получиться без компрессии, а значит, с меньшей потерей качества при преобразовании. У меня с книгой более 500 стр не получилось разрезать с помощью tiffsplit созданный без компрессии 2 Гб-ый tiff.
Теперь преобразуем многостраничный тиф в множество одностраничных - каждую страницу в отдельный файл:

tiffsplit inputfile.tiff outputdir/

Еще одно преобразование, на этот раз из tiff в png. Для чего? Объясняю чуть ниже.

for f in *; do convert $f png/$f.png; done

На следующем этапе нам понадобиться Scan Tailor - программа для подготовки электронных книг. В Ubuntu 9.10 она есть в репозитории. Для пользователей других дистрибутивов: ищите в своих репозиториях, если нет, то Scan Tailor легко собирается из исходников, предварительно почитайте, что нужно установить по зависимостям. Есть версия для Windows.

sudo apt-get install scantailor

Вот теперь нам и понадобятся png файлы, так как tiff Scan Tailor не читает.
Запускаем Scan Tailor, добавляем все png файлы в проект и проходим по нужным пунктам оптимизации. Поскольку программа локализована, не вижу смысла подробно останавливаться на всех пунктах оптимизации. Scan Tailor позволяет: исправлять ориентацию страниц, разрезать развороты отсканированных страниц, корректировать угол наклона страниц, выделять полезную область страниц, при этом очищая поля, поменять разрешение документа, выбрать способ компресии для изображения: черно-белое, цветное-оттенки серого, смешанное. Наиболее важный и интересный пункт это "Разрезка страниц". Насколько я знаю, есть еще одна программа для обработки отсканированных изображений под nix системы, позволяющая разрезать развороты книг - unpaper. Однако добиться ее корректной работы у меня не получилось (страницы не резались, если кто то работает с unpaper оставьте в коментах рабочие опции при разрезании разворотов страниц). Наилучший, самый чистый результат получается при выборе в пункте "Вывод" режима "Черно-белый". Однако этот способ коррекции не подходит, если в книге есть фотографии, тут нужно подбирать режим: "Цветной-серый" либо "Смешанный".
После завершения работы результаты складываются в папку "out".
В консоли переходим в папку out и запускаем скрипт сборки djvu файла.
На выходе получаем такой результат (файл output.djvu):
%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-2.png

Разница в качестве исходного и обработанного файла заметна невооруженным глазом.

Эта статья кросспост из моего блога.


Тэги: djvu png scantailor tiff книги
+ 22 -
Похожие Поделиться

ZaWertun 09.02.2010 21:34 #
вопрос немного не по теме, но связан с djvu:

возможно ли переконвертировать djvu с текстовым слоем в pdf, но не как набор картинок ?
хотя даже не обязательно в pdf, в тот же html например.
galaxyman 09.02.2010 22:01 #
нельзя,текстовый слой это каша после osr с минимальным форматированием
если нужен текст, извлек картинки и в cuniform или http://finereader.abbyyonline.com/ + finereader работает под wine
ZaWertun 10.02.2010 02:07 #
вытащить текст из такого djvu - как раз не проблема (например с помощью djvutxt из djvulibre),
проблема в том как к этому тексту потом в нужных местах привязать соответствующие картинки

хотя еще можно взять вывод от djvutoxml и преобразовать его к нужному виду,
но XML-конструкции которые он генерирует мне не очень нравятся:

<LINE>
<WORD coords="259,4794,397,4757">реальным</WORD>
<WORD coords="424,4794,688,4756">опытом.</WORD>
<WORD coords="716,4794,864,4745">Если</WORD>
<WORD coords="893,4794,973,4757">вы</WORD>
<WORD coords="998,4811,1115,4757">уже</WORD>
<WORD coords="1142,4811,1488,4758">проделали</WORD>
<WORD coords="1516,4796,1617,4758">все</WORD>
<WORD coords="1644,4806,1765,4758">это,</WORD>
<WORD coords="1790,4805,2018,4757">данная</WORD>
<WORD coords="2046,4795,2230,4757">книга</WORD>
<WORD coords="2258,4795,2359,4757">все</WORD>
<WORD coords="2386,4811,2579,4757">равно</WORD>
<WORD coords="2607,4794,2905,4756">окажется</WORD>
<WORD coords="2932,4794,3046,4756">вам</WORD>
<WORD coords="3075,4795,3282,4756">полез-</WORD>
</LINE>
ZaWertun 10.02.2010 02:15 #
хотя что это я, парсить как раз просто будет
спать надо больше..
predator 09.02.2010 21:38 #
спасибо автору. мне обязательно пригодится, т.к. много читаю за компом.
exelens 09.02.2010 22:16 #
Именно джву?
Я обычно ПДФ читаю.
chemikadze 09.02.2010 22:24 #
В djvu сканы часто попадаются.
galaxyman 09.02.2010 22:25 #
DjVu (от фр. d?j? vu — «уже виденное») — технология сжатия изображений с потерями, разработанная специально для хранения сканированных документов — книг, журналов, рукописей и прочее, где обилие формул, схем, рисунков и рукописных символов делает чрезвычайно трудоёмким их полноценное распознавание. Также является эффективным решением, если необходимо передать все нюансы оформления, например, исторических документов, где важное значение имеет не только содержание, но и цвет и фактура бумаги; дефекты пергамента: трещинки, следы от складывания; исправления, кляксы, отпечатки пальцев; следы, оставленные другими предметами.
galaxyman 09.02.2010 22:26 #
djvu может быть только сканом по определению!
chemikadze 09.02.2010 22:34 #
Имелось в виду "сканы часто попадаются в djvu". Интернеты сломали мой русский язык, пойду сопру у младшего брата учебник по риторике.
Daria 10.02.2010 06:02 #
вы же сами показали, что в djvu можно засунуть всё, что захочется.
predator 09.02.2010 22:42 #
всякое бывает. старые книги часто в djvu.
Daria 10.02.2010 06:10 #
ещё нужны как минимум пакеты: libtiff-tools, djvulibre-bin и imagemagick
sergicus 10.02.2010 11:11 #
спасибо за статью
aiva 11.02.2010 10:54 #
Большое спасибо, полезная статья, уже опробовал на одном файле. Только в убунту нужен еще пакет netpbm.