Jan 30, 2011 00:14
Дано - цветной школьный учебник (японского языка, но это к делу не относится). Как его лучше всего отсканировать, чтоб выложить в сеть?
С одной стороны, в чём вопрос - сканируем джейпегами, объединяем в PDF и выкладываем. С другой стороны, так как учебник цветной, скан каждой страницы выходит по мегабайту весом, а значит весь учебник будет весить 200 мегабайт, что абсолютно неправильно. Был бы учебник чёрно-белым - справились бы запросто, а так цветная информация столько места занимает, что задачка становится нетривиальной. Кроме того, так как это всё-таки учебник, важно, чтобы были чётко видны все слова, буквы и закорючки на картинках, то есть особой потери качества допустить также нельзя. Что же делать?
Этой задаче мы посвятили сегодня часов пять в нашей компьютерной лаборатории. И вот что мы узнали.
Для этой цели лучше всего подходит формат DJVU. Процесс работы должен быть следующим:
1) Сканируем страницы книги в файлы формата JPEG в разрешении 600dpi (это значение надо задать в настройках сканера, в нашем случае пользовались Brother 135C).
Если есть такая возможность, сканирование стоит делать через программу общения сканера с компом, где, как правило, существует кнопка PreScan, после нажатия на которую на экране появляется уменьшенное изображение страницы, на основании которого можно, во-первых, судить о необходимости выровнять лежающую на сканере книгу, а главное - определить участок сканирования, обрубая специальными линеечками тени, возникающие на стыке страниц, а также серые участки, находящиеся за границами страницы.
Если крышка вашего сканера не снимается, а сканируемая книга достаточно большая (скажем, формата А4), сканировать следует чётные и нечётные страницы по-отдельности, каждый тип - в отдельную директорию. Это связно с тем, что отсканировать нечётные (или чётные, в зависимости от книги и модели сканера) страницы в привычном направлении не получится, и после сканирования их надо будет разворачивать на 180 градусов. В этом случае жизненно необходимо иметь все страницы, которые предстоит развернуть, в отдельной директории.
Отсканированный файлы называйте просто цифрами, соответствующими порядковому номеру отсканированной страницы: 1.jpeg, 2.jpeg, 3.jpeg и т.д. Если вы вынуждены сканировать чётные и нечётные страницы в разные директории (так как нечётные ещё предстоит развернуть на 180 градусов), то при сканировании чётных страниц именуйте их чётными числами 2.jpeg, 4.jpeg, 6.jpeg, а при сканировании нечётных - нечётными. Очень важно соблюдать строгую последовательность нумерации, чтобы потом, когда вы отсканируете и обработаете, скажем, двести страниц - каждую в отдельном файле, - не возникло вопросов, в каком порядке их следует объединять в единый файл в самом конце процесса.
Не забывайте, что страница 1.jpeg - это обложка книги, а не та страница, которая в книге фигурирует под цифрой 1! В стандартной книге есть обложка, затем несколько страниц с заглавием и выходными данными, затем (если книга не по-русски) - оглавление, потом - предисловие, которое зачастую имеет собственную нумерацию римскими цифрами, и лишь потом идут страницы с обыкновенной нумерацией. Поэтому очень часто оказывается, что страница, которой издатели присвоили номер 1, у вас окажется страницой номер 39 или даже 135 (если предисловие было очень длинным, например).
Впрочем, при нумерации чётных и нечётных страниц, сканируемых в разные директории, можно сэкономить кучу сил и времени, если применить одну маленькую хитрость: можно выставить на сканере внесение автоматической нумерации файлов в автоматически же даваемые им имена (многие, если не большинство, сканнеров этот вариант поддерживают). Нумерация ведётся сканером с нуля и до бесконечности, но в каждой папке, куда он сканирует первый раз, начинается заново для каждого файлового формата. Таким образом мы сможем не выводить поле выбора имени для каждой отдельно взятой страницы, а в конце процесса в обеих директориях - для чётных и для нечётных страниц - будут находиться файлы с одинаковыми именами: от, скажем, Epson01 до Epson250 (если в сканируемой книге 500 страниц). Затем файлы из нечётной папки нужно открыть в программе Total Commander, выбрать их, запустить инструмент многофайлового переименования (multi-renaming tool), и затем с помощью опции Counter (выглядит как буква С в квадратных скобках) переименовать все файлы таким образом, чтобы они приняли вид от 001.jpg и до 499.jpg с переходом через 1 (то есть, только нечётные числа). Для осуществления этого переименования нужно букву N в квадратных скобках в поле свободного ввода в левом верхнем углу заменить на букву латинскую (не путать раскладки!) С (квадратные скобки нужно оставить), а в правом верхнем углу в параметрах этого самого Counter-а выставить следующие значения: начальный номер - 1, прыжок через - 2, общее количество разрядов - 3 (или 4, если страниц больше тысячи). Для подробной информации читайте справку к Total Commander (например, замечательную книгу на русском языке Власова и Казакова). Нетрудно догадаться, что на следующем этапе мы откроем в Тотале все файлы из папки с чётными страницами, выберем их, запустим инструмент многофайлового переименования и повторим операцию с той только разницей, что в параметрах Counter-а в верхней строчке в правой части экрана мы выставим начальный номер 2. В результате операции в папке чётных страниц должны появиться файлы 002.jpg, 004.jpg, 006.jpg и так далее вплоть до 500.jpg (если в нашей книге 500 страниц).
2) Теперь открываем отсканированные файлы в Фотошопе. Если страницы были отсканированны криво, тени не обрезаны или чётные/нечётные страницы не развёрнуты - самое время исправить это сейчас. Главная же цель наших действий в Фотошопе - уменьшить разрешение до 400dpi и сохранить новый файл на жёстком диске всё в том же формате JPEG, но в новой директории.
Большую часть действий в Фотошопе можно (и нужно!) автоматизировать. В версии CS5.5 для этого следует сделать сначала записать макрос (это делается как в Ворде - вы осуществляете какие-то действия, а программа запоминает их последовательность), а затем указать, из какой директории брать файлы, к которым этот макрос будет применён, и в какую директорию сохранять их после обработки.
Чтобы записать макрос следует сделать следующее:
а) Открыть один из файлов, которые необходимо обработать.
б) Открыть панель Actions (Window>Actions).
в) В верхнем самом правом углу открывшейся панели нажать на малюсенький значок списка с микроскопическим треугольничком-стрелочкой с левой стороны от него, затем из открывшегося списка выбрать New Action.
г) В открывшемся окне вписываем имя нового макроса, жмём на Record и проводим над открытым файлом все необходимые операции; программа же их запоминает. В конце записи макроса жмём на кнопочку Stop, появившуюся с началом записи макроса в левом нижнем углу панели Actions. Новый макрос добавляется в список Actions в одноимённой панели.
Конечно же, к моменту начала записи макроса вы должны прекрасно помнить, что и как собираетесь делать; кроме того, макросы для начала следует делать достаточно короткими (пара-тройка действий, не более того), пока не наберётесь опыта. Но для нас большего и не требуется.
Например, чтобы изменить разрешение файла до 400 dpi и сохранить его в определённой директории, достаточно провести следующую последовательность действий: Ctrl+Alt+I, в открывшемся окне в окошечке dpi заменить существующее значение на 400, Ctrl+Shift+S (Save As), в открывшемся окне выбираем произвольную директорию для сохранения результата (она нужна лишь для проформы, ничего, кроме этого подопытного файла, сохранять в ней мы не будем, поэтому указать можно любую существующую директорию, а сохранённый в ней в ходе записи макроса файл не забываем удалить), затем на открывшемся окошке JPEG Options жмём на OK. Всё, запись макроса можно останавливать.
Если нечётные страницы были отсканированны таким образом, что (в отличие от чётных) их нужно развернуть на 180 градусов, то в предыдущем макросе между заменой существующего значения dpi на 400 и нажатием Ctrl+Shift+S нужно выбрать следующую опцию из верхнего меню: Image>Image Rotation>180. Эту последовательность стоит сохранить отдельным от указанного в предыдущем параграфе макросом (он будет использоваться лишь для тех страниц, которые надо ещё и разворачивать).
Подобным образом можно ввести в макросы шаги по выравниванию страниц относительно линейки, ретуши теней и т.п. - впрочем, это я не пробовал, поэтому за результат не отвечаю.
Теперь, когда у нас есть макрос, уменьшающий разрешение до 400 dpi (и в случае необходимости ещё один, также разворачивающий страницы на 180 градусов), нужно дать программе указание, из какой директории брать файлы, к которым этот макрос будет применён, и в какую директорию сохранять их после обработки. Для этого следует:
а) Открыть File>Automation>Batch.
б) В открывшемся окне в верхнем разделе Play выбрать из списка Actions записанный нами макрос.
в) В разделе Source выбрать из открывающегося меню опцию Folder (если она не выбрана автоматически).
г) В том же самом разделе нажать на кнопку Choose и выбрать ту директорию, из которой будут браться файлы на обработку выбранным макросом.
д) В разделе Destination выбрать из открывающегося меню опцию Folder (если она не выбрана автоматически).
е) В том же самом разделе нажать на кнопку Choose и выбрать ту директорию, в которую будут сохраняться обработанные файлы. Во избежание различных проблем не поленитесь создать для этой цели новую пустую директорию, а не указывать какую-то существующую. Если в ходе сканирования вы были вынуждены сохранять чётные и нечётные страницы в разных директориях, результаты их фотошопной обработки можете смело сохранять в одну и ту же директорию - ведь из Фотошопа ваши нечётные файлы выходят уже развёрнутыми на 180 градусов.
ж) Ни в коем случае не забудьте поставить галочку против опции Override Action "Save As" Commands под кнопкой Choose в разделе Destination! Это поможет избежать одной противной проблемы, о которой мне просто лень писать.
3) Теперь наши файлы готовы к обработке программой DJVU Solo, на выходе из которой мы получим готовый djvu-файл разумного размера.
а) Итак, открываем (File>Open) файл 1.jpeg (переднюю обложку книги; я даже не рассматриваю ситуации, при которой вы назвали её как-то иначе) из директории отфотошоппленных файлов бесплатной программой DJVU Solo.
б) Теперь выбираем опцию Edit>Append Page(s), и в открывшемся окне выбираем все файлы, кроме первого (ведь он у нас уже открыт в программе). Программа зависает на несколько минут, в её заголовке могут даже возникнуть слова Not Responding, но волноваться не надо - спокойно дожидаемся покуда все выбранные файлы будут открыты в DJVU Solo. Это может занять больше десяти минут, но мы спокойно ждём!
в) Все файлы открыты в левой панели? Прекрасно! Теперь в верхнем меню жмём File>Encode DJVU. Выбираем название конечного объединённого djvu-файла, а затем в обязательно порядке указываем в открывающемся затем окошке значение 400dpi и выбираем опцию Scanned.
На выходе получаем файл приемлемого размера с прекрасно читаемым текстом и приемлемым качеством цветных картинок (алгоритм DJVU умеет отличать текст от картинки и улучшать читаемость первого, сжимая при этом вторую). Например, у меня из 200 страниц, размер каждой из которых в момент сканирования составлял примерно 3 МБ, получился единый djvu-файл размером в 9 МБ!
Попытка снизить разрешение страниц в Фотошопе до 350dpi делала некоторые их элементы плохочитаемыми после конвертации в DJVU, а увеличение разрешения свыше 400dpi просто увеличивало вес результата работы DJVU Solo, ничего не добавляя к качеству и читабельности.
Важно отметить, что любые игры с качеством и размером файла до загрузки его в DJVU Solo этой программе оказались абсолютно по-барабану. DJVU Solo обращает внимание только на разрешение того файла, который в него загрузили, превращая любые 400dpi в файл в несколько десятков килобайт весом. А через что файл прогнали до того, как поменяли его настройки качества, цвета, размера и т.п., насколько нам показалось, DJVU Solo фиолетово... кроме одного: файл, отсканированный в разрешении 600dpi и сжатый до 400dpi в Фотошопе, DJVU Solo обрабатывает лучше, чем файл, отсканированный сразу в разрешении 400dpi и не проведённый через Фотошоп.
Так или иначе, если нужно отсканировать цветной учебник, чтобы не очень терять в качестве текста на картинках, и при этом не создавать очень большой конечный файл, просто попробуйте следовать этапам 1), 2), и 3) в этой заметке.