yury_finkel (yury_finkel) wrote,
yury_finkel
yury_finkel

Categories:

Как я делаю djvu-книги с помощью фотоаппарата

Данная заметка представляет собой обобщение моего опыта, полученного главным образом методом тыка (а также с помощью информации, найденной на полезном сайте djvu-soft.narod.ru). Возможно, то, как я это делаю, не совсем оптимально, но, по крайней мере, даёт приемлемые результаты. Так что это не инструкция, которую следует неукоснительно выполнять, а всего лишь описание того способа, которым пользуюсь я. Пишу это главным образом для себя, чтобы не забыть в будущем, но, возможно, кому-то это тоже окажется полезным.

Кстати, я работаю в Windows, но программы, которые я использую, вероятно, пойдут и под юниксами/линуксами в Wine (либо существуют их аналоги).

Итак, к делу.

1. Процесс съёмки


Я пользуюсь простым фотоаппаратом на 5 Мпикс (Canon PowerShot A530, если кому интересно) и этого, как показывает практика, вполне достаточно. Но необходимы ещё некоторые детали:

1) Штатив-струбцинка для фиксации фотоаппарата. Купил её в фотомагазине рублей за 300. Без неё снимать невозможно: во-первых, руки дрожат, во-вторых, при съёмке нескольких сотен страниц они (руки) просто отвалятся :)

2) Стекло для прижима и фиксации страниц. Без него страницы будут подниматься и изгибаться (или даже самопроизвольно перелистываться). Можно воспользоваться стеклом от книжной полки, как я и делал вначале. Затем заказал в фирме, делающей окна, стекло по размеру, со скруглёнными углами и чуть потолще (8 мм) — обошлось всего в 100 руб. Стекло должно быть чистым. Пятна от пальцев не так уж важны, а вот от маленьких пятнышек — засохших капель слюны и т.п. — лучше избавиться, т.к. они будут заметны.

3) Настольная лампа (а лучше две) для освещения.

Итак, закрепляем фотоаппарат на высоте 30-40 см от книги. Снимать будем разворот целиком (т.е. по 2 страницы сразу). На разворот кладём стекло. Под одну сторону обложки лучше что-нибудь подложить (если начало книги, то под левую, если конец — под правую, если середина — то под обе или ничего), чтобы страницы лежали ровно и прилегали к стеклу. Если есть две настольные лампы, ставим их с обеих сторон книги, так, чтобы освещение было равномерным и не давало бликов (это важно!) В объективе не должно быть видно отражение ламп от стекла. Если настольная лампа одна, можно воспользоваться зеркалом (как я и делал), хотя это не очень (точнее, очень не) удобно, но терпимо. Желательно зажечь также верхний свет. Надо следить, чтобы освещение было равномерным. Например, в моём случае солнечный свет из окна был частично загорожен столом, и давал полосу яркого света на части текста, в результате эта часть текста выпадала при обработке, как слишком яркая (приходилось специально повышать контрастность этих участков, см. ниже). Так что лучше от такого света загородиться совсем.

Отключаем у фотоаппарата вспышку, включаем режим макросъёмки (обычно отмечен цветочком). Делаем зум так, чтобы в объектив попадал весь текст, максимально заполняя всю область видимости. С режимами съёмки особо не заморачиваемся, я снимал в авто-режиме.

Нежелательно, чтобы в кадр попадало ещё что-либо, кроме текста (это может спровоцировать искривление текста при коррекции геометрических искажений).

Снимаем, листаем, снимаем, листаем... У меня на съёмку 500-страничной книги уходил примерно час.

Обложку снимаем отдельно, без стекла и с другим зумом (т.к. снимаем не разворот, а только одну сторону обложки — задняя нам не нужна).

Скачиваем всё снятое в компьютер.

2. Предварительная обработка изображений


Для предварительной обработки я пользуюсь следующими программами:
— Book Restorer 4.2.1 (ссылку не даю, «вылеченную» версию можно найти в интернете)
IrfanView 4.25 (подойдёт любая версия).

Запускаем Book Restorer. Выбираем в меню Book->New. В поле Book name вводим имя для проекта (например, ser5 для пятого тома Серебряковой), в поле Folder to store book указываем папку, в которой будет сохранён проект. В поле Template to create styles and scripts from book пока что (в первый раз) оставляем умолчание (Standard.bkt), в следующие разы будем выбирать нами созданный шаблон. Жмём OK. Новый проект создан.

Выбираем в меню Insert->Automated import. В диалоговом окне в поле Source folders указываем путь к папке с фотографиями, в поле Type выбираем JPEG, жмём OK. Ждём несколько минут, пока программа загрузит фотографии в проект. (Фото обложки лучше в проект не загружать, поэтому надо его предварительно переместить в другую папку).

Выбираем (кликнув мышкой) наиболее типичное фото из проекта (т.е. с текстом на всю страницу). Должно появиться окошко Restoration (если оно не появилось, выберите в меню View->Workspace и поставьте галочку на Restore toolbar). Нажимаем в нём кнопку New script (наверху окна, в середине). В разделе Scripts должна появиться строка "New script 1". Нажав кнопку Settings (наверху слева), указываем имя для нашего сценария (например, Processing). Начинаем запись сценария: нажимаем кнопку Start script recording (наверху в середине, красный кружок).

Начинаем обработку фото. Для начала в моём случае его надо перевернуть на 180 градусов (это зависит от положения книги и фотоаппарата, в вашем случае этот шаг, возможно, не нужен). В окошке Restoration или в меню Tools->Restore выбираем Transformation, указываем 180°, жмём OK.

Далее корректируем освещённость. Выбираем Lighting correction, в появившемся диалоговом окне выбираем вкладку Lighting correction 2D (это обязательно! именно 2D, а не 1D!), оставляем параметры по умолчанию (Threshold — Automatic, Sensitivity = 5), жмём OK.

Исправляем геометрические искажения. Выбираем Geometrical correction. В появившемся окне нажатием кнопок справа внизу выбираем Text lines detection, Left ang right paragraph borders detection, Skew detection (кнопки не подписаны, ищем их названия по всплывающим подсказкам). Эти кнопки должны быть нажаты, остальные отжаты. Жмём OK.

Преобразуем изображение в чёрно-белое. Выбираем Binarization. Оставляем все параметры по умолчанию, жмём OK.

На всякий случай делаем ещё раз коррекцию геометрических искажений, как описано выше: Geometrical correction, кнопки уже нажаты, как в прошлый раз, OK.

Сохраняем сценарий: кнопка Stop script recording (наверху окна, чёрный квадратик).

В меню выбираем Book->Save as template, указываем имя шаблона (его потом можно будет использовать при создании новых проектов, чтобы не создавать сценарий заново).

Теперь в окне Restoration жмём кнопку Original (или в меню Tools->Reload original) — восстанавливаем исходную картинку (потому что мы будем обрабатывать их все пакетом).

Нажимаем Ctrl+A — выбираем все фото. В окошке Restoration делаем двойной щелчок по нашему сценарию (мы назвали его Processing). Запускается пакетная обработка всех наших фото. Можно пойти попить чай — это затянется минут на 20.

После отработки программы желательно просмотреть все обработанные файлы на предмет того, нет ли где «слепых пятен», которые могут образоваться в результате упомянутой выше засветки части текста. Если такое встречается, нужно обработать такие изображения индивидуально. Выбрав дефектное изображение, жмём кнопку Original (восстанавливаем исходное изображение). Щёлкаем курсором по изображению, после этого выбираем в меню Edit->Edit. При этом вызывается стандартная программа, открывающая графические файлы (действие «Открыть» в проводнике). В моём случае это — IrfanView. В нём мышкой выделяем проблемную область, затем в меню Изображение->Цветовая коррекция (по английски Image->Color corrections) и в появившемся окне повышаем контрастность изображения до примерно 30, жмём OK. Жмём Ctrl+S, Сохранить (сохраняем изменённое изображение). Book Restorer должен автоматически подхватить изменённое изображение. Вновь применяем к нему наш сценарий.

Когда всё готово, сохраняем результаты: Book->Publish. В поле Destination folder указываем папку, в которую будут сохраняться обработанные изображения. Выбираем Erase the files with the same name. Если сохраняем всё, то в группе Pages выбираем All. В поле Type of files оставляем по умолчанию TIFF LZW compressed, в поле Color range указываем binary. Жмём OK. Файлы будут сохранены с умолчательным разрешением 300 dpi.

3. Разрезка изображений


Начиная с этого пункта, обработка совершенно аналогична тому, как если бы вы работали с изображениями, полученными со сканера (с одной поправкой, см. ниже).

Для разрезки я использую программу ScanKromsator 5.91 (ссылки не даю, легко находится в интернете).

Загружаем предварительно обработанные файлы: File->Open images. Делаем черновую расстановку резаков: Edit->Draft kromsate. В диалоговом окне выбираем Split pages и жмём OK. Ждём минуты две.

В панели слева во вкладке Files в поле Output folder указываем выходную папку. Там же формат — TIFF G4FAX Compress. DPI выбираем 600 — это важно! Это позволяет повысить читаемость (см. чуть ниже). При обработке изображений, полученных со сканера, в этом нет необходимости.

Во вкладке Options режим Despeckle выбираем Safe, остальное оставляем по умолчанию.

Во вкладке Quality щёлкаем мышкой с нажатым Ctrl по опции Enhance image, на вопрос "Apply option to marked files?" отвечаем «Да». Затем так же щёлкаем с нажатым Ctrl по опции Smooth и так же отвечаем «Да». Таким образом мы включаем размытие на 1 пиксел при увеличении разрешения вдвое (см. выше) для улучшения читабельности. При обработке изображений со сканера этого делать не нужно.

Теперь начинается самая трудоёмкая часть работы. Просматриваем последовательно все изображения и проверяем правильность расстановки резаков. Следует обращать внимание на галочку Split в закладке Page (иногда ScanKromsator забывает, что нужно разбивать страницу на две), на галочки Automargins (иногда отключаются), на наличие всех резаков (см. галочки наверху окна — должны быть все), на порядок резаков (у резаков, ответственных за внутреннюю границу, элементы перетаскивания вверху, у резаков левой и правой границы — внизу), ну и собственно, поправляем расположение резаков так, чтобы в них попадал весь текст и не попадало ничего лишнего. Если в кадре были посторонние предметы, ScanKromsator может сильно напутать с резаками, приняв эти предметы за текст (впрочем, он и без этого зачастую путает), поэтому нужно проверять очень внимательно. Не забываем поправлять выравнивание по вертикали (page v. align) для левой и правой страниц в конце и начале глав (в конце главы — T(op), в начале — B(ottom); на страницах, содержащих только заголовки — C(enter)).

Когда всё просмотрели, жмём кнопку Process! Можно опять сходить попить чайку — это минут на 20-30. Впрочем, стоит поглядывать — если вы напутали с порядком расположения резаков, ScanKromsator обнаружит это только в процессе обработки и ругнётся. Можно будет поправить и продолжить (Process->Resume processing interrupted task).

После завершения кромсания ScanKromsator даёт возможность просмотреть все выходные файлы и подредактировать там кое-что при необходимости. Я обычно, во-первых, удаляю оставшиеся крупные пятна (от тех самых засохших капелек на стекле), во-вторых, если какие-то буквы не видны (чаще всего теряются тире), их можно просто вручную скопировать из другого места в тексте. Однако если в странице большие дефекты, то проще вернуться к Book Restorer'у и переобработать там данную страницу, подняв контрастность, затем сохранить (выбрав Erase the files with the same name и Pages — Selection), после чего переобработать данную страницу ScanKromsator'ом (Process->Current file).


На этом собственно обработка изображений завершена. Далее нужно упаковать их в djvu, сделать OCR-слой и добавить обложку. Но об этом я напишу позже. А сейчас я очень устал, т.к. писать инструкции гораздо сложнее, чем делать самому :)
Tags: книги, сканирование, технические детали
Subscribe
  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments