Post on 10-Nov-2018
A TECNOLOGIA ASSISTIVA XLUPA – UM SOFTWARE LIVRE
AMPLIADOR E LEITOR DE TELA PARA PESSOAS COM BAIXA VISÃO
Odair Moreira de Souza1
Jorge Bidarra2
Diego Rodrigo Hachmann3
Cleiton Fiatkoski Balansin4
Resumo
De acordo com a ONU, estima-se que cerca de 500 milhões de pessoas no
mundo apresenta algum tipo de deficiência, física ou mental. Na tentativa de
se encontrarem caminhos alternativos, porém eficazes, surgem as
Tecnologias Assistivas (TAs), um marco importante no processo inclusivo
dessas pessoas na sociedade. Via programas computacionais
desenvolvidos para ampliação de telas, pessoas com baixa visão, por
exemplo, conseguem ter acesso a um universo de informações que são
exibidas em computadores. Nesse trabalho, apresentamos o xLupa, um
software livre ampliador de telas, resultado de um projeto de pesquisa
desenvolvido no interior do Grupo de pesquisa em Inteligência Aplicada da
UNIOESTE (GIA/UNIOESTE). Ao longo do texto, serão abordados não
apenas questões técnicas, mas também algumas de suas principais
características inovadoras de funcionamento.
Palavras-chave: Tecnologia Assistiva, Ampliador e leitor de tela,
Acessibilidade/Usabilidade.
1 Estudante de Bacharelado em Ciência da Computação - Universidade Estadual do Oeste
do Paraná - Grupo de pesquisa em Inteligência Aplicada – dayrsouza@gmail.com. 2 Professor Associado da UNIOESTE (cursos de graduação em Ciência da Computação e
Mestrado de Letras - mecanismos e processamento da linguagem natural). Coordenador Geral do Núcleo de Inovações Tecnológicas. Líder do Grupo de Inteligência Aplicada – GIA/CNPq/UNIOESTE. Coordenador do Projeto xLupa. jbidarra@pq.cnpq.br.
3 Estudante de Bacharelado em Ciência da Computação - Universidade Estadual do Oeste do Paraná - Grupo de pesquisa em Inteligência Aplicada – toniclecb@gmail.com.
4 Estudante de Bacharelado em Ciência da Computação - Universidade Estadual do Oeste do Paraná - Grupo de pesquisa em Inteligência Aplicada – diegohachmann@hotmail.com.
Introdução
Segundo a Organização das Nações Unidas (ONU), cerca de 500 milhões de
pessoas no mundo tem algum tipo de deficiência, física e/ou mental. Desses,
estima-se que em torno de 80% se concentra em países pobres ou em
desenvolvimento. De acordo com a Organização Mundial de Saúde (OMS),
somente no Brasil, há 16 milhões de pessoas com deficiência, representando
10% da população brasileira (ACESSIBILIDADE, 2010) e (DATASUS, 2010).
Dados do Censo de 2000 do IBGE, no entanto, aponta para um número mais
expressivo, na ordem de 24,5 milhões (IBGE, 2010). Esses dados chamam a
atenção não apenas das autoridades governamentais, mas também de toda a
sociedade, colocando para ambos urgentes desafios, com vistas a combater o
histórico quadro de exclusão a que essas pessoas estão expostas.
Apesar do impacto causado por esses dados, à discussão sobre a deficiência
não deve ser reduzida a questões quantitativas. Mais do que números, o
Brasil precisa pensar em políticas públicas inclusivas e eficazes. Diante disso,
uma das primeiras providências é garantir a esses indivíduos acessibilidade,
seja aos espaços públicos ou ao conhecimento.
Apesar não ser um conceito novo, o termo acessibilidade é somente
retomado a partir dos anos 80, com destaque para 1981, quando da
celebração do Ano Internacional das Pessoas Deficientes (CARVALHO,
1997)5. É nesse novo cenário que surgem as Tecnologias Assistivas (TAs),
atualmente consideradas como um dos principais instrumentos para a
efetivação e consolidação dos muitos programas de inclusão existentes, tanto
no Brasil como em outros países.
5 Ano Internacional dos Deficientes: evento instituído pelas Nações Unidas, tendo como principal finalidade chamar a atenção do mundo para a criação de planos de ação, na tentativa de dar ênfase à igualdade de oportunidades, reabilitação e prevenção de deficiências. Participação e Igualdade Plenas foi o lema desse evento, definido como um direito das pessoas com deficiência, reconhecendo-lhes o direito de terem uma vida ativa, digna e de qualidade, como qualquer outro cidadão. Uma das maiores contribuições do evento foi à criação do Programa Mundial de Ação para pessoas com deficiência, formulado em dezembro de 1982 pela Assembléia Geral das Nações Unidas. [Carvalho, 1997]
A despeito de suas vantagens, sabe-se que o simples desenvolvimento de
tecnologias de um modo geral e em particular as assistivas, sem a devida
atenção às condições de uso e aplicabilidade, não garante os resultados
esperados, notadamente junto às pessoas com necessidades especiais. Os
diferentes tipos e níveis de deficiência física, motora e/ou mental requerem
tanto a especificação quanto a implementação de recursos tecnológicos muito
mais elaborados do que aqueles voltados para um público mais geral. No que
diz respeito ao desenvolvimento de soluções computacionais para um público
tão específico, são inúmeros os requisitos de software e hardware
demandados. Um deles, entretanto, assume naturalmente uma posição de
destaque: acessibilidade.
Partindo desse ponto, apresentamos o xLupa como uma proposta tecnológica
inovadora, não exatamente com relação a sua função básica que é ampliar,
mas com referência aos recursos que suporta, uma vez que, juntos, oferecem
ao usuário baixa visão, além de acessibilidade já mencionada, conforto e
sobretudo autonomia de trabalho com e através do computador.
Desenvolvimento do xLupa: uma visão geral
Embora atualmente existam muitos ampliadores de tela, em grande parte
para execução em plataforma windows (p.ex., zoomtext, magic e magnifier), o
xLupa, além de ser um software livre executável Linux, reúne um conjunto de
funcionalidades que o tornam uma solução diferenciada dos outros. Resultado
de uma longa pesquisa trata-se de uma solução desenvolvida com base na
aplicação de técnicas e métodos computacionais atuais, exploradas com o
objetivo de garantir um funcionamento que seja, ao mesmo tempo, acessível,
confortável e com capacidade para adaptar ao perfil ou às necessidades
específicas de seus potenciais usuários, as pessoas com baixa visão.
Para atingir esses objetivos, o projeto vem sendo desenvolvido por etapas,
sendo a primeira delas o desenvolvimento de um estudo minucioso de
viabilidade de especificação e execução. Nessa etapa, foram desenvolvidas
duas ações, uma delas a análise do problema, seguida pela licitação das
expectativas pretendidas. Desse processo resultou a delimitação das
principais características do ampliador, as quais, a passo e passo, foram
sendo agregados outros recursos importantes. Dentre as diversas decisões
de projeto, concluiu-se, por exemplo, que um importante recurso para o
indivíduo com baixa visão seria dotar o xLupa de capacidade para se adaptar
ao seu perfil. Para tanto, foram estudas diferentes técnicas de inteligência
artificial, sendo a técnica escolhida o Raciocínio Baseado em Casos ou
simplesmente RBC, tópico retomado mais adiante.
Embora não sendo exatamente a finalidade dos ampliadores fazer leitura de
telas, com o intuito de melhorar as condições de trabalho do usuário da
ferramenta, concluiu-se que outro recurso importante seria a implementação
de um modulo para leitura de tela. Com referência à ampliação, propriamente
dita, a ferramenta, que nas suas três primeiras versões apenas permitia
ampliações em áreas parciais da tela do computador (a 20, 30, 50 a 60 por
cento da área total do monitor), em sua versão mais recente (4.0) avança,
permitindo agora ampliações em tela cheia. Nas seções que se seguem,
abordaremos com mais detalhes cada um desses itens.
Aspectos técnicos relacionados à implementação
Da ampliação em tela cheia
Nas primeiras versões do xLupa, a ampliação das imagens e textos apenas
era possível em partes da tela. Com a evolução do trabalho, vários
investimentos foram feitos no sentido de que as ampliações acontecessem
em tela cheia. Esse tipo de ampliação, apesar de ser mais atraente e de fácil
visualização para o usuário final, requereu por parte da programação um
trabalho computacional mais elaborado. Para tanto, foram aplicadas diversas
técnicas e algoritmos, em grande parte, disponíveis no X Windows, com
alguns de seus detalhes aqui resumidos.
O X Windows System (O’ REILLY E ASSOCIATES, 1992), também chamado
de X11, é um protocolo que possibilita o emprego de uma interface gráfica,
explorando assim o conceito de janelas. O X11 opera em conformidade com o
modelo cliente-servidor. Ao local onde é exibida a tela dá-se o nome de
servidor X. É esse servidor o responsável pelo gerenciamento das telas em
processamento, bem como do teclado e mouse. O Cliente X, por seu turno, é
a aplicação responsável pela exibição de informações no servidor X. É ele,
por exemplo, que recebe os eventos capturados pelo servido dos teclados e
mouse, enviando os comandos para, por exemplo, desenhar uma imagem na
tela.
A implementação em C (linguagem usada na programação do xLupa) do
protocolo X11 é feita por meio de rotinas da biblioteca Xlib (O’ REILLY E
ASSOCIATES, 1992). Na verdade, poucas aplicações usam de fato a Xlib
diretamente. Na maioria das vezes, o mais comum é usar outras bibliotecas
de mais alto nível, tais como GTK+ e Qt, ambas implementadas sobre a Xlib.
De qualquer forma, via os recursos presentes na Xlib, torna-se possível a
obtenção das estruturas que compõem as janelas (dentre as informações
manipuláveis estão a posição da janela e as suas dimensões), por meio de
uma chamada a XQueryTree. Para o mapeamento de cada tela, utiliza-se a
extensão xComposite (PACKRD & JOHNSON, 2010). Através dela,
consegue-se a manipulação dos pixels de qualquer janela, permitindo que as
ampliações desejadas sejam feitas. É também a xComposite que dá suporte a
um tipo especial de janela, chamada de overlay. Trata-se de uma área
invisível para o cliente X, mas é nessa janela que as ampliações são
mostradas.
Durante o processamento, muitas vezes, é necessário ignorar a ocorrência de
determinados eventos numa janela, com a sua propagação para as janelas
que esteja abaixo. Isso é feito com base na extensão XShape (PACKARD &
KEITH, 2010). Essa extensão é normalmente usada em janelas
transparentes, como é o caso da janela especial de ampliação, citada
anteriormente. Uma chamada ao método XShapeCombineRectangles
permite, por exemplo, combinar essa transição dos eventos. No caso
específico do xLupa, os eventos ocorridos na janela de ampliação precisam
ser propagados para a janela root, ou seja a janela do usuário que ocupa toda
a tela e que contém todas as outras janelas. Eventos que denotem mudança
de tela são tratadas pela extensão xDamage (PACKARD & ANHOLT, 2010).
É através dela que o sistema é notificado que houve uma alteração numa
determinada janela e a posição da janela em que essa alteração ocorreu.
Xdamage é útil para reduzir o tempo de processamento; uma vez que a
atualização da tela ou refresh somente precisa ser feita na parte de janela
onde a alteração de fato aconteceu.
Em relação à ampliação em tela cheia, o funcionamento é resumidamente o
seguinte. Iniciado o processamento, cabe ao cliente, da componente cliente-
servidor, copiar as estruturas de todas as janelas na área do servidor (exceto
a janela Overlay) e montar uma imagem com estas janelas. A partir daí,
sempre que detectado um evento de mudança, o cliente dá início à alteração
das estruturas das janelas, remontando as imagens para exibição.
Da leitura de tela
O leitor de tela é um recurso alternativo para aos usuários com baixa visão.
Por meio dele, o usuário pode acessar com mais facilidade os conteúdos que,
embora ampliados na tela, não consegue ler. Para a sua implementação,
foram utilizadas as linguagens de programação C e Python. A escolha do
Python se deveu à necessidade da implementação dos recursos da interface
de acessibilidade AT-SPI (AT-SPI, 2010) presentes na biblioteca pyatspi
(ACCERCISER, 2010). Combinando esses recursos com o accerciser
(PYTHON, 2010), foi possível explorar a interatividade da linguagem e assim
suportar o processamento requerido para a leitura de tela. Assim, uma vez
capturado o evento, isola-se a frase ou a palavra a ser lida que, em seguida, é
entregue ao sintetizador de voz, módulo responsável pela transformação dos
caracteres em sinais de áudio. Para o xLupa, adotou-se o Espeak
(http://espeak.sourceforge.net/), um software livre e de código aberto.
Contribuíram para essa decisão o fato de permitir produções orais em
diferentes línguas, cujas características podem ser facilmente alteradas; baixa
demanda de área de memória, possibilidade de programação híbrida e código
ser portável.
Acessibilidade, Usabilidade e Adaptabilidade do xLupa
Assim como qualquer sistema computacional, o desenvolvimento de TAs
exige a implementação de requisitos funcionais e não funcionais da
Engenharia de Software, com destaque para a acessibilidade e usabilidade.
Define-se acessibilidade como sendo um conjunto de condições necessárias
num software, capazes de torná-lo um instrumento ao alcance de todos e de
fácil uso. Usabilidade (NIELSEN, 1993) é um termo associado a muitos
aspectos, dentre eles a facilidade de os comandos serem aprendidos pelo
usuário, a capacidade de o seu funcionamento ser recuperado após a
ocorrência de erros e a flexibilidade assegurada por ela no momento do uso.
Com o objetivo de tornar a ferramenta adaptável ao perfil do usuário, dentre
outras técnicas estudadas, foi implementado o Raciocínio Baseado em Casos
– RBC (Wangenheim & Wangenheim, 2003). Trata-se de uma abordagem
computacional que explora a solução de problemas e o aprendizado do
sistema por meio do rastreamento das experiências adquiridas com
processamentos já realizados: problemas passados.
O método se desenvolve por etapas, a saber: (i) Recuperação de dados –
Dado um novo problema, o sistema inicia o processo de recuperação de
casos que já estejam registrados na base de conhecimento do sistema e que
mais se aproximam da solução para o problema em processamento; (ii)
Revisão dos casos – A idéia básica desse procedimento é descobrir o
máximo de semelhanças existentes entre o problema a ser resolvido e
aqueles já processados anteriormente; (iii) Reutilização do Caso – Ao
encontrar o caso que mais se aproxima da solução desejada, o que é obtido
mediante o cálculo de similaridade, o sistema efetiva a sua execução e (iv)
Retenção do Caso – etapa que corresponde ao armazenamento de um novo
caso na base, para o caso de se ele ainda não estar registrado na base. A
capacidade de aprender e de se adaptar ao usuário é obtida através da
implementação dessa técnica.
O xLupa em funcionamento
Uma vez ativado, é apresentada para o usuário uma tela contendo uma
mesma imagem repetida em linha, a qual é aplicada um fator de ampliação
(Figura 1-a). Uma vez selecionado a imagem desejada, abre-se uma nova
tela (Figura 1-b), contendo diferentes cores de fundo. Partindo desse ponto,
inicia-se a busca de um caso armazenado na base que possa resolver o
problema em questão. As configurações do usuário podem ser salvas, para
uso futuro. Para tanto, o sistema pede ao usuário um login e uma senha
pessoa que servirão de índice para recuperação das configurações numa
nova execução do xLupa.
Figura 1-a Tela para captura fator de ampliação. 1- b Tela para ajuste da cor do fundo
Resultados, Discussão e Considerações Finais
Os testes com o xLupa, tanto em laboratório quanto com os usuários,
demonstram que a ferramenta atende os requisitos. Tendo em vista que um
dos objetivos é tornar o xLupa adaptável ao perfil do usuário, um dos
principais desafios tem sido definir, adequadamente, os atributos necessários
para esse desenvolvimento. A análise do projeto e os retornos obtidos
apontam para a necessidade de alguns ajustes. Problemas já detectados
estão em fase de análise e ajustes. No estágio atual, ao sistema foi agregada
a utilização de abas, o que melhorou a interface do sistema com o usuário.
Além disso, dois são os avanços na implementação. De um lado, a ampliação
em tela cheia, conforme comparação ilustrada na figura 2. De outro, o suporte
à leitura de tela.
Figura 2 – (à esquerda) Ampliação em tela parcial – (à direita) Ampliação em tela cheia
Apresentamos aqui o xLupa. Mostramos que, por meio de configurações
individuais, os usuários adquirem independência em suas atividades. Os
testes têm sido possíveis graças ao voluntariado de professores, escolas e
alunos, bem como de usuários avulsos, uma vez que o código executável
pode ser baixado, através do site http://projetos.unioeste.br/campi/XLupa/.
Como trabalhos futuros, a equipe do projeto foca suas pesquisas em outras
técnicas, métodos e ferramentas para ampliar os recursos e otimização,
atualmente os desenvolvedores estão elaborando a reengenharia do
software.
Referências Bibliográficas
ACCERCISER. Disponível em: http://live.gnome.org/Accerciser. Data de
Acesso: 12 de Out. 2010.
ACESSIBILIDADE. ACESSIBILIDADE.SIGAESSAIDEIA.ORG - Campanha
Acessibilidade. Disponível em: http://acessibilidade.sigaessaideia.org.br. Data
de Acesso: 12 de Out. 2010.
AT-SPI. Disponível em: http://directory.fsf.org/project/at-spi. Data de Acesso:
12 de Out. 2010.
CARVALHO, R.E. A nova LDB e a Educação Especial. Rio de Janeiro: WA,
1997.
DATASUS. Tecnologia da computação a serviço do deficiente visual.
Disponível em: http://w3.datasus.gov.br/acessibilidade/acessibilidade.php.
Data de Acesso: 12 de Out. 2010.
IBGE. Censo 2000. Disponível em: www.ibge.gov.br. Data de Acesso: 12 de
Out. 2010.
NIELSEN, J. Usability Engineering. Academic Press, Inc., San Diego. 1993;
O’REILLY & ASSOCIATES. Xlib Programming Manual. In: Xlib Programming
Manual for Version 11. Ed.: Adrian Nye(ed.) Sebastopol, Califórnia, 1992,
Vol.2.
PACKRD, K.; ANHOLT, E. The DAMAGE Extension Protocol Version1.1.
Disponível em:
http://cgit.freedesktop.org/xorg/proto/damageproto/plain/damageproto.txt. Data
de Acesso: 12 de Out. 2010.
PACKRD, K.; JOHNSON, D. The Composite Extension Version 0.4.
Disponível em:
http://cgit.freedesktop.org/xorg/proto/compositeproto/plain/compositeproto.txt.
Data de Acesso: 12 de Out. 2010.
PACKRD, Keith. X Nonrectangular Window Shape Extension Library.
Disponível em: http://www.xfree86.org/current/shapelib.pdf. Data de Acesso:
12 de Out. 2010.
PYTHON. Disponível em: http://live.gnome.org/GAP/PythonATSPI. Data de
Acesso: 12 de Out. 2010.
WANGENHEIM, C.G.V; WANGENHEIM, A.V. Raciocínio Baseado em Casos,
Ed.: Manole. São Paulo, 2003; Vol.1.