sane-bh - controlor SANE pentru scanerele de documente Bell+Howell
din seria Copiscan II
Biblioteca sane-bh implementează un controlor SANE
(Scanner Access Now Easy) care oferă acces la scanerele de documente
din seria Bell+Howell Copiscan II. Copiscan II 6338 a fost modelul principal
de scaner utilizat în timpul dezvoltării și
testării, dar deoarece interfața de programare pentru
întreaga serie este consecventă, controlorul ar trebui
să funcționeze pentru următoarele modele de scaner:
COPISCAN II 6338 - Scaner duplex cu ACE
COPISCAN II 2135 - Scaner simplu
COPISCAN II 2137(A) - Scaner simplu (cu ACE)
COPISCAN II 2138A - Scaner simplu cu ACE
COPISCAN II 3238 - Scaner simplu
COPISCAN II 3338(A) - Scaner simplu (cu ACE)
Dacă aveți un scaner Bell+Howell și
puteți să îl testați cu acest controlor
vă rugăm să contactați
sane-devel@alioth-lists.debian.net cu numărul modelului
și rezultatele testării. Aruncați o privire la
http://www.sane-project.org/mailing-lists.html cu privire la abonarea
la sane-devel. În plus, autorul este curios cu privire la
probabilitatea de a utiliza acest controlor cu scanerele mai noi din seriile
4000 și 8000. Dacă aveți o astfel de
„bestie”, vă rog să-mi spuneți.
Scanerele de documente Bell+Howell din seria Copiscan II sunt
scanere de volum mare, cu randament ridicat, concepute pentru
aplicații de scanare a documentelor. Ca atare, acestea sunt scanere
lineare/în scară de gri care acceptă un număr
fix de rezoluții destul de scăzute (de exemplu, 200/240/300
dpi). Cu toate acestea, ele dispun de o serie de caracteristici interesante
și utile, adaptate nevoilor aplicațiilor de procesare a
imaginilor din documente. Acest controlor încearcă să
asigure suport pentru cât mai multe dintre aceste caracteristici.
Principala referință tehnică utilizată
la scrierea acestui controlor este Bell and Howell Copiscan II Remote
SCSI Controller (RSC) OEM Technical Manual Version 1.5. HOWTO-ul
de programare Linux SCSI, documentația SANE API și codul
sursă SANE au fost, de asemenea, resurse extrem de valoroase.
Cea mai recentă versiune a controlorului, informații
suplimentare și sfaturi utile sunt disponibile pe pagina
principală a controlorului:
http://www.martoneconsulting.com/sane-bh.html
Acest controlor așteaptă nume de dispozitive de
forma:
special
Unde special este numele de rută pentru dispozitivul
special care corespunde unui scaner SCSI. În cazul scanerelor SCSI,
numele dispozitivului special trebuie să fie un dispozitiv SCSI
generic sau o legătură simbolică către un astfel
de dispozitiv. În Linux, un astfel de nume de dispozitiv are un
format ca /dev/sga sau /dev/sg0, de exemplu. Pentru detalii,
consultați sane-scsi(5).
- Opțiuni pentru modul de
scanare:
- --preview[=(yes|no)]
[no]
- Solicită o scanare cu calitate de previzualizare. Atunci
când previzualizarea este stabilită la „yes”,
compresia imaginii este dezactivată și imaginea este
livrată într-un cadru SANE_FRAME_GRAY.
- --mode lineart|halftone
[lineart]
- Selectează modul de scanare (de exemplu, lineart (desen grafic),
monocrom sau color).
- --resolution
200|240|300dpi [200]
- Stabilește rezoluția imaginii scanate. Fiecare model de
scaner acceptă o listă de rezoluții standard; numai
aceste rezoluții pot fi utilizate.
- --compression
none|g31d|g32d|g42d [none]
- Stabilește modul de compresie al scanerului. Determină tipul
de date returnate de scaner. Valorile sunt:
none - date necomprimate - livrate într-un cadru SANE_FRAME_GRAY
g31d - CCITT G3 1 dimension (MH) - livrate într-un cadru
SANE_FRAME_G31D
g32d - CCITT G3 2 dimensions (MR, K=4) - livrate într-un cadru
SANE_FRAME_G32D
g42d - CCITT G4 (MMR) - livrate într-un cadru SANE_FRAME_G42D
NOTĂ: Utilizarea valorilor de compresie g31d, g32d
și g42d determină controlorul să genereze formate de
cadre opționale care pot să nu fie acceptate de toate
interfețele SANE.
- Opțiuni
geometrie:
- --autoborder[=(yes|no)]
[yes]
- Activează/dezactivează detectarea automată a marginii
imaginii. Atunci când este activată, unitatea RSC
detectează automat zona imaginii și ajustează
geometria ferestrei pentru a se potrivi.
- --paper-size
Custom|Letter|Legal|A3|A4|A5|A6|B4|B5 [Custom]
- Specifică geometria ferestrei de scanare prin specificarea
dimensiunii hârtiei documentelor care urmează să fie
scanate.
- --tl-x 0..297.18mm
[0]
- Poziția x din stânga-sus a zonei de scanare.
- --tl-y 0..431.8mm
[0]
- Poziția y din stânga-sus a zonei de scanare.
- --br-x 0..297.18mm
[297.18]
- Poziția x din dreapta-jos a zonei de scanare.
- --br-y 0..431.8mm
[431.8]
- Poziția y din dreapta-jos a zonei de scanare.
- Opțiuni pentru
alimentator:
- --source Automatic
Document Feeder|Manual Feed Tray [Automatic Document Feeder]
- Selectează sursa de scanare (cum ar fi un alimentator de
documente). Această opțiune este oferită pentru a
permite scanarea mai multor imagini cu xsane(1); nu are alt
scop.
- --batch[=(yes|no)]
[no]
- Activează/dezactivează scanarea în modul lot. Modul
lot permite scanarea la capacitate maximă prin stocarea datelor
în memoria tampon din unitatea RSC. Această opțiune
este recomandată la scanarea mai multor pagini până
când alimentatorul este golit.
- --duplex[=(yes|no)]
[no]
- Activează scanarea duplex (față-verso). Scanerul
captează o imagine a fiecărei fețe a documentului
în timpul unei singure treceri prin scaner. Prima pagină
este livrată urmată de pagina din spate. Majoritatea
opțiunilor, cum ar fi compresia, afectează atât
pagina din față, cât și cea din spate.
- --timeout-adf 0..255
[0]
- Stabilește timpul de așteptare în secunde pentru
alimentatorul automat de documente (ADF). Valoarea 0 specifică
valoarea implicită hardware care variază în
funcție de modelul scanerului.
- --timeout-manual
0..255 [0]
- Stabilește timpul de așteptare în secunde pentru
alimentatorul semiautomat. Valoarea 0 specifică valoarea
implicită hardware care variază în funcție de
modelul scanerului.
- --check-adf[=(yes|no)]
[no]
- Verifică starea ADF înainte de a începe scanarea
utilizând comanda OBJECT POSITION (Poziția obiectului).
Rețineți că această funcție
necesită nivelul de firmware RSC 1.5 sau mai mare și
comutatorul dip 4 trebuie să fie în poziția pornit.
NOTĂ: Această opțiune nu a fost testată
extensiv și poate produce rezultate nedorite.
- Îmbunătățire:
- --control-panel[=(yes|no)]
[yes]
- Activează panoul de control al scanerului pentru selectarea
parametrilor de îmbunătățire a imaginii.
Atunci când opțiunea este stabilită la
„no”, următoarele opțiuni sunt utilizate
pentru a controla îmbunătățirea imaginii.
Consultați ghidul de utilizare a scanerului Bell+Howell pentru
informații complete privind funcționalitatea ACE.
- --ace-function -4..4
[3]
- Specifică funcția de
îmbunătățire automată a contrastului
(„Automatic Contrast Enhancement”: ACE).
- --ace-sensitivity 0..9
[5]
- Specifică sensibilitatea îmbunătățirii
automate a contrastului (ACE).
- --brightness
0..255 [0]
- Controlează luminozitatea imaginii achiziționate.
Ignorată pentru scanerele compatibile ACE.
- --threshold
0..255 [0]
- Selectează luminozitatea minimă pentru a obține un
punct alb. Ignorată pentru scanerele compatibile ACE.
- --contrast 0..255
[inactive]
- Controlează contrastul imaginii achiziționate.
Această opțiune nu este utilizată în prezent
de scaner (și poate că nu va fi niciodată).
- --negative[=(yes|no)]
[no]
- Interschimbă albul și negrul, obținând o
imagine video inversă.
- Pictogramă:
- --icon-width 0..3600pel
(în pași de 8) [0]
- Lățimea imaginii pictogramei (miniaturii) în
pixeli.
- --icon-length
0..3600pel (în pași de 8) [0]
- Lungimea imaginii pictogramei (miniaturii) în pixeli.
- Opțiuni cod de
bare:
- --barcode-search-bar
<a se vedea lista> [none]
- Specifică tipul de cod de bare care trebuie căutat.
Dacă această opțiune nu este specificată sau
este specificată cu o valoare de „none” (niciunul),
funcția de decodificare a codurilor de bare este complet
dezactivată. Tipurile de coduri de bare valide sunt:
none
ean-8
ean-13
reserved-ean-add
code39
code2-5-interleaved
code2-5-3lines-matrix
code2-5-3lines-datalogic
code2-5-5lines-industrial
patchcode
codabar
codabar-with-start-stop
code39ascii
code128
code2-5-5lines-iata
- --barcode-search-count
1..7 [3]
- Numărul de ori în care RSC efectuează algoritmul de
decodificare. Specificați cel mai mic număr posibil pentru a
crește performanța. Dacă aveți probleme cu
recunoașterea codurilor de bare, se sugerează să
măriți această opțiune la valoarea
maximă (7).
- --barcode-search-mode
<a se vedea lista> [horiz-vert]
- Alege orientarea codurilor de bare care urmează să fie
căutate. Orientările valide sunt:
horiz-vert
horizontal
vertical
vert-horiz
- --barcode-hmin
0..1660mm [5]
- Stabilește înălțimea minimă a codului
de bare în milimetri (valorile mai mari cresc viteza de
recunoaștere). Desigur, codurile de bare reale din document trebuie
să aibă dimensiuni suficiente.
- --barcode-search-timeout
20..65535us [10000]
- Stabilește timpul limită pentru căutarea codurilor de
bare în milisecunde. Când expiră timpul de
așteptare, decodificatorul nu va mai încerca să
decodifice coduri de bare.
- --section
<șir> []
- Specifică o serie de secțiuni de imagine. O secțiune
poate fi utilizată pentru a colecta un subset de imagini sau pentru
a oferi o zonă mică pentru decodificarea codurilor de bare.
Fiecare secțiune este specificată în următorul
format (unitățile sunt în milimetri):
<lățime>x<înălțime>+<stânga-sus-x>+<stânga-sus-y>[:
cod-funcție...]
Mai multe secțiuni pot fi specificate prin separarea lor cu
virgule.
De exemplu, 76.2x25.4+50.8+0:frontbar identifică o
zonă de 3 inch lățime și 1 inch
înălțime, cu un colț stânga sus în
partea de sus a paginii, la doi inch de marginea stângă a
paginii. Această secțiune va fi utilizată pentru
decodificarea codurilor de bare numai pe prima pagină.
De exemplu, 50.8x25.4+25.4+0:frontbar:front:g42d
identifică o zonă de 2 inci lățime și 1
inci înălțime, cu un colț stânga sus
în partea de sus a paginii, la un inci de marginea
stângă a paginii. Această secțiune va fi
utilizată pentru decodificarea codurilor de bare pe prima
pagină, precum și pentru generarea unei imagini comprimate
în format g42d.
În mod normal, codurile de bare sunt căutate
în întreaga imagine. Cu toate acestea, atunci când
specificați secțiuni, toate căutările codurilor
de bare se fac în secțiunile specifice identificate. Acest
lucru poate accelera semnificativ procesul de decodificare.
Sunt disponibile următoarele coduri de funcție:
front - generează o imagine pentru secțiunea din
față a paginii
back - generează o imagine pentru secțiunea din partea din
spate a paginii
frontbar - efectuează căutarea codului de bare în
secțiunea din față a paginii
backbar - efectuează căutarea codului de bare în
secțiunea din partea din spate a paginii
frontpatch - efectuează căutarea de patchcode în
secțiunea din față a paginii
frontpatch - efectuează căutarea de patchcode în
secțiunea din partea din spate a paginii
none - nu utilizează compresia imaginii
g31d - utilizează compresia unidimensională a imaginii
grupului 3
g31d - utilizează compresia bidimensională a imaginii
grupului 3
g42d - utilizează compresia bidimensională a imaginii
grupului 4
Dacă omiteți un cod de funcție de compresie,
se utilizează valoarea de compresie a paginii complete. Dacă
specificați mai multe coduri de funcție de compresie, se
utilizează numai ultimul.
- --barcode-relmax
0..255 [0]
- Specifică relația maximă de la bara cea mai
lată la cea mai îngustă.
- --barcode-barmin
0..255 [0]
- Specifică numărul minim de bare din codul Bar/Patch.
- --barcode-barmax
0..255 [0]
- Specifică numărul maxim de bare dintr-un cod Bar/Patch.
- --barcode-contrast
0..6 [3]
- Specifică contrastul imaginii utilizat în decodificare.
Utilizați valori mai mari atunci când există mai
mulți pixeli albi în cod.
- --barcode-patchmode
0..1 [0]
- Controlează detectarea codului de bare-patch.
Conținutul fișierului bh.conf este o
listă de nume de dispozitive care corespund scanerelor Bell+Howell.
Consultați sane-scsi(5) pentru detalii despre ce constituie un
nume de dispozitiv valid. În plus, pot fi specificate opțiuni;
aceste linii încep cu cuvântul „option”. Fiecare
opțiune este descrisă în detaliu mai jos. Liniile goale
și liniile care încep cu un simbol hash (#) sunt ignorate.
Următoarele opțiuni pot fi specificate în
fișierul bh.conf:
- disable-optional-frames
- Această opțiune împiedică controlorul
să trimită orice cadre opționale. Această
opțiune poate fi utilă în cazul interfețelor
care nu acceptă aceste cadre opționale. Atunci când
această opțiune este în vigoare, datele sunt trimise
într-un cadru SANE_FRAME_GRAY. Cadrele opționale
trimise de acest controlor sunt: SANE_FRAME_G31D,
SANE_FRAME_G32D, SANE_FRAME_G42D și
SANE_FRAME_TEXT. Aceste cadre sunt generate pe baza
opțiunilor de compresie și cod de bare. Aceste cadre nu sunt
niciodată trimise în modul previzualizare.
- fake-inquiry
- Această opțiune este utilizată în scopuri de
depanare și utilizarea sa nu este încurajată.
În esență, permite controlorului să se
inițializeze în absența unui scaner. Acest lucru este
util pentru dezvoltare și nu prea multe altele. Această
opțiune trebuie să fie specificată mai înainte
în fișierul de configurare de dispozitivele care
urmează să fie „falsificate”.
- /etc/sane.d/bh.conf
- Fișierul de configurare al controlorului (a se vedea, de asemenea,
descrierea SANE_CONFIG_DIR de mai jos).
- /usr/lib/x86_64-linux-gnu/sane/libsane-bh.a
- Biblioteca statică care implementează acest controlor.
- /usr/lib/x86_64-linux-gnu/sane/libsane-bh.so
- Biblioteca partajată care implementează acest controlor
(prezentă pe sistemele care acceptă încărcare
dinamică).
- SANE_CONFIG_DIR
- Această variabilă de mediu specifică lista de
directoare care pot conține fișierul de configurare.
În sistemele *NIX, directoarele sunt separate prin două
puncte („:”), în OS/2, ele sunt separate prin punct
și virgulă („;”). Dacă această
variabilă nu este definită, fișierul de configurare
este căutat în două directoare implicite: mai
întâi, în directorul de lucru curent
(„.”) și apoi în /etc/sane.d.
Dacă valoarea variabilei de mediu se termină cu caracterul
de separare a directoarelor, atunci directoarele implicite sunt
căutate după directoarele specificate explicit. De exemplu,
dacă se definește SANE_CONFIG_DIR la
„/tmp/config:”, se vor căuta (în
această ordine) directoarele tmp/config, . și
/etc/sane.d.
- SANE_DEBUG_BH
- Dacă biblioteca a fost compilată cu suportul de depanare
activat, această variabilă de mediu controlează
nivelul de depanare pentru acest controlor. De exemplu, o valoare de 255
solicită imprimarea tuturor datelor de depanare. Nivelurile mai
mici reduc volumul de informații.
- Suport ADF
- În cazul scanerelor de documente, suportul pentru alimentatorul
automat de documente (ADF) este o caracteristică
esențială. Controlorul acceptă în mod implicit
ADF-ul și returnează SANE_STATUS_NO_DOCS atunci
când este detectată condiția de ieșire din
hârtie. Interfața SANE scanadf(1) este o
interfață de linie de comandă care acceptă
scanări de mai multe pagini. Aceasta a fost utilizată cu
succes cu acest controlor. Interfața SANE xsane(1) este o
interfață GUI
îmbunătățită de Oliver Rauch. Suportul
pentru scanări multipagină este inclus în
«xsane» versiunea 0.35 și versiunile ulterioare.
- Scanare
duplex
- Unele modele, cum ar fi COPISCAN II 6338, acceptă scanarea duplex.
Adică, acestea scanează ambele părți ale
documentului în timpul unei singure treceri prin scaner (scanerul
are două camere). Acest controlor permite scanarea duplex (cu
opțiunea --duplex). Imaginile de pe prima și a doua
pagină sunt livrate consecutiv, ca și cum ar fi fost pagini
scanate separat.
- Compresie
hardware
- Scanerul este capabil să comprime datele în mai multe
formate standard industriale (CCITT G3, CCITT G3-2D, CCITT G4). Acest
lucru duce la creșterea performanței, deoarece mai
puține date sunt transmise de la scaner la gazdă pe
magistrala SCSI. Controlorul acceptă aceste formate de compresie
prin opțiunile --g31d, --g32d, --g42d, respectiv. Cu toate
acestea, multe interfețe SANE nu sunt echipate pentru a face
față acestor formate. Interfața SANE
scanadf(1) acceptă aceste formate de cadre opționale.
Datele imaginii comprimate sunt scrise direct într-un fișier
și pot fi apoi prelucrate de un scan-script folosind
opțiunea --scan-script. Pe pagina de pornire
scanadf(1) sunt oferite exemple în acest sens.
- Detectarea
automată a marginilor
- Scanerul poate detecta automat dimensiunea hârtiei și poate
ajusta corespunzător geometria ferestrei de scanare. Controlorul
acceptă această caracteristică utilă cu
opțiunea --autoborder. Aceasta este activată
în mod implicit.
- Scanare în
mod lot
- Modul de scanare pe loturi permite un randament maxim. Parametrii
ferestrei configurate trebuie să rămână
constanți pe parcursul întregului lot.
- Generarea de
pictograme
- Funcția Icon generează o miniatură a imaginii
întregii pagini, care poate fi transferată ca și cum
ar fi o pagină separată. Acest lucru permite gazdei
să afișeze rapid o reprezentare în miniatură
în timpul operației de scanare. Poate că aceasta ar
fi o modalitate excelentă de a implementa o scanare cu
previzualizare, dar, deoarece o scanare normală este atât de
rapidă, s-ar putea să nu merite osteneala.
- Secțiuni
multiple
- Mai multe secțiuni (subferestre de scanare) pot fi definite pentru
prima și ultima pagină. Fiecare secțiune poate avea
caracteristici diferite (de exemplu, geometrie, compresie).
Secțiunile sunt returnate ca și cum ar fi fost imagini
scanate separat. În plus, secțiunile pot fi utilizate pentru
a spori considerabil precizia și eficiența procesului de
decodificare a codurilor de bare/patchcode-urilor prin limitarea zonei de
căutare la o mică parte a paginii. Majoritatea scanerelor
din seria Copiscan II acceptă până la 8
secțiuni definite de utilizator.
- Suport pentru
decodificarea codurilor de bare/patchcode
- Unitatea RSC poate recunoaște coduri de bare și
patchcode-uri de diferite tipuri încorporate în imaginea
scanată. Codurile sunt decodificate, iar datele sunt returnate
către interfață sub forma unui cadru de text. Textul
este codificat în xml și conține o mulțime de
informații despre datele decodificate, cum ar fi locul în
care au fost găsite, orientarea lor și timpul necesar pentru
a le găsi. Informații suplimentare privind conținutul
acestui cadru de text, precum și câteva exemple de
decodificare a codurilor de bare pot fi găsite pe pagina
principală a controlorului.
- Decodificarea
unui singur tip de cod de bare per scanare
- Unitatea RSC poate căuta simultan până la șase
tipuri diferite de coduri de bare. Deși codul acceptă,
în general, și acest lucru, opțiunea
--barcode-search-bar permite utilizatorului să specifice
doar un singur tip de cod de bare. Poate că o altă
opțiune care să permită o listă de coduri de
tip cod de bare separate prin virgule ar putea fi adăugată
pentru a rezolva această problemă.
- Scanarea unui
număr fix de pagini în modul lot
- Separarea dintre funcționalitatea frontală (de
interfață cu utilizatorul) și cea din spate
(controlorul) în SANE prezintă o problemă în
ceea ce privește susținerea
funcționalității „anulare lot”
în scaner. În modul lot, scanerul este întotdeauna cu
o pagină înaintea gazdei. Gazda, știind dinainte care
pagină va fi ultima, poate anula modul lot înainte de
inițierea ultimei comenzi de scanare. În prezent, nu
există niciun mecanism disponibil pentru ca interfața
să transmită aceste informații către
controlor. Dacă modul lot este activat și --end-count
încheie o sesiune scanadf(1), o pagină
suplimentară va fi scoasă prin scaner, dar nu va fi nici
citită, nici transmisă către interfață.
Problema poate fi evitată prin specificarea --batch=no la
scanarea unui număr fix de pagini.
- Revizia 1.2 Patch
detector
- Există un algoritm îmbunătățit de
detectare a patchcode-urilor disponibil în RSC cu versiunea 1.2 sau
superioară, care este mai rapid și mai fiabil decât
decodorul standard de coduri de bare/patchcode-uri. Acesta nu este
acceptat în prezent.
Rapoartele detaliate despre erori sunt binevenite -- și
așteptate ;)
Dacă ați găsit ceva care credeți
că este o eroare, vă rugăm să
încercați să o recreați cu variabila de mediu
SANE_DEBUG_BH stabilită la 255 și să
trimiteți un raport care să detalieze condițiile
în care s-a produs eroarea la
sane-devel@alioth-lists.debian.net.
controlorul sane-bh a fost scris de Tom Martone, pe baza
controlorului sane-ricoh(5) de Feico W. Dillema și a
programului «bnhscan» de Sean Reifschneider de la tummy.com
ltd. Aproximativ 8000 de îmbunătățiri
adăugate de Mark Temple.
Traducerea în limba română a acestui manual a
fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită;
citiți
Licența
publică generală GNU Versiunea 3 sau o versiune
ulterioară cu privire la condiții privind drepturile de autor.
NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea
acestui manual, vă rugăm să trimiteți un e-mail
la
translation-team-ro@lists.sourceforge.net.