Сканируем книги под OS GNU/Linux

Ответить
Cherep
Сообщения: 23303
Зарегистрирован: Чт окт 30, 2003 9:22 am

Сканируем книги под OS GNU/Linux

Сообщение Cherep » Вт фев 17, 2009 1:21 pm

Я делаю примерно так.
В редакторе растровой графики GIMP есть опция получать изображение со сканера (через XSANE). Как в незабвенном Adobe Photoshop.[1] Сканируется некоторое количество страниц. 300 dpi
Потом стёркой (в GIMP) удаляются чёрные всякие полосы и глюки.
Потом сохраняется в формате tiff с LZW компрессией.

Раньше под вендой я обзывал файлы номерами страниц. Например 001-002.tif
Сейчас тоже так стал делать, но в более сокращённом виде. Например 2.tiff

После сканирования получается вагон тиффов. Тиффы под линем объединяются в пдф-ку с помощью двух команд
1) tiffcp
Эта команда создаёт из вагона тиффов один многострваничный тифф
2) tiff2pdf
создаёт из многостраничного тиффа пдф-ку

Всё бы хорошо, но первой команде нужно ручками задать список файлов для объединения. Когда файлов больше сотни - это гимор,
Результат команды

Код: Выделить всё

find какойто-то ключ *.tiff
находил все тиффы и этот результат можно было вогнать в команду tiffcp. Оболочка позволяет извращения типа

Код: Выделить всё

tiffcp $(find какойто-то ключ *.tiff)
Но чёто тиффы эти были не в пронумерованом порядке, а хрен знает как.
Тогда я написал shell-скрипт. Первый в своей жизни, надо сказать.[2]

Код: Выделить всё

#! /bin/sh
#
# SCRIPT: pdfftiff.sh
#
# AUTHOR: Cherep [at] www.chemport.ru forums
#
# DATE: 14-02-2009
#
# REV: 0.1.A
#
# PLATFORM: Linux (>2.6.18 ?)
#
# LICENSE: GPL
#
# REQUIREMENT: tiffcp and tiff2pdf to be installed
#
# PURPOSE: This script is used for creation of a single pdf file from many tiff files.
# In particular, 
# author used it to combine many scanned book pages into a single book (as a pdf file).
#
# USAGE: While scanning, image files are named with some increment ($incf) (i.e. 2, 4, 6 for 
# double-page  images) and are collected in some directory. 
# !!!!  Note, .tiff extention should be used, not .tif (to be allowed later).
# (Actually need to check, if .tif would work).
# If one (or several) files are accidentely missing (i.e 8.tiff), 
# the script will not stop running. It is possible 
# to continue with the next file (like 10.tiff). Obviously, the pages will be missing
# in the pdf file. However, 
# It is recommended to store the script in ~/bin/ (do not forget to edit $PATH (and chmod)).
# Just type pdfftiff.sh in the scanned images directory and answer a few easy questions.
# Alternatively, copy the script to the images directory and run ./pdfftiff.sh
#
# 
#
# Initialize all variables

btifffname=
incf=
namepdf=
titlepdf=
stoppoint= # I would prefer this one to be boolean.
##################
# main
##################
until [ -e $namefile'.tiff' ]; #just checking if the filename is real
   do
     namefile=
     echo -n "Enter first tiff file name (without extention): "
     read namefile
  done
echo -n "Enter page increment: " 
  read incf
echo -n "Enter pdf file name (without extention): "
  read namepdf
echo -n "Enter pdf title: " #pdf document has a title that is different from the filename
  read titlepdf

while [ -z "$stoppoint" ];
   do
if [ -e $namefile'.tiff' ]; then #Reading all file names to create a string with a file list
      btifffname=$btifffname' '$namefile'.tiff'
      namefile=$[$namefile+$incf]
else
   until [ "$stoppoint" = n -o "$stoppoint" = y ]; # To prevent entering crap
   do
      echo -n "File "$namefile".tiff does not exist. Is that the end of the book? (y/n): "
      read stoppoint
   done
   if [ "$stoppoint" = n ]; then # In case numbering had been changed for some reason
      until [ -e $namefile'.tiff' ];
       do
        namefile=
        echo -n "Enter next tiff file name (without extention): "
        read namefile
       done
     stoppoint= 
  fi
fi
done

#echo $btifffname
#uncomment the line above if you want to see the output with the file name list string
echo "Making one multipage tiff file..."
  tiffcp -c lzw $btifffname temp.tiff
echo "Making the pdf file..."
  tiff2pdf -z -t $titlepdf -o $namepdf'.pdf' temp.tiff
if [ -e $namepdf'.pdf' ]; then
   echo "Your pdf file was successfully created! :D"
fi
echo "Removing temprorary multipage tiff file..."
  rm temp.tiff
sleep 2 # waiting for two seconds
[1] В отличие от Adobe PS в GIMP-е не обязательно закрывать диалог со сканером, чтобы редактировать картинки. :mrgreen:
[2] Мне бы ещё книгу по языку shell. Хорошо? что в одной из книг по линю были глава про него.

Cherep
Сообщения: 23303
Зарегистрирован: Чт окт 30, 2003 9:22 am

Re: Сканируем книги под OS GNU/Linux

Сообщение Cherep » Вт фев 17, 2009 6:57 pm

Ну я фиг знает... Вдруг у кого-нибудь ещё есть опыт :shuffle:

Аватара пользователя
Vittorio
Сообщения: 14668
Зарегистрирован: Вс мар 25, 2007 2:33 am

Re: Сканируем книги под OS GNU/Linux

Сообщение Vittorio » Ср фев 18, 2009 1:36 am

это жесть. Может, лучше винду поставить и сканировать без геморов? :shuffle:

Cherep
Сообщения: 23303
Зарегистрирован: Чт окт 30, 2003 9:22 am

Re: Сканируем книги под OS GNU/Linux

Сообщение Cherep » Ср фев 18, 2009 11:19 am

Где гемор то? :shuffle: Да, я в выходной день потратил 3 часа времени и написал для себя этот скрипт. Теперь вот с народом поделился.

Сканируется всё интерактивно также как в венде.

Вот под вендой как потом тиффы объединяются в пдф? :shuffle:
Акробатом?
А он лицензионный? :mrgreen:
А ручками (мышкой то есть) список файлов выделять не надо? :wink:
А что проще: напечатать в командной строке pdfftiff.sh и ждать пока машина _сама_ всё сделает или выделять мышкой кучу файлов? :wink:

В пятом акробате я мог только около 30-ти файлов добавлять при вёрстке книги. Если больше, то комп просто вис намертво, пока присоединял тиффы к документу.

Да, можно сканировать сразу в Акробат. Боюсь, только разница во времени сильно не изменится. :? К тому же я не уверен, что при этом можно поудалять чёрные полосы...

Marxist

Re: Сканируем книги под OS GNU/Linux

Сообщение Marxist » Ср фев 18, 2009 1:58 pm

Cherep писал(а):Да, можно сканировать сразу в Акробат. Боюсь, только разница во времени сильно не изменится. :? К тому же я не уверен, что при этом можно поудалять чёрные полосы...
Вообще нормальные сканеры позволяют выбирать часть страницы для сканирования и гонят прямо в пдф своей собственной утилитой. Потом его оптимизируешь в акробате и вуаля.

Cherep
Сообщения: 23303
Зарегистрирован: Чт окт 30, 2003 9:22 am

Re: Сканируем книги под OS GNU/Linux

Сообщение Cherep » Ср фев 18, 2009 3:21 pm

Гы. Акробат под линукс? Дай денех :lol:
Проблема та же будет - как удалять чёрные полосы.

Кстати, есть консольная утилита пдф-ки объеденять.

Marxist

Re: Сканируем книги под OS GNU/Linux

Сообщение Marxist » Ср фев 18, 2009 3:50 pm

Cherep писал(а):Гы. Акробат под линукс? Дай денех :lol:
Для таких целей у нас и виндовые машины есть ;)
Cherep писал(а):Проблема та же будет - как удалять чёрные полосы.
Повторюсь, на уровне размера области сканирования. Размер страницы будет поменьше, но и полос не будет. Или они посередине и ты сканируешь целыми разворотами?

Cherep
Сообщения: 23303
Зарегистрирован: Чт окт 30, 2003 9:22 am

Re: Сканируем книги под OS GNU/Linux

Сообщение Cherep » Ср фев 18, 2009 4:14 pm

Да, бывает что и целыми разворотами.

Аватара пользователя
SSR
Сообщения: 230
Зарегистрирован: Пн окт 01, 2007 9:06 pm

Re: Сканируем книги под OS GNU/Linux

Сообщение SSR » Ср фев 18, 2009 7:09 pm

1) Спасибо, Cherep'у за безвозмездную утилиту :)

Остальное) Несколько комментариев (оставлю в стороне тот факт, что продукция Adobe стоит прилично (хотя, на мой взгляд, часто это оправдано), а некоторые программы занимают места примерно как сама операционная система).
Cherep писал(а):[1] В отличие от Adobe PS в GIMP-е не обязательно закрывать диалог со сканером, чтобы редактировать картинки. :mrgreen:
Интересно в последних версиях тоже?! Проверить не могу т.к. сканер отключил :mrgreen: Есть смутное ощущение, что как-то совмещал эти процессы - хотя, возможно, просто сначала сканировал несколько страниц, а потом редактировал. Вообще в PS можно записать сценарий и применять его повторно - всё равно придётся страницы листать самому :)
Cherep писал(а):Вот под вендой как потом тиффы объединяются в пдф? :shuffle:
Акробатом?
А он лицензионный? :mrgreen:
А ручками (мышкой то есть) список файлов выделять не надо? :wink:
А что проще: напечатать в командной строке pdfftiff.sh и ждать пока машина _сама_ всё сделает или выделять мышкой кучу файлов? :wink:

В пятом акробате я мог только около 30-ти файлов добавлять при вёрстке книги. Если больше, то комп просто вис намертво, пока присоединял тиффы к документу.
При сборе электронной книги (если это делать качественно) большая часть времени уходит на собственно сканирование и редактирование сканов (эти этапы можно объединить), а отнюдь не на брошюрование. Поэтому сшивать сразу или постепенно, выделять мышкой или напустить скриптик, на мой взгляд, непринципиальные вопросы. Более критична, действительно, ресурсотребовательность многих программ Adobe, но с учётом быстрого развития техники и внедрения поддержки 64bit (начиная с CS4) - многое сейчас будет существенно проще, чем раньше. К тому же есть субъективное ощущение, что подобные утилиты есть и для Windows.
Cherep писал(а):Да, можно сканировать сразу в Акробат. Боюсь, только разница во времени сильно не изменится. :? К тому же я не уверен, что при этом можно поудалять чёрные полосы...
Тут есть и другой важный аспект - различный формат книг, исходное качество печати. Конечно, сканировать и собирать книги это не интегральные уравнения решать, но тем не менее полностью автоматизировать процесс навряд ли получится (вернее качество при этом будет соответствующее). Наиболее "труднолечимые" чёрные полосы могут оказаться в месте разворота книги - обрезанием это часто не лечится и нужно, таким образом, это так или иначе обходить (в том числе и на этапе сканирования). А ещё есть краевые искажения, повороты страниц (в том числе и в самой книге), бледная печать и т.п. и т.д. Кстати, в самом Aсrobat есть сервис - Optimize Scanned PDF - часть проблем он позволяет решить (или создать :) ) в автоматическом режиме.
Cherep писал(а):Да, бывает что и целыми разворотами.
Marxist выше уже отмечал, что многое нужно и можно определять ещё на самом этапе сканирования. Многие даже относительно старые сканеры (~ 3х летней давности) уже позволяли выбирать несколько областей сканирования - разворот можно сразу разбить на две (три и т.д.) части.
Если люди не полагают, что математика проста, то только потому, что они не понимают, как на самом деле сложна жизнь (Джон фон Нейман)

Cherep
Сообщения: 23303
Зарегистрирован: Чт окт 30, 2003 9:22 am

Re: Сканируем книги под OS GNU/Linux

Сообщение Cherep » Ср фев 18, 2009 9:46 pm

SSR писал(а):1) Спасибо, Cherep'у за безвозмездную утилиту :)
пожалуйста!
SSR писал(а):Интересно в последних версиях тоже?!
Ну я не работал с фотошопом выше версии 7.0.
Сканировал несколько страниц, потом отрубал диалог со сканером и редактировал.

Ну дальше уже речь шла не про линь...

Аватара пользователя
bromin
Сообщения: 4198
Зарегистрирован: Чт янв 24, 2008 7:38 pm
Контактная информация:

Re: Сканируем книги под OS GNU/Linux

Сообщение bromin » Чт фев 19, 2009 2:45 pm

SSR писал(а):Многие даже относительно старые сканеры (~ 3х летней давности) уже позволяли выбирать несколько областей сканирования - разворот можно сразу разбить на две (три и т.д.) части.
Блин... :( отчего у меня сканеры дольше 10-13 месяцев не живут :( И достаточно дорогие и дешевые пробовал.

Cherep
Сообщения: 23303
Зарегистрирован: Чт окт 30, 2003 9:22 am

Re: Сканируем книги под OS GNU/Linux

Сообщение Cherep » Чт сен 29, 2011 1:48 pm

АФАИК, в bash нет типов переменных
баги я ожидал и сегодня оно прорезалось.
там есть строчка

Код: Выделить всё

namefile=$[$namefile+$incf]
так вот как-бы логика была в том, что оболочка приплюсует 1 (имя файла со сканом первой страницы!!!!) к инкременту (допустим 1) и выдаст 2. А "2.tiff" -- это имя файла со следующимс сканом. То есть кагбы это и число и строка :shock: Ну нет типизации переменных.

А сегодня она мне сказала, чувак, нету файла [1+1].tiff
толи это следствие отсутсвия типизации переменных, толи... это глюк из-за разных синтаксисов в разных оболочках,
потомучто
короче исправил самую верхнюю строчку на

Код: Выделить всё

#!/bin/bash
( в Debian была и есть bash по дефлоту...)
и оно заработало.


Аватара пользователя
antabu
Сообщения: 5929
Зарегистрирован: Пн май 25, 2009 7:00 pm

Re: Сканируем книги под OS GNU/Linux

Сообщение antabu » Пт сен 30, 2011 1:46 pm

Под виндой собрать pdf из сканов можно с помощью бесплатной IrfanView с соответствующим плагином. Либо - виртуальным принтером. Может, и под wine будет работать - я не пробовал.
"Я не видел людей страшней, чем толпа цвета хаки"

Ответить

Вернуться в «Полезные материалы от участников форума»

Кто сейчас на конференции

Сейчас этот форум просматривают: shbt и 17 гостей