Nombreux sont les périphériques qui ont connu une augmentation brutale de l'intérêt porté par les utilisateurs. Mais un périphérique arrive en tête : le scanner. Celui-ci est passé du stade d'une utilisation à 100% professionnel au stade d'accessoire banal et courant chez le particulier. Une norme s'est imposée dans le monde Wintel : TWAIN. Celle-ci permet de garantir qu'un scanner conforme à la norme fonctionnera avec n'importe quelle application TWAIN. Sous Linux, ce standard porte un autre nom : SANE.
SANE est un acronyme de Scanner Access Now Easy (Accès au scanner à présent facile). Cette abréviation est tout à fait justifiée par rapport à l'ancienne méthode d'accès aux scanners. Avant l'apparition de SANE, la personne qui désire faire fonctionner son scanner sous Linux devait s'attacher à une tâche bien rude. En premier lieu, elle devait choisir entre plusieurs packages proposant chacun une solution et une méthode de travail différente. Ceci, bien sûr, pour quasiment chaque marque et modèle de scanner. La diversité est souvent bénéfique, mais dans le cas présent, une norme était nécessaire. En second lieu, elle devait accommoder son environnement afin d'obtenir un ensemble homogène numérisation/retouche.
SANE a donc été créé pour permettre la mise en place de fonctions uniques pour tous les programmes de traitement d'images sous forme d'une API (Application Program Interface). Ceci permet à tous les programmeurs de créer des applications utilisant une méthode unique. De plus, comme SANE est universel, il sera inutile de créer autant d'applications que de pilotes de scanner. Le même programme fonctionnera avec tous les scanners supportés par SANE.
FONCTIONNEMENT DE SANE
L'API SANE se présente
sous la forme d'une bibliothèque (library) appelée libsane.so.
En réalité, libsane.so n'est qu'un lien symbolique (symlink)
vers le pilote du scanner. Dans notre cas, il s'agit d'un scanner Mustek
12000SP et le fichier réel sera libsane-mustek.so.0.0.73.
Tous les fichiers pouvant être pointés par libsane.so exportent
la même interface. En clair, quelque soit le fichier réel,
un programme travaillera de la même manière. Le simple fait
que libsane.soit un lien offre une dynamique très utile pour l'utilisateur.
Il est possible à tout moment de changer le lien et ainsi de changer
de scanner. Le problème posé par ce mode de fonctionnement
apparaît dans le cas où vous possédez plusieurs scanners.
A ce problème, SANE apporte une solution sous la forme de deux
pseudo-pilotes : DLL et NET.
Il s'agit de pseudo-pilotes car ils ne dialoguent pas directement avec
le scanner mais avec d'autres pilotes de SANE (voir schémas). Résultat,
SANE est un partenaire de qualité si vous souhaitez accéder
à un scanner distant. En effet, il est parfaitement possible de
numériser via InterNet un document posé sur un scanner situé
à des milliers de kilomètres de vous.
LE MAITRE DES SCANNERS : SCSI
A l'heure où
nous écrivons ces lignes, seuls les scanners SCSI sont supportés
par SANE. Il est donc impératif d'installer correctement son interface
SCSI. Dans notre cas, notre scanner Mustek était livré avec
une carte comportant une puce DTC. Cette carte est un contrôleur
SCSI qui malheureusement ne sera jamais compatible Linux. En effet, pour
connaître les spécifications de cette puce, il faut signer
un accord de non-diffusion avec DTC. En clair, en sachant faire un pilote
vous vous en interdisez la distribution, sinon vous êtes en désaccord
avec DTC.
La solution la plus simple consiste donc à vous procurer une carte
contrôleur SCSI supportée par Linux. Quasiment toutes les
cartes du marché le sont actuellement. Nous avons utilisé
une carte Tekram DC390 (ne voyez là aucune pub, on a pris ce qu'on
avait). Profitons-en pour signaler à tous possesseurs d'une de
ces cartes que vous trouverez un patch du kernel très utile sur
le site ftp de tekram. Fermons là, la parenthèse.
UTILISATION DE SANE
Il est possible d'utiliser
SANE de deux manières différentes : soit vous optez pour
la solution "ligne de commande", soit pour celle de l'interface graphique.
Une fois que vous aurez téléchargé la dernière
version de SANE sur ftp://ftp.mostang.com/pub/sane, il faudra le
compiler et l'installer. Vous obtiendrez, alors, quatre utilitaires importants
:
find-scanner : Il vous permettra de savoir quel scanner est présent
sur votre chaîne SCSI et surtout son nom de périphérique.
scan-image : Voici l'outil de numérisation principal (frontend)
sur la ligne du shell. Nous en parlerons plus loin.
xcam : Il s'agit de l'utilitaire permettant de contrôler et de d'obtenir
des images en provenance d'une Connectix QuickCam.
xscanimage : C'est l'équivalent de scanimage pour Xwindow. Il fonctionne
avec la bibliothèque Gtk+ utilisé par Gimp et peut être
utilisé comme un plug-in.
UTILISATION DE SCANIMAGE
Dans un premier
temps, il est nécessaire de savoir qu'un scanner n'est pas absolument
demandé pour tester SANE et scanimage. En effet, deux périphériques
virtuels sont proposés sous les noms pnm0 et pnm1. Ceux-ci permettent
la simulation de scanners par l'intermédiaire de fichiers PNM (portable
anymap).
Pour vérifier la liste des périphériques de numérisation,
tapez scanimage -L. Ceci vous gratifiera du message :
device 'pnm:0' is a Noname PNM file reader virtual device
device 'pnm:1' is a Noname PNM file reader virtual device
Si vous avez la chance de posséder un scanner, la ligne suivante
apparaîtra en plus (dans le cas d'un mustek) :
Īmustek:/dev/sga' is a Mustek MFS-12000SP flatbed scanner
Chaque périphérique détecté possède
des paramètres qui lui sont propres. La commande scanimage - -help
-d nom de périphérique vous affichera la liste des paramètres
supportés. Dans le cas du périphérique virtuel pnm:0,
vous obtiendrez la liste en figure 1. Pour notre Mustek, la sortie est
donnée en figure 2.
Pour tester le fonctionnement de scanimage, créez tout d'abord
une image et sauvegardez-la au format ppm sous le nom source.ppm. Celle-ci
sera considérée comme la source de numérisation par
SANE. Puis, tapez la commande suivante :
scanimage -d pnm:0 - -contrats 50 -filename source.ppm > sortie.ppm
Le fichier source.ppm sera lu comme une information provenant d'un scanner.
L'utilitaire scanimage lui appliquera un contraste de +50 pourcent et
enverra les informations dans sortie.ppm. Si vous comparez les deux images,
vous constaterez une différence de contraste évidente.
Certes, cette manipulation aurait pu être faite avec n'importe quel
utilitaire de conversion d'images. Mais scanimage fonctionne de la même
manière avec un scanner. Exemple pour notre scanner Mustek, nous
utilisons la ligne de commande suivante :
scanimage -d mustek:/dev/sga -mode color -v >sortie.ppm
INTERFACE GRAPHIQUE
Nombreuses sont les personnes qui n'aiment guère taper des commandes sur la ligne du shell. Pour résoudre ce problème, l'utilitaire xscanimage permet une numérisation depuis Xwindow en utilisant la bibliothèque Gtk.
Avec le périphérique virtuel pnm:0, xscanimage se présente sous la forme d'une fenêtre donnée en figure 3. Ce périphérique n'étant pas un réel scanner, les options de numérisation sont très légères et se limitent au contraste et à la luminosité. Deux zones de saisie vous permettent d'entrer un nom de fichier en sortie (Output) et un autre en entrée (Source Selection).
Reprenons notre exemple précédent. Pour ce faire, saisissez source.ppm dans le champ "Source Selection". Cliquez ensuite sur le bouton "Preview Windows" pour faire apparaître la fenêtre de pré-numérisation. Ici, cliquez sur "Acquire Preview", vous ferez apparaître ainsi le contenu de votre fichier source.ppm (figure 4). Vous pouvez à présent vous amuser à changer le contraste et la luminosité, puis cliquez à nouveau sur "Acquire Preview" pour obtenir un aperçu (figure 5).
Les boutons "Grayify", "Hand-Scanner Simulation" et "Three-Pass Simulation" permettent respectivement une numérisation en gris, en mode scanner à main et en simulation de scanner trois passes. Dans ce dernier cas, l'image sera sauvegardée en trois fois (Rouge, Vert et Bleu).
Nous l'avons déjà dit, xscanimage change d'apparence en fonction du périphérique que vous utilisez. Pour vous le démontrer, voici les parmètres utilisables avec notre scanner Mustek en figure 6.
L'utilitaire xscamimage peut être associé à Gimp. Pour cela, il vous suffira de créer un lien symbolique depuis le fichier xscanimage vers le répertoire des plug-ins de Gimp. Sur notre machine, la commande était :
ln -s /usr/bin/xscanimage /usr/lib/gimp/1.0/plug-ins/xcsanimage
Au démarrage suivant de Gimp, vous trouverez un nouveau menu "Acquire Image" dans le menu des extensions (Xtns). Depuis celui-ci, vous pourrez choisir votre périphérique de numérisation et lancer xscanimage (figure 8). L'image numérisée arrivera directement dans une fenêtre de Gimp où vous pourrez la retoucher, l'enregistrer, etc.
LE COMMERCE ET LE FUTUR
La version de SANE que nous avons utiliser pour construire ce dossier est la 0.73. Les différentes versions qui nous séparent de la 1.0 ont pour but d'augmenter le nombre de scanners utilisables. Une participation des constructeurs de périphériques seraient bienvenue d'autant plus que Linux s'est affirmé en tant qu'alternative aux systèmes Apple et Microsoft. Le projet Gimp est déjà arrivé à terme et s'impose d'ores et déjà comme un concurrent direct aux logiciels commerciaux et propriétaires.
Le futur à long terme de SANE sera la prise en charge non seulement des scanners et des caméras, mais également de l'ensemble des périphériques multimédia. Ceci inclus toutes les sources d'images comme les appareils photos numériques, les cartes d'acquisition vidéo et les matériels médicaux de pointe.
Le chemin est encore long et les aides d'utilisateurs et de programmeurs à travers le monde sont les bienvenues. Si vous avez en votre possession un scanner non listé et que vous désirez participer au projet, contactez directement l'équipe de développement de SANE sur InterNet.
LISTE DES SCANNERS COMPATIBLES AVEC LA VERSION 0.73
HP
ScanJet IIcx (C2500A 3332)
ScanJet IIp (C1790A)
ScanJet 3C (C2520A 3503)
ScanJet 4C (C2520A)
HP 6100 (C2520A 3644)
ScanJet 4P (C1130A 3540)
PhotoSmart (C5100A)
ScanJet 5P (C5110A)
MICROTEK
ScanMaker E2, E3, E6
ScanMaker 600ZS, II, IIHR, IISP, III, 630
Vobis Realscan, Highscan
MUSTEK
MFC-600S (MFC-06000CZ) v1.01
MFC-600CD (MFC-06000CZ) v2.03
MFS-6000CX (MFS-06000CX) v2.71
MFS-6000SP (MFS-06000SP) v3.12
MFS-8000SP (MFS-08000SP) v2.05
MFC-800S (MFC-08000CZ) v1.06
MFS-1200SP (MFS-12000SP) V1.00, v1.02, 1.07
MFS-12000CX (MFS-12000CX) v2.71
UMAX
Vista-S6, S6E, S8, T630
SuperVista S-12
PL-II
Astra 600S, 1200S
UC630/840
UG630
Online
SANE : http://www.mostang.com/sane/
Gimp : http://www.gimp.org/
Gtk : http://www.gtk.org/
TWAIN : http://www.twain.org/