Улучшить качество скана djvu
На этой странице находится подборка разнообразных "обрывочных" советов по сканированию книг для DjVu, которые не вошли в прочие мои статьи. Эта информация была собрана из форумов и трудно поддаётся упорядочиванию - но представляет определённую ценность.
Информации здесь пока совсем мало, но по мере появления она будет сюда добавляться.
1. Если хочется удалить из DjVu-файла слой "задний фон", то можно сделать следующее:
б. Или воспользоваться утилитой DjVu Layers Remove.
2. Если имя DjVu-файла содержит апостроф - то броузерный DjVu-плагин старых версий не сможет его открыть.
3. Если DjVu-файл не открывается под Windows ни одним из существующих DjVu-просмотрщиков - то отключите 2-е ядро у своего 2-ядерного микропроцессора.
4. В программе DjVu Solo 3.1, по-видимому, заблокирована проверка многих параметров из файла профилей documenttodjvu.conf - т.е. их изменения ни на что не влияют. Пока что замечен эффект лишь от установки параметра lossless=true.
5. Для того, чтобы перевести файлы из формата PNG в DjVu - воспользуйтесь виртуальным DjVu-принтером.
6. Для организации двусторонней печати из DjVu-файла можно использовать FinePrint.
7. У полутоновых рисунков-фотографий на Greyscale-сканах необходимо "размывать" растр - перед кодированием их в DjVu. Тогда при кодировании в DjVu этот рисунок попадёт в слой "задний план", а не в слой "маска" - что позволит значительно сократить размер получаемого DjVu-файла.
"Размытие" можно сделать при помощи операции Blur (или одной из её разновидностей - например, Adaptive Blur) - в любом "сложном" графическом редакторе - например, Abobe PhotoShop, PaintShop Pro, Corel PHOTO-PAINT и др.
8. Если при сканировании "просвечивается" текст с обратной стороны страницы книги - то от этого можно избавиться, если подложить за страницу лист чёрной бумаги (из фотолаборатории или рентген-кабинета).
Гарнитура - определенный тип рисунка символов у группы сходных шрифтов - например, гарнитура Times у шрифтов TimesBold, TimesNormal.
Засечки (серифы) - выступающие вверху/внизу буквы штрихи (как у буквы "н" шрифта Times New Roman).
Глиф - векторное изображение отдельного символа в шрифте, ее контур.
11. У DjVu-кодировщика есть особенность - удалять отдельные точки.
12. Если в книге есть много страниц с альбомной (не портретной) ориентацией, то перед распознаванием в FineReader'е их можно повернуть вручную на 90 градусов - чтобы текст на них распознался (или же включить опцию "Определять ориентацию страницы (при распознавании)").
При внедрении такого OCR-текста в готовую DjVu-книгу позиции изображений текста и соответствующих OCR-слов, естественно, не совпадут - однако этот OCR-текст будет восприниматься программами, осуществляющими поиск по OCR-тексту DjVu-файлов (dtSearch + DjVu IFilter, Google Desktop + его DjVu-плагин, Яндекс-Персональный поиск и т.д.)
13. TIF-файлы, создаваемые разными программами, нередко не воспринимаются DjVu-кодировщиком DEE 5.1. В этом случае их нужно пакетно "прогонять" через Irfan View - т.е. пакетное сохранение с не-изменением свойств этих TIF-файлов (а на самом деле при этом отсекаются "левые" теги TIF-файлов, на которых "спотыкается" DEE 5.1).
14. В старых LPT-сканерах типа Mustek ScanExpress 12000 P под Win2000 была такая проблема, как появление модального (т.е. не убирающегося с экрана) окошка в момент сканирования.
Есть 2 способа решения этой проблемы:
1) Самый простой. Большинство настроек работы сканера скрыто в файле "mtwm.ini". Таких файлов для каждого установленного сканера Mustek обычно 2. Один в каталоге "WINDOWS\TWAIN_32\xxx\mtwm.ini", но он ни на
что не влияет, другой в "Program Files", например, "Program Files\BearPaw 2448TA Plus\Driver" (для других моделей нечто подобное, найти проще по наличию в этом каталоге самого файла mtwm.ini или ui.exe).
Найдя файл "mtwm.ini", редактируем его. Ищем подраздел "[xxx_INFO]" или подобный (в этом подразделе обязательно есть параметр ScanSetting, но он нам не нужен, хотя если он стоит в SLWSPD, то меняем на NMLSPD). Ищем в этом подразделе параметр "SMShowStatusDlg", если есть ставим значение в "0" ("SMShowStatusDlg=0"), если нет то сами вписываем эту строчку. Теперь модальное окошко возникать не будет.
На некоторых моделях и драйверах после установки этого параметра может возникнуть глюк - при начале сканирования головка двигается на пару секунд и возвращается обратно. В этом случае изменяем параметр на
"1" ("SMShowStatusDlg=1") и используем способ 2.
2) Способ универсален. Может подойти и для других сканеров (других фирм). Как известно параметры многих окон, форм можно редактировать как ресурсы, н-р, с помощью Restorator'а. Наша задача изменить размеры
модального окошка показа статуса на 1x1 пиксел - такая небольшая серая точка мешать не будет. Или изменить сам статус окна с модального, на немодальный (это лучше).
Для моего сканера BearPaw 2400TA Plus (используется драйвер от 2448TA) параметры модального окошка содержаться в файле "Scanobj.dll".
Открываем его в Restorator'е. Нас интересует ветка "Dialogs". Тут стоит подумать, т.к. подобных искомому окну форм несколько. Методом пробок и ошибок определено, что нас интересует оккошко, где написано "Warming Up. ". Его и буде редактировать. Для этого перейдем в RC mode (Viewer\RC Mode).
Смотрим параметры окна:
------- Исходное --------
156 DIALOG 6, 15, 175, 76
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP
FONT 8, "MS Sans Serif"
-------------------------
------- Измененное ------
156 DIALOG 6, 15, 175, 76
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED
FONT 8, "MS Sans Serif"
-------------------------
Все теперь окошко появляться не будет, точнее оно будет не модальным и всплывающим (DS_MODALFRAME | WS_POPUP), а дочерним (WS_CHILD), и невидимым (WS_DISABLED).
Есть недостаток, т.к. окошко не видимо, то невозможно прервать процесс сканирования.
Можно также просто изменить размеры окошка, если не хочется менять тип окна (предыдущие изменения).
Можно также изменить тип кнопки "Scan", на нажимаемую по умолчанию (например, пробелом). Для этого редактируем файл "ui.exe". В ветке "Dialogs" ищем окошко с текстом
и изменяем тип на
Это решает проблему, когда в процессе сканирования переключаешься на
другое окно и возвращаешься обратно к TWAIN-окну - при нажатии пробела
не всегда "нажимается" кнопка "Scan".
Достоинства формата
Задачей DjVu было сохранить «свойства» бумажного документа в цифровом виде, позволив работать с такими документами даже слабым компьютерам. Поэтому ПО для просмотра DjVu-файлов обладает возможностью «быстрого рендеринга». Благодаря ей в память загружается только тот кусочек DjVu-страницы, который должен отображаться на экране.
Это также дает возможность просматривать «недокачанные» файлы, то есть отдельные страницы многостраничного DjVu-документа. При этом используется прогрессивная прорисовка деталей изображения, когда компоненты как бы «проявляются» по мере закачки файла (как в JPEG).
20 лет назад, когда был представлен этот формат, загрузка страницы происходила в три этапа: сперва грузилась текстовая составляющая, через пару секунд подгружались первые версии изображений и фон. Уже после «проявлялась» вся страница книги.
Наличие трёхуровневой структуры также позволяет осуществлять поиск по отсканированным книгам (так как есть специальный текстовый слой). Это оказалось удобно при работе с технической литературой и справочниками, поэтому DjVu стал основой для нескольких библиотек научных книг. Например, в 2002 году он был выбран Архивом Интернета в качестве одного из форматов (вместе с TIFF и PDF) для проекта по сохранению отсканированных книг из открытых источников.
Для чтения (ридеры)
WinDjView
Главное окно программы WinDjView
WinDjView - одна из самых быстрых и компактных программ для просмотра этого формата. Очень удобно, что в ней реализована непрерывная прокрутка страниц, слева предусмотрена панель быстрого перемещения по документу (содержание).
Отмечу также наличие функции расширенной печати (позволяет настроить распечатку так, как нельзя сделать в аналогичном софте). Программа основана на свободно распространяемой библиотеке DjVuLibre.
- возможность открывать сразу несколько документов (с помощью вкладок, подобно браузеру);
- наличие полноэкранной версии (облегчает чтение документа);
- возможность создания закладок;
- возможность настроить контрастность, яркость, цветовую гамму и пр. для комфортного времяпровождения;
- экспорт странички в формат картинки (GIF, JPG и JPEG);
- поддержка русского и всех популярных версий Windows 7, 8, 10.
Sumatra PDF
Чтение руководства по эксплуатации в Sumatra PDF
Очень удобная и компактная программа для просмотра всех популярных форматов электронных книг: PDF, DjVu, ePub, MOBI, XPS, CHM, CBZ и CBR. Вкупе с интерфейсом в стиле минимализма, низкими системными требованиями и простотой использования - делают ее одним из любимейших продуктов миллионов пользователей по всему Миру!
К тому же, Sumatra PDF полностью бесплатна, потребляет меньше памяти чем многие аналоги (скажем, Adobe Reader), не требует установки (можно носить с собой на флешке), поддерживает горячие клавиши, настройку отображения и т.д.
В общем, очень рекомендую к знакомству всем, кто еще не слышал об этом ПО.
Из минусов : могут быть некоторые проблемы при открытии старых DjVu файлов (видимо, все-таки, без штатного DjVu-ридера пока не обойдешься. ).
DjVuReader
DjVuReader - читаю книгу и пишу статью.
Несмотря на то, что эта программа давно не обновлялась, со своей задачей она справляется отлично! Ее основные преимущества:
- поддержка практически любых DjVu файлов;
- наличие бокового меню с содержание, эскизами и пр. - позволяет быстро перемещаться по документу;
- настройка яркости и контрастности изображения;
- низкие требования к ПК: особенно заметно при открытии больших файлах на слабых машинах;
- удобная навигация с помощью клавиатуры (можно не использовать мышку вообще!)
- маленький размер, нет необходимости в установке;
- поддержка русского, поддержка Windows XP, 7, 8, 10.
Из минусов (чисто на мой взгляд): нет плавной прокрутки страниц (привык я к этому очень).
Алгоритм ужирнения текста
1. Запускаем СканКромсатор v5.6A. Загружаем обрабатываемые tif-файлы. Выбираем в меню Edit -> Clear all options.
2. На вкладке Files ставим галку Default в поле Output dir. В поле DPI ставим значение 600 dpi.
3. На вкладке Options в поле Resample filter выбираем значение Bicubic.
4. На вкладке Quality - самое интересное. Здесь делаем в точности следующее:
a. Ставим галку Enhance image.
b. Кликаем в списке на последний файл, нажимаем кнопку Apply up to current. При этом на всех файлах в списке проставятся жирные зелёные галочки.
c. Нажимаем на клавиатуре Ctrl и ставим галку Smooth. В появившемся диалоге соглашаемся применить опцию ко всем файлам.
5. Нажимаем кнопку Process. В появившемся диалоге соглашаемся с изменением DPI выходных файлов. Начинается процесс обработки.
6. По окончании процесса обработки забираем обработанные tif-файлы из выбранной ранее Output dir. В процессе обработки может вылететь ошибка: что-то вроде "Неправильно установленный параметр". Это значит, что вы выполнили п.4 алгоритма не в абсолютной точности. Это, скорее всего, один из глюков Кромсатора.
Методики по работе с Corel PHOTO-PAINT от Arcand
По поводу сжатия. Я надолго застрял на отметке 9 кБ/стр (это о сжатии дежавю). Вроде бы сканы были хорошими и шрифт удобным, но никак не получалось увеличить сжатие. Теперь считаю, что дело в сглаживании. Неровности контуров, даже малозаметные, утяжеляют дежавю. Поэтому, с целью увеличения сжатия, сглаживание нужно делать обязательно.
Макросы - это программки, написанные на VBA. Некоторые отличия от VB имеются и связаны они в основном с тем, что макросы работают в среде программы (например, как у меня в Corel PHOTO-PAINT), а не автономно.
Применение Corel PHOTO-PAINT для обработки сканов
Говоря об обработке сканов в Корел нельзя обойти стороной СканКромсатор. При оптимальной организации работы Корела и СканКромсатора снижаются временные затраты на весь цикл кромсания-обработки, так и работы над ошибками.
Первым делом сканы поворачиваются. Для этого пишется отдельный скрипт Корел (Изображение->Повернуть->90 по или против часовой стрелки) и затем запускается пакетная обработка (о записи скрипта и его выполнении в пакетном режиме будет сказано ниже).
Далее сканы кромсаются в СканКромсаторе по полной программе с получением gray 300 дпи (предполагается, что исходные сканы также 300 дпи gray). Т.е. выполняется разрезка/обрезка, deskew и background cleaner. Despeckle выполняется отдельно, так как на серых сканах он не работает.
Одно замечание. Рекомендую установить порог в Low- или MiddleDark. Мне показалось, что СканКромсатор работает при этом пороге немного быстрее и качество deskew лучше. Во всяком случае одиночные номера страниц обрезаются реже, а если повысить соответствующую чувствительность, то у меня не обрезались даже номера, состоящие из одной цифры.
Потом запускается скрипт Корел для обработки сканов в пакетном режиме. Выходные сканы будут bw 600 дпи.
И в заключение, сканы снова загружаются в СканКромсатор (для чистки мусора). Отключаются все опции, устанавливается только Despeckle и его режим. После выполнения обработки, ручная чистка крупного мусора.
Описание обработок в Корел:
1. Адаптивное размытие. Эффекты->Размытость->Интеллектуальная размытость. В диалоге указать Количество 30-40. Если на сканах имеются бледные тонкие линии, то это число следует уменьшить.
2. Ресемплинг. Изображение->Изменить разрешение. В диалоге указать для Разрешения 600 дпи.
3. Цветокоррекция. Настройка->Увеличение контрастности. Движки сверху гистограммы установить соответственно на начало подъема (точка черного) и немного левее выхода на верхнюю полку (точка белого). Гамму можно не трогать. Результат лучше в этом и других диалогах наблюдать в сдвоенном окне просмотра (оригинал-результат). Навигация в окне (левом) такая: клик левой кнопкой мыши - увеличение, правой - уменьшение, для перемещения по скану - захватить левой кнопкой мыши и тащить.
4. Сглаживание. Эффекты->Размытость->Размывка края. В диалоге установить Процент 100, Радиус 1.
5. Контурная резкость. Эффекты->Повышение резкости->Понижение резкости по выделению. В диалоге установить Порог 0, Радиус 5, Процент 100-300. Меньшие значения процента для получения более гладких контуров букв, большие - для вытягивания их бледных перемычек.
6. Сглаживание. Эффекты->Размытость->Размывка края. В диалоге установить Процент 100, Радиус 1. Еще одно сглаживание. Чтобы при бинаризации получились более гладкие буквы.
7. Бинаризация. Изображение->Преобразовать в черно-белый (1 бит). В диалоге выбрать Метод преобразования Штриховой рисунок и Порог 140-170. Порог подбирается визуально до получения оптимального баланса гладкость-ужирнение.
Запись скрипта и его выполнение в пакетном режиме.
Загружаете в Корел какой-либо скан. Далее Окно->Окна настройки->Запись. Открывается окно докера Записи макроса (в дальнейшем докер лучше не закрывать, а сворачивать, тогда докер будет находится у правой стороны окна и для открытия достаточно щелкнуть по его заголовку). Нажать кнопку с красным кружком для начала записи (слева от нее кнопка Останова). Выполняете указанные выше обработки. По окончании нажать кнопку Остановить. Сохраняете скрипт (кнопка Сохранить), например, в папку с исходными сканами и закрываете без сохранения окно со сканом.
Выполняете пакетную обработку Файл->Пакетная обработка. В диалоге загружаете сканы для обработки и созданный для них скрипт. Если не включена, включаете флажок Закрыть файл после пакетной обработки. Если обрабатываемые сканы вам не нужны, в окне После выполнения выбираете Сохранять вместо оригинала. В противном случае, выбираете Сохранять в другом каталоге и указываете папку назначения. Нажатием кнопки Воспроизвести запускаете обработку сканов. На моей машине 300 страниц обрабатываются около часа, что весьма шустро.
Последние замечания. Все описанное относится к русской версии Corel PHOTO-PAINT X3 и к обработке черно-белых книг без серых рисунков. Для обработки книг с небольшим количеством серых рисунком данную методику требуется немного дополнить. Но об этом как-нибудь в другой раз. С обработками я еще полностью не определился, так как пока сделал немного больше одной книжки. Надо иметь ввиду, чем качественнее обработка, тем лучше сжатие. По достижении некоторого порога по качеству, сказать какая обработка лучше только по виду сканов уже невозможно. Определить это можно только по степени сжатия дежавю.
И еще, на Кореловский тиф (bw, LZW сжатие) DEE ругается. Так что все равно придется делать их (сканов) преобразование. Заодно можно и почистить :).
Краткий конспект обработок в Corel PHOTO-PAINT:
для line art (в скобках название фильтра в русской версии Корела) -
1. Адаптивное размытие (Интеллектуальная размытость);
2. Ресемплинг до 600 дпи (Изменить разрешение);
3. Тоновая коррекция (Увеличение контрастности):
4. Сглаживание;
5. Контурная резкость (Понижение резкости по выделению);
6. Сглаживание;
7. Бинаризация (преобразовать в черно-белый).
для foto (серых областей) -
1. Адаптивное размытие (Интеллектуальная размытость);
2. Ресемплинг до 600 дпи (Изменить разрешение);
3. Тоновая коррекция (Увеличение контрастности).
Об обработке обложек
Подробнее про обложки позже. Коротко. Создаете маску отдельно для текста и других не фоновых элементов (сохраняете в альфа-канале). Используете выделение по цвету, волшебную палочку и кисть выделения. Абрис выделения размываете - чтобы переходы выглядели естественно. Создаете образцы растровой заливки - выбираете их на скане, для однородной заливки задаете цвет. Ну и выполняете заливку. Для многих случаев этого ИМХО хватит.
Дополнительно:
Обработка цветного с использованием каналов
Ужирнение букв
Вариант с применением Корел. Преобразование в gray, Размывка края (ориентировочно Радиус=4) и в заключение бинаризация (Штриховой рисунок, порог подбирается по вкусу).
Бытует мнение, что на электронных книгах с e-ink дисплеями, можно комфортно читать только текстовые книжки, где можно выставить большой шрифт, а вот pdf и тем более сканы в djvu читать практически невозможно, глаза сломаешь разбирать мелкие буквы на небольшом дисплее. Спешу вас разуверить, читать такие книги вполне можно комфортно.
Это у меня уже вторая электронная книга и прочитано на ней уже довольна много книг, объемных, большая часть из которых и составляет техническая литература, которую в fb2 формате не найдешь. С книгой которую я купил первой, шла замечательная утилита JaP (Just Another Printer), которая умела нарезать pdf и djvu на куски, для четных и не четных страниц можно было выставить свою рамку, так же можно было добавить контраста, и все это дело она сохраняло в формат моей книги wolf. Для хорошего качества книг, допустим купленных или качественно сосканированных этого вполне было достаточно, но сканы плохого качества, а таких было не мало, страницы прыгали на листе, поля разнились, так что приходилось чуть ли не для каждой страницы выставлять рамку отдельно.
Такое положение вещей мне быстро надоело и я написал скрипт, который режет станицу пополам и обрезает поля, это сильно упростило подготовку книг для чтения. Но в разных книгах был разный шрифт и формат страниц и если некоторые вполне было так комфортно читать, то бывали попадались книги большого формата и не сильно крупным шрифтом, их чтение уже было не столь комфортным. Тогда то и родилась идея порезать не на две части, а на три, ради эксперимента, и результат оказался вполне отличным. Визуально буквы стали крупнее из-за того что вытянулись в длину. И хотя казалось бы, что оставшись в ширину такими-же, это будет выглядеть не очень то. Но чтение, довольно подсознательный процесс, даже смотря на очень мелкий текст я не всматриваюсь в буквы, я мельком взглянул и понимаю его смысл уже, распознавание происходит автоматом. Причем если читаем книгу, а не отдельную фразу, то мы в контексте книги и подсознание уже примерно знает какую информацию и какие слова тут можно встретить, что то же улучшает процесс распознавания. Я читаю мелкий шрифт так же быстро как и крупный, если его конечно вообще хорошо видно, но психологически комфортнее читать текст с привычным для обычных книг текстом шрифта, поэтому такой хак проходит на ура, подсознание и так вполне способно распознать текст, но с крупными буквами мне теперь читать его комфортнее.
Внизу приведен сам код скрипта, он довольна прост и без излишеств, так как писался в основном для себя. Самые главные строчки в нем это обрезание полей, разрезание страницы на три части с помощью ImageMagic и увеличение резкости, т.к. после уменьшения размера картинки резкость теряется, еще можно для запущенных вариантов поиграть с контрастом. Работу скрипта проверял на Ubuntu 10.04, для работы должны быть установлены ImageMagic, libtiff, pdftk и DjvuLibre. Как показала практика, djvu несколько тяжеловат для моего ридера, а вот pdf встроенный xPdf читает просто на ура, скорость перелистывания в pdf-файлах размером более 300Мб на уровне того же fb2. Да кстати о размере, файлы получаются огромными от 100Мб и до 300 и больше даже, в принципе при сегодняшней цене на флешь память это не так критично. Пробовал уменьшать DPI но при 16 градациях это заметно становится, поэтому оставил как есть, может кто подскажет как уменьшить размер без заметных потерь в качестве, буду благодарен.
Собственно получившийся результат, на качество картинок не обращайте внимания, фотал на мыльницу, без вспышки, что бы исключить блики. Книга порезанная пополам, без полей:
Книга со страницами порезанными на три части:
А вот для примера и книга со страницами порезанными на четыре части, по мне так уже немного перебор:
UPD: Пользователем alakond был предложен способ как несколько снизить размер выходного файла, для этого использовать PNG формат в качестве промежуточного формата изображений вместо Jpeg, в скрипт добавлены его изменения для выбора промежуточного формата.
Доброго времени суток!
Я почти уверен, что любители электронных книг уже десятки раз встречались с этим форматом - DjVu (даже его написание несколько необычно?).
Он обладает уникальной особенностью: степень сжатия сканированного документа в нем (да и вообще любых картинок) - превосходит всех конкурентов (удивительно, но она выше чем у PDF). Благодаря чему, даже самую большую книгу можно поместить в компактный файл и передать ее по сети.
Однако, в силу специфичности формата, открыть его можно далеко не в каждой программе (да и открыв, во многих ридерах читать и пользоваться документом не так удобно). В этой статье порекомендую несколько незаменимых программок, которые открывают 99,99% DjVu-файлов, корректно их отображают, и позволяют комфортно работать с ними.
Методики по работе с Corel PHOTO-PAINT от Arcand
По поводу сжатия. Я надолго застрял на отметке 9 кБ/стр (это о сжатии дежавю). Вроде бы сканы были хорошими и шрифт удобным, но никак не получалось увеличить сжатие. Теперь считаю, что дело в сглаживании. Неровности контуров, даже малозаметные, утяжеляют дежавю. Поэтому, с целью увеличения сжатия, сглаживание нужно делать обязательно.
Макросы - это программки, написанные на VBA. Некоторые отличия от VB имеются и связаны они в основном с тем, что макросы работают в среде программы (например, как у меня в Corel PHOTO-PAINT), а не автономно.
Применение Corel PHOTO-PAINT для обработки сканов
Говоря об обработке сканов в Корел нельзя обойти стороной СканКромсатор. При оптимальной организации работы Корела и СканКромсатора снижаются временные затраты на весь цикл кромсания-обработки, так и работы над ошибками.
Первым делом сканы поворачиваются. Для этого пишется отдельный скрипт Корел (Изображение->Повернуть->90 по или против часовой стрелки) и затем запускается пакетная обработка (о записи скрипта и его выполнении в пакетном режиме будет сказано ниже).
Далее сканы кромсаются в СканКромсаторе по полной программе с получением gray 300 дпи (предполагается, что исходные сканы также 300 дпи gray). Т.е. выполняется разрезка/обрезка, deskew и background cleaner. Despeckle выполняется отдельно, так как на серых сканах он не работает.
Одно замечание. Рекомендую установить порог в Low- или MiddleDark. Мне показалось, что СканКромсатор работает при этом пороге немного быстрее и качество deskew лучше. Во всяком случае одиночные номера страниц обрезаются реже, а если повысить соответствующую чувствительность, то у меня не обрезались даже номера, состоящие из одной цифры.
Потом запускается скрипт Корел для обработки сканов в пакетном режиме. Выходные сканы будут bw 600 дпи.
И в заключение, сканы снова загружаются в СканКромсатор (для чистки мусора). Отключаются все опции, устанавливается только Despeckle и его режим. После выполнения обработки, ручная чистка крупного мусора.
Описание обработок в Корел:
1. Адаптивное размытие. Эффекты->Размытость->Интеллектуальная размытость. В диалоге указать Количество 30-40. Если на сканах имеются бледные тонкие линии, то это число следует уменьшить.
2. Ресемплинг. Изображение->Изменить разрешение. В диалоге указать для Разрешения 600 дпи.
3. Цветокоррекция. Настройка->Увеличение контрастности. Движки сверху гистограммы установить соответственно на начало подъема (точка черного) и немного левее выхода на верхнюю полку (точка белого). Гамму можно не трогать. Результат лучше в этом и других диалогах наблюдать в сдвоенном окне просмотра (оригинал-результат). Навигация в окне (левом) такая: клик левой кнопкой мыши - увеличение, правой - уменьшение, для перемещения по скану - захватить левой кнопкой мыши и тащить.
4. Сглаживание. Эффекты->Размытость->Размывка края. В диалоге установить Процент 100, Радиус 1.
5. Контурная резкость. Эффекты->Повышение резкости->Понижение резкости по выделению. В диалоге установить Порог 0, Радиус 5, Процент 100-300. Меньшие значения процента для получения более гладких контуров букв, большие - для вытягивания их бледных перемычек.
6. Сглаживание. Эффекты->Размытость->Размывка края. В диалоге установить Процент 100, Радиус 1. Еще одно сглаживание. Чтобы при бинаризации получились более гладкие буквы.
7. Бинаризация. Изображение->Преобразовать в черно-белый (1 бит). В диалоге выбрать Метод преобразования Штриховой рисунок и Порог 140-170. Порог подбирается визуально до получения оптимального баланса гладкость-ужирнение.
Запись скрипта и его выполнение в пакетном режиме.
Загружаете в Корел какой-либо скан. Далее Окно->Окна настройки->Запись. Открывается окно докера Записи макроса (в дальнейшем докер лучше не закрывать, а сворачивать, тогда докер будет находится у правой стороны окна и для открытия достаточно щелкнуть по его заголовку). Нажать кнопку с красным кружком для начала записи (слева от нее кнопка Останова). Выполняете указанные выше обработки. По окончании нажать кнопку Остановить. Сохраняете скрипт (кнопка Сохранить), например, в папку с исходными сканами и закрываете без сохранения окно со сканом.
Выполняете пакетную обработку Файл->Пакетная обработка. В диалоге загружаете сканы для обработки и созданный для них скрипт. Если не включена, включаете флажок Закрыть файл после пакетной обработки. Если обрабатываемые сканы вам не нужны, в окне После выполнения выбираете Сохранять вместо оригинала. В противном случае, выбираете Сохранять в другом каталоге и указываете папку назначения. Нажатием кнопки Воспроизвести запускаете обработку сканов. На моей машине 300 страниц обрабатываются около часа, что весьма шустро.
Последние замечания. Все описанное относится к русской версии Corel PHOTO-PAINT X3 и к обработке черно-белых книг без серых рисунков. Для обработки книг с небольшим количеством серых рисунком данную методику требуется немного дополнить. Но об этом как-нибудь в другой раз. С обработками я еще полностью не определился, так как пока сделал немного больше одной книжки. Надо иметь ввиду, чем качественнее обработка, тем лучше сжатие. По достижении некоторого порога по качеству, сказать какая обработка лучше только по виду сканов уже невозможно. Определить это можно только по степени сжатия дежавю.
И еще, на Кореловский тиф (bw, LZW сжатие) DEE ругается. Так что все равно придется делать их (сканов) преобразование. Заодно можно и почистить :).
Краткий конспект обработок в Corel PHOTO-PAINT:
для line art (в скобках название фильтра в русской версии Корела) -
1. Адаптивное размытие (Интеллектуальная размытость);
2. Ресемплинг до 600 дпи (Изменить разрешение);
3. Тоновая коррекция (Увеличение контрастности):
4. Сглаживание;
5. Контурная резкость (Понижение резкости по выделению);
6. Сглаживание;
7. Бинаризация (преобразовать в черно-белый).
для foto (серых областей) -
1. Адаптивное размытие (Интеллектуальная размытость);
2. Ресемплинг до 600 дпи (Изменить разрешение);
3. Тоновая коррекция (Увеличение контрастности).
Об обработке обложек
Подробнее про обложки позже. Коротко. Создаете маску отдельно для текста и других не фоновых элементов (сохраняете в альфа-канале). Используете выделение по цвету, волшебную палочку и кисть выделения. Абрис выделения размываете - чтобы переходы выглядели естественно. Создаете образцы растровой заливки - выбираете их на скане, для однородной заливки задаете цвет. Ну и выполняете заливку. Для многих случаев этого ИМХО хватит.
Дополнительно:
Обработка цветного с использованием каналов
Ужирнение букв
Вариант с применением Корел. Преобразование в gray, Размывка края (ориентировочно Радиус=4) и в заключение бинаризация (Штриховой рисунок, порог подбирается по вкусу).
Бытует мнение, что на электронных книгах с e-ink дисплеями, можно комфортно читать только текстовые книжки, где можно выставить большой шрифт, а вот pdf и тем более сканы в djvu читать практически невозможно, глаза сломаешь разбирать мелкие буквы на небольшом дисплее. Спешу вас разуверить, читать такие книги вполне можно комфортно.
Это у меня уже вторая электронная книга и прочитано на ней уже довольна много книг, объемных, большая часть из которых и составляет техническая литература, которую в fb2 формате не найдешь. С книгой которую я купил первой, шла замечательная утилита JaP (Just Another Printer), которая умела нарезать pdf и djvu на куски, для четных и не четных страниц можно было выставить свою рамку, так же можно было добавить контраста, и все это дело она сохраняло в формат моей книги wolf. Для хорошего качества книг, допустим купленных или качественно сосканированных этого вполне было достаточно, но сканы плохого качества, а таких было не мало, страницы прыгали на листе, поля разнились, так что приходилось чуть ли не для каждой страницы выставлять рамку отдельно.
Такое положение вещей мне быстро надоело и я написал скрипт, который режет станицу пополам и обрезает поля, это сильно упростило подготовку книг для чтения. Но в разных книгах был разный шрифт и формат страниц и если некоторые вполне было так комфортно читать, то бывали попадались книги большого формата и не сильно крупным шрифтом, их чтение уже было не столь комфортным. Тогда то и родилась идея порезать не на две части, а на три, ради эксперимента, и результат оказался вполне отличным. Визуально буквы стали крупнее из-за того что вытянулись в длину. И хотя казалось бы, что оставшись в ширину такими-же, это будет выглядеть не очень то. Но чтение, довольно подсознательный процесс, даже смотря на очень мелкий текст я не всматриваюсь в буквы, я мельком взглянул и понимаю его смысл уже, распознавание происходит автоматом. Причем если читаем книгу, а не отдельную фразу, то мы в контексте книги и подсознание уже примерно знает какую информацию и какие слова тут можно встретить, что то же улучшает процесс распознавания. Я читаю мелкий шрифт так же быстро как и крупный, если его конечно вообще хорошо видно, но психологически комфортнее читать текст с привычным для обычных книг текстом шрифта, поэтому такой хак проходит на ура, подсознание и так вполне способно распознать текст, но с крупными буквами мне теперь читать его комфортнее.
Внизу приведен сам код скрипта, он довольна прост и без излишеств, так как писался в основном для себя. Самые главные строчки в нем это обрезание полей, разрезание страницы на три части с помощью ImageMagic и увеличение резкости, т.к. после уменьшения размера картинки резкость теряется, еще можно для запущенных вариантов поиграть с контрастом. Работу скрипта проверял на Ubuntu 10.04, для работы должны быть установлены ImageMagic, libtiff, pdftk и DjvuLibre. Как показала практика, djvu несколько тяжеловат для моего ридера, а вот pdf встроенный xPdf читает просто на ура, скорость перелистывания в pdf-файлах размером более 300Мб на уровне того же fb2. Да кстати о размере, файлы получаются огромными от 100Мб и до 300 и больше даже, в принципе при сегодняшней цене на флешь память это не так критично. Пробовал уменьшать DPI но при 16 градациях это заметно становится, поэтому оставил как есть, может кто подскажет как уменьшить размер без заметных потерь в качестве, буду благодарен.
Собственно получившийся результат, на качество картинок не обращайте внимания, фотал на мыльницу, без вспышки, что бы исключить блики. Книга порезанная пополам, без полей:
Книга со страницами порезанными на три части:
А вот для примера и книга со страницами порезанными на четыре части, по мне так уже немного перебор:
UPD: Пользователем alakond был предложен способ как несколько снизить размер выходного файла, для этого использовать PNG формат в качестве промежуточного формата изображений вместо Jpeg, в скрипт добавлены его изменения для выбора промежуточного формата.
Доброго времени суток!
Я почти уверен, что любители электронных книг уже десятки раз встречались с этим форматом - DjVu (даже его написание несколько необычно?).
Он обладает уникальной особенностью: степень сжатия сканированного документа в нем (да и вообще любых картинок) - превосходит всех конкурентов (удивительно, но она выше чем у PDF). Благодаря чему, даже самую большую книгу можно поместить в компактный файл и передать ее по сети.
Однако, в силу специфичности формата, открыть его можно далеко не в каждой программе (да и открыв, во многих ридерах читать и пользоваться документом не так удобно). В этой статье порекомендую несколько незаменимых программок, которые открывают 99,99% DjVu-файлов, корректно их отображают, и позволяют комфортно работать с ними.
Недостатки формата
Однако, как и все технологии, DjVu имеет свои минусы. Например, при кодировании сканов книг в формат DjVu некоторые символы в документе могут подменяться на другие, внешне похожие. Наиболее часто это происходит с буквами «и» и «н», отчего эта проблема получила название «проблема инь». Она не зависит от языка текста и влияет, в том числе, на цифры и другие мелкие повторяющиеся знаки.
Её причина — ошибки классификации символов в кодировщике JB2. Он «дробит» сканы на группы по 10–20 штук и формирует для каждой из групп словарь общих символов. Словарь содержит образцы общих букв и цифр со страницами и координатами их появления. Когда вы просматриваете DjVu-книгу, символы из словаря подставляются в нужные места.
Это позволяет уменьшить размеры DjVu-файла, однако, если отображения двух букв визуально похожи, кодировщик может их или перепутать, или принять за одинаковые. Иногда это приводит к порче формул в техническом документе. Для решения этой проблемы можно отказаться от алгоритмов сжатия, однако это увеличит размеры цифровой копии книги.
Другим недостатком формата является то, что он не поддерживается по умолчанию во многих современных ОС (в том числе мобильных). Поэтому для работы с ним нужно ставить сторонние программы, такие как DjVuReader, WinDjView, Evince и др. Однако здесь хотелось бы отметить, что некоторые электронные читалки (например, ONYX BOOX) поддерживает формат DjVu «из коробки» — так как необходимые приложения там уже установлены.
Кстати, о том, что еще могут приложения для ридеров на базе Android, мы рассказывали в одном из предыдущих материалов.
Ридер ONYX BOOX Chronos
Еще одна проблема формата проявляется при работе с DjVu-документами на небольших экранах мобильных устройств — смартфонах, планшетах, ридерах. Иногда DjVu-файлы представлены в виде скана разворота книги, а профессиональная литература и рабочие документы часто имеют формат А4, поэтому приходится «двигать» изображение в поисках информации.
Однако отметим, что эта проблема также решаема. Проще всего, конечно, поискать документ в другом формате — но если такой вариант невозможен (например, вам нужно работать с большим количеством технической литературы в DjVu), то можно воспользоваться электронными читалками с большой диагональю от 9,7 до 13,3 дюйма, которые специально «заточены» под работу с подобными документами.
Например, в линейке ONYX BOOX такими устройствами являются Chronos и MAX 2 (кстати, мы подготовили обзор этой модели ридера, и в скором времени опубликуем его в нашем блоге), а также Note, который имеет экран E Ink Mobius Carta с диагональю 10,3 дюйма и повышенным разрешением. Такие устройства позволяют спокойно рассмотреть все детали иллюстраций в оригинальном размере и подойдут тем, кому часто приходится читать учебную или техническую литературу. Для просмотра файлов DjVu и PDF используется NEO Reader, который дает настраивать контраст и толщину оцифрованных шрифтов.
Несмотря на имеющиеся у формата недостатки, на сегодняшний день DjVu остается одним из самых популярных форматов для «сохранения» литературных произведений. Во многом это обусловлено тем, что он является открытым, а обойти его некоторые технологические ограничения сегодня позволяют современные технологии и разработки.
В следующих материалах мы продолжим рассказ об истории появления форматов электронных книг и особенностях их работы.
В своей статье о СканКромсаторе vadimir предложил приём улучшающей обработки сканов - повышающий ресемплинг с одновременным применением 2 фильтров - Blur и Sharpen (в СканКромсаторе). О том, что такое ресемплинг, можно прочитать в моей статье Что такое DPI и ресемплинг.
Я провёл ряд натурных экспериментов с целью изучения особенностей и возможностей этой операции. Правда, из статьи vadimir неясно, какие сканы подвергались повышающему ресемплингу - серые или чёрно-белые, я использовал только чёрно-белые.
По результатам экспериментов выяснилось, что все 3 фильтра на вкладке Quality в Кромсаторе - Smooth, Blur, Sharpen - практически полностью эквивалентны друг другу (по производимому эффекту). По крайней мере, в отношении чёрно-белых сканов. Сравнение производилось по готовым DjVu-файлам, созданным из тестовых сканов, путём быстрого попеременного переключения DjVu-файлов. При таком способе сравнения достигается "мультипликационный эффект": глаз замечает мельчайшую разницу в деталях 2 вариантов одной и той же страницы.
Разница по фильтрам была обнаружена лишь в отдельных крайне редких буквах, которые просто чуть-чуть меняют свою форму. Поэтому применять именно связку "Blur + Sharpen" практически не имеет смысла, это просто увеличивает в 1,5 раза (замерянное) время обработки сканов. Вполне достаточно использовать один из этих 3 фильтров (любой), например, Smooth.
Все эти фильтры ужирняют буквы. При этом значительно улучшается вид бледного и плохо пропечатанного текста (со слабыми перемычками букв), а также скругляются зазубренные и ступенчатые буквы.
На вкладке Quality любому из этих 3 фильтров можно назначить желаемое количество проходов обработки (каждого скана) - от 1 до 5. Были испробованы все 5 вариантов, и выяснилось следующее:
Количество проходов:
1 - 4: Качество текста неизменно, только размер tif-файла чуть растёт от 1 к 4.
5: Качество текста получается хуже.
Делаем вывод, что оптимально использовать количество проходов = 1 (для наилучшего быстродействия).
На вкладке Options есть поле Resample filter. Здесь можно выбрать, по какому алгоритму будет осуществляться повышающий ресемплинг в нашей обработке сканов. Были испробованы все варианты значений фильтров, и оказалось, что:
Интерполяционные фильтры:
Самый плохой (по качеству) - Linear
Fast linear, Bilinear, Bicubic - все 3 абсолютно эквивалентны. Замеренная скорость обработки - одинаковая, секунда в секунду.
Вывод:
Ужирнение букв удобнее всего делать так:
Resample filter = Bicubic
В целом, читабельность текста значительно улучшается после применения такой операции. Но, в то же время, и размер результирующего DjVu-файла возрастает в 1,5-2 раза! На мой взгляд, эту операцию не следует применять при самостоятельном создании DjVu-книг - достаточно лишь качественно отсканировать бумажную книгу. Но такой подход становится совершенно незаменимым при переделке чужих некачественных DjVu-книг (только таких, где текст плохо пропечатан) - когда исходные сканы недоступны, а переделанная в нормальный вид книга становится почти что совсем не читабельной (или неприятно-читабельной). В этом случае такая операция (или аналогичная) - единственный выход, т.к. в противном случае переделанную книгу можно просто выбросить из-за крайне низкой читабельности.
Как DjVu сжимает документы
DjVu может работать как с бумажными отсканированными документами, так и с другими цифровыми форматами, например PDF. В основе работы DjVu лежит технология, разбивающая изображение на три компонента: передний план, задний план и чёрно-белую (битовую) маску.
Маска сохраняется с разрешением исходного файла и содержит изображение текста и прочие чёткие детали — тонкие линии и схемы — а также контрастные картинки.
Она имеет разрешение 300 dpi, чтобы тонкие линии и контуры букв оставались четкими, и сжимается с помощью алгоритма JB2, который представляет собой вариацию алгоритма JBIG2, предложенного AT&T для работы факсов. Особенностью JB2 является то, что он ищет на странице повторяющиеся символы и сохраняет их изображение только один раз. Таким образом, в многостраничных документах каждые несколько последовательных страниц пользуются общим «словарём».
Задний план содержит текстуру страницы и иллюстрации, а его разрешение меньше, чем у маски. Фон без потерь для восприятия сохраняется с разрешением 100 dpi.
Передний план хранит цветовую информацию о маске, и его разрешение обычно понижается ещё сильнее, так как в большинстве случаев цвет текста черный и одинаковый для одного печатного знака. Для сжатия переднего и заднего планов используется вейвлетное сжатие.
Заключительным этапом создания DjVu-документа становится энтропийное кодирование, когда адаптивный арифметический кодировщик превращает последовательности одинаковых символов в бинарное значение.
Возникновение формата
DjVu был разработан в 1996 году компанией AT&T Labs с одной целью — дать веб-разработчикам инструмент для распространения изображений в высоком разрешении через интернет.
Дело в том, что в то время 90% всей информации все еще хранилось на бумаге, а многие из важных документов имели цветные изображения и фотографии. Чтобы сохранить читаемость текста и качество картинок, приходилось делать сканы в высоком разрешении.
Классические веб-форматы — JPEG, GIF и PNG — позволяли работать с такими изображениями, но ценой объема. В случае JPEG, чтобы текст был читаем на экране монитора, приходилось сканировать документ с разрешением 300 dpi. Цветная страница журнала при этом занимала порядка 500 Кбайт. Скачивание файлов такого объема из интернета в то время было довольно трудоемким процессом.
С целью решить эти проблемы AT&T и разработали DjVu. Он позволил сжимать отсканированные цветные документы с разрешением 300 dpi до 40–60 Кбайт, при размере оригинала в 25 Мбайт. Размеры чёрно-белых страниц DjVu уменьшил до 10–30 Кбайт.
Примеры ужирнения текста
В левой части примеров показан скан до обработки, в правой части - после. Примеры сделаны на базе скриншотов готовых DjVu-файлов, открытых в WinDjView. Во всех примерах переделывается некая низкокачественная чужая DjVu-книга, так что исходные сканы отсутствуют. Во всех случаях применение ужирнения текста вызвало рост размера результирующего DjVu-файла в 1,5-2 раза по сравнению с контрольным DjVu-файлом. Однако, на мой взгляд, повышение читабельности DjVu-файла оправдывает рост его размера (по крайней мере, при переделке чужих "плохих" книг).
Для создания DjVu (кодирование/декодирование)
DjVu Small
DjVu Small - как создать за 4 клика мышки файл DjVu
Это одна из самых простых программ для создания DjVu-файлов (из обычных картинок, с которыми все привыкли работать: TIF, JPG, BMP, GIF и PNG). Программа очень удобна, универсальна, работает практически во всех ОС Windows 98/NT/XP/7/8/10.
Отмечу, что программа может как сжимать одну или несколько картинок в DjVu (это называется кодированием ), так и разжимать (т.е. декодировать - получить/извлекать из DjVu картинки).
Программа не нуждается в установке. Поддерживает русский интерфейс.
Для сжатия картинок в DjVu в ней необходимо (см. скрин выше):
- открыть папку или файлы;
- выбрать папку, где будет сохранен полученный файл;
- выбрать качество (вот здесь довольно сложно дать конкретную рекомендацию, т.к. выбирать нужно исходя из исходного качества. Для начала я рекомендую выбрать вариант "Default", если качество/размер файла не устроит - поменяете на отличный вариант);
- нажать кнопку "Пуск".
DjVu DocExpress
Очень мощная программа для создания и редактирования DjVu документов. Например, программа может перевернуть сразу все страницы на 90-80 градусов, создать ссылки на страницы внутри файла или на отдельные страницы в сети интернет.
Что касается создания в ней файла DjVu, то здесь все просто:
- сначала открываете одну картинку (любую). Используйте меню "File/Open" (см. скрин выше);
- далее щелкаете по картинке правой кнопкой мышки и в меню выбираете вариант "Insert Pages After" (т.е. вставить еще дополнительно картинки после этой). Выбираете сразу 10-20 (или сотню ) и добавляете в проект.
Вставка доп. картинок после этой
Задаем настройки и место сохранения
PdfToDjvuGUI
Одно из самых простейших решений - это PdfToDjvuGUI. Суть в том, что можно создавать DjVu не из картинок (как в предыдущих вариантах), а из PDF файла. В некоторых случаях это гораздо удобнее и быстрее.
После запуска программы, достаточно выбрать файл (кнопка "Add PDF"), а затем кликнуть по кнопке "Generate DjVu" (при необходимости задать настройки сжатия).
После чего запуститься автоматическое конвертирование файла (просто подождите пока "черное" окно будет закрыто). Файл DjVu будет создан в том же каталоге, в котором находился добавленный на конвертацию PDF.
Онлайн-сервисы конвертирования
Сейчас в сети довольно-таки много сервисов, предлагающих загрузить к ним файл и быстро его конвертировать в DjVu. Конечно, их вряд ли можно использовать для сканированных документов (все-таки, в них часто содержаться личные и корпоративные сведения). Но для примера, приведу парочку вариантов:
В начале 70-х годов американский писатель Майкл Харт (Michael Hart) сумел получить неограниченный доступ к компьютеру Xerox Sigma 5, установленному в университете штата Иллинойс. Чтобы достойно использовать ресурсы машины, он решил создать первую электронную книгу, перепечатав Декларацию независимости США.
Сегодня цифровая литература получила широкое распространение, во многом благодаря развитию портативных устройств (смартфонов, ридеров, ноутбуков). Это привело к появлению большого количества форматов электронных книг. Попробуем разобраться в их особенностях и расскажем историю наиболее популярных из них — начнем с формата DjVu.
/ Flickr / Lane Pearman / CC
Читайте также: