SANE - работа со сканерами

31.03.2004
Последняя модификация: 29.01.2014
Аркадий Иванов

Для Unix/Linux создана универсальная система управления сканерами SANE - Scanner Access Now Easy (Теперь доступ к сканерам прост).

 


Эта система поддерживает достаточно много сканеров. В первую очередь стоит посмотреть на  http:// www.sane-project.org/sane-mfgs.html наличие поддержки того сканнера, с которым мы имеем сейчас дело. От себя замечу, что сканеры от HP в составе MFU неплохо работают с драйверами от производителя.


К системе SANE создана программа XSANE - графическая оболочка управления сканированием.
Независимо от типа сканера в вашей системе у вас всегда один и тот же привычный интерфейс программы сканирования на родном языке.
Кроме всего прочего, система изначально сделана сетевой! Ваш сканер может быть использован с той рабочей станции сети, которой вы разрешили им пользоваться.

Вот так примерно выглядит работа с XSANE:


 
 
 Примерная последовательность сканирования:

  •  установить режим сканирования (Color-в цвете, Grayscale - оттенки серого)
  •  включить область предварительного просмотра (в пункте меню Вид)
  •  выделить нужный участок мышкой
  •  обратить внимание на размер получающегося файла
  •  подстроить разрешение в зависимости от потребностей
  •  отсканировать
  •  сохранить файл (в формате PNM, JPG, PNG, ...).
  •  Потом можно обработать изображение GIMP-ом, если нужно конвертировать или редактировать, хотя рекомендую просто сразу сканировать в GIMP.

 

Несколько замечаний по установке и использованию сканера в Ubuntu 12.04.

Эти замечания касаются конкретного сканера в конкретной системе.
Для получения полной информации рекомендую прочитать документацию на sane и xsane:

  • man sane
  • man xsane
  • Инфо в /usr/share/doc/sane
  • Инфо в /usr/share/doc/xsane


Я написал этот документ с целью облегчить себе жизнь и может быть помочь новичкам сэкономить время при первом подключении сканнера в систему.
 

Сканнер со SCSI интерфейсом


У меня сканнер HP ScanJet 5P со SCSI-интерфейсом. SCSI-адаптер SymBios.

  • Естественно пакеты sane и xsane должны быть установлены.
    apt-get install sane
    apt-get install  xsane
  • Сканнер должен быть подключен к адаптеру и на него должно быть подано питание до загрузки системы. 
  • SCSI-адаптер должен опознаваться системой. Для моего адаптера существует драйвер в виде модуля sym53c416. Он должен присутствовать списке загруженных модулей. Проверить можно командой получения списка загружаемых модулей ядра:
    /sbin/lsmod
  • Проверить наличие сканнера в системе можно просмотрев файл /proc/scsi/scsi. Там должна быть запись типа:
    Host: scsi1 Channel: 00 Id: 02 Lun: 00
    Vendor: HP       Model: C5110A           Rev: 3701
    Type:   Processor                        ANSI SCSI revision: 02

 

  • Если вы включили сканнер после загрузки системы, то для успешного распознания его системой надо выгрузить и снова загрузить модуль ядра, отвечающий за ваш scsi-контроллер:
    /sbin/rmmod sym53c416
    /sbin/modprobe sym53c416
  • Сделать символьный линк устройства /dev/sg? на /dev/scanner . В конфигурационных файлах xsane обычно используется именно устройство /dev/scanner . Номер устройства sg (SCSI Generic) определяем из файла /proc/scsi/scsi. Если наш сканнер стоит там первым, то используем sg0, если вторым - sg1, и т.д. Например:
    ln -s /dev/sg1 /dev/scanner
  •   Подправляем конфигурационный файл /etc/xsane.d/dll.conf . Оставляем там только:
    net
    hp
    v4l

    net - может понадобиться доступ к сетевым сканерам, hp - поскольку у меня сканер от Hewlett Packard, v4l - можно сканировать и с устройства видеоввода (у меня в системе такое имеется). Если эту правку у меня не сделать, xsane валится при запуске.

 

  • Ну вот, вроде все настроили, теперь запускаем xsane и сканируем себе в удовольствие.

 

Сканнер с LPT-интерфейсом


Например, я работал с HP ScanJet 5100C. Для того, чтобы нормально сканировать надо:

  • В BIOS установить режим работы параллельного порта EPP+ECP.
  • Сканер должен быть включен
  • загрузить комплект модулей, которые эмулируют SCSI через параллельный порт:
    /sbin/modprobe scsi_mod
    /sbin/modprobe sg
    /sbin/modprobe parport
    /sbin/modprobe parport_pc
    /sbin/modprobe ppscsi
    /sbin/modprobe epst
    /sbin/modprobe scsi_mod
  • Проверить наличие сканнера в системе можно просмотрев файл /proc/scsi/scsi. Там должна быть запись типа: Attached devices:
    Host: scsi0 Channel: 00 Id: 00 Lun: 00
    Vendor: HP       Model: C5190A           Rev: 3740
    Type:   Processor                        ANSI SCSI revision: 02
  •   Если вы включили сканнер после загрузки драйверов, то для успешного распознания его системой надо выгрузить и снова загрузить модуль \textbf{epst}. Если сканнер не включен, модуль не загрузится.
  • Сделать символьный линк устройства /dev/sg? на /dev/scanner . В конфигурационных файлах \textbf{xsane} обычно используется именно устройство /dev/scanner . Номер устройства sg (SCSI Generic) определяем из файла /proc/scsi/scsi. Если наш сканнер стоит там первым, то используем sg0, если вторым - sg1, и т.д. Например:
    ln -s /dev/sg0 /dev/scanner
  • В /etc/sane.d/hp.conf для SCSI-сканера должна быть описана следующая конфигурация:
    scsi HP
    /dev/scanner
  • Примечание:загрузку необходимых модулей лучше всего разместить в скрипте и запускать этот скрипт при старте системы, например, запуская его из скрипта /etc/rc.d/init.d/rc.local
  • Примечание:если вы хотите многопользовательский доступ к такому сканнеру, то стоит сделать на старте системы:
    chmod og+rw /dev/sg0

    В противном случае у вас только первый, кто воспользовался сканнером и получил права на /dev/sg0, сможет им пользоваться в дальнейшем.

Сканнер с USB-интерфейсом

Проблем нет, если сканнер поддерживается xsane. Для сканнера Epson Perfection Photo в файле /etc/sane.d/epson.conf должна быть следующая запись:
usb /dev/usb/scanner0

 

Некоторые замечания потребовались мне самому (не хочу по граблям ходить раз за разом).

Для сканера Epson Perfection 1260 поддержки в SANE не нашлось. Зато есть пакет "Image Scan" для поддержки сканеров семейства Epson от производителя, который отлично интегрируется с SANE.
Я его нашёл где-то у Epson в виде RPM: iscan-2.0.0-0.c2.i386.rpm. Достаточно его установить в систему и всё работает (установка добавляет epkowa.conf в список dll и все программы для работы с этими типами сканеров).



Замечания для AltLinux Server 4.0.0. Из под обычного пользователя xsane просто так со сканером работать не будет. Вы должны ввести пользователя в группу scanner или дать полные права на каталог /var/lock/scanner (очередные изменения от AltLinux в безопасности системы).

 

USB сканнеры Epson

 

  • Скачать драйвера для сканнеров Epson можно с сайта компании AVASYS: http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do
  • Установить программу и plug-in, например, у меня это были файлы:
    iscan-2.10.0-1.c2.i386.rpm
    iscan-plugin-gt-f520-1.0.0-1.c2.i386.rpm
  • В plug-in-е следует посмотреть, куда при установке он положит файл с фирмваре, например для Epson 3490 Photo, это файлesfw52.bin и будет он в каталоге /usr/share/iscan
  • В файле /etc/sane.d/epkowa.dll вставить на строки (уберите предыдущие, если они там есть):
    usb 0x04b8 0x0122
    firmware /usr/share/iscan/esfw52.bin
  • Удалите все записи кроме epkowa.conf в dll.conf
  • Этот алгоритм подходит для многих USB сканеров Epson, только посмотрите командой lsusb идентификатор устройства для вашего сканнера и впишите именно его в epkowa.conf

     

Сканирование из Gimp


Очень удобный режим - сканировать прямо в крутой графический редактор Gimp . Для этого необходимо:

  • Установить пакет xsane-gimp.
  • Один раз запустить Gimp для того, чтобы он создал настроечные файлы в моем домашнем каталоге.
  • Сделать символьный линк для подключаемого модуля xsane-gimp:
    ln -s /usr/bin/xsane-gimp ~/.gimp-1.2/plug-ins/xsane-gimp

    Надеюсь понятно, что для Gimp-а версии 1.3 каталог будет называться ~/.gimp-1.3/plug-ins/

 

Доступ к сканнеру из сети.

 
Программа-демон saned обеспечивает сетевой доступ к сканнеру, установленному на данной машине. Очень подробно и понятно описано конфигуртрование в:
man saned
Рекомендую почитать.

Для того, чтобы доступ работал, мне потребовалось сделать следующие настройки:

  • В /etc/services добавил строку:
    sane            6566/tcp                        # SANE network scanner daemon

    Странно, но пока sane в стандартных описаниях services не присутствует.
  •  Добавил запуск saned через суперсервер xinetd. Для этого создал файл /etc/xinetd.d/sane с содержимым:
    service sane
    {
        port        = 6566
        socket_type = stream
        wait        = no
        user        = saned
        group       = saned
        server      = /usr/sbin/saned
    }
  • Добавил юзера и группу saned :
    useradd saned

 

  • В файл /etc/sane.d/saned.conf добавил список хостов своей сети, которым можно пользоваться сканнером. Например:
    192.168.0.0/16
  • На рабочей станции, откуда мы хотим пользоваться чужими сканнерами, в файл /etc/sane.d/net.conf надо добавить список хостов своей сети, чьими сканнерами мы хотим пользоваться. У меня например это:
    192.168.0.1
    192.168.0.15
  • Для доступа к сканеру из сети с помощью программы saned (она стоит на компьютере, где есть сканер) эта программа должа иметь доступ к сканеру.
    Создаю файл /etc/udev/rules.d/99-scanner.rules с содержимым:
    ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="3b17", SYMLINK+="scanner",MODE="0666",OWNER="root",GROUP="saned"

    ID-ы Vendor-а и Product-а следует получить при помощи команды lsusb и подставить в эту строку.
    Затем подталкиваю udev к перечитыванию своих правил:
    udevadm trigger


 

Распознавание текста

 

В 2009 году с распознаванием в Linux всё стало намного проще. Серьёзная разработка сuneiform стала открытой и отсканированный документ без проблем теперь распознаётся.

  • Следует скачать дистрибутив (я работал с версией 0.6 для Linux) cuneiform (ищите в Инете).
  • Установить.
  • Отсканировать цветную фотку разрешением 300dpi (текст должен идти нормально справа-налево, сверху-вниз)
  • Перевести в формат BMP. (Например, с помощью программы convert).
  • Распознать и сохранить результат в текстовом файле:
    cuneiform -l ruseng -t text -o result.txt image.bmp
    также можно сохранить в формат RTF: "-t rtf"