Формат DjVu
Возникла у меня недавно проблема: распечатать файл в формате DjVu. Арсений Чеботарев
🕛 02.11.2005, 03:01
Возникла у меня недавно проблема: распечатать файл в формате DjVu. Как выяснилось, это довольно прогрессивный, хотя и не очень распространенный формат. При случае вы тоже можете воспользоваться им - причем с выгодой для себя. Вступление
Формат DjVu - открытый формат, предназначенный для того же, для чего раньше использовались микрофильмы, то есть для переноса информации с бумажных носителей в более компактный вид. Внешне это напоминает формат Acrobat Reader: изображение предназначено только для просмотра, присутствуют различные средства навигации, текст соседствует с иллюстрациями и т.д. Кардинальное отличие - направление "движения" информации. Если формат Acrobat - это попытка с помощью компьютера воссоздать формат традиционной книги (так сказать "электронная бумага"), то DjVu - это именно отсканированные страницы обычной книги, очень компактно и на вечные века с помощью полудюжины алгоритмов и эвристик упакованные в формат "электронной книги".
Лирика
Технически это напоминает формат MP3 - так же как MP3, DjVu является комбинацией "разрушающих" и "неразрушающих" методов упаковки. Например, упаковка цветов в палитры (преобразование цветовых координат, в том числе преобразование цветного изображения в черно-белое) или схема аппроксимации по опорным точкам относятся к типичным "разрушающим" преобразованиям, в результате которых информация теряется безвозвратно. В качестве неразрушающего преобразования обычно используются различные вариации на тему алгоритма Лемпеля-Зива.
Слово "разрушающий" не зря взято в кавычки - на самом деле информация не разрушается с точки зрения читателя. Более того, с этой точки зрения графическое изображение букв и картинок просто переполнено информацией, то есть документ после сканирования характеризуется огромной избыточностью для обычного читателя (распознавателя образов). Для библиофилов, напротив, имеют значение, в основном, дефекты, особенности и начертания символов, изображений, а также поля и фактура бумаги. Однако библиофилы - не читатели. Они воспринимают книгу не как набор символов, а как "бумажную скульптуру", поэтому данная программа никак не подходит этому типу "пользователей".
Проблема
Итак, есть масса печатных источников, включая книги, журналы, патентные заявки (вообще, чему только мы не обязаны патентным бюро - включая тот же Unix), а также другие бумаги, вроде страховых полисов и банковских документов (эти сферы тоже являются традиционными катализаторами для многих IT-технологий). Некоторые фрагменты печатного материала представляют собой текст, другие - графики и документы, рукописные символы (подписи, комментарии) и фотографические фрагменты. Большинство этого материала не доходит до интернета и электронных носителей. Если что и переносится - то это текст.
Простое сканирование не может дать хорошего результата при любом разрешении: в высоком разрешении и широком цветовом диапазоне текст будет представлен избыточно (и к тому же будет хуже читаться). При низком разрешении или "выключенной цветности" пострадают изображения и особенно "векторная" графика, то есть чертежи и графики из тонких линий.
Не существует графических преобразований (фильтров), одинаково хорошо подходящих для всех типов печатных материалов. Такие форматы, как GIF, JPEG или PNG, описывают изображение как целое, не "проникаясь" иерархической структурой документа. В результате они работают только для изображений, но не для документов, различные части которого требуют различного подхода для упаковки.
Характеристики
Уплотнение для цветных изображений - в пять-десять раз лучше, чем обеспечивают GIF и JPEG. Для черно-белых - в три-восемь раз лучше, чем TIFF. Например, отсканированная страница A4 в разрешении 300 dpi размером около 25 Мб в цвете превращается в 30-100 Кб. А если это просто черный текст на белом фоне, то размер результирующего *.DjVu-файла составит вообще 5…30 Кб. Иными словами, значительно лучше, чем в обычных форматах графики.
Почувствуйте разницу: в оригинале DjVu эта страница занимала 18 Кб. Скриншот 2:3 в формате PNG занимает 270 Кб - и это не считая заметной потери качества.
Технология
В основе нового формата - шесть основных новых технологий, которые, подобно MP3, делят "сигнал" отсканированного изображения на "праведный" и "неправедный", то есть значимый и незначимый для читателя, и применяют к ним различные политики уплотнения.
Основной алгоритм - расслоение изображения. То есть при упаковке программа пытается выделить фон изображения, для которого применяются более строгие методы упаковки. Для текста и векторной графики применяются методы без графических деформаций, то есть сокращение палитр. При этом текст становится контрастнее, сохраняются четкие линии и углы, границы не расплываются. Для фона и изображений применяются алгоритмы с опорными точками, вроде тех что используются в формате JPEG. Фон и изображения "отделяются" и упаковываются как независимые фрагменты, с маскировкой (эффективно - установкой в 0 коэффициентов интерференции) тех пикселей, которые будут "накрыты" текстом - точки переднего плана не принимают участия в вычислении и не "обмениваются информацией" с точками фона. В результате символы не расплываются и не интерферируют с окружением.
Описание технических деталей находится здесь: www.djvuzone.org/djvu/techpapers/mask/index.djvu.
Даже при 1000% увеличением границы текста остаются предельно четкими, муара "а-ля" JPEG нет и в помине. Учтите также, что скриншот в формате PNG не способен передать качества DjVu
Второй "акселератор" - многопоточная двухпроходная фоновая распаковка. Технически изображение представлено массой "кластеров", для того чтобы просмотрщик мог независимо декодировать только видимые части изображения "на лету". В отличие от обычных программ, которые распаковывают все изображение, что занимает те же 25 Мб памяти для одной страницы A4 при 300 dpi, плагин DjVu использует для тех же задач оверлейную область в 2 Мб. При этом экономится как оперативная память, так и такты процессора. В результате пользователь не наблюдает "эффекта отсутствия", характерного при просмотре больших отсканированных изображений. Еще одна важная особенность - возможность использовать DjVu на очень "тонких" платформах, таких как смарт-фоны и PDA.
Под увеличением видно явное различие между качеством упаковки объектов переднего плана и заливкой фона. Результат напоминает реальную литографию XVIII-XIX веков
Также применяется уже известная техника двухпроходного уплотнения: сначала передается информация низкого разрешения - для быстрого отображения на экране. Более высокое разрешение формируется, по мере того как пользователь читает уже полученную информацию. Это имеет значение при просмотре документов по слабым соединениям: пользователь может даже сориентироваться в документе и отказаться от просмотра раньше, чем загрузится "чистовой" документ,- при поиске информации именно так зачастую и происходит.
Создатели и продукты
Формат DjVu для переноса печатных библиотек, архивов и документов в электронную форму долгое время разрабатывался в недрах лаборатории AT&T Labs (изначально - для внутреннего использования), а "экспортом" технологии и коммерческой реализацией проекта занимается компания LizardTech (вместе с той же AT&T).
Основной "формой жизни" формата является плагин для различных браузеров - оно и понятно, формат разработан для работы в интернете и интранете. Кроме того, существуют и бесплатные конверторы в DjVu из различных графических форматов, а также независимые OpenSource-просмотрщики.
При подготовке материала часть информации была заимствована с сайтов LizzardTech и "папского" сайта www.DjVuzone.org. Отметим, что значительная часть данных на этом сайте представлена как раз в формате DjVu. Так что, посетив этот ресурс, вы заодно сможете проверить и только что установленный плагин, а также убедиться, что этот формат - то, что надо (обратите внимание на разницу в представлениях DjVu и "архивированный PostScript"). На всякий случай подскажу: панель управления просмотром вы найдете всплывающей внизу окна браузера.
Надеюсь, сосканировав что-то умное, вы не забудете законвертировать это в DjVu.