Сканеры в Linux
Использование сканера
не является привилегией одних только пользователей MS Windows. Хотя
действительно, "завести" устройство от целого ряда производителей подобного
оборудования в альтернативной ОС, бывает, мягко говоря, проблематично.
В принципе,
производителями драйверы делаются для всего семейства операционных систем
Windows (включая NT/2000). Устройства, к которым существуют драйверы только лишь
для Windows 9x/ME, можно встретить довольно редко. А вот тем, кто решил перейти
с Окошек, например, на Linux, придется сложнее. Но и их положение далеко не
безнадежно. Есть утилита SANE и графическая оболочка к ней под названием XSANE,
которые поддерживают немало устройств. Кстати, SANE работает не только в Linux.
Список поддерживаемых ею программно-аппаратных платформ весьма обширен и
постоянно пополняется. Эта утилита работает в Linux, во всех ОС семейств BSD,
Solaris, HP UX, OS/2, BeOS и многих других. Полный список как
программно-аппаратных платформ, так и сканеров, поддерживаемых SANE, есть на
домашней страничке группы разработчиков по адресу www.mostang.com/sane.
Естественно, там же можно загрузить эту программу, причем как в виде исходных
текстов, так и бинарный дистрибутив, предназначенный для вашей системы. В
некоторые дистрибутивы Linux (в частности, SUSE, Mandrake, AltLinux, ASPLinux)
SANE включается штатно. Хотя, скорее всего, это будет несколько устаревшая
версия: SANE обновляется постоянно, и авторы дистрибутивов просто не успевают за
разработчиками программы.
Хотелось бы предупредить сразу, что SANE лучше всего поддерживает устройства со SCSI-подключением. Из LPT-сканеров SANE может работать лишь со считанными моделями от Mustek и Umax. Ряд устройств от Primax поддерживается специальной утилитой, ссылка на которую есть на сайте разработчиков SANE. USB-модели в списке поддерживаемых устройств появились не так давно, причем возни с их настройкой будет больше и результат может оказаться отрицательным, особенно - если поддержка того или иного устройства включена в программу недавно.
Настройка SANE сильно
зависит от конкретной модели сканера. Об этом лучше читать в документации на
конкретный backend или драйвер. Ссылки есть в таблице поддерживаемых сканеров.
Для SCSI-устройства достаточно запустить утилиту findscanner из поставки SANE. А
вот с USB- и LPT-устройствами все не так просто, потребуется редактирование
целого ряда конфигурационных файлов, в частности, modules.conf и
конфигурационного файла драйвера, и, вполне возможно, понадобится
переконфигурирование ядра. Плюс ко всему крайне желательно иметь ядро Linux
поновее. Если его версия 2.2.14 и ниже, нормальная работа USB-сканера
будет проблематичной. Лучше всего ставить ядро 2.4.8 и выше. Поддержка
USB-устройств, в том числе и сканеров, в нем значительно
улучшена.
SANE можно
пользоваться из командной строки. Это, не всегда удобно, тем более что командные
строки будут довольно длинными. К тому же особенности синтаксиса сильно
варьируются в зависимости от конкретной модели устройства. Благо, что есть
графические оболочки к SANE. Их даже две: помимо уже упомянутой XSANE, можно
назвать еще и Xscanimage. Они имеют практически идентичный интерфейс и
особенности работы. И та, и другая копируют интерфейс утилит сканирования для
Windows и Mac.
Но есть и различия.
Xscanimage не может вызываться автономно. Она интегрируется с GIMP и рядом
других приложений, в частности, Krayon (растровый редактор из поставки Koffice)
и Linux-версией Corel Photo-Paint. XSANE можно использовать автономно и просто
сохранить изображения для последующего редактирования в любой программе. Однако
XSANE может также интегрироваться с GIMP и некоторыми другими приложениями, в
частности, с программой распознавания текста GOCR.
Как уже было сказано
выше, есть и другие утилиты сканирования для альтернативных операционных систем
типа Linux. Есть целый
ряд программ сканирования для Linux, но они, как правило, коммерческие, плюс ко
всему - уже давно не развиваются.
Так что использовать сканер в неwinном мире можно, просто уделив несколько больше внимания выбору подходящей модели и настройке программного обеспечения.
Как пользоваться SANE? Заходим на ftp.mostang.com/pub/sane/, и скачиваем от туда последнюю
версию sane-x.x.x.tar.gz (список всех сайтов есть здесь: http://www.mostang.com/sane/source.html).
Затем делаем следующую последовательность команд:
tar xfvz
sane-1.0.7.tar.gz
cd sane-1.0.7
./configure; make; make
install
Все. Большего не надо. Теперь, если у вас SCSI-сканер (для простоты рассмотрим
именно этот случай), осмотрите свою машину и подсчитайте, сколько и как у вас к
ней подключено SCSI
устройств. Диски не считайте. Обычно сканер единственный. Значит, устройство для
него будет /dev/ sga (если сканер второй, то
/dev/sgb и так далее). Поставьте
символическую ссылку на это устройство:
ln -s /dev/sga /dev/scanner
А команда
chmod 777 /dev/sga
даст всем доступ до него. Негоже
одному root пользоваться сканером :). В принципе никто не мешает создать
группу scaner и дать
права только ей. Не забудьте глянуть на конфигурационный файл для вашего сканер.
Он должен находится в директории /usr/ local/etc/sane.d/[фирма_сканера].conf. Например, для UMAX это umax.conf. Этот файл содержит список имен,
которые соответствуют вашему сканеру (их может быть и несколько). Вот пример такого файла:
#scsi Vendor Model Type Bus Channel ID
LUN
scsi UMAX * Scanner * * * * *
/dev/scanner
# можно указать его устройство и
так
/dev/sgа
Все, теперь можете смело набирать
команду
scanimage -L
Ответ, например, может быть
таким:
device `hp:/dev/sga' is a Hewlett-Packard
C5110A flatbed scanner
Ну вроде оно. А что этот сканер
умеет?
scanimage -d hp:/dev/sga
-h
Вот. scanimage - это консольная утилита для сканирования. Если охота написать скриптик, который сканирует и что-то делает с полученным - вам к ней.
Оболочки к SANE. Ленивые люди пользуются красивой, простой графической утилитой xscanimage, которая идет вместе с исходниками sane. Запустите ее в XWindow. Интерфейс простой, возможности тоже, сохраняет в pnm. Для проверки хватит. Более навороченная оболочка, о которой я уже говорил выше, называется XSane. После компилирования и инсталляции, ее можно запустить при помощи команды xsane. Но нам желательно бы из Gimp'а. Нет ничего проще! Даём следующую команду (для Gimp-1.1.xx, лучше поставить линк на xsane):
ln -s /usr/local/bin/xsane
~/.gimp-1.1/plug-ins
Чтобы не делать такое для каждого пользователя такой линк, лучше поставьте линк прямо в директорию процедур Gimp'a (plug-ins):
ln -s /usr/local/bin/xsane /usr/local/lib/gimp/1.1/plug-ins В версиях Gimp'a (1.0.x, <1.1.9) ищите меню Xtns/Xsane, а в версиях Gimp'a от 1.1.9 вам надо зайти в меню File/Acquire. Оно будет содержать имена устройств с которых можно сканировать.
Если, у вас ничего не заработало, то в любом случае, можно просто сканированное сохранять в .pnm файл, а затем открывать любым графическим редактором.
Всё, у вас обычная в принципе машина, которая умеет работать со сканером. Но мы решили отдать сканер в сеть. И более того, отдать его windows-машинам.
Итак, сначала добавляем в /etc/services номер порта для sane:
sane 6566/tcp
Затем добавляем в /etc/inetd.conf строчку
sane
stream tcp nowait saned.saned /usr/local/sbin/saned saned
Вместо saned.saned поставьте пользователя и группу, от которой будет работать демон. "root.root" - это не само хорошее решение. Сделайте что-то вроде "scanner.scanner".
Перезагружаем inetd:
killall -HUP inetd
Теперь редактируем файл
/usr/local/etc/sane.d/saned.conf. В нем мы должны прописать имена хостов,
которые должны иметь доступ к сканеру через сеть. Если мы отдаем сканер всему
миру (ну или всей сети), то просто поставьте в персом символе первой строки
плюсик (+), этим вы отключите вcякий контроль со стороны sane. Теперь давайте
проверим, доступен ли сканер из сети. Для этого в файл
/usr/local/etc/sane.d/net.conf пропишем адрес машины, на которой есть
настроенный, как написано выше, демон. Если вам охота проверить свою машину, то
просто напишите туда localhost. Теперь, даём команду на
сканирование:
scanimage -L
Вывод на экране:
device `hp:/dev/sga' is a Hewlett-Packard
C5110A flatbed scanner
device `net:localhost:hp:/dev/sga' is a
Hewlett-Packard C5110A flatbed scanner
Работает! Теперь любой другой
Linux сможет отсканировать с вашего сканера что-нибудь. Но прежде
удостоверьтесь, что обратное преобразование имен работает (цифры в имена). Если
нет, то просто добавьте удаленные хосты в /etc/hosts.
X-Stranger
linux@hitech.by