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:
- Инфо в /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"