vak: (Default)
[personal profile] vak
Опишу здесь "щадящий" метод сканирования книг и документов, не требующий расшивания и даже механического контакта со страницами.

Пару месяцев назад мне в руки попали пара документов исторической ценности: описание архитектуры советской ЭВМ СВС-1. Папки довольно толстые и негибкие: прижать их к стеклу традиционного сканера нереально. Расшивать папки было бы варварством: всё-таки музейный экспонат. Я обзвонил фирмы, предлагающий коммерческий сервис по сканированию, но остались сомнения как в качестве результата, так и в сохранности документов. Решил городить свой огород.

Приобрёл сканер, не требующий физического контакта с объектом: CZUR ET16 Plus. Фактически это умная 16-мегапиксельная фотокамера с подсветкой и лазерной наводкой на резкость. Притом софт работает на Маке, что для меня критично. Особенность: подключать к компьютеру надо родным USB-кабелем, иначе будут глюки.



Шаг 1: сканируем, причём для экономии сразу в чёрно-белом режиме. Титульную страницу можно в цвете. Каждая страница в максимальном разрешении образует отдельный файл типа image01234.jpg размером один-два мегабайта. Если непосредственно запихнуть их в PDF, документ в 172 страницы займёт 240 мегабайт. Это слишком расточительно, будем мудрить.

Шаг 2: преобразуем страницы в формат PNG, попутно уменьшая разрешение в два раза. Используем для этого редактор GIMP в пакетном режиме. Создаём файл ~/.gimp-2.8/scripts/batch-to-png.scm со следующим содержимым:
(define (batch-to-png infile outfile ratio)
    (let* (
            (image (car (gimp-file-load RUN-NONINTERACTIVE infile infile)))
            (drawable (car (gimp-image-get-active-layer image)))
            (cur-width  (car (gimp-image-width image)))
            (cur-height (car (gimp-image-height image)))
            (width      (* ratio cur-width))
            (height     (* ratio cur-height))
        )
        (gimp-image-scale image width height)
        (gimp-convert-indexed image NO-DITHER WEB-PALETTE 256 0 0 "")
        (file-png-save 1 image drawable outfile outfile 1 9 1 1 1 1 1)
        (gimp-image-delete image)
    )
)
После этого выполняем скрипт:
for infile in image*.jpg
do
    outfile=`basename $infile .jpg`.png
    gimp -i -b '(batch-to-png "'$infile'" "'$outfile'" 0.5)' -b '(gimp-quit 0)'
done
Получаем набор файлов image*.png размером примерно в 14 раз меньше исходного. Уже хороший выигрыш.

Можно бы ещё сэкономить, если умудриться убрать с изображения лишний шум. Я пытался задействовать фильтр Гаусса:
        (plug-in-sel-gauss RUN-NONINTERACTIVE image drawable 5.0 178)
Не могу сказать, что доволен результатом. Хорошо бы подобрать другой фильтр, способный отфильтровать ненужные точки и штрихи, но не нарушающий качество букв текста.

Шаг 3: Преобразуем страницы в PDF.
for infile in image*.png
do
    outfile=`basename $infile .png`.pdf
    convert $infile $outfile
done
Шаг 4: Объединяем файлы страниц в единый PDF.
pdftk image*.pdf output document.pdf
Результат вы можете видеть здесь: СВС-система-команд.pdf (23 мегабайта)

Для сравнения, вот версия с гауссом на втором шаге, но без уменьшения разрешения: view (40 мегабайт)

Date: 2019-02-19 01:03 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Красиво.

Научиться бы мне еще слайды и негативы сканировать с нормальным качеством...

Date: 2019-02-19 01:17 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Мудро. А сканер как поживает? И каково качество?

Date: 2019-02-19 01:41 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Ага, я так понимаю, что за 100-150 баксов на амазоне можно уже что-то вполне приличное добыть. Этот, я посмотрел, на SCSI, древняя вещь!

Date: 2019-02-19 02:43 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Неужели в PBMPLUS ничего подходящего не нашлось?
Да и конвертировать из .jpg в .png с изменением разрешения djpeg должен уметь в одну команду.

Date: 2019-03-03 04:05 (UTC)
ermouth: (Default)
From: [personal profile] ermouth
Емнип в gimp есть фильтр despeckle, который работает как в фотошопе.

Если брать страницы ~1000px по ширине (как в первом pdf), в фотошопе пятикратный (в смысле 5 раз) despeckle существенно убирает мелкий шум, лучше чем blur. Надеюсь, в gimp тоже получится.

Date: 2019-02-19 04:19 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Не потерять бы пунктуацию.

Date: 2019-02-19 05:16 (UTC)
dluciv: (Default)
From: [personal profile] dluciv
Хорошая штука, но не решает проблемы раскрытия книжки на 180. Мне кажется, что это критичнее, чем не трогать страницы при сканировании — при листании всё равно трогать приходится. У меня есть пара книжек маленького формата, которые я бы оцифровал, но их тупо не открыть нормально.

Имхо вот железка более бережная https://youtu.be/ne-h7FTMZBk. Есть и посерьёзнее, которые страницы присосками переворачивают, но они стоят, как автомобиль, или парочка, и размером явно не для дома...

Date: 2019-02-20 04:56 (UTC)
dluciv: (Default)
From: [personal profile] dluciv
Но под 90 с одной камерой разные куски страницы будут уж очень на разном расстоянии от фокальной плоскости...

Что у неё с глубиной резкости? Или она как-то иначе это решает?
Edited Date: 2019-02-20 04:57 (UTC)

Date: 2019-02-19 05:22 (UTC)
sab123: (Default)
From: [personal profile] sab123
А он автоматически корректирует на кривизну страниц при сканировании?

Date: 2019-02-19 09:57 (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Я в таких случаях всегда меняю кривую контраста, поднимаю светлое до белого. Серое на фоне обычно вносит весомый вклад в вес файла.

Date: 2019-02-21 07:50 (UTC)
From: [personal profile] as_me
Для обработки текстовых сканов есть неплохая свободная программа scantailor. Прежде чем использовать, лучше посмотреть обучающее видео.