Главная страница Разное Оцифровка книг с помощью цифрового фотоаппарата
Карта сайта

Пользовательский поиск

Оцифровка книг с помощью цифрового фотоаппарата

ВВЕДЕНИЕ

Два основных варианта копирования печатной информации на сегодняшний день: ксерокопирование и сканирование. Хороший ксерокс дает скорость копирования минимум на порядок больше чем сканер. А если настроить сканер на качество, адекватное ксерокопированию, то еще больше. С другой стороны, ксерокопированная литература занимает много места и поделиться ей с друзьями, особенно живущими в другом городе, практически невозможно. Проблемой при хранени сканированой литературы был большой объем файлов. Недавно появившийся формат сжатия сканированных текстов формат DjVu, отлично справляется с этой работой, как и последнее поколение формата PDF. Единственную оставшуюся проблему, присущую сканеру - малую скорость оцифровки изображения, я решил обойти используя цифровой фотоаппарат. Соответственно, при работе с ним возникли проблемы, которых нет при обычном сканировании. Краткое описание этих проблем, а также их решение я и описал в этой статье.

Предложенная методика отрабатывалась на цифровом фотоаппарате Fuji FinePix S7000. Для обработки и сжатия фотографий до преемлемого размера применялись

	Компьютер P-IV c 256 Мб памяти
	Adobe Photoshop 6.0
	IrfanView 3.80
	SkanKromsator 3.5
	DjVU Solo 3.1
Цель: оцифровать книгу формата А5 и объемом 180 страниц, содержащую в основном текст и простые черно-белые изображения, с помощью цифрового фотоаппарата и сконвертировать в формат DjVu (bitonal).

УСТАНОВКИ ФОТОАППАРАТА И СЪЕМКА

Использованный фотоаппарат имеет настройки матрицы от 12 до 1 мегапикселя. Для съемок одной страницы формата А5 вполне достаточно 3 мегапикселей. Емкость памяти фотоаппарата при этом составляет около 650 кадров (512 Mb). Разрешение снимков настроить нельзя. Оно всегда составляет 72 dpi; при изменении количества мегапикселей изменяется размер фотографии.

Фотографировать что бы то ни было лучше всего со штатива и со вспышкой. Встроенная вспышка довольно быстро сажает батареи, так что лучше пользоваться внешней, или по крайней мере обзавеститсь блоком питания для фотоаппарата. Штативы бывают маленькие настольные (десятки сантиметров высотой) и большие напольные (метры высотой). С маленьких штативов не очень удобно снимать книгу, лежащую горизонтально на столе. Если у вас нет штатива, или вам лень тащить его с собой в какую-нибудь библиотеку, остается снимать с рук. Здесь очень помогает ремень, идущий в комплекте с фотоаппаратом. Подгоняете его по высоте, вешаете на шею и слегка натягиваете. В таком виде фотоаппарат закреплен довольно жестко, по крайней мере кадр не уплывает из фокуса. При серийной съемке страниц расстояние до стола не меняется, так что можно переключить автофокус на ручное управление. На S7000 есть специальная кнопка быстрой настройки фокуса в этом режиме; можно один раз настроить и снимать всю книгу. При этом видоискателем пользоваться невозможно, приходится смотреть на встроенный монитор.

Поскольку я снимал без штатива, руки, особенно со второй сотни страниц, начинают заметно подрагивать. Чтобы снимать быстро и качественно, то выдержку надо ставить не больше 1/40, а лучше 1/50, иначе половина кадров будт смазана. Соответственно, снимать надо с приоритетом выдержки (shutter priority); при этом диафрагму (aperture) фотоаппарат устанавливает автоматически. Надо отметить, что у S7000 выдержка 1/40 обозначается как "40", 1/50 - "50", и т.д.

При малой выдержке могут возникнуть проблемы с освещенностью - кадр будет слишком темным, даже при полностью открытой диафрагме. (По крайней мере S7000 сообщает о недостатке освещенности, окрашивая значение дифарагмы в красный цвет). Здесь очень помогает вспышка, но если ее нет можно воспользоваться обычной настольной лампой, как я и делал. Чтобы избежать ярких бликов от страницы, свет должен быть направлен на книгу ОТ снимающего. Страница должна быть равномрно освещена. Сильная неравномерность освещенности не позволит сделать качественую обработку фотографий и их сжатие.

Для съемки близко расположенных объектов (до 80 см) в S7000 предусмотрен режим "Макросъемка". Не уверен, что именно он делает, но фотографии получаются более четкими.

Яркость и контрастность можно повысить снимая в цветовом режиме "Chrome". Так называемый режим "Black and White", на самом деле - 16 млн. градаций серого. Никакого преимущества в размере или качестве фотографий он не дает.

В целом скорость съемки составляет от 5 до 10 страниц в минуту. Если вам кто-то помогает перелистывать страницы книги и придерживать их пока вы снимаете, теоретически можно ускориться и до 15 стр./мин. Максимальная скорость ограничена скоростью переписывания информации с матрицы в память фотоаппарата.

Наиболее удобно располагать страницы горизонтально (в альбомном формате) так, чтобы страница занимала как можно большую часть кадра. Удобно снимать сначала все нечетные страницы начиная с начала, а затем все четные, начиная с конца. Это зависит от того, насколько легко книга раскрывается и спокойно лежит, пока вы ее снимаете. Если возникли сомнения в качестве сделанного кадра, лучше сразу его просмотреть на мониторе фотоаппарата и переснять если нужно.

Объем фотографий составил 140 Mb.

ОБРАБОТКА ЦИФРОВЫХ ФОТОГРАФИЙ

Теоретически, отснятые кадры должны содержать черный текст на белом фоне. На самом деле, получается черно-коричневй текст на красно- бежевых страницах. Цветовая гамма зависит от того, насколько старая книга, от освещенности и типа светильника (лампа накаливания, галогеновая лампа, и т.д.), а так же от цветопередачи данной модели фотоаппарата. Если не придавливать страницы сверху стеклом (что сильно замедляет скорость съемки), они остаются чуть неровными, что дает разнообразные тени и блики по всей странице. В обоих случаях контрастность текста сильно уменьшается. При попытке прямой конвертации в 2-х битный цвет, страница покрывается черными и белыми пятнами, на которых вообще не видно текста. Поэтому, конвертацию в B/W пришлось проводить программой Photoshop, которая обладает не только набором полезных фильтров, но и хорошими возможностями автоматизации.

Перед собственно конвертацией полезно привести все страницы к одному размеру в пикселях. Вообще, соотношение сторон кадра составляет 3:4, но если вы, например изменяли разрешение фотоаппарата во время съемки (например для фотографирования рисунков с мелким деталями 3 мегапикселей мало, нужно 6 мегапикселей) реальные размеры в пикселях будут отличаться. Это немного замедляет ручную обработку в SkanKromsator'e (см. ниже), а главное - мешает ему правильно рассчитать поля страниц. Большие страницы обрезаются по тексту, а маленькие наполовину состоят из полей. Привести страницы к одному размеру может IrfanView. В режиме пакетной обработки можно выставить желаемую ширину в пикселях (при установленных галках Preserve Aspect Ratio и Use Resample function). Я ставил 1400-1800 пикселей. Если вы снимали в альбомном формате, то можно заодно и повернуть страницы. Правда тут нужно помнить, что Irfan сначала изменяет размер, а затем поворачивает страницу. Т.е. если с поворотом, то устанавливать размер нужно по высоте, а не ширине.

Полезным побочным эффектом от изменения размера является подавление мелкого шума. В результате применения ресэмплинга контуры размываются, причем крупные объекты (буквы) размываются значительно меньше, чем мелкие (точки). Размытые объекты исчезают при последующем фильтровании с помощью HighPass в Photoshop'е (см. ниже). Надо отметить, что изменение размера картинки превращает цвет в 16-битный, поэтому лучше его делать до обработки Photoshop'ом.

После этой операции размер файлов уменьшился со 140 до 90 Mb; скорость обработки 4,5 с на 1 файл.

Обработку в Photoshop'e я проводил так. Во-первых, удобно создать рабочий каталог для конвертации: D:\Photo_article с двумя подкаталогами \Input и \Output.

В палитре автоматизации Actions в Photoshop я создал новый пункт TextContrast. В него последовательно включены:

	Levels
	  with Auto 
	HighPass
	  Radius 3,2 pixels
	Brightness/Contrast
	  Brightness: 45
	  Contrast: 77
	Convert Mode
	  to: grayscale mode
	Gaussian Blur
	  Radius: 0,4 pixels
	Brightness/Contrast
	  Contrast: 91
	Threshold
	  Level: 180
 	Convert Mode
	  to: bitmap mode
	  resolution: 72 dpi
	  method: threshold
	Save
	  as: TIFF
	  byte order: IBM PC
	  with LZW compression
	  in: d:\Photo_article\Output
	  with lower case
	Close
На основании этого Action я создал droplet Photo_article.exe и поместил его в рабочий каталог. Каталог для сохранения результатов в droplet'е установил \Output. В дальнейшем, фотографии предназначенные на обработку переписываются в каталог \Input, затем в проводнике этот каталог drag'n'drop на droplet. Запускается Photoshop и довольно шустро конвертирует фотографии (около 4-5 с на фотографию), сохраняя все в \Output.

Разберем по пунктам действия при конвертации.

Levels. Автоуровни делают в конечном счете чуть жирнее все линии на фотографии. Без этого тонкие линии на рисунках могут стать пунктирными в процессе обработки.

HighPass. Ключевой момент. Это фильтр из стандартной поставки Photoshop, живет в меню Filter | Other. Про него отлично рассказано в справке к программе. Вкратце, он удаляет шум со страницы и выделяет места с сильно контрастным переходом цвета - то есть, собственно, границы букв.

Brightness/Contrast. Если этого не сделать, то при переходе к B/W цвет страницы станет инвертированым.

Convert Mode to Grayscale. Без этого не работает конвертация в Bitmap.

Gaussian Blur. Улучшает внешний вид букв и кривых, чтобы не терялись пиксели при переходе к B/W.

Brightness/Contrast. Полезно применить после Blur, но не обязательно.

Threshold. Ключевой момент. После этой операции на фотографии остается 2 реальных цвета. Но файл продолжает считаться 256-и цветным.

Convert Mode to bitmap mode. Окончательно переводит картинку в 2-х цветную.

Save as TIFF. Сохраняет файл с исходным именем но в формате TIFF в каталог \Output. К сожалению, поддерживается только сжатие LZW, хотя Group 4 Fax больше подходит для черно-белого текста.

Close. Переходим к следующему файлу.

Возможно, данная последовательность команд не является идеальной, но у меня она не дала ни одного сбоя с потерей текста или рисунка на 1000 сфотографированных страниц.

После этой операции размер файлов уменьшился с 90 Mb до 17 Mb; скорость обработки 4,6 с на 1 файл.

Следующий этап - поворот страниц (если этого не сделали на первой стадии), обрезка полей, выравнивание текста и удаление случайных пикселей. С этой работой отлично справляется программа SkanKromsator (С) by Bolega (инструкции по работе прилагаются к программе). Работа проходит в два этапа: сначала ручное выставление границ обрезки полей и некоторых других параметров, а затем автоматическая обрезка и установка равных размеров страниц с учетом выставленных полей. Она же заодно позволяет сохранять картинки в файл TIFF со сжатием Group 4 Fax (обозначено в программе G4Fax Compress). Лучше на соответствующей вкладке дать именам файлов какой-нибудь буквенный префикс, что очень облегчит работу на следующем этапе.

После этой операции размер файлов уменьшился с 17 до 5 Mb. Скорость обработки при ручной верстке - 9 с на 1 файл, при автоматической резке - 2,5 с на 1 файл.

Теперь настало время провести сортировку плохих и хороших страниц (для того, чтобы ускорить съемку я не возился со стиранием ненужных страниц из фотоаппарата). Кроме того, четные и нечетные страницы лежат отдельно, их нужно расположить в порядке следования. В принципе, можно применить какую-нибудь программу, умеющую автоматически переименовывать файлы числами с шагом 2, начиная с 1 для нечетных и начиная с 2 для четных страниц. Но для этого нужно быть уверенным, что все файлы идут по порядку и лишних среди них нет. Мне было проще переименовывать файлы вручную. Для этого я сначала перенес четные и нечетные файлы в отдельные каталоги (поскольку я снимал четные страницы с конца, пришлось в IrfanView переименовать их еще раз, предварительно отсортировав в обратном порядке), а затем просматривал их подряд в полноэкранном режиме IrfanView (при этом номер страницы обычно можно рассмотреть). Кнопка F2 переименовывает файл, причем вводить расширение каждый раз не надо. Если программа сообщает, что такой файл уже есть (то есть страница снята дважды), даю индекс a, b, c и т.д. Так все версии одной страницы идут последовательно друг за другом в списке файлов. Если не давать буквенные индексы в SkanKromsator'е, то переименованные файлы могут совпадать с еще непереименованными.

Скорость обработки - 2 с на файл.

В конце концов получается набор файлов с названиями, соответствующими номерам страниц и готовых к конвертации в формат DjVu. Здесь нужно отметить, что чем меньше размер файлов, втягиваемых в DjVu, тем быстрее он работает. Причем имеется в виду размер файла на диске, со сжатием, а не в памяти, когда он натурального размера. Втягивание я производил в программе DjVu Solo. Для этого первая страница копируется из IrfanView и вставляется Ctrl-V. Остальное добавляется списком командой Edit | Append page(s)... Нужно перейти в каталог с файлами и выделить мышью второй файл (первый уже скопирован) а затем с Shift'ом послединй. Затем нужно вернуться к первому ВЫДЕЛЕННОМУ файлу и удерживая Ctrl дважды медленно щелкнуть по нему мышью, иначе при импорте он встанет последней страницей. Полученный документ сохраняем с разрешением 72 dpi в режиме Bitonal.

После этой операции размер файла DJVU составляет 3,5 Mb. Скорость обработки - 1 с на 1 файл.

ЗАКЛЮЧЕНИЕ

Итого, выигрыш в размере между форматом DjVu Bitonal и исходными цветными фотографиями в JPEG составляет 40 раз. Суммарные затраты времени: * съемка - 20 мин * предварительная конвертация IrfanView - 14 мин * конвертация в B/W с помощью Photoshop'e - 14 мин * ручная верстка в SkanKromsator'e - 27 мин * автоматическая резка в SkanKromsator'e - 8 мин * переименование файлов - 8 мин * конвертация в DJVU с помощью DJVU Solo - 4 мин Итого: 20 + 27 + 8 = 55 мин ручной работы и 14 + 14 + 8 + 4 = 40 мин автоматической конвертации; всего 1,5 часа на 180-и страничную книгу.

Скорость фотосъемки по одной странице на кадр немного ниже скорости ксерокопирования, и гораздо выше скорости сканирования, составляя 5-10 страниц в минуту. Пакетное конвертирование Photoshop'ом из цветного JPEG в черно-белый TIFF занимает 4-5 секунд на страницу и не требует участия человека. Обработка изображений SkanKromsator'ом одинаково желательна как для сканированных, так и для сфотографированных изображений; хотя в последнем случае затраты времени на одну страницу немного выше, около 10 секунд на страницу. Создание списка страниц в порядке их нумерации наиболее утомительная процедура в случае фотографий, поскольку среди них выше процент брака (особенно при съемке без вспышки и штатива). Увеличение скорости съемки, благодаря обработке четных и нечетных страниц отдельно, компенсируется увеличением времени на приведение в порядок списка файлов. Я тратил на ручное переименование около 2 секунд на файл. Наконец, импорт в DjVu протекает быстрее для фотографий, так как их разрешение 72 dpi, а не 150-300 dpi, которое обычно используется при сканировании. Получающиеся в результате файлы, разумеется, ниже качеством, чем сканированные, поскольку имеющееся разрешение плохо передает мелкие детали. Тем не менее, текст в них хорошо читается; двухтоновые иллюстрации, обычные для научных публикаций, также не страдают от потери качества. На мой взгляд, мобильность цифрового фотоаппарата, позволяющая снимать практически где угодно, перевешивает некоторые недостатки его использования. Для рутинной работы по копированию больших объемов печатного текста, где важно не качество сканированной картинки, а скорость переведения информации в цифровой вид, сканер значительно проигрывает фотоаппарату.

(с) Кирилл Шубин kir101[sobaka]mail[dot]ru

Весна 2005 года