Сравнение DjVu-кодеров

Целью тестирования является сравнение бесплатных djvu-кодеров:

Выбор исходных документов

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

Большинство книг содержит только черно-белый текст и иллюстрации, поэтому такое ограничение вполне оправдано.

Если PDF документ не мог быть корректно преобразован в DjVu хотя бы одним из используемых кодеров, то он не учавствовал в тестировании. Подробнее об этом в следующем пункте.

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

Параметры используемого ПО

Для всех программ использовалось разрешение 300 dpi.

В пакете DjVuLibre за сжатие черно-белых изображений отвечает программа cjb2. При запуске без ключей осуществляется сжатие без потерь. Ключ -clean служит для очистки изображения от шумов и мелких дефектов, -loose позволяет одинакого кодировать символы, отличающиеся менее, чем на 6%. Результат работы сравнивался при различных параметрах запуска. Для автоматизации преобразования был написан скрипт pdf2djvu.pl.

Сервер Any2DjVu использует аналогичные способ работы, только входных форматов там больше, скрипты сложнее, а главное - используется коммерческая программа сжатия. Для преобразования PDF в графический формат также применяется Ghostscript, поэтому и проблемы возникали при обработке в основном тех же файлов. Незначительные отличия являются следствием использования различных версий Ghostscript. Я пробывал версии 6.52, 7.07 и 8.11. Остановился на использовании версии 7.07, т.к. 8.11 значительно чаще выдавала ошибки Segmentation fault.

DjVu Solo работал в паре с Adobe Acrobat 5.0. Полученные в Acrobat изображения открывались в Solo и сохранялись в режиме Bitonal.

Полученные результаты

Отсканированные книги (размер в Кб)

PDF cjb2 cjb2
-clean
cjb2
-loose
cjb2
-clean -loose
Any2DjVu DjVu Solo
Barbashin 8027 3891 3842 3128 3079 1527 1251
Bautin 23071 11594 11461 9333 9200 4543 3901
Butenin 14844 7928 7808 6711 6592 3737 3148
book19 23677 11804 11685 9257 9139 4923 4179
book22 19501 10060 9796 8000 7737 4493 3657
book33 20220 12185 11802 11683 11302 7528 6344

Текстовые книги (размер в Кб)

PDF cjb2 cjb2
-clean
cjb2
-loose
cjb2
-clean -loose
Any2DjVu DjVu Solo
book17* 15162 1462 1459 1334 1331 682 705
book3* 16573 2425 2420 1983 1979 945 890
max-rpm 2149 2839 2839 2831 2831 1513 1734
myth 1623 1070 1063 1062 1055 856 732
*Книги с диска РХД содержат изображения, полученные из текстовых оригиналов, поэтому их объем близок к отсканированным книгам.

Выводы

Для отсканированых книг компрессор cjb2 из состава DjVuLibre уменьшает объем PDF приблизительно в 2 раза без потерь качества. Опции сохранения с потерями существенного увеличения в степени сжатия не дают. В целом cjb2 уступает в два раза DjVu Solo и Any2DjVu. Что интересно, этот разрыв сохраняется и на "чистых" изображениях, на которых сжатия с потерями, реализованное в DjVu Solo и Any2DjVu, не должно было бы принести значительное преимущество. Использование cjb2 может быть оправдано в случае, если требуется пакетная обработка множества документов, содержащих "чистое" изображение без текстового оригинала.

Коэффициент сжатия для всех отсканированных книг: Any2DjVu 109340 / 26751 = 4,09; DjVu Solo 109340 / 22480 = 4,86. Степень сжатия DjVu Solo больше, но нужно учитывать, что это сжатие с потерями и полученные документы не идентичны. Хотя оба выглядят весьма качественно. На мой субъективный взгляд на Any2DjVu изображения получаются более четкими.

Для "чистых" изображений, полученных непосредственно из текста коэффициент сжатия значительно меньше и перевод их в DjVu вряд ли имеет смысл. При таком переводе текст будет преобразован к изображению, хотя и возможно добавление отдельного текстового слоя. Совершенно другие результаты будут в случае, если у вас нет оригинального текста, а есть только его изображение. В этом случает достигается коэффициент сжатия 31735 / 1595 = 19,9. При сохранении в DjVu Solo "чистых" черно-белых изображений опции Bitonal и Clean дают одинаковые результаты.

Обcудить эту статью и программы для создания DjVu-файлов можно на форуме в теме "Преобразование PDF в DjVu".