Сканеры в 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.

 
Автор: Unknown
 
Оригинал статьи: http://woweb.ru/publ/66-1-0-170