Архив 1 декабря 2008

Ликбез по djvu

Удивляет тотальное незнание народа о замечательном формате djvu (читается déjà vu). Поэтому сегодняшний пост будет посвящен этому замечательному графическому формату. Для начала – немного истории.

Где-то в начале 90-х возникла проблема перевода существующих “бумажных” архивов в электронный вид. Для фирмы AT&T эта проблема стояла еще более остро – за годы работы накопилось огромное количество технической документации, содержащей не только текст, но и рисунки, графики, схемы и формулы. Естественно, никто не стал бы “набивать” все эти данные заново, поэтому в 1996 году был разработан формат djvu специально для эффективного хранения сканированных документов.

Естественно, djvu относится к семейству графических форматов, использующих компрессию с потерями. Но сжатие в djvu намного более эффективно, чем, например, jpeg. Просто приведу числа. Сканированная страница формата A3, при разрешении сканирования 300 точек на дюйм и 24-битном цвете занимает при использовании формата без компрессии около 50 Мб. Сжатием без потерь (вроде ZIP или RAR) удается сократить размер примерно до 30-40 Мб. JPEG при сохранении “читабельности” текста “сожмет” файл до 1 Мб. В djvu эта же страница будет “весить” около 200 Кб. Результат впечатляющий.

Дальше будут картинки, они уменьшены, чтобы не рвать френдленту, полная версия – по щелчку.

Медвед-1892, скан 300 dpi

Медвед-1892, скан 300 dpi

За счет чего достигаются такие выдающиеся показатели? При сжатии в djvu изображение “разбивается” на несколько слоев. Один слой содержит “четко выделяющиеся” элементы изображения, такие как текст и графики – он называется foreground, “передний план”, другой – background, “фон”. К ним применяются различные алгоритмы сжатия.

Фон от того же медведа

Фон от того же медведа

Как легко видеть, “фон” – это крупные цветные пятна, рисунок сохраняется с пониженным разрешением и сильным сжатием. А что представляет собой “передний план”?

Передний план от медведа

Передний план от медведа

В качестве “переднего плана” программа сжатия выделила некоторые контрастные элементы рисунка. Здесь также применяется сжатие с потерями, но работающее по другому алгоритму. В результате наложения переднего плана на фон получим такую картинку:

Медвед после жестокого djvu-сжатия

Медвед после жестокого djvu-сжатия

Конечно, многие уже испугались и навсегда зареклись использовать djvu. Но… В силу вступают новые соображения. Данный формат разработан специально для документов, предназначенных для просмотра на экране компьютера, а не для печати с полиграфическим качеством. Поэтому смотреть рисунки надо не с разрешением 300 точек на дюйм, а ограничиться лишь 72.

Сверху - оригинал, снизу - djvu

Сверху - оригинал, снизу - djvu

В целом, результат вполне радует глаз. Все же преимущества djvu проявляются при сканировании текста. Например, в Petit Journal “фон” – это пожелтевшая от времени бумага, и нет никакой необходимости сохранять в высоком разрешении все нюансы. “Передний план” – это текст, и здесь djvu-компрессия проявляет все свои положительные качества.

Скан 300 dpi

Скан 300 dpi

Как нетрудно заметить, при наборе текста используется не больше сотни отдельных литер (включим сюда разнообразные умляуты и прочие “радости” некоторых европейских языков). Это обстоятельство было учтено при разработке djvu, и при сжатии текста в этом формате сначала выделяются символы с похожим начертанием, а потом в тех местах, где они встречаются, сохраняется лишь информация об отличиях от “эталонного” начертания. Более того, слой “текста” – монохромный, что позволяет добиться очень высокой степени компрессии.

Текст в djvu

Текст в djvu

К сожалению, тут не обошлось без недостатков. В оригинале имеются довольно сильные дефекты печати, которые оказались “не по зубам” 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-документов.