Удивляет тотальное незнание народа о замечательном формате djvu (читается déjà vu). Поэтому сегодняшний пост будет посвящен этому замечательному графическому формату. Для начала — немного истории.
Где-то в начале 90-х возникла проблема перевода существующих «бумажных» архивов в электронный вид. Для фирмы AT&T эта проблема стояла еще более остро — за годы работы накопилось огромное количество технической документации, содержащей не только текст, но и рисунки, графики, схемы и формулы. Естественно, никто не стал бы «набивать» все эти данные заново, поэтому в 1996 году был разработан формат djvu специально для эффективного хранения сканированных документов.
Естественно, djvu относится к семейству графических форматов, использующих компрессию с потерями. Но сжатие в djvu намного более эффективно, чем, например, jpeg. Просто приведу числа. Сканированная страница формата A3, при разрешении сканирования 300 точек на дюйм и 24-битном цвете занимает при использовании формата без компрессии около 50 Мб. Сжатием без потерь (вроде ZIP или RAR) удается сократить размер примерно до 30-40 Мб. JPEG при сохранении «читабельности» текста «сожмет» файл до 1 Мб. В djvu эта же страница будет «весить» около 200 Кб. Результат впечатляющий.
Дальше будут картинки, они уменьшены, чтобы не рвать френдленту, полная версия — по щелчку.
За счет чего достигаются такие выдающиеся показатели? При сжатии в djvu изображение «разбивается» на несколько слоев. Один слой содержит «четко выделяющиеся» элементы изображения, такие как текст и графики — он называется foreground, «передний план», другой — background, «фон». К ним применяются различные алгоритмы сжатия.
Как легко видеть, «фон» — это крупные цветные пятна, рисунок сохраняется с пониженным разрешением и сильным сжатием. А что представляет собой «передний план»?
В качестве «переднего плана» программа сжатия выделила некоторые контрастные элементы рисунка. Здесь также применяется сжатие с потерями, но работающее по другому алгоритму. В результате наложения переднего плана на фон получим такую картинку:
Конечно, многие уже испугались и навсегда зареклись использовать djvu. Но… В силу вступают новые соображения. Данный формат разработан специально для документов, предназначенных для просмотра на экране компьютера, а не для печати с полиграфическим качеством. Поэтому смотреть рисунки надо не с разрешением 300 точек на дюйм, а ограничиться лишь 72.
В целом, результат вполне радует глаз. Все же преимущества djvu проявляются при сканировании текста. Например, в Petit Journal «фон» — это пожелтевшая от времени бумага, и нет никакой необходимости сохранять в высоком разрешении все нюансы. «Передний план» — это текст, и здесь djvu-компрессия проявляет все свои положительные качества.
Как нетрудно заметить, при наборе текста используется не больше сотни отдельных литер (включим сюда разнообразные умляуты и прочие «радости» некоторых европейских языков). Это обстоятельство было учтено при разработке djvu, и при сжатии текста в этом формате сначала выделяются символы с похожим начертанием, а потом в тех местах, где они встречаются, сохраняется лишь информация об отличиях от «эталонного» начертания. Более того, слой «текста» — монохромный, что позволяет добиться очень высокой степени компрессии.
К сожалению, тут не обошлось без недостатков. В оригинале имеются довольно сильные дефекты печати, которые оказались «не по зубам» djvu-формату. Но там, где текст достаточно хорош, сжатие позволило даже улучшить читаемость за счет повышения контрастности.
Совершенно незаменим формат djvu при сканировании книг со «сложным» текстом, насыщенным формулами или графиками. «Среднюю» книгу, например, по математике — около 500 страниц A5, в djvu можно сжать до 5-10 Мб. 10 Кб на страницу — это очень неплохо. Пожалуй, меньше будет только текст книги в TeX. Качество же — вполне на уровне, можно даже печатать:
Впрочем, и книги по совершенно гуманитарным дисциплинам в этом формате выглядят неплохо. Если нет времени на «вычитку» OCR — то вполне можно воспользоваться djvu, «потомки скажут спасибо». Для сравнения, в PDF со сравнимым качеством двухсотстраничная книга «весит» 27 Мб, а в djvu — всего лишь 5 Мб.
Кстати, в djvu предусмотрен еще один слой, о котором я еще не сказал. Это так называемый OCR-слой, предназначенный для хранения текста. В него можно добавить распознанный «читалкой», например ABBYY Fine Reader, текст. Из djvu-документа с вставленным таким образом текстом можно копировать отдельные части, в нем можно искать какие-то слова — фактически, работать, как с простым текстовым файлом.
В ближайшее время напишу еще один пост, посвященный конкретным программам для работы с djvu. Отдельно уделю внимание созданию djvu-документов.