Studio e implementazione di interfacce dedicate a

Transcript

Studio e implementazione di interfacce dedicate a
UNIVERSITÀ DEGLI STUDI DI PALERMO
Facoltà di Scienze Matematiche Fisiche e Naturali
Corso di Laurea in Scienze dell’Informazione
Studio e implementazione di interfacce dedicate a
utenti non vedenti e ipovedenti per sistemi telefonici
basati su tecnologia VOIP
Relatore:
Chiar.mo Prof. Tegolo Domenico
Tesi di Laurea di
Fabio SANGIORGI
Matricola n. 0452804
ANNO ACCADEMICO 2011 / 2012
Un sentito ringraziamento
alla mia famiglia che mi ha sempre sostenuto,
a Stefania, che mi ha incoraggiato
e a tutti gli amici, che hanno cercato di non distrarmi dal mio percorso.
Desidero ringraziare inoltre il prof. Domenico Tegolo,
relatore di questa tesi, per la grande disponibilità dimostratami
e i centralinisti Girolamo Morreale e Giuseppe Visconti,
per i loro utili suggerimenti
Indice
INTRODUZIONE ............................................................................................................................. 5
CAPITOLO 1 I NON VEDENTI E LA COMUNICAZIONE .................................................................... 7
1.1 Storia del braille .................................................................................................................. 7
CAPITOLO 2 STRUMENTI PER I NON VEDENTI / IPOVEDENTI ....................................................... 9
2.1 Gli strumenti per i non vedenti ........................................................................................... 9
2.2 Strumenti Software per non vedenti (ocr tts Jaws) .......................................................... 10
2.3 Strumenti Hardware per non vedenti ............................................................................... 13
CAPITOLO 3 VOIP ........................................................................................................................ 16
3.1 Sistemi VoIP standard, telefoni e softphone .................................................................... 16
3.2 Voice over IP...................................................................................................................... 17
3.3 Tecnologia Protocolli e Codec ........................................................................................... 18
3.4 Strumenti (telefoni, softphone, moduli ata) ..................................................................... 19
CAPITOLO 4 CENTRALINI E STRUMENTI PER CENTRALINISTI ...................................................... 21
4.1 Cenni storici e normativa .................................................................................................. 21
4.2 Centralini telefonici e posto operatori .............................................................................. 22
4.3 Strumenti e servizi del Voip Unipa .................................................................................... 24
4.4 Cercapersone .................................................................................................................... 25
CAPITOLO 5 NON VEDENTI E IPOVEDENTI ALL’INTERNO DELL’ATENEO..................................... 27
5.1 Impiego del personale non vedenti e ipovedenti ............................................................. 27
5.2 Difficoltà e nuove interfacce ............................................................................................. 28
CAPITOLO 6 PROGETTO SVILUPPATO ......................................................................................... 32
6.1 Idea.................................................................................................................................... 32
6.2 Ambiente di sviluppo ........................................................................................................ 33
6.3 Interfaccia utente .............................................................................................................. 34
6.4 Determinazione dei parametri per la fase di OCR ............................................................ 38
6.5 Comunicazione fra applicazioni ........................................................................................ 50
6.6 gestione del Sistema Operativo ........................................................................................ 51
6.7 Gestione delle librerie usate ............................................................................................. 54
6.8 Keylogger........................................................................................................................... 57
6.9 Sintesi vocale ..................................................................................................................... 59
6.10 Interazione con il sistema Voip (telefoni snom) ............................................................. 61
6.11 Schermate ad alto contrasto ........................................................................................... 63
6.12 Elenco telefonico e rubrica ............................................................................................. 65
6.13 Integrazione con il sistema telefonico VoIP Unipa ......................................................... 69
CONCLUSIONI .............................................................................................................................. 70
BIBLIOGRAFIA .............................................................................................................................. 72
INTRODUZIONE
Le insidie della vita di un non vedente non possono essere percepite
semplicemente chiudendo gli occhi rimanendo in silenzio per qualche
minuto, per poi tentare di eseguire le azioni che in ogni momento della
nostra vita rappresentano la normalità, ci renderemmo immediatamente
conto di quante insidie possa racchiudere la vita di un non vedente.
La maggior parte dei gesti che compiamo sono correlate a informazioni che
ricaviamo dalla vista.
Rendere disponibili tali informazioni a una persona non vedente/ipovedente
vuol dire convertire e rimodulare queste, in modo che possano essere
acquisite da chi è portatore di un deficit visivo.
Grazie a speciali leggi, molti soggetti portatori di andicap visivo sono stati
inseriti nell’organico delle varie pubbliche amministrazioni e a molti di
questi, è stato affidato un lavoro da centralinista.
Lo stretto contatto con il mondo dei non vedenti permette di apprendere e
(in parte) comprendere le difficoltà riscontrate nell’utilizzare i moderni
strumenti dei telefonia e da qui è nata l’idea dello sviluppo di diversi
strumenti software, che hanno lo scopo di permettere il pieno, completo e
agevole utilizzo dei servizi telefonici.
L’integrazione di strumenti open source e l’implementazione di metodi di
comunicazione solitamente non impiegati in tale contesto ha permesso di
ottenere uno strumento di facile e intuitivo utilizzo.
Il progetto sviluppato nasce grazie anche alla collaborazione con più
soggetti non vedenti/ipovedenti, che durante lo sviluppo hanno dato la loro
5
disponibilità per il test della versione beta e le cui specifiche indicazione
sono state indispensabile nella creazione di un software realmente
utilizzabile.
6
CAPITOLO 1
I NON VEDENTI E LA COMUNICAZIONE
1.1 Storia del braille
Una rappresentazione tattile dell'alfabeto fonetico nacque nel 19° secolo, a
opera del francese Louis Braille. Questa permette sia di leggere che di
scrivere lettere, numeri, segni di punteggiatura e gli spartiti musicali,
cambiando la vita dei non vedenti e continuando a fornire loro uno
strumento per relazionarsi al mondo esterno.
Grande importanza è data da tutti i studiosi alla necessità di dare una
formazione delle persone non vedenti che, fin dall'età scolastica 1, sono in
grado di imparare a leggere e scrivere utilizzando una lavagna e una stilo
Braille, e che, durante il loro sviluppo, possono essere assistiti da esperti in
grado di guidare e insegnare l’uso delle nuove tecnologie.
In concomitanza con l'avvento dei computer, negli anni 80 e con Internet
nel decennio successivo, una serie di programmi sono stati sviluppati per
facilitare l'accesso alle informazioni anche alle persone non vedenti.
Tuttavia, il rapido progresso in questo campo ha reso difficile sviluppare il
software necessario per affrontare le varie difficoltà nell’uso anche
dell'applicazione più semplici.
Oltre alla domotica, una scienza interdisciplinare che cerca di applicare la
tecnologia per migliorare la qualità della vita nella casa e più in generale
1
Dr M N G Mani - The Role of Integrated Education for Blind Children
7
nell'ambiente umano, la ricerca continua a essere incentrata su dispositivi
portatili, smartphone e l'ultima generazione di tablet.
L'utilizzo di tecnologie comuni e già disponibili da tempo potrebbe aiutare
le persone non vedenti a usare funzioni e accedere a strumenti sviluppati
per utenti vedenti.
Purtroppo, le applicazioni elettroniche appositamente progettate per i non
vedenti sono costose e diventano rapidamente obsolete.
La velocità del progresso tecnologico sta fornendo ai non vedenti validi
strumenti quali: display Braille, stampanti apposite, sintetizzatori vocali,
ingranditori di immagini e software di riconoscimento vocale. Inoltre, la
mole di informazioni disponibili in forma digitale cresce di giorno in
giorno, presentando quindi nuove difficolta a chi è precluso l’utilizzo di
strumenti quali: mouse, touchscreen, e schermi vari, normalmente utilizzati
da persone dotate di vista.
Un obiettivo comune deve essere quello di sostenere progetti volti a
migliorare il software disponibile, progettando per fornire alle persone non
vedenti una maggiore autonomia.
8
CAPITOLO 2
STRUMENTI PER I NON VEDENTI / IPOVEDENTI
2.1 Gli strumenti per i non vedenti
L'utilizzo di un computer e l'opportunità di avere accesso alla rete internet,
sono divenuti indispensabili per la vita di un non vedente come per quella
di qualsiasi altro individuo. Sebbene la realizzazione di tali opportunità non
è di facile attuazione, moderni strumenti tecnologici permettono di
acquisire le informazioni presenti su un monitor tramite differenti canali.
Fra gli strumenti di possibile utilizzo vi sono i display braille o i
sintetizzatori vocali, che permettono a i non vedenti di avere accesso a
informazioni alle quali altrimenti sarebbero preclusi.
I nuovi sistemi operativi più diffusi forniscono un supporto nativo alla
sintesi ed al riconoscimento vocale (quest’ultima funzione non supporta
ancora l’italiano), e permettono di integrale tale funzionalità nello sviluppo
di nuovi software. Tali tecnologie si vanno sempre più diffondendo e il
processo di integrazione coinvolge anche dispositivi mobili quali telefoni e
smartphone.
Inoltre la qualità della sintesi vocale, negli ultimi anni, ha avuto un
notevole miglioramento avvicinandosi sempre più a quella del parlato
umano, basti pensare ai software utilizzati nelle stazioni ferroviarie per la
lettura degli annunci.
Software quali Loquendo vengono sempre più utilizzati in diversi contesti
come appunto la sintesi di annunci, o la creazione di voci registrate per
9
centralini telefonici. Come si vedrà nei prossimi capitoli tale tecnologia
assieme ad altre, è fortemente integrata nel software sviluppato è proposto.
2.2 Strumenti Software per non vedenti (ocr tts Jaws)
Attualmente sul mercato sono presenti svariati programmi sviluppati
appositamente per non vedenti e altri sviluppati per l'utenza vedente, i quali
migliorano l'esperienza di utilizzo di un personal computer e permettono di
assolvere mansioni precedentemente precluse a chi è affetto da un deficit
visivo.2
Tali programmi hanno finalità diverse, molte volte, interagiscono
reciprocamente nella loro esecuzione. Di seguito trovate un elenco.
 OCR: i software appartenente a questa categoria servono a
individuare del testo all'interno di immagini, documenti in formato
non testuale (come i PDF derivanti da scansioni ), o documenti il cui
contenuto di testo è presente ma in maniera cifrata. Tali software si
sono sempre più affinati raggiungendo qualità e percentuali di
riconoscimento molto alte. Oggi vengono individuate tabelle,
immagini presenti all'interno del testo, formati di formattazione ed
eventuali note presenti sul testo. Purtroppo i software più efficaci
non sono liberi da licenza e molte volte presentano dei costi elevati.
Tra questi ricordiamo Scansoft OmniPage e ABBYY Fine Reader.
Fortunatamente, sono stati sviluppati, parallelamente dei software al
licenza open source, quali Tesseract o OCRopus, che permettono di
accedere a tale tecnologia in maniera gratuita.
2
Ted S. Hasselbring - Candyce H.Williams Glaser
Use of Computer Technology to Help Students with Special Needs
10
 TTS: le funzionalità di text to speech sono da tempo presenti in
quasi tutti i sistemi operativi sviluppati sia per dispositivi fissi che
per dispositivi mobili, quali i telefoni e gli smartphone. La diffusione
di tale tecnologia suggerisce l'importanza della sintesi vocale in
ambito informatico e non solo. In diversi contesti in cui non è
possibile accedere a un'interfaccia visiva (per esempio quando
stiamo guidando un'auto) la vocalizzazione delle informazioni a noi
necessarie può risultare estremamente utile. Nel caso di utenti non
vedenti o ipovedenti la sintesi vocale offre un canale di
comunicazione fra lo strumento e l'utilizzatore. Basti pensare alla
lettura di un SMS o del numero di un chiamante da parte di uno
smartphone. Anche questa tecnologia è stata implementata nel
software presentato.
 Ingranditori di schermo: funzionano come una lente di
ingrandimento. Ingrandisce una porzione dello schermo selezionata
dall’utente tramite mouse o tramite strumenti di puntamento. Alcuni
strumenti di ingrandimento dello schermo di tipo software
permettono di eseguire lo zoom in avanti e in indietro su una
particolare area dello schermo. Esistono strumenti sviluppati da
Microsoft utilizzabili tramite mouse o tastiera quali Magnifier in
Windows 7, Windows Vista.
11
 Riconoscimento vocale: I software di riconoscimento vocale
permettono all'utente di non utilizzare la tastiera e di interagire con il
computer tramite comandi vocali. Programmando un set di istruzioni
predefinite, l'utente può controllare il PC tramite dei comandi dettati
al microfono dello stesso. Nella maggior parte dei casi, l'affidabilità
del sistema può essere aumentata con il "training" che adatta il
sistema ad un modello vocale specifico per l’utente. I sistemi di
riconoscimento vocale consentono di utilizzare una serie di
programmi applicativi, di dettare ad un word processor, o di inserire
dati in fogli di calcolo.

Screen Reader: sono software che si occupano della conversione di
ciò che appare sullo schermo di un PC in voce. Il programma
sintetizzerà tutto, compresi i nomi e le descrizioni dei pulsanti di
controllo, menu, testi e dei segni di punteggiatura.
 Jaws: è uno Screen Reader che merita una menzione particolare in
quanto rappresenta l'attuale stato dell'arte per quanto riguarda
l’utilizzo di un PC tramite la sintesi vocale. Questo permette non
solo la lettura di semplici testi ma il completo utilizzo di un personal
computer da parte di un cieco. Il software, ormai arrivato alla 12ª
versione, risulta essere uno strumento maturo e completo. L'utente
che utilizza tale strumento, spostandosi all'interno dei menu, dei link,
delle caselle di testo, delle pagine Internet accessibili dal suo
personal computer, sentirà la lettura del nome dello stesso elemento
del testo in esso contenuto.
12
L’esperienza con il mondo dei non vedenti offre l'opportunità di
comprendere come questi strumenti siano assolutamente indispensabili e
quanto questi possano aumentare la produttività e migliorare la vita di chi li
utilizza.
2.3 Strumenti Hardware per non vedenti
La sintesi vocale di cui abbiamo precedentemente parlato, ha un difetto:
quello di limitare la velocità di accesso all’informazione al tempo di lettura.
Per ovviare a questo problema e con l'intenzione di fornire ulteriori
strumenti, sono stati sviluppati appositi apparati hardware il cui utilizzo
può essere effettuato in maniera congiunta. Di seguito ne verranno
presentati alcuni:
 Display braille: è un altro strumento informatico che, collegato a un
pc riproduce le parole, i numeri, le punteggiature e le icone che
compaiono sul video in segni a otto punti. Esso presenta le
informazioni su una riga che può essere lunga da 20 a 80 caratteri.
Non vengono riprodotti eventuali segni grafici, tuttavia nei sistemi
più sofisticati viene fornita segnalazione della loro presenza
attraverso la dicitura "grafici XXX" (XXX sta per un numero).
L'ultima generazione di barre braille ha introdotto procedure per
l'aggancio automatico o comandato al cursore e sono in grado di
adeguarsi con una certa flessibilità ai colori di sfondo e ai tipi di
carattere che compaiono sullo schermo.
13
 Ingranditori di schermo: gli strumenti appositamente sviluppati per
i non vedenti possono essere inoltre utilizzati da soggetti ipovedenti.
Esistono appositi strumenti hardware sviluppati unicamente per
questi ultimi, come per esempio gli ingranditori di schermo. Questi
permettono di ingrandire tutto o una porzione dello schermo per
rendere possibile la lettura delle informazioni presenti si di esso.
 Scanner:
permette di acquisire trasformare in immagini libri,
giornali, e tutto ciò che è stampato o scritto. Solitamente viene
utilizzato in maniera congiunta con un sistema di O.C.R. e con un
sistema di sintesi vocale, in modo da permettere la lettura automatica
dei testi scansionati.
Figura 1 Foglio stampato in Braille

Stampanti Braille: (embossers) sono stampanti che generano dei
fogli di cartoncino con testo Braille in rilievo (fig. 1). Solitamente
funzionano unitamente a scanner e OCR, che acquisiscono il testo da
libri o riviste e lo convertono in testo, che viene così reso fruibile a
chi legge il braille.
14
Le soluzioni presentate migliorano, non di poco, la vita lavorativa di un
soggetto afflitto da deficit visivo, ma presentano l'inconveniente di avere
alti costi di acquisto. Sia sistemi software che sistemi hardware
appositamente studiati per i non vedenti hanno costi che, per un sistema
completo, si aggirano a diverse migliaia di euro. Lo stesso dicasi per le
soluzioni specificatamente sviluppate per centralinisti ciechi.
15
CAPITOLO 3
VOIP
3.1 Sistemi VoIP standard, telefoni e softphone
Nell’ultima decade le tecnologie del mondo informatico rivolgono la
propria attenzione nella migrazione delle tecnologie proprie del mondo
analogico, al mondo digitale. Uno dei primi passi compiuti a tal proposito è
stato quello del passaggio dalla pellicola fotografica ai sensori CCD, con
progressiva scomparsa delle macchine fotografiche analogiche. Simili
cambiamenti sono intervenuti anche nel mondo della televisione, del suono
e della telefonia.
Sono state toccate dalla digitalizzazione sia la fonia classica che quella
mobile, basti pensare al passaggio dal sistema Etacs al sistema GSM, con la
comparsa di una serie di servizi e un miglioramento della qualità del
servizio precedentemente non possibili.
Per la fonia fissa, un primo passo verso la digitalizzazione è stato compiuto
con la sostituzione delle vecchie centrali telefoniche di distretto, con
funzionamento elettromeccanico, con nuove centrali totalmente digitali.
Questo ha comportato la scomparsa del fenomeno dell'eco, dei problemi
sulle chiamate su lunghe tratte, e di tutti quegli inconvenienti legati a un
sistema a commutazione di circuito.
Oggi si sta verificando un ulteriore passo avanti, portando la tecnologia
digitale anche all'interno delle case dell'utente, e quindi dando la possibilità
all'utilizzatore finale di utilizzare dei pacchetti di dati come mezzo
trasmissivo per le chiamate telefoniche.
16
3.2 Voice over IP
(VoIP, acronimo di Voice over Internet Protocol) ci si riferisce
comunemente ai protocolli di comunicazione , alle tecnologie, alle
metodologie e alle tecniche di trasmissione coinvolte nella distribuzione di
comunicazioni vocali e multimediali attraverso sessioni di scambio dati su
reti a pacchetto. Altri termini comunemente associati al VoIP sono: la
telefonia IP, la telefonia via Internet, il VoBB (Voice over Broadband).
Come tutti i fenomeni di convergenza digitale, il VoIP, permette di
utilizzare infrastrutture di scambio dati preesistenti e quindi di realizzare
forti risparmi iniziali. Altri vantaggi rispetto alla telefonia tradizionale
sono:
 abbassamento o annullamento (chiamate fra sistemi VoIP) dei
costi per chiamata.
 L'implementazione di nuove funzionalità.
 Utilizzo di hardware standard (e riutilizzabile).
Inoltre, sono stati sviluppati diversi software open source per la
realizzazione di centralini e tra questi diversi prodotti risultano ormai
maturi e utilizzabili in produzione.
L'opportunità di abbassare le spese di implementazione, ha portato il
precedente governo a obbligare le pubbliche amministrazioni, tramite
opportuno decreto, ad adottare tali soluzioni per la gestione della propria
telefonia.
17
L'università degli studi di Palermo utilizza, attualmente, centralini basati su
server Linux e software Asterisk (open source).
3.3 Tecnologia Protocolli e Codec
La tecnologia VoIP converte un segnale analogico (voce umana) in segnale
digitale e canalizzando tale flusso di informazioni su un canale dati. La
prima fase vitale del processo consiste nella conversione da analogico a
digitale tramite un opportuno codec. Generalmente si usano codec che
utilizzano la compressione dei dati, per ottimizzare l'utilizzo della banda,
come per esempio il codec GSM (creato per le reti mobili GSM).
Differentemente, per trasmettere fax si utilizzano codec non compressi
come il G.711 (standard approvato dall’ITU-T nel marzo del 2008).
Nella fase successiva bisogna definire due tipi di protocolli, uno alla
segnalazione e l'altro per il trasporto dei dati vocali. La segnalazione è
necessaria nella fase iniziale della chiamata, per la ricostruzione dei frame
audio, per l'identificazione del chiamante e per tutti i vari servizi connessi
alla telefonia.
Il protocollo di trasporto si occupa del trasferimento dei dati relativi
all’audio digitale, preoccupandosi di monitorare la qualità della chiamata..
Quasi tutte le implementazioni VoIP, utilizzano come protocollo di
trasporto l'RTP (Real-time Transport Protocol) basato sul protocollo UDP
(User Datagram Protocol). La gestione delle sessioni di comunicazioni tra
due o più entità è delegata al protocollo SIP.
18
3.4 Strumenti (telefoni, softphone, moduli ata)
E’ stata introdotta la tecnologia VoIP, ma ancora non è chiaro come questa
arrivi nei nostri telefoni. Sono stati introdotti i centralini che utilizzano
Asterisk e adesso vedremo quali apparati o quali software vanno a
interagire con questi.
Un'utenza telefonica VoIP viene individuata da un numero, che costituisce
lo username e da una password. Questi dati possono essere inseriti in:
 telefoni VoIP appositamente studiati per tale tecnologia. Diverse
case costruttive producono telefoni VoIP, menzioniamo la CISCO e
la SNOM (fig.2). Tali apparati hanno il vantaggio di rendere
accessibili molte funzionalità e di permettere di utilizzare più utenze
su un medesimo telefono, ma hanno un costo elevato.
Figura 2 Telefono VoIP Snom 300
19
Figura 3 Adattatore ATA
 Adattatori ATA (fig. 3) a cui connettere, da un lato la rete dati,
dall'altro un telefono analogico (o un fax). Tali adattatori possono
avere anche 24 o 48 porte e permettono facilmente la migrazione di
un centrale analogica verso una VoIP. Altro vantaggio di tale
apparato e il basso costo per utenza, ma il prezzo da pagare è
costituito dalla difficoltà dell'utilizzo delle funzionalità avanzate
offerte dalla tecnologia utilizzata.
 Softphone sono software da installare su un computer o uno
smartphone e permettono di effettuare e ricevere delle chiamate
utilizzando la connessione LAN o Wi-Fi. L'utilizzo di una
connessione UMTS è fortemente sconsigliata perché afflitta da
ritardi nella consegna dei pacchetti dati.
Bisogna chiarire che la tecnologia descritta viene utilizzata anche nella
connessione fra centralino e centralino, e diversi provider offrono degli
abbonamenti per connessioni full VoIP, abbandonando il concetto di
doppino e abbracciando la convergenza verso connessioni dati pure.
20
CAPITOLO 4
CENTRALINI E STRUMENTI PER CENTRALINISTI
4.1 Cenni storici e normativa
La professione oggi più diffusa tra i non vedenti è quella di centralinista.
che nacque subito dopo la seconda guerra mondiale, in fase sperimentale,
presso la Sezione Provinciale dell'UIC di Bologna.
La normale predisposizione a un maggiore utilizzo del senso dell’udito e
una spiccata memoria hanno portato a un utilizzo di tale personale,
maggiormente nell’ambito della telefonia.
La prima legge che affronta le norme su i centralinisti non vedenti venne
promulgata in Sicilia il 2 marzo 1957 (L.R. n. 21). Con essa nasceva
l'obbligo, da parte degli enti pubblici e dei privati, questi ultimi con
almeno cento dipendenti e un centralino telefonico, di assumere un
centralinista diplomato presso una scuola autorizzata.
La prima legge nazionale veniva promulgata il 14 luglio 1957 con il n.
594. In essa, oltre a un implicito riconoscimento dell'Unione Italiana dei
Ciechi, si istituiva, all'art. 2, l'Albo Professionale Nazionale dei
centralinisti telefonici ancor oggi in vigore, anche se articolato a livello
regionale.
L'obbligo di assunzione era però ancora limitato ai centralini telefonici con
almeno due posti di lavoro. Il 28 luglio 1960, con la legge n. 778, vennero
modificate le possibilità occupazionali: nasceva l'obbligo di assunzione
21
laddove esisteva un centralino telefonico con almeno cinque linee, per il
settore privato, e almeno cento dipendenti per l'ente pubblico.
In base ai dati forniti alcuni anni or sono dalla Telecom, in Italia sono in
funzione oltre 35.000 centralini telefonici; se a questi aggiungiamo i
centralini che hanno più di un posto operatore, possiamo valutare in circa
40.000 i posti fruibili.
La dislocazione territoriale non è uniforme: maggiore è la presenza di
centralinisti nel Nord Italia.
I centralinisti telefonici iscritti all'Albo Nazionale dalla sua istituzione
sono circa 15.000, ma, considerato che svariati di loro hanno da tempo
cessato
l'attività
lavorativa,
si
possono
indicare
-
anche
se
approssimativamente - in circa 6.000 i centralinisti in attività di servizio. 3
4.2 Centralini telefonici e posto operatori
Per capire quali sono le difficolta incontrate da un cieco bisogna prima
introdurre il tipo di lavoro da esso svolto e gli strumenti che, normalmente,
vengono utilizzati da questo.
Un centralinista ha il compito di smistare le chiamate ricevute, indirizzando
il chiamante al numero cercato, ma spesso, non conosciuto.
Chi si occupa di telefonia è spesso incaricato di contattare numeri esterni,
di richiamare numeri occupati, di informare sulla presenza o assenza del
personale.
3
Dott. Mario Luigi Pasquetti - Unione Italiana dei Ciechi e degli Ipovedenti ONLUS Relazione
Centralinisti non vedenti -2005
22
Figura 4 Posto Operatore Standard
Lo strumento di lavoro del centralinista è il posto operatore che deve
essere dotato, laddove necessario, di opportuni segnalatori tattili, acustici o
luminosi.
23
4.3 Strumenti e servizi del Voip Unipa
Nato nel luglio del 2008 il sistema telefonico VoIP-UNIPA ha
gradualmente sostituito il sistema telefoni tradizionale dell’Università degli
studi di Palermo, allora basato su centrali telefoniche “tradizionali”, con
centralini e apparati basati su tecnologia VoIP.
Il campus e le sedi distaccate del nostro Ateneo contavano decine di
centralini e centinaia di linee telefoniche, commercializzate e realizzate dai
fornitori autonomamente nelle varie sedi dipartimentali.
L’alta spesa e l’impossibilità di avere un minimo controllo e autonomia
sulla strutture telefoniche ha portato a un analisi della allora situazione,
riscontrando una totale disomogeneità nelle soluzioni applicate.
Nella ricerca di una soluzione economica e applicando le linee guida
istituzionali, si è intrapresa la strada dell’open source, implementando
centralini basati su piattaforma Linux e software asterisk.
Oggi la rete telefonica dell’Ateneo conta una decina di server linux, un
totale di 180 linee telefoniche bidirezionali, circa 4000 utenze voip e 800
utenze fax, creando un risparmio per la PA che si attesta al 60% della spesa
precedentemente sostenuta.
Ulteriori vantaggi risultano nella gestione interna dei servizi di telefonia e
nella gestione delle numerazioni assegnate da Telecom Italia.
Attualmente è allo sviluppo la distribuzione dei costi telefonici alle diverse
strutture e l’assegnazione di un’utenza VoIP anche agli studenti, che
appoggiandosi alla già presente rete WIFI, potrebbe utilizzare tale
tecnologia per contattare il personale tecnico e i professori.
24
4.4 Cercapersone
l'utilizzo di centralini VoIP presso l'Università degli studi di Palermo, ha
portato alla dismissione di decine di centrali realizzate con tecnologia
tradizionale. Oltre a un grande risparmio economico in termini di contratti
di noleggio e di manutenzione, l'amministrazione ha avuto l'opportunità di
raggruppare e uniformare tutti i dati relativi alle proprie utenze telefoniche.
Figura 5 Elenco Telefonico Online dell'Ateneo di Palermo
Le implementazioni Asterisk prevedono l'utilizzo di database mysql
all'interno dei quali sono contenute tutte le informazioni relative alle utenze
telefoniche.
Ciò ha reso semplice la realizzazione di un'anagrafica che contenesse sia i
riferimenti telefonici che quelli delle mail, facilitando la ricerca di un
numero a chi ne avesse bisogno. Il nostro Ateneo ha creato una pagina
25
denominata “cercapersone” all'interno della quale è possibile ricercare il
numero di un utente utilizzando diversi campi di ricerca. Purtroppo tale
servizio risulta avere una scarsa accessibilità per il personale non vedente,
il quale spesso è impiegato con la mansione di centralinista e che quindi si
ritrova a dover cercare frequentemente dei riferimenti telefonici.
Per risolvere tale problema, il software presentato prevede la ricerca
guidata dei contatti. La funzione è raggiungibile tramite una semplice
combinazione di tasti e rende la ricerca molto semplice.
26
CAPITOLO 5
NON VEDENTI E IPOVEDENTI ALL’INTERNO DELL’ATENEO
5.1 Impiego del personale non vedenti e ipovedenti
Come precedentemente detto, la normativa nazionale ha portato diverse
pubbliche amministrazione ad assumere e impiegare personale con deficit
visivo, utilizzandolo secondo le esigenze della PA e secondo la formazione
del lavoratore.
In ambito amministravo la naturale conseguenza di tale indirizzo è
l’utilizzo del personale non vedente nell’ambito della telefonia e in
particolate nell’impiego come centralinista.
Usualmente gradi strutture pubbliche sono fornite di centralino e posto
operatore. Il centralino consiste in un numero unico da contattare nel caso
non si conosca il numero specifico della persona o dell’ufficio cercato.
Il posto operatore permette all’operatore di svolgere agevolmente il suo
lavoro, fornendogli informazioni sullo stato della linea (libera o occupata) e
fornendo solitamente una rubrica a cui attingere nella ricerca dei numeri e
delle persone da contattare.
La mansione del centralinista consiste inoltre nello smistamento delle
chiamate in arrivo, nel contattare specifici utenti per conto di altri, nel
fornire
informazioni
sulla
presenza
o
meno
del
personale
e
sull’indirizzamento al corretto destinatario delle chiamate fatte al
centralino.
27
Alcune di queste attività, come potremo ben immaginare, risultano
ostacolate dalla mancanza di un ausilio visivo, da qui nasce l’idea di
sviluppare uno strumento che renda la vita lavorativa di tale persone più
agevole.
Più avanti verranno illustrati gli strumenti software sviluppati e come
questi interagiscono con il mondo del non vedente.
5.2 Difficoltà e nuove interfacce
Analizzando passo per passo le azioni che svolgiamo nell’utilizzo di una
linea telefonica, si incontrano delle fasi in cui l’uso della vista sembra
indispensabile. L’implementazione ed il rilascio di nuovi servizi con nuove
informazioni da acquisire per l’utente, dovuti aall’introduzione delle reti
VoIP, ha aggravato tale situazione.
L’idea del progetto è quella di creare degli strumenti che permettano al non
vedente di acquisire tutte le informazioni disponibili, tramite canali diversi
da quelli standard.
Nello specifico, le fasi interessate dal progetto sono le seguenti:
 Ricezione di una chiamata (con pre-identificazione del chiamante)
 Verifica delle chiamate perse
 Ricerca nella rubrica
 Inserimento nella rubrica
 Ricezione ed instradamento di un fax
28
Ad oggi, per effettuare le corrispondenti azioni e acquisire i relativi dati
bisogna interagire con strumenti quali:
 il display del telefono voip
 diversi portali web
 applicazioni di office automation
con oggettive difficoltà per una persona cieca o ipovedente.
Il software sviluppato interagisce con l’utente utilizzando la sintesi vocale,
attraverso la quale vengono lette le informazioni richieste. Utilizzando tale
strumento l’utente avrà a disposizione tutti i dati relativi a un chiamante,
potrà cercare un numero in rubrica e potrà creare una rubrica
personalizzata.
Per facilitare l’utilizzo del software l’utente potrà usare la tastiera del pc in
modo da gestire le azioni da compiere. Anche in questo caso, l’idea
implementata fa uso di un Keylogger, che permette di interagire con il
programma, senza dover fermare il focus o il puntatore su un oggetto
specifico presente sul monitor.
Considerato che la quasi totalità dei pc assegnati a personale non vedente
viene dotato dell’applicativo Jaws, che presenta un meccanismo autonomo
di sintesi vocale, il progetto è stato studiato per coesistere, in simbiosi, con
tale software.
29
Per quanto riguarda la ricezione dei fax. Il
sistema VoIP prevede la ricezione dei fax
tramite la piattaforma Avantfax che,
ricevuto un fax, lo inoltra alla casella di
posta specificata sotto forma di allegato
PDF.
In
questo
caso
la
difficolta
risiede
nell’impossibilità della lettura di un pdf che
non contiene informazioni testuali, ma solo
l’immagine del fax ricevuto.
Figura 6 Esempio fax
Il progetto prevede l’utilizzo di un ocr sulle pagine ricevute che si attivi
automaticamente.
Riassumendo, il non vedente avrà a disposizione un sintetizzatore vocale,
che utilizzando la voce sintetizzata desiderata, leggerà le informazioni
necessarie, e potrà interagire con il programma tramite la tastiera.
Per quanto riguarda gli ipovedenti, per i quali è stata sviluppata
un’interfaccia ad alto contrasto e a caratteri ingranditi.
Nell’intento di creare un applicativo che potesse rispondere alle esigenze
dei destinatari durante la fase di sviluppo ci si è confrontati con alcuni
membri del personale tecnico amministrativo dell’Università degli studi di
Palermo, non vedenti o ipovedenti.
30
Sono state riscontrate diverse difficoltà durante la ricerca della
comprensione di un mondo fatto da sensibilità, percezioni, e da un
linguaggio diversi da quelli convenzionali.
31
CAPITOLO 6
PROGETTO SVILUPPATO
6.1 Idea
L’idea di sviluppare un software per permettere ai non vedenti di utilizzare
gli strumenti della telefonia VoIP d’Ateneo nasce dalle precise richieste di
questi ultimi. Gli utenti non vedenti incontrano particolari difficoltà in
specifici momenti della loro giornata lavorativa e il confronto con loro ha
permesso di individuare strategie per eliminare o attenuare queste
difficoltà.
L’idea di base risiede nell’integrazione di strumenti diversi e solitamente
utilizzati ad altri scopi, al fine di rendere immediato e semplice
l’interazione fra programma e utente non vedente.
L’uso di un keylogger permette all’utente di utilizzare liberamente la
tastiera, senza dover verificare di aver selezionato o di stare utilizzando il
software corretto.
L’integrazione del programma, la trasformazione automatica e la lettura di
un fax in formato pdf tramite l’uso di un OCR permette la possibilità di
accedere a informazioni altrimenti non accessibili al personale non vedente.
L’utilizzo nello sviluppo di librerie Open Source e multipiattaforma
permette ulteriori sviluppi dell’idea e l’eventuale implementazione su
piattaforme diverse.
32
Di seguito verrà descritta la parte implementativa di delle applicazioni
sviluppate.
6.2 Ambiente di sviluppo
Il linguaggio con cui sono sviluppate le applicazioni presentate è il Delphi,
versione orientata a oggetti del pascal. Questo è rilasciato dalla Borland,
che commercializza inoltre l’ambiente di sviluppo utilizzato.
Il Delphi è un linguaggio compilato, ad alto livello perché la sintassi e la
grammatica sono il più possibili vicile a quelle umane. Si definisce inoltre
“genetal purpose” cioè un tool che permette lo sviluppo di applicazioni di
qualunque tipo.
La versione utilizzata è la 7, di cui l’Università di Palermo possiede una
licenza, ma che, previa registrazione, può essere utilizzata per fini
personali.
Figura 7 Ambiente di sviluppo Delphi 7
33
Il vantaggio di tale tool sta nella possibilità di creare applicazioni
indipendenti da qualunque frame work ,utilizzabili su qualunque versione
di Windows e molto potenti.
Utilizzando le API di Windows è possibile implementare qualsiasi
soluzione.
Nel software sviluppato vengono utilizzate le
librerie ghostscript per la conversione dei pdf in
immagini.
Per il riconoscimento dei caratteri nelle immagini viene utilizzato
Tesseract, che è probabilmente il più accurato motore open source OCR
disponibile.
6.3 Interfaccia utente
La principale difficoltà incontrata nel progettare e implementare il software
presentato risiede nello sviluppo di un interfaccia utente adeguata.
In questo caso per “interfaccia” si intende non solo i componenti visibili sul
monitor, ma anche tutti i componenti che consentono al programma di
interagire con l’utilizzatore finale.
34
L’analisi dei software sviluppati per non vedenti costringe a scegliere come
vettore di comunicazione delle informazioni derivate da sistema telefonico,
la sintesi vocale.
L’interfaccia utente di un’applicazione standard è composta da form e da
menù, che permettono all’utente di inserire i dati e selezionare pulsanti e
funzioni.
La nostra applicazione principale, chiamata Voip Number To Speech, al
momento dell’avvio del pc si trova nascosta nella barra delle
applicazioni(fig. 8),
Figura 8 Icona nella Barra delle Applicazioni
per apparire solo nel caso si verifichino determinati eventi, che necessitano
il “focus” nell’applicazione. Nella figura 9 è proposta la finestra principale
del programma
Figura 9 Form principale dell'applicazione "Voip Number To Speech"
35
Sarebbe stato possibile far funzionare il software in background, nascosto
all’utente, ma l’idea sta nell’interazione del programma con jaws, che
analizza le finestre visibili e ne legge il contenuto. Inoltre, solitamente,
l’utilizzo del pc da parte dell’operatore telefonico non vedente è costituito
da un solo programma, e quindi la presenza della finestra del programma
sviluppato no comporta intralcio nel lavoro svolto.
La finestra presenta, in alto (fig. 10), un casella di testo dove vengono
visualizzate le informazioni del chiamante, che il sistema sintetizza con
voce se tale funzione è stata attivata.
Figura 10 Informazioni chiamante
Una seconda casella di testo (fig. 11) viene usata per inserire i nominati da
ricercare in rubrica. Il focus di questo componente si può attira tramite
un’opportuna combinazione di tasti. La pressione del tasto Invio da inizio
alla ricerca.
Figura 11 casella di ricerca
36
Una terza casella di testo (fig. 12) viene utilizzata per fornire i risultati
delle ricerche effettuate o per elencare le chiamate perse ricevute.
Figura 12 casella per la visualizzazione delle informazioni
E inoltre è presente un menu per la attivazione/disattivazione di alcune
funzioni e per accedere alla finestra delle Opzioni.
Figura 13 Menu Opzioni
La finestra Opzioni, rappresentata nella figura 14, propone diverse
possibilità di scelta: la voce da usare per la sintesi vocale, l’IP del telefono
con cui il software dialoga, il link relativo al server che gestisce le
informazioni della rubrica, le checkbox con cui attivare la sintesi vocale, il
form per gli ipovedenti e l’avvio automatico con il sistema operativo.
37
Figura 14 Finestra delle Opzioni
6.4 Determinazione dei parametri per la fase di OCR
L’applicazione è inoltre incaricata della lettura dei file con estensione Pdf
(Portable Document Format) che vengono aperti sul PC in cui è installata
l’applicazione.
Una delle difficolta incontrate dai non vedenti sta nella ricezione di fax o di
documenti creati da scansione perdendo le informazioni riguardanti il testo.
Se un documento creato con Word viene esportato in formato pdf, il file
conserverà al suo interno il testo del file di origine, se invece il documento
viene ricavato da scansione, il documento gestirà il testo come se fosse
un’immagine, perdendo in tal senso, il contenuto informativo che riguarda
il testo.
38
Per recuperare tali informazioni è necessario effettuare diversi passaggi e
comunque si avrà la perdita di parte dell’informazione (nel migliore dei
casi perderemo la formattazione) e l’introduzione di errori derivanti dalla
presenza di rumore nell’immagine e dalla inesattezza del processo di ocr.
Quindi avremo due momenti: uno in cui il documento viene creato, e uno
in cui viene recepito. Volendo schematizzare:
Fasi creazione
acquisizione
documento
manipolazione
quali firma o
fotocopia
stampa
scansione o
invio via fax
Fasi ricezione
Ricezione fax o
ricezione
diretta del pdf
elaborazione
OCR con
generazione del
testo
conversione in
immagini
eventuale
sintesi vocale
Le varie fasi possono essere molto complesse e presentare a loro volta
diversi passaggi. Basta pensare all’OCR che dovrà sicuramente effettuare
un preprocessing dell’immagine con rotazioni e rimozione di parte
dell’errore.
Tali fasi sono state delegate, come già detto a librerie esterne Open Source
quali Tesseract e Ghostscript.
39
In fase di sviluppo dell’applicazione che si occupa dell’elaborazione dei
file pdf sono stati provati vari parametri di conversione sia per quanto
riguarda la risoluzione che per la profondità in bit dell’immagine generata.
Di seguito è riportato uno schema che illustra i passi tramite i quali,
partendo dal pdf si arriva al file che contiene il testo ricavato dall’OCR.
PDF
impostazione
profondità e
risoluzione
conversione in
immagini
elaborazione OCR con
generazione del testo
L’utilizzo di alte risoluzioni e di un elevata profondità di colore genera
immagini di una considerevole grandezza e allunga i tempi di elaborazione,
ma questo non sempre corrisponde a una maggiore accuratezza nel
riconoscimento del testo.
Il software sviluppato permette di settare la risoluzione e la profondità delle
immagini ricavate, così è stato possibile effettuare dei test per ricercare le
impostazioni che dessero il miglior compromesso.
Per individuare i migliori settaggi da utilizzare con le immagini derivanti
da file pdf è stato creato un set di test. Questo sono stati elaborati con tutte
le risoluzione e tutte le profondità di colore.
40
Ne sono derivate diverse tabelle in cui si evidenzia l’andamento della
dimensione dell’immagine e dei tempi di elaborazione. Tutto questo può
essere osservato nella tabella 1.
Come si può facilmente immaginare, il peso dell’immagine è direttamente
proporzionale alla risoluzione moltiplicata per il numero di bit utilizzati per
codificare ogni pixel.
Risoluzione
100
150
200
300
450
2
119
268
475
1069
2405
16
476
1062
1891
4247
9555
256
947
2124
3783
8495
19110
16 ml
2836
6369
11325
25481
57326
Profondità
Tabella 1 Andamento Dimensione File Kb
Per verificare il comportamento della libreria con diversi tipi di file, sono
stati creati due set di PDF, uno primo con 10 documenti ricavati da fax, ed
un secondo con 8 pdf ottenuti da scansioni di documenti cartacei esistenti.
Per individuare i settaggi che garantiscano i migliori risultati di
riconoscimento dei caratteri, sono stati ricavati, per ogni risoluzione e per
ogni profondità di colore, un file di testo con il risultato della scansione
OCR del corrispettivo file immagine.
41
La validazione sulla bontà del risultato è stata ottenuta attraverso la
creazione di un file con il corretto contenuto di testo, confrontato con i file
prodotti.
Nella tabella 2 vengono illustrati i risultati di tale confronto, evidenziando
il numero di parole che coincidono, quelle inserite e quelle cambiate per un
singolo file.
file
corretto.txt:
total
words
246
common
word
246
common
%
100
inserted
word
0
inserted
%
0
changed
word
0
changed
%
0
300_256.txt:
254
235
92
5
1
14
5
450_16m.txt:
255
222
87
1
0
32
12
450_256.txt:
250
218
87
0
0
32
12
300_16m.txt:
262
226
86
9
3
27
10
200_256.txt:
256
218
85
5
1
33
12
150_16m.txt:
246
207
84
0
0
39
15
150_256.txt:
255
215
84
4
1
36
14
200_16m.txt:
261
218
83
8
3
35
13
300_16.txt:
260
165
63
0
0
95
36
200_16.txt:
270
150
55
0
0
120
44
450_16.txt:
256
108
42
0
0
148
57
150_16.txt:
264
87
32
11
4
166
62
300_2.txt:
264
70
26
0
0
194
73
100_256.txt:
256
50
19
0
0
206
80
200_2.txt:
130
16
12
3
2
111
85
150_2.txt:
101
11
10
0
0
90
89
100_16m.txt:
245
16
6
0
0
229
93
100_2.txt:
111
5
4
30
27
76
68
100_16.txt:
169
4
2
0
0
165
97
Tabella 2 risultati confronto file corretto con file ottenuto dall’OCR
Il campo “Common%” della tabella 2 mostra l’andamento della percentuale
delle parole corrispondenti al variare di risoluzione e profondità. Dai valori
42
presenti si evince che per il file analizzato la risoluzione di 300 dpi e una
profondità di 16 bit (256 colori) offrono il miglio compromesso fra peso
immagine, tempi di elaborazione e qualità del riconoscimento OCR.
Considerato come parametro di riferimento il campo “Common%” sono
state creati i grafici 1 e 4 che mostrano l’andamento di tale valore per i file
dei set di Pdf ricevuti via Fax e per il set di Pdf ottenuti da scansione.
Qualità del riconoscimento OCR per PDF originati
da FAX
Common%
1,00
0,90
1.txt:
0,80
2.txt:
0,70
3.txt:
0,60
4.txt:
0,50
5.txt:
0,40
6.txt:
0,30
7.txt:
0,20
8.txt:
0,10
9.txt:
0,00
10.txt:
media
Grafico 1 Qualità riconoscimento OCR Fax
Dal grafico 1 si evince che, con l’aumento della profondità non vi sono
benefici nel riconoscimento dei caratteri. Tale comportamento è giustificato
dal processo con cui un documento viene inviato via fax, che prevede la
conversione dello stesso in un file monocromatico.
In questo caso la risoluzione che da mediamente i migliori risultati è 300
dpi con profondità che di 2, 16 o 256 colori (grafico 2). A questo punto è
43
utile analizzare le tempistiche ottenute per la stessa risoluzione e scegliere
quali sono i parametri migliori per il riconoscimento OCR di un Fax.
Qualità del riconoscimento OCR per PDF originati da
FAX
1,00
1.txt:
0,90
2.txt:
3.txt:
Common%
0,80
4.txt:
5.txt:
0,70
6.txt:
7.txt:
0,60
8.txt:
9.txt:
0,50
10.txt:
media
0,40
300_2
300_16
300_256
300_16m
Grafico 2 Qualità riconoscimento Fax 300 dpi
Il grafico 3 ci mostra che il software impiega tempi molto simili per le
profondità di colore analizzate.
tempi di elaborazione OCR per PDF ottenuti da Fax
millisecondi
10000
9000
1
8000
2
7000
3
4
6000
5
5000
6
4000
7
3000
8
2000
9
10
1000
media
0
300_mono
300_16
300_256
300_16m
Grafico 3 Tempi riconoscimento ORC Fax 300 dpi
44
Quindi nel caso di file ottenuti da Fax il miglior compromesso fra qualità
del riconoscimento e durata del processo può essere ottenuto impostando
liberamente la profondità di colore a 2 , 16 o 256 toni.
Nell’elaborazione di file ottenuti da documenti scansionati i migliori
risultati in termini di parole riconosciute correttamente si ottiene
mediamente alla risoluzione di 300 dpi ed alla profondità di 256 colori. Nel
grafico 4 la linea tratteggiata mostra l’andamento medio del valore del
campo “Common%”.
Qualità del riconoscimento OCR per PDF originati da scansione
1,00
0,90
0,80
0
Common%
0,70
1
0,60
2
0,50
3
0,40
4
5
0,30
6
0,20
7
0,10
media
0,00
Grafico 4 Qualità riconoscimento OCR Scansioni
Anche il grafico 5, che mostra l’andamento medio dei tempi di
riconoscimento OCR per la risoluzione di 300 pdi al variare della
profondità, indica che la scelta di 256 colori richiede, mediamente, il minor
tempo necessario per elaborare una singola pagina.
45
tempi di elaborazione OCR per PDF ottenuti da scansioni
20000
18000
0
16000
1
millisecondi
14000
2
12000
3
10000
4
8000
5
6000
6
4000
7
2000
media
0
300_2
300_16
300_256
300_16m
Grafico 5 Tempi riconoscimento ORC Scansioni 300 dpi
Dai test effettuati su tutti i campioni risulta che i tempi di elaborazione non
sono strettamente proporzionali alle dimensioni dei file, facendo pensare
che la libreria utilizzata preferisce alcune risoluzioni e alcune impostazioni
ad altre.
46
Risoluz.
100
150
200
300
450
Profon.
2
16
256
16 ml
Tabella 3 particolare immagine con diverse risoluzioni/profondità colore
Nelle tabelle 3 e 4 vengono mostrati dei particolari di un’immagine
ottenuta da un PDF, utilizzando risoluzioni e profondità di colore diverse.
Si nota che una scarsa risoluzione o un basso numero di bit per pixel
possono introdurre degli artefatti che compromettono il riconoscimento del
testo da parte del software OCR ma, come già detto, valori particolarmente
alti di risoluzione non solo non danno benefici, ma aumentano i tempi di
elaborazione e diminuiscono la precisione del riconoscimento del testo.
Osservando le immagini ricavate si osserva una maggiore presenza di
rumore nelle immagini ad alta risoluzione.
Per documenti che presentano più pagine, su hardware obsoleto i tempi di
elaborazione si allungano notevolmente, quindi è stato necessario
47
sviluppare una strategia che non compromettesse il lavoro dell’operatore
durante l’elaborazione.
Risoluz.
100
150
200
300
450
Profon.
2
16
256
16 ml
Tabella 4 particolare testo con diverse risoluzioni/profondità colore
Per non bloccare l’applicazione principale, che si occupa della sintesi
vocale e della rubrica, un secondo task eseguibile, chiamato FaxOCR, si
occupa della conversione dei file pdf, attivandosi quando viene richiamata
l’apertura di questi ed effettuando l’elaborazione in background.
Al termine della fase di riconoscimento, FaxOCR invierà i dati al primo
software che comunicherà l’avvenuta ricezione di un fax e darà la
possibilità di avviare la lettura con la sola pressione di un tasto.
La successiva lettura sarà comunque possibile accedendo a un elenco di fax
recentemente ricevuti.
48
La figura 15, propone trovate l’interfaccia del software. Questa non è
visibile se non richiamando il programma dall’apposito link sul desktop.
Figura 15 Form principale dell'applicazione "FaxOcr"
La presenza delle diverse opzioni di elaborazione direttamente settabili è
risultata indispensabile in fase di test.
49
6.5 Comunicazione fra applicazioni
L’esigenza di far comunicare le due applicazioni sviluppate ha portato
all’analisi di diverse soluzioni. Una prima soluzione di possibile
implementazione è l’uso dello stack TCP/IP, ma l’applicazione già usa il
componente “TCPServer” che ascolta sulla porta 1771. Sarebbe stato
possibile utilizzare un’altra porta del protocollo tcp/ip ma tale soluzione è
stata valutata poco elegante in quanto il sistema operativo fornisce specifici
strumenti per la comunicazione fra applicazioni.
In fase implementativa è stata usata la funzione SendMessage che
utilizza come parametri principali: il messaggio e l’handle della finestra di
ricezione ed il tipo di dato da inviare.
La procedura incaricata dell’invio dei dati, il cui codice trovate di seguito,
inizialmente cerca la finestra dell’applicazione ricevente, e se non la trova,
ne effettua l’avvio tramite la funzione ShellExecute.
invio messaggi ad altra applicazione:
procedure TFaxOcrmain.SendData(copyDataStruct: TCopyDataStruct);
var
receiverHandle
: THandle;
res : integer;
begin
receiverHandle := FindWindow(pchar('TFormRubrica'), pchar('Voip
Number To Speech'));
if receiverHandle = 0 then
begin
ShellExecute(0, 'open', PChar('unipavoiptts.exe') , PChar('\leggi'),
'', SW_HIDE);
Exit;
end;
res := SendMessage(receiverHandle, WM_COPYDATA, Integer(Handle),
Integer(@copyDataStruct));
end;
50
6.6 gestione del Sistema Operativo
L’implementazione di alcune funzioni deve tener conto di alcune variabili,
fra cui la più importante è il tipo di sistema operativo su cui l’applicazione
viene lanciata.
Le strategie di interazione fra applicazione e SO dipendono dalle funzioni
richiamate e dai SO che le ospitano. Esse sono state raggruppate in due
classi diverse di sistemi: una che include i sistemi che vanno fino a
Windows XP e l’altra che comprende quelli da Windows Vista in poi.
Queste classi si comportano diversamente nella gestione delle applicazioni
inserite nel registro di sistema e che si avviano con il sistema.
Per permettere la corretta gestione dell’avvio dell’applicazione è stato
sviluppata una funzione che individua la classe del SO e successivamente
tale informazione viene usata dall’applicazione.
Di seguito trovate il codice della funzione che gestiste l’individuazione del
sistema operativo e quello della funzione che imposta l’avvio automatico
del software.
51
Individuazione SO:
function TFormRubrica.GetWinVersion: string;
var
osVerInfo: TOSVersionInfo;
majorVersion, minorVersion: Integer;
begin
Result := 'wvUnknown';
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
if GetVersionEx(osVerInfo) then
begin
minorVersion := osVerInfo.dwMinorVersion;
majorVersion := osVerInfo.dwMajorVersion;
case osVerInfo.dwPlatformId of VER_PLATFORM_WIN32_NT:
begin
if majorVersion <= 4 then
Result := 'wvWinNT'
else if (majorVersion = 5) and (minorVersion = 0) then
Result := 'wvWin2000'
else if (majorVersion = 5) and (minorVersion = 1) then
Result := 'wvWinXP'
else if (majorVersion = 6) and (minorVersion = 0) then
Result := 'wvWinVista'
else if (majorVersion = 6) and (minorVersion = 1) then
Result := 'wvWinSeven';
end;
VER_PLATFORM_WIN32_WINDOWS:
begin
if (majorVersion = 4) and (minorVersion = 0) then
Result := 'wvWin95'
else if (majorVersion = 4) and (minorVersion = 10) then
begin
if osVerInfo.szCSDVersion[1] = 'A' then Result :=
'wvWin98SE'
else
Result := 'wvWin98';
end
else if (majorVersion = 4) and (minorVersion = 90) then
Result := 'wvWinME'
else
Result := 'wvUnknown';
end;
end;
end;
end;
52
Gestione avvio automatico:
procedure TFormRubrica.Impostarun;
var
Reg: TRegistry;
eseguibile:string;
begin
if autorun then eseguibile:='unipavoiptts.exe' else
eseguibile:='unipavoiptts.exx';
if versionesitemaoperativo='wvWinXP' then
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True)
then Reg.WriteString('UnipaVoip','"' +percorso+eseguibile +
'"'+' \hide');
finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
end
else if versionesitemaoperativo='wvWinSeven' then
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True)
then Reg.WriteString('UnipaVoip','"' +percorso+eseguibile +
'"'+' \hide');
finally
Reg.CloseKey;
Reg.Free;
inherited;
end;
end;
end;
53
6.7 Gestione delle librerie usate
Per effettuare la fasi di conversione dei file in formato pdf e quella di
riconoscimento del testo si è scelto l’uso di software esterni open source.
Il framework Ghostscript, usato nella conversione, è una collezione di
programmi basata su PostScript e Portable Document Format (pdf),
entrambi della Adobe.
È totalmente configurabile e può essere usato come processore di immagini
raster e convertitore di formato dei file (ad esempio da PostScript a PDF e
vice versa).
Ghostscript è installabile su vari sistemi operativi, compresi i sistemi Unix
e derivati, Mac OS X, VMS, Windows, OS/2, e Mac OS classico e DOS.4
Nel software sviluppato viene utilizzata la libreria gsdll32.dll, richiamata
tramite la funzione gsapi_new_instance 5con cui si attiva una nuova
istanza del software. In fase di esecuzione vengo utilizzati diversi parametri
che indicano la profondità, la risoluzione, il nome e il formato
dell’immagine da creare e il numero delle pagine del file pdf da processare.
Di seguito viene proposto il codice che crea l’istanza della libreria, elabora
il pdf e distrugge l’istanza precedentemente creata.
4
5
http://it.wikipedia.org/wiki/Ghostscript
http://www.ghostscript.com/doc/current/API.htm#new_instance
54
Elaborazione dei file PDF:
libGSdll := LoadLibrary(PChar(percorso+'\lib\gsdll32.dll'));
if libGSdll <> 0 then
begin
risoluzione:='-r'+ComboBox2.Text;
formato:= '-sOutputFile=p%03d.bmp';
profondita:='-sDEVICE=bmp'+ComboBox1.Text;
@gsapi_new_instance :=
GetProcAddress(libGSdll,'gsapi_new_instance');
@gsapi_init_with_args :=
GetProcAddress(libGSdll,'gsapi_init_with_args');
@gsapi_exit := GetProcAddress(libGSdll,'gsapi_exit');
@gsapi_delete_instance :=
GetProcAddress(libGSdll,'gsapi_delete_instance');
New(GSinstance);
ErrorCode := gsapi_new_instance(@GSinstance,nil);
if ErrorCode <> 0 then
ShowMessage('Impossible un instanza di Ghostscript. Error code: '
+ IntToStr(ErrorCode));
try
SetLength(Args,11);
Args[0] :=pchar('-I'+percorso+'\lib\'); //dove cerca le librerie
Args[1] :=pchar('-dBATCH');
Args[2] :=pchar(profondita);
Args[3] :=pchar(risoluzione);
Args[4] :=pchar(formato);
Args[5] :=pchar('-dNOPAUSE');
Args[6] :=pchar('-dFirstPage=1');
Args[7] :=pchar('-dLastPage='+Edit2.Text);
Args[8] :=pchar('-f');
Args[9] :=pchar(filepdf);
Args[10] :=pchar('-q');
ErrorCode := gsapi_init_with_args(GSinstance,Length(Args),Args);
if ErrorCode <> 0 then
ShowMessage('Errore di conversione: ' + filepdf);
gsapi_exit(GSinstance);
finally
gsapi_delete_instance(GSinstance);
end;
GSinstance := nil;
FreeLibrary(libGSdll);
55
Il progetto Tesseract, usato per l’astrazione del testo dall’immagine,
sviluppato originariamente nel periodo che va dal 1985 al 1995 dalla
Hewlett-Packard come software proprietario, non venne più aggiornato nel
decennio successivo. Fu poi rilasciato come open source nel 2005 da HP e
dall'Università del Nevada e rilasciato con la licenza Apache. Lo sviluppo
di Tesseract è attualmente sostenuto da Google.
Come tutti gli OCR, anche Tesseract estrae da immagini il testo che diviene
così comprensibile ad un elaboratore di testi. I risultati risultano affidabili
per quanto riguarda il riconoscimento dei caratteri; manca invece la
capacità di mantenere il layout delle pagine. Tesseract al momento supporta
e riconosce 33 lingue fra cui l’Italiano.6
La mancanza di approfondita documentazione sull’utilizzo delle dynamic
link library (dll) presenti nel software ha portato a scegliere l’utilizzo
tramite lancio dell’applicazione (ShellExecute) che in questo caso
viene lanciato con l’opzione “AndWait” che permette all’applicazione di
attendere la fine del riconoscimento per l’esecuzione del istruzione
successive.
Questo risulta indispensabile perché la durata di tale fase può variare anche
di molto.
Vengono passati come parametri: il nome del file immagine, il nome del
file di testo da generare e la lingua di riconoscimento.
6
http://it.wikipedia.org/wiki/Tesseract_%28software%29
56
Di seguito il codice utilizzato per l’implementazione del riconoscimento:
daeseguire:=percorso+'\lib\'+'tesseract.exe';
parametri:='-l ita';
filebmp:=percorsopdf+SR.Name;
fileoutput:=percorsopdf+SR.Name;
parametritot:=filebmp+' '+fileoutput+' '+parametri;
ShellExecute_AndWait('open', PChar(daeseguire) , PChar(parametritot),
percorso+'\lib', SW_HIDE,true);
6.8 Keylogger
Il keylogger è un programma che rimane in esecuzione captando i tasti che
vengono digitati. Storicamente tale strumento è stato utilizzato per captare i
dati inseriti tramite tastiera nel PC ospite, ma nel nostro caso l’integrazione
fra keylogger e strumenti proposti permette all’utente di controllare le
funzioni del programma in modo agevole. Il software memorizza gli ultimi
tre tasti premuti e se questi corrispondono a una specifica combinazione,
richiama una funzione specifica. Di seguito l’elenco delle combinazioni di
tasti con le rispettive funzioni:










3
3
3
3
3
3
3
3
3
3
volte
volte
volte
volte
volte
volte
volte
volte
volte
volte
“p”
“e”
“i”
“c”
“a”
“g”
“r”
“f”
“x”
“h”
per scorrere le chiamate perse,
per cancellare le chiamate perse,
per attivare la finestra ad alto contrasto,
per disattivare lettura,
per attivare lettura,
per aggiungere rubrica,
per ripetere ultima lettura,
per cercare in rubrica
per leggere l’ultimo fax
per la guida vocale
In programmazione, il termine Hook copre una gamma di tecniche
utilizzate per modificare o intercettare il comportamento di un sistema
57
operativo, delle applicazioni, o di altri componenti software, chiamate di
funzione o messaggi o eventi passati tra componenti software. Il codice che
gestisce tali funzione intercettate, eventi o messaggi è chiamato un
"gancio".
Per quanto riguarda il codice, Windows ci permette di agganciarci a
determinate funzionalità tramite gli Hook (appunto ganci), che permettono
di intercettare chiamate di funzione, messaggi o eventi passati tra
componenti software. Solitamente vengono usati in fase di debug ma nel
nostro caso questi ci forniscono informazioni sulla pressione di uno
specifico tasto.
58
Intercettazione della pressione dei tasti:
function KeyboardHookProcedure(nCode: Integer; wParam: WPARAM;
lParam: LPARAM): integer; stdcall;
var
strKeyName : string;
hooked: KBDLLHOOKSTRUCT;
dwMsg: DWORD;
coordinatemouse:tpoint;
begin
result := 0;
if ((nCode = HC_ACTION) and
((wParam = WM_SYSKEYUP) or
(wParam = WM_KEYUP))) then
begin
hooked := PKBDLLHOOKSTRUCT(lParam)^;
dwMsg := 0;
dwMsg := dwMsg + (hooked.scanCode shl 16);
dwMsg := dwMsg + (hooked.flags shl 24);
SetLength(strKeyName, 20);
GetKeyNameText(dwMsg, pChar(strKeyName), $FF);
strKeyName := copy(strKeyName,1,StrLen(pChar(strKeyName)));
ultim3[0]:=ultim3[1];
ultim3[1]:=ultim3[2];
ultim3[2]:=strKeyName;
FormRubrica.interpreta;
end;
result := CallNextHookEx(hhookSysMsg, nCode, wParam, lParam);
end;
6.9 Sintesi vocale
Per la lettura dei dati vengono usate le Microsoft Speech API (SAPI) che
permettono di appoggiarsi a una funzione del sistema operativo.
E’ possibile installare diverse voci e il programma permette di scegliere fra
queste. Nel codice, la creazione di un OLE Object (Object Linking and
59
Embedding) permette di integrare un oggetto che si occupa della lettura in
una specifica applicazione.7
Le ultime versioni dello strumento offrono inoltre il supporto al
riconoscimento del parlato, ma non supportano ancora l’italiano.
L’API utilizza una sintassi a tag l’apertura e la chiusura di tre campi che
indicano in ordine, sapi ossia l’api, la VOICE che indica la voce scelta, e il
tag RATE SPEED che indica la velocità di lettura desiderata. La struttura
del comando è la seguente.
<sapi> <VOICE=voce> <rate speed="-2"> testo </rate> </VOICE> </SAPI>
Nell’implementazione è stato riscontrato il problema dell’interruzione della
lettura da parte di un nuovo comando di lettura. Per implementare tale
funzione, la variabile OLE viene resettata prima di ogni esecuzione tramite
il comando “Voceletta := Unassigned” . E’ possibile scaricare dal
sito Microsoft voci aggiuntive da utilizzare con il programma.
7
Microsoft Speech API (SAPI) http://msdn.microsoft.com/en-us/library/ms720151%28v=vs.85%29.aspx
60
Implementazione della funzione di lettura:
function TFormRubrica.Leggi(Testo: String): Boolean;
var
voceletta: OLEVariant;
begin
voceletta:= Unassigned;
voceletta:= CreateOLEObject('SAPI.SpVoice');
voceletta.Speak(Testo, 1);
end;
Richiamo della funzione di lettura con inserimento dei tag:
leggi('<sapi><VOICE REQUIRED="NAME='+voce+'"><rate speed="-2">'
+'chiamate perse'+'</rate></VOICE></SAPI>' );
6.10 Interazione con il sistema Voip (telefoni snom)
L’acquisto di un posto operatore per non vedenti può comportare per
l’amministrazione una spesa molto consistente.
L’idea sviluppata cerca di risolvere questo problema basandosi su
tecnologia open source e apparati standard e di basso costo quali i telefoni
voip Snom 300 (ma si possono utilizzare svariati modelli e di diverse
marche) e il personal computer già in dotazione.
Il sistema così creato prevede la comunicazione fra telefono e software.
Una differente release del programma potrebbe interfacciarsi direttamente
con il centralino voip, ma questo richiederebbe una seconda utenza per lo
stesso utente Voip.
61
Il telefono utilizzato va configurato tramite interfaccia web settando le
action URL (fig. 16), che sono fondamentalmente delle richieste HTTP
"GET" e che possono contenere nomi di variabili con in simbolo $
anteposto e utilizzando il carattere & come separatore.
La stringa utilizzata è:
http://ip_telefono:1771/?type=$remote&$display_remote
la generazione del GET è associata a 4 eventi: chiamata entrata, alzata
cornetta, chiusura cornetta, chiamata persa.
Figura 16 Interfaccia telefono VoIP Snom 300
Di seguito un breve schema del processo di gestione delle chiamate.
chiamata in ingresso
telefono comunica
all’applicazione Caller ID e
numero
62
l’applicazione gestisce la
chiamata
Le operazioni che possono essere effettuate sono:
Sintesi del chiamante o del numero se questo non è in rubrica.
Inserimento delle chiamata nell’elenco delle chiamate ricevute
Visualizzazione della schermata ad
alto contrasto
6.11 Schermate ad alto contrasto
Oltre a utenti non vedenti l’applicazione è indirizzata a utenti ipovedenti,
utilizzati dalle amministrazioni come operatori telefonici.
Per molti di questi la difficolta nel reperire le informazioni relative al
sistema telefonico risiede nella dimensione e nel tipo di display presente
nei telefoni o nella dimensione dei caratteri utilizzati nei portali di
riferimento.
63
Figura 17 Schermata ad alto contrasto
Alla ricezione della chiamata l’identificativo del chiamante è visualizzato
in un piccolo schermo lcd monocromatico e lo stesso viene utilizzato per la
visualizzazione delle chiamate perse.
Il software presentato tenta di risolvere tali problematiche attraverso
l’introduzione di schermate ad alto contrasto (fig. 17), che vengono
visualizzate in caso di ricezione di una chiamata o di richiamo delle
chiamate perse.
64
Figura 18 Particolare dell'attivazione della finestra ad alto contrasto
L’attivazione di tale funzionalità viene effettuata tramite la finestra delle
opzioni, selezionando la voce “Supporto Ipovedenti”.
6.12 Elenco telefonico e rubrica
È di fondamentale importanza per un centralinista l’uso di una rubrica
telefonica che permetta di cercare i riferimenti telefonici della struttura in
cui lavora e che renda possibile la creazione di un elenco di numeri
personali.
Per conciliare queste due esigenze l’applicazione utilizza due strumenti
diversi. Per effettuare la ricerca online è prevista l’interrogazione di un
server remoto che contenga i dati richiesti.
65
L’interrogazione è effettuata tramite un get ad una pagine creata tramite un
script in PHP e utilizzando i parametri “pass” per passare una password di
verifica e “cercato” per comunicare la stringa da ricercare.
Di seguito il codice dell’applicazione che effettua la richiesta contenente le
informazioni della rubrica telefonica:
try
IEHTTP1.URL:='http://provisioning.unipa.it/voip2.php?pass=testtest'+
'&cercato='+Edcerca.Text;
IEHTTP1.Execute;
except
leggi('<sapi><VOICE REQUIRED="NAME='+voce+'"><rate speed="2">'+'Server non disponibile'+'</rate></VOICE></SAPI>' );
exit;
end;
Le informazioni presenti in rubrica vengono caricate nell’array
bidimensionale di stringhe
rubrica: array [0..999] of array [0..5] of string;
66
Lo script PHP avrà la seguente forma:
$database=mysql_select_db($name_db,$connessione);
$pass=htmlentities($_REQUEST['pass']);
$cercato=="";
$cercato=htmlentities($_REQUEST['cercato']);
if ($pass=="testtest")
{
/////#elaborazione della query sql
$inizsql="select `name`,`sipname`,`extension`,`password` from
tabellatest";
if ($cercato!="")
{
$inizsql=$inizsql." where name like '%$cercato%' or extension
like '%$cercato%'";
}
$finesql=" LIMIT 0, 100000;";
$sql=$inizsql.$finesql;
$tutto=mysql_query($sql,$connessione);
while ($valori=mysql_fetch_array($tutto))
67
La rubrica così creata conterrà i numeri istituzionali, ma l’elenco non è
personalizzabile. Per poter aggiungere ulteriori contatti è presente
un’apposita finestra (fig. 19) dove i dati inseriti saranno memorizzati nel
file rubrica.txt con forma:
Nome$$Ruolo$$Cellulare$$Fisso$$mail$$Struttura
In fase di ricerca verranno presentati sia i risultati dell’elenco istituzionale
che quelli della rubrica personale.
Figura 19 Finestra di inserimento contatto
68
6.13 Integrazione con il sistema telefonico VoIP Unipa
L’utilizzo del sistema sviluppato prevede, da parte dell’amministrazione
che lo utilizza, l’implementazione di specifiche soluzioni che permettano
l’accesso alle informazioni dei contatti telefonici.
I dati relativi nel caso migliore si trovano memorizzati in una specifica
tabella di un database, ma nel nostro caso sono memorizzati in diversi
database e in diverse tabelle mysql.
Per unificare la fonte dei dati è stata usata una vista che, attraverso delle
“union select”, raggruppa le informazioni provenienti da più strutture.
Di seguito trovate parte del codice sql relativo alla creazione della vista:
select
`cucpbx`.`sip`.`id` AS `extension`,
substring_index(`cucpbx`.`users`.`sipname`,'_',1) AS `sipname`,
`cucpbx`.`sip`.`data` AS `password`,
`cucpbx`.`users`.`name` AS `name`,
`cucpbx`.`users`.`voicemail` AS `voicemail`,
'cucpbx' AS `voipgw`,
`cucpbx`.`users`.`password` AS `passworduser`
from
(`cucpbx`.`sip` left join `cucpbx`.`users`
on((substr(`cucpbx`.`sip`.`id`,1,5) =
`cucpbx`.`users`.`extension`)))
where (`cucpbx`.`sip`.`keyword` = 'secret')
group by `cucpbx`.`sip`.`id` union select ………
69
CONCLUSIONI
Nell’ultima decade le tecnologie dell'informazione e della comunicazione
hanno offerto infinite opportunità di sviluppare servizi utili alla collettività.
La conoscenza capillare di uno o più strumenti tecnologici offre la
possibilità di soddisfare con soluzioni integrate svariate esigenze di una
moltitudine di persone.
La recente letteratura tecnologica presenta una crescente apertura alla
filosofia della libera condivisione delle idee – intuizioni – creazioni con la
comunità. Il mondo dell’Open Source ne è un esempio.
Il progetto presentato è stato realizzato con l’intento di fornire un valido
strumento indirizzato a utenti non vedenti o ipovedenti occupati come
operatori telefonici.
Il software si appoggia nella fase di conversione dei file Pdf e nella fase di
riconoscimento dei caratteri, a due librerie open source, permettendo la
libera distribuzione del programma.
In fase di progettazione sono state testate varie librerie e diverse interfacce
utente, dando opportunità a utenti esperti di fornire informazioni utili al
miglioramento del progetto.
Il software permette inoltre di accedere a qualsiasi documento digitale
tramite sintesi vocale, offrendo ai centralinisti un ulteriore strumento di
lavoro.
70
È stata effettuata un’analisi dei parametri da utilizzare con le librerie
impiegate che ha permesso di ottenere risultati apprezzabili.
Considerato che il progetto, come ogni software, presenta dei margini di
miglioramento, e visto l’entusiasmo espresso dai potenziali utenti, si
possono prevedere prossime evoluzioni dello stesso.
71
BIBLIOGRAFIA
Dr M N G Mani - The Role of Integrated Education for Blind Children Community Eye Health, 1998
<http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1706061/>
Ted S. Hasselbring - Candyce H.Williams Glaser
Use of Computer Technology to Help Students with Special Needs, 2000
< http://familiestogetherinc.com/wp-content/uploads/2011/08/COMPUTERTECHNEEDS.pdf>
Dott. Mario Luigi Pasquetti - Unione Italiana dei Ciechi e degli Ipovedenti ONLUS
Relazione Centralinisti non vedenti, 2005
<www.uiciechi.it/documentazione/paginetematiche/schedeformative/centralinisti.doc>
Google - Tesseract OCR
<http://code.google.com/p/tesseract-ocr/>
Ghostscript Documentation
< http://www.ghostscript.com/doc/current/API.htm#new_instance >
Microsoft - Microsoft Speech API (SAPI) 5.3
<http://msdn.microsoft.com/en-us/library/ms723627%28v=vs.85%29.aspx>
72