Você está na página 1de 77

UNIVERSIDADE ESTADUAL DE MARING

CENTRO DE TECNOLOGIA - DEPARTAMENTO DE INFORMATICA - DIN


ESPECIALIZAO EM DESENVOLVIMENTO DE SISTEMAS PARA WEB

ARTRANSLATOR: PROTTIPO DE UM TRADUTOR BASEADO EM TCNICAS DE


RECONHECIMENTO TICO E REALIDADE AUMENTADA PARA DISPOSITIVOS
MVEIS

OSVALDO MASSAKAZU KOHATSU

MARING
2012

OSVALDO MASSAKAZU KOHATSU

ARTRANSLATOR: PROTTIPO DE UM TRADUTOR BASEADO EM TCNICAS DE


RECONHECIMENTO TICO E REALIDADE AUMENTADA PARA DISPOSITIVOS
MVEIS

Monografia apresentada Universidade


Estadual de Maring como requisito parcial
obteno do ttulo de especializao de
desenvolvimento de sistemas para web.

Orientadora Dra Heloise M. Paris Teixeira.

MARINGA
2012

UNIVERSIDADE ESTADUAL DE MARING


CENTRO DE TECNOLOGIA - DEPARTAMENTO DE INFORMATICA - DIN
ESPECIALIZAO EM DESENVOLVIMENTO DE SISTEMAS PARA WEB

OSVALDO MASSAKAZU KOHATSU

ARTRANSLATOR: PROTTIPO DE UM TRADUTOR BASEADO EM TCNICAS DE


RECONHECIMENTO TICO E REALIDADE AUMENTADA PARA DISPOSITIVOS
MVEIS

Monografia aprovada em ____/____/____ para obteno do ttulo de Especialista


em Desenvolvimento de Sistemas para Web.

Banca Examinadora:

_______________________________________
Orientadora Dra. Heloise Manica Paris Teixeira

_______________________________________
Professor Dr. Edson A. Oliveira Junior

_______________________________________
Professor Dr. Renato Balancieri

DEDICATRIA

Dedico esta monografia aos meus pais que me deram muito apoio e carinho nos
momentos mais difceis da minha vida e contriburam durante todo meu crescimento
e tambm nessa nova etapa de minha vida. A minha namorada pela mais pura forma
e incondicional de amor, companheirismo, incentivo, pacincia e ajuda sem medir
esforos sempre presentes em minha vida, a minha orientadora que colaborou com
presteza para o desenvolvimento e concretizao deste trabalho.

AGRADECIMENTOS

Agradeo a Deus, pela vida, paz e tranqilidade em todos os momentos de minha


vida. A todas as pessoas do meu convvio que acreditaram e contriburam direta e
indiretamente para a concluso deste trabalho. A todos os professores da
especializao por compartilharem seus conhecimentos. A todos os amigos que
conheci durante o curso e pelos momentos de amizade e convivncia.

PENSAMENTO

A vida uma pea de teatro que no permite ensaios.


Por isso, cante, chore, dance, ria e viva intensamente,
antes que a cortina se feche e a pea termine sem aplausos.
Charles Chaplin

RESUMO
Em uma era dirigida pela informao e o advento de dispositivos mveis mais
robustos, ter a informao aliada mobilidade trilha caminhos comodidade. Neste
cenrio, em um mundo globalizado onde a comunicao entre pessoas de diferentes
pases e lnguas tem se tornado cada vez mais comum, necessrio o
conhecimento em idiomas que so mais utilizados ou que fazem parte do cotidiano
profissional. O conhecimento de um idioma demanda tempo. Este trabalho
apresenta um prottipo de um tradutor de textos baseado em tcnicas de
reconhecimento de caracteres para entrada de dados, traduo automtica por meio
de webservices para processamento e realidade aumentada para visualizao dos
resultados. O reconhecimento de caracteres responde satisfatoriamente no quesito
de entrada de dados enquanto que a traduo instantnea foi inviabilizada devido a
uma alterao na disponibilidade do webservice de traduo.

SUMRIO
1. INTRODUO....................................................................................................

1.1. O problema de pesquisa..............................................................................

1.2. Objetivos......................................................................................................

1.3. Justificativa e Motivao..............................................................................

1.4. Procedimentos metodolgicos.....................................................................

1.4.1. Materiais e mtodos.............................................................................

1.5. Limitaes da pesquisa...............................................................................

1.6. Organizao do documento.........................................................................

2. REVISO TERICA...........................................................................................

2.1. Sistema operacional Android.......................................................................

2.1.1. Sistema de runtime...............................................................................

2.1.2. Bibliotecas............................................................................................

10

2.1.3. Framework de aplicao....................................................................... 11


2.2. OCR (Reconhecimento tico de Caracteres) ............................................. 14
2.3. Realidade aumentada.................................................................................. 17
2.3.1. Aplicativos de traduo............................................................................. 18
2.4. Trabalhos correlatos....................................................................................

21

3. ARTRANSLATOR: TRADUO INSTANTNEA PARA DISPOSITIVOS


PORTTEIS............................................................................................................ 24
3.1. Ambiente de desenvolvimento..................................................................... 24
3.2. Modelo do prottipo.....................................................................................

26

3.2.1. Biblioteca Tesseract.............................................................................

28

3.2.2. API de processamento de imagens...................................................... 32


3.2.3. API camera manager............................................................................ 34
3.2.4. API de reconhecimento de caracteres.................................................. 41
3.2.5. API de traduo....................................................................................

45

3.2.6. API de realidade aumentada................................................................

48

3.2.7. Classes acessrias............................................................................... 50


4. TESTE DO PROTTIPO E RESULTADOS......................................................

52

4.1. Ambiente de teste........................................................................................

52

4.2. Descrio do Teste......................................................................................

52

4.3. Resultados...................................................................................................

61

5. CONSIDERAES FINAIS E TRABALHOS FUTUROS.................................... 63


REFERNCIAS BIBLIOGRFICAS........................................................................ 65

LISTA DE FIGURAS
Figura 1.1 Exemplos de smbolos em Idiomas no-latinos.
Figura 1.2 Teclado QWERT.
Figura 2.1 Arquitetura do Android.
Figura 2.2 Emulador do Kit de Desenvolvimento Android.
Figura 2.3 Emulao da Cmera do Emulador.
Figura 2.4 Exemplo de aplicao do OCR.
Figura 2.5 Definio dos Ambientes Real e Virtual e da Realidade Misturada.
Figura 2.6 TranslatAR para Nokia N900.
Figura 2.7 iTranslate para iPhone.
Figura 2.8 Tela do aplicativo Jibbigo.
Figura 3.1 Modelo do prottipo.
Figura 3.2 Arquitetura da biblioteca Tesseract.
Figura 3.3 Classe do reconhecimento de caracteres TessBaseAPI.
Figura 3.4 Classe CameraManager.
Figura 3.5 Funo AdjustFramingRect da classe CameraManager.
Figura 3.6 Atributos da classe CaptureActivity.
Figura 3.7 Principais funes da classe CaptureActivity.
Figura 3.8 Classe OcrInitAsyncTask e as funes para transferncia
dos arquivos de idiomas.
Figura 3.9 Classe OCRRecognizeAsyncTask.
Figura 3.10 Mtodo runHttpRequest de TranslationHelper.
Figura 3.11 Mtodo Translate de TranslationHelper.
Figura 3.12 Mtodos doInBackground e onPostExecute de TranslateAsyncTask.
Figura 4.1. Texto retirado de revistas.
Figura 4.2. Texto em Telas LCD.
Figura 4.3 Site do JMF da Oracle.
Figura 4.4 Execuo da classe WebCamBroadcaster.
Figura 4.5 Atribuio do IP na Classe SocketCamera.
Figura 4.6 Tela do emulador sendo carregado.
Figura 4.7 Menu de Opes.
Figura 4.8 Tela de opes.
Figura 4.9 Tela de opes de idiomas.
Figura 4.10 Transferncia e instalao do arquivo do idioma
Figura 4.11 Texto envolto pelo retngulo delimitador.
Figura 4.12 Erro no reconhecimento do texto.
Figura 4.13 Sucesso no reconhecimento de caracteres e no texto reconhecido.
Figura 4.14 Falha no reconhecimento de caracteres.

LISTA DE TABELAS
Tabela 1.1 Exemplos de verbetes em idiomas com smbolos no latinos.
Tabela 2.1 O Android em cdigo fonte.
Tabela 2.2 Trabalhos Correlatos.
Tabela 4.1 Resultados do teste emprico.

1 INTRODUO
1.1 O problema de pesquisa
A linguagem escrita um importante meio de transmisso da informao
inserido no cotidiano das pessoas. Contudo, quando a escrita se encontra em uma
lngua desconhecida pelo leitor da informao, ela no compreendida. Para
amenizar esse problema, solues tecnolgicas de traduo so propostas, desde
dicionrios eletrnicos a tradutores instantneos. Nos primeiros dicionrios
eletrnicos, o texto no compreendido manualmente inserido como entrada dos
aplicativos. Esses buscam em um ndice alfabtico e apresentam ao usurio o
resultado em forma de texto ou sada de voz. Um exemplo desse tipo de dicionrio
o Franklin TGA-470 Global Translator [FRANKLIN ELETRONIC PUBLISHERS,
2011].
O desenvolvimento da Internet e redes sem fio promoveram a
comunicao entre pessoas em qualquer hora e lugar. Com o surgimento de
dispositivos mveis com maior capacidade de processamento, foram concebidos
novos tradutores eletrnicos, como o iTranslate [APPLE STORE, 2011] e o Jibbigo
[JIBBIGO, 2011]. Esses dispositivos auxiliam a compreenso de textos, porm
necessitam que o usurio fornea a entrada de dados por meio de digitao (no
caso do Franklin TGA-4701) ou pronncia (no caso do Jibbigo). Dessa forma, tornase necessrio que o usurio tenha conhecimento do idioma para pronunciar as
palavras ou digitar os smbolos corretamente, o que nem sempre uma tarefa
simples. Essa dificuldade comum em idiomas de origem oriental como o chins,
coreano, rabe entre outros que possuem escritas cujos smbolos so peculiares.
Essa problemtica exemplificada no seguinte cenrio. Um usurio, que
conhece somente a lngua portuguesa brasileira se encontra em um pas de lngua
inglesa e ao avistar uma placa indicando water deseja saber seu significado.
Utilizando o Franklin TGA-470 basta digitar water ou pronunciar w t r no Jibbigo.
Neste cenrio, os dois aplicativos citados provavelmente atendero a necessidade
de traduo do usurio.

O Franklin TGA-470 um tradutor eletrnico porttil digital.

Suponha que o usurio seguiu sua viagem para um pas de lngua de


origem latina ou neolatina, como o espanhol, francs entre outras. Tambm no
haveria muita dificuldade com os verbetes gua e eau ou pronunciar awa e
eau. Como no cenrio anterior, os dois aplicativos citados provavelmente
atenderiam a necessidade de traduo do usurio.
Finalmente, o usurio segue sua viagem para um pas no oriente. Nesse
ltimo cenrio o usurio poder se deparar com caracteres no-latinos, como os
ilustrados na Figura 1.1 e Tabela 1.1. Neste momento surgem as dificuldades: como
digitar tais smbolos no teclado QWERT (tipo de teclado cujas primeiras letras so o
QWERT) de seu dispositivo, que no suporta esses caracteres (Figura 1.2)? Como
pronunci-los?

Figura 1.1. Exemplos de smbolos em Idiomas no latinos.


Fonte: O Autor.

Idioma

Nome Nativo

Arabic
Armenian

Bashkir

Kashmiri

,

Kazakh

Marathi (Marh)

Tabela 1.1. Exemplos de verbetes em idiomas com smbolos no latinos.


Fonte: Google Inc., 2011.

Figura 1.2. Teclado QWERT


Fonte: Android Central 2012.
Nesse contexto, este trabalho prope auxiliar a entrada de dados em
tradutores por meio do desenvolvimento de um prottipo para traduo instantnea.
A soluo proposta nesta pesquisa utiliza entrada de texto visual por meio de um
dispositivo mvel provido de uma cmera e suporte touchscreen. Para tornar a
soluo vivel, foi utilizado um sistema de reconhecimento tico de caracteres para
a transcrio do verbete em tipo de entrada legvel para sistemas computacionais.

1.2 Objetivos
Objetivo geral
Este trabalho tem como objetivo geral contribuir com traduo instantnea
de textos que contenham smbolos de difcil compreenso pelos usurios com a
utilizao de dispositivos mveis.

Objetivos especficos

Empregar tcnicas de Realidade Aumentada (RA) para simplificar o processo


de visualizao de dados para traduo de textos;

Permitir a traduo de textos entre diferentes idiomas com entrada de dados


por reconhecimento tico de caracteres (OCR).

1.3 Justificativa e motivao


Com as vertentes do desenvolvimento mundial direcionadas para o
processo de globalizao da economia, imprescindvel o estudo ou o
conhecimento de idiomas ou a competncia para comunicar-se em uma lngua
diferente da lngua me. De acordo com Armin Schwegler [SCHWEGLER,2012],
quando economistas (e linguistas) escrevem sobre globalizao e seus efeitos sobre
3

a sociedade moderna, classificam o idioma como sendo um bem econmico, ou seja,


pessoas que se comunicam em outros idiomas diferente da lngua-ptria so
detentoras deste bem. Em adio conclui tambm que, no mundo globalizado as
interconexes so realizadas por intermdio de grupos de pessoas multilnge.
A globalizao tornou essencial s pessoas se comunicarem umas com
as

outras

para

diferentes

fins

como

realizar

negcios,

dilogo

poltico,

desenvolvimento de pesquisas, socializao, entretenimento, entre outros. Os


idiomas favorecem o relacionamento interpessoal e servem para estabelecer elos.
Entretanto, a diferena de idiomas ainda um obstculo na comunicao entre
pessoas.
Tradutores e dicionrios eletrnicos so utilizados para atenuar as
dificuldades de traduo e no aprendizado de novas lnguas. Com o advento de
dispositivos mveis mais modernos e capazes de realizar tarefas e aplicaes mais
complexas, alm da capacidade de conexo com a Internet, a possibilidade de
desenvolvimento de aplicativos mais prticos e eficientes tornou-se vivel. Com isso,
um dispositivo mvel como um celular pode ser provido de dicionrios ou tradutores
instantneos para serem utilizados em qualquer hora e lugar.
Grande parte dos dispositivos mveis atuais capaz de executar os
aplicativos sobre sistemas operacionais. Alguns deles como o Galaxy S2 da
Samsung, Atrix da Motorola, iPhone da Apple e Optimus da LG possuem capacidade
de processamento equivalente ao de um microcomputador desktop. Esses
verdadeiros computadores de bolso proporcionam a experincia de um desktop em
qualquer lugar na palma da mo.
Este cenrio de desenvolvimento motivou o estudo e adoo de
funcionalidades inovadoras (providas por reas de pesquisa como a viso
computacional, programao para dispositivos mveis, traduo instantnea online e
realidade aumentada) para o desenvolvimento do prottipo proposto nesta pesquisa.

1.4 Procedimentos Metodolgicos


Quanto natureza, esta pesquisa classificada como aplicada. Para o
desenvolvimento da pesquisa, inicialmente foi realizado uma reviso da literatura,
buscando conhecer os principais conceitos, tecnologias e ferramentas existentes. O
levantamento bibliogrfico e estudo de conceitos sobre sistema de reconhecimento
tico de caracteres, ambiente de desenvolvimento Android, integrao de servios
4

Web e Realidade Aumentada permitiu a definio dos recursos tecnolgicos


adotados no desenvolvimento do prottipo. Foram utilizados como fontes de
pesquisa artigos cientficos, livros e relatrios tcnicos, monografias, teses, fruns
entre outras fontes confiveis sobre o tema da pesquisa.
Com base na literatura, a seleo dos recursos utilizados no
desenvolvimento do prottipo considerou a facilidade de integrao, desempenho,
usabilidade, manutenabilidade e portabilidade. Por ser um prottipo de traduo,
relevante considerar o desempenho, enquanto a portabilidade em questo trata-se
dos componentes em si e no do produto final (prottipo).
Na modelagem e desenvolvimento do prottipo priorizou-se a utilizao
de ferramentas e tecnologias de cdigo aberto ou softwares livres, tais como a
linguagem Java, servios web, ambiente de desenvolvimento Eclipse, e plugins
Android. Para a avaliao do prottipo, realizou-se testes controlados.

1.4.1 Materiais e Mtodos


Entre outros, os softwares utilizados no desenvolvimento do prottipo so:
biblioteca de reconhecimento tico de caracteres; Tesseract; servio web de
traduo; Google Translate; IDE Eclipse com plugins ADT (Android Development
Tools); o kit de desenvolvimento Android; Android SDK.
O hardware utilizado no desenvolvimento, testes e avaliao composto
de um notebook com processador Intel Centrino Core Duo Processor 1.83 GHz,
RAM de 0,99 Gibabytes SDRAM e um smartphone provido do sistema operacional
Android com cmera e sistema touchscreen disponveis ou um emulador.

1.5 Limitaes da Pesquisa


A presente pesquisa apresenta as seguintes limitaes. A primeira referese ao fato do aplicativo no realizar o reconhecimento dos caracteres capturados
pela cmera numa taxa de 100% de acurcia. Outra limitao refere-se ao tempo de
processamento decorrente deste reconhecimento. A maior parte do tempo completo
de processamento do aplicativo utilizado pela etapa de reconhecimento. O tempo
total composto pelo tempo gasto do resultado do reconhecimento de caracteres,
pela troca de mensagens com o servio de traduo e pela exibio da traduo
para o usurio na tela do dispositivo. Como trabalho futuro se faz necessrio um
estudo para melhorar a acurcia e tempo de processamento do aplicativo proposto.
5

Uma limitao do prottipo, quanto a traduo de textos, atribui-se a


quantidade de mxima de caracteres a serem traduzidos. Esta quantidade mxima
limita-se a 4.500 caracteres. Caso o texto a ser traduzido ultrapasse este limite, o
texto truncado considerando-se sempre a posio do primeiro caracter como ponto
de incio para a contagem dos caracteres.
Os testes finais do prottipo foram restritos em relao etapa de
traduo instantnea. Tal restrio se deve ao fato da verso do Google Translate
API passar a ser paga durante a etapa de execuo de testes finais no prottipo.
Conforme Jeff Chin [CHIN, 2012], gerente de produtos da Google, a verso gratuita
do Google Translate tornou-se obsoleta e removida desde o dia 01 de dezembro de
2011, dando lugar a verso paga com suporte a 50 idiomas.
Atualmente a traduo do Google oferecida aos usurios comuns
somente pelo site do Google Translate e pela traduo de pginas da Internet,
sendo o Web Service disponvel apenas na verso paga. Como trabalho futuro, os
testes podero ser complementados com a aquisio da verso paga ou pela
solicitao de uma verso disponibilizada pela Google para Universidades.

1.6 Organizao do Documento


O presente trabalho organizado como segue. O captulo 1 aborda
questes relacionadas ao problema de pesquisa, justificativa, objetivos, metodologia,
material e limitaes da pesquisa.
O captulo 2 apresenta os principais conceitos das tecnologias adotadas
para o desenvolvimento do prottipo, como o sistema operacional Android, o
reconhecimento tico de caracteres, a realidade aumentada e o sistema de traduo
instantnea. So descritos alguns trabalhos correlatos e uma breve comparao
entre eles e este trabalho.
O capitulo 3 descreve o prottipo desenvolvido, o ambiente de
desenvolvimento, arquitetura, as classes desenvolvidas, as bibliotecas open source
utilizadas como a API de processamento de imagens e a Tesseract e o cdigo fonte
das funes principais. Esto inclusas, a API da cmera, a API do reconhecimento
tico de caracteres e a API de traduo. Neste captulo tambm apresenta-se uma
arquitetura do prottipo e as ligaes com web services.

O captulo 4 aborda o teste do prottipo. So descritos o ambiente


experimental, o tipo das entradas, os passos do teste, resultados obtidos e
concluses sobre os resultados obtidos.
Finalmente, o captulo 5 apresenta a concluso deste trabalho,
contribuies, trabalhos futuros e um retrospecto do trabalho.

2 REVISO TERICA
Este captulo apresenta os principais temas estudados para

desenvolvimento do trabalho. So introduzidos conceitos sobre a arquitetura do


sistema operacional Android e seus componentes, reconhecimento tico de
caracteres, realidade aumentada e trabalhos correlatos na rea.

2.1 Sistema Operacional Android


O Android um sistema operacional inicialmente desenvolvido pela
Google e que atualmente est sendo continuado pela Open Handset Alliance. Porm,
a gerncia do projeto e a engenharia de processos de responsabilidade da Google
[ANDROID DEVELOPER, 2011]. um sistema operacional livre e de cdigo aberto
(sob licena Apache 2.0), executado sobre um kernel Linux (monoltico) verso 2.6
modificado para servios essenciais como segurana, gerenciamento de memria,
pilha de rede e modelo de drivers. O kernel do Linux tambm responsvel pela
comunicao entre o hardware e o software, ou seja, ele funciona como uma
camada de abstrao entre hardware e software. Pra ser mais especfico, o Android
corresponde a uma pilha de softwares que inclui um sistema operacional, um
middleware e as aplicaes chave.
O Android basicamente estruturado em kernel linux, bibliotecas, sistema
de Android, framework de aplicaes e as aplicaes propriamente ditas. A Figura
2.1 ilustra uma viso geral da arquitetura Android. A camada mais inferior a
correspondente camada do kernel Linux. Nesta camada localizam-se os
componentes que fazem a comunicao entre o hardware do dispositivo, como
cmera, auto falantes, disco de armazenamento, etc, e o Android. Logo acima
localizam-se as bibliotecas do sistema e a mquina virtual Dalvik que faz a execuo
dos aplicativos. O Application Framework a camada que corresponde aos
componentes que gerenciam e que so utilizados no desenvolvimento de novas
aplicaes. Por fim, a camada de aplicaes localiza-se no topo da pilha de
softwares, onde esto os aplicativos (programas) do dispositivo, tais como agenda
telefnica, navegador, calculadora, entre outros.

Figura 2.1. Arquitetura do Android


Fonte: Android Developer, 2011.

2.1.1 Sistema de Runtime


Esta pilha de softwares consiste em aplicaes Java sendo executadas,
cada qual com sua instncia e processo prprios, em um framework de aplicao
baseado em orientao a objetos sobre bibliotecas nativas Java executadas em uma
mquina virtual Dalvik com compilao JIT (Just-in-Time). Essa compilao JIT ou
traduo dinmica essencial pois otimiza a performance de execuo, ao passo
que dispositivos mveis possuem uma arquitetura de hardware restrita.
A mquina virtual Dalvik suporta a execuo de mltiplas VMs
eficientemente. uma mquina baseada em registradores e executa classes
compiladas por um compilador Java que converte o cdigo fonte em um executvel
.dex atravs da ferramenta dx. O formato .dex, Dalvik Executable, otimizado
para um consumo mnimo de memria.
A arquitetura do Android permite que os aplicativos sejam desenvolvidos
na linguagem de programao Java. O aplicativo controla o dispositivo atravs de
bibliotecas Java desenvolvidas pela Google.
9

2.1.2 Bibliotecas
O Android possui um conjunto de bibliotecas C/C++ usado por vrios
componentes do sistema Android. Elas esto disponveis aos desenvolvedores
atravs do framework de aplicaes Android. As bibliotecas escritas em C/C++
incluem:

Surface Manager: gerencia o acesso ao subsistema de display e realiza a


composio das camadas grficas 2D e 3D de mltiplas aplicaes;

Framework de media OpenCore: bibliotecas que suportam a reproduo e


gravao dos mais populares formatos de udio e vdeo, assim como
arquivos de imagens estticas, incluindo Mpeg4, H.264, Mp3, Aac, Amr, Jpg,
Png.

SQLite: um poderoso e leve sistema de gerenciamento de banco de dados


relacional;

OpenGL ES 2.0: uma API 3D grfica que prove acelerao 3D de hardware


(quando disponvel) ou um software rastreador 3D altamente otimizado;

SGL: uma engine 2D grfica subjacente;

WebKit: engine de layout;

SSL: Utilizado para armazenamento de keystores. Cada aplicao contm


sua prpria keystore onde so armazenados os certificados SSL, para
verificao em webservices.

FreeType: para renderizao de fontes vetoriais e bitmaps.

LibWebCore: uma engine que prov um navegador Android e embed.

Biblioteca System C: uma implementao derivado do BSD da biblioteca


system padro do C (libc) adaptado para dispositivos com Linux;
Alm do C, o Android escrito tambm em XML (12 milhes de linhas de

cdigo), Java (2,1 milhes de linhas de cdigo), em C++ (1,75 milho de linhas de
cdigo) e outras linguagens conforme ilustra a Tabela 2.1.

10

Tabela 2.1. O Android em cdigo fonte.


Fonte: Android Developer, 2011.

2.1.3 Framework de Aplicao


A plataforma Android oferece aos desenvolvedores a construo de
aplicaes extremamente ricas e inovadoras, pois permitido o acesso completo ao
framework das APIs usadas nas principais aplicaes. A arquitetura da aplicao
projetada para simplificar o reuso dos componentes. Qualquer aplicao pode prover
suas funcionalidades e qualquer outra pode fazer o uso destas.
O framework para o desenvolvimento de aplicaes contm os seguintes
servios e componentes:

11

Um conjunto de Views rico e extensvel que pode ser usado para construir
uma aplicao, incluindo listas, grids, caixas de texto, botes e at um
navegador web embutido;

Servidores de contedo que provem o acesso de aplicaes a dados de


outras aplicaes (como lista de contatos), ou para compartilhar seus prprios
dados;

Gerenciador de recursos que prov o acesso a recursos no codificados


como strings localizadas, grficos e arquivos de layout;

Um gerenciador de notificaes que permite que todas as aplicaes exibam


mensagens de alerta ou erro na barra de status;

Um gerenciador de atividades que gerencia o ciclo de vida de uma aplicao


e prov uma navegao padro.
A Figura 2.2 apresenta a interface do emulador virtual de um dispositivo

mvel, o AVD (Android Virtual Device), usado para a realizao dos testes e
execuo do aplicativo proposto nesta pesquisa.

Figura 2.2. Emulador do Kit de Desenvolvimento Android


Fonte: O Autor.
Uma limitao existente no emulador do Android quanto o requisito
cmera. O emulador do Android no prove a emulao de uma cmera, requisito
necessrio para este trabalho. O emulador faz apenas a indicao de que a cmera
12

ser utilizada pelo aplicativo, mas uma vez executado o projeto, a cmera restringese a apenas a visualizao de um fundo com quadriculado, conforme a Figura 2.3.
At o presente momento, a Google no forneceu indcios de estar trabalhando em
alguma implementao ou pelo menos uma data de quando ela estar disponvel
nos emuladores.

Figura 2.3. Emulao da Cmera do Emulador


Fonte: O Autor.
A soluo adotada para a emulao de um dispositivo de cmera foi por
meio da conexo de uma webcam e execuo de applets em Java. O cdigo fonte
de domnio pblico para esta soluo apresentada em Gibara [GIBARA, 2011]. As
classes consistem em:

CameraSource: Uma interface que fornece ao usurio a possibilidade da


escolha da fonte da cmera a ser utilizada no emulador;

GenuineCamera: Implementao de CameraSource que utiliza o dispositivo


cmera original do emulador (aquele que apresenta um fundo quadriculado);

HttpCamera: Implementao que utiliza imagens obtidas atravs de um


inputstream de uma conexo HTTP;

SocketCamera: Implementao que obtm imagens diretamente de uma


conexo TCP/IP;

BitmapCamera: Implementao que utiliza um bitmap como emulao de uma


cmera;
13

WebcamBroadcaster: Um pequeno aplicativo Java que utiliza as bibliotecas


JMF para a transmisso de uma seqncia de imagens atravs de uma rede.
Com essas classes, a soluo consiste em: executar o aplicativo

WebcamBroadcaster para a transmisso do stream de vdeo, obtido de uma


webcam instalada, atravs de uma porta utilizando sockets. Enquanto isso, a classe
SocketCamera, ser executada no aplicativo Android. Esta classe far a captura das
imagens do socket de transmisso e enviar para o emulador como se fosse a
cmera do dispositivo.
Outro problema constatado foi em relao ao cdigo fonte do autor Tom
Gibara. As classes publicadas [GIBARA, 2011] utilizam funes que j esto em
desuso pelas novas implementaes do SDK do Android. Como no sero utilizadas
todas as classes, adaptaes foram feitas apenas nas classes SocketCamera e
WebcamBroadcaster.

2.2 OCR (Reconhecimento tico de Caracteres)


OCR acrnimo para Optical Character Recognition ou Reconhecimento
tico de Caracteres [AIM, 2000]. uma tecnologia que permite com que sistemas
computacionais reconheam caracteres por meio de um mecanismo tico. O
mecanismo tico uma interpretao de imagens e compreenso de sinais em
forma textual. O reconhecimento tico feito pelo humano atravs dos olhos.
Enquanto este reconhecimento feito pelos olhos (entrada), a interpretao
(processamento) varia de pessoa para pessoa de acordo com muitos fatores como
qualidade da cmera do dispositivo, porcentagem de rudo das imagens, formato
dos caracteres de entrada, entre outros.
Trs dos problemas enfrentados pelos desenvolvedores de sistemas OCR
podem ser comparados com o mecanismo humano. Primeiro, o ser humano ao ler
um texto que no esteja em sua lngua nativa, pode at reconhecer alguns
caracteres, porm no compreende o sentido das palavras e seus significados.
Porm, caso o texto que se deseja ler seja composto por nmeros, o ser humano
capaz de interpret-los, pois estes possuem um significado universal. Por este
motivo, esta uma das funcionalidades que muitos sistemas OCR conseguem
prover sem dificuldades: o reconhecimento apenas de caracteres numricos e uma
pequena variao de caracteres alfabticos.
14

Segundo, as similaridades no formato entre alguns caracteres numricos e


alfabticos tambm configura-se como um empecilho. Ao ser analisada uma string
de letras e nmeros, pode ocorrer uma pequena diferena visvel entre, por exemplo,
a letra maiscula O e o numeral 0, a letra maiscula S e o 5, a letra maiscula
I e o 1 entre outros. Para os humanos, entretanto, basta a compreenso do
contexto para determinar o significado exato. Na computao, essa tarefa mais
complicada, pois no existe esta compreenso do contexto.
O terceiro problema refere-se questo do contraste entre a cor do texto e a
cor de fundo e a sobreposio de letras ou imagens. A similaridade entre as cores
de texto e de fundo e a sobreposio entre elas e a dificuldade de distino e
interpretao dos caracteres so diretamente proporcionais. Quanto maior a
similaridade entre as cores, maior a dificuldade do reconhecimento pelo sistema
OCR. O mesmo vale para o olho humano, ao se deparar com fundos e caracteres de
cores semelhantes.
As primeiras verses de OCR eram simples e requeriam calibragem do
sistema. Esta calibragem constituia-se da prvia programao de imagens
associadas a cada caracter e utilizando-se de apenas um tipo de fonte.
Implementaes atuais abordando OCR abrangem tanto caracteres do alfabeto
latino quanto caracteres orientais como o chins, japons, etc. Algumas dessas
implementaes so de cdigo fonte aberto, mas ainda encontram problemas na
integrao com os sistemas operacionais. A maioria pode ser executado em
plataformas linux e windows, porm ainda no suportam o Android, exceto em
cdigo nativo. necessrio a implementao de uma interface para a integrao de
bibliotecas nativas da linguagem C que ainda no so suportadas pelo Android.
O OCR utilizado para a entrada automtica de dados em um
computador, armazenamento, compartilhamento ou processamento. Os primeiros
sistemas foram dedicados para entrada de grande quantidade de dados. O primeiro
grande uso foi no processamento de cartes de venda de crdito de petrleo [AIM,
2000]. Atualmente as aplicaes com OCR englobam leitores de caixa registradora
de fita e scanners de pgina. Uma aplicao inovadora so os scanners de Kurzweil
que auxiliam indivduos com deficincia visual. Estes dispositivos escaneiam textos
que so processados pelo computador e convertidos para a linguagem falada.
Atualmente a tecnologia OCR tem sido largamente utilizada em aplicaes de viso
computacional tais como: operaes bancrias (digitalizao e compensao de
15

cheques sem interferncia humana); aplicaes de planos de sade (digitalizao de


receitas e formulrios de seguros para cada paciente); agncias governamentais
(digitalizao de processos); digitalizao em grande massa de livros, revistas e
publicaes (utilizadas por bibliotecas e museus, a fim de diminuir espao, tornar
textos e livros localizveis e permitir disponibiliz-los online, como mostra a Figura
2.4); aplicaes como o Microsoft OneNote [CVISION, 2011]; aplicaes
proprietrias

comerciais

como

Kanji

OCR

da

Toshiba

usada

para

reconhecimento de caracteres japoneses [MORI, 2002].


A Figura 2.4 mostra o procedimento de digitalizao de um livro por meio
de OCR. O livro totalmente digitalizado e so gerados imagens das pginas do
livro (Page Images). Desta forma, o livro pode ser armazenado digitalmente, porm
no pode ser utilizada de forma sistemtica, como a criao de ndices, diviso de
captulos, ndices de figuras, etc. Para que isso seja possvel, a lista de imagens das
pginas do livro devem ser convertidas em formato texto ou hipertexto por OCR.
Com as pginas em formato texto, o processo de extrao de informao torna-se
mais simples. Assim, possvel criar ndices com links para os captulos e imagens,
marcao de contedo, facilitando a navegao do usurio pelo livro.

Figura 2.4. Exemplo de aplicao do OCR.


Fonte: IBM Research, 2011.
16

2.3 Realidade Aumentada


Realidade Aumentada (Augmented Reality - AR) o termo utilizado para
uma viso direta ou indireta de um ambiente do mundo real, no qual elementos so
aumentados por dados gerados por computador tais como: sons, vdeos ou
grficos [THOMAS, 2009].
De acordo com Son-Lik Tang (1998), a realidade aumentada uma
tecnologia na qual imagens, modelos tridimensionais, ou simples informaes
geradas por computador so sobrepostos (aumentados) na viso do mundo real do
usurio, fornecendo ao usurio, informao adicional gerada a partir de um modelo
computacional num tempo rpido o suficiente para que o contedo adicionado possa
ser alterado ou atualizado conforme a viso fsica.
Basicamente, uma abordagem que se encontra no limite entre o mundo
real (realidade) e o mundo virtual (virtualidade). Segundo Kirner e Tori (2006), a
Virtualidade ou Realidade Virtual uma aplicao com interface em um ambiente
tridimensional, sinttico gerado por computador no qual o usurio pode interagir em
tempo real. Quando objetos pertencentes a esta interface transpassam para a
realidade, conhecido por realidade aumentada. Da mesma forma que objetos reais
so visualizados no ambiente virtual considerada virtualidade aumentada [BIER et
al., 1993; STONE et. al., 1994].
Para compreender a Realidade Aumentada preciso ter em mente os
conceitos de real (mundo real) e virtual (MUVEs Multi-User Virtual Environments).
O mundo real o mundo composto por objetos reais, e em contrapartida, o mundo
virtual o mundo composto por objetos virtuais, como por exemplo, o jogo Second
Life.
A realidade aumentada e a virtualidade aumentada so paradigmas que
se definem entre estes dois mundos, e juntos, compem a Realidade Misturada
[NIJHOLT, 2005]. Porm, a realidade e a virtualidade aumentada possuem conceitos
opostos. Enquanto a Realidade Aumentada a transposio de objetos virtuais
(para a visualizao em tempo real direta ou indiretamente) no mundo real, a
Virtualidade Aumentada a transposio de objetos reais no mundo virtual.
Facilmente pode-se exemplificar ambos os conceitos para uma melhor clareza. Um
exemplo de Realidade Aumentada pode ser visto no filme Who Framed Roger
Rabbit ou shows da vocaloid Hatsune Miku da Yamaha, onde personagens, que
17

so desenhos gerados por computador, interagem (so transpostos) com atores


reais em ambientes reais. O Avatar tambm um filme que foi baseado em
tcnicas de Virtualidade Aumentada ao inserir atores reais em ambientes gerados
por computador e interagindo com personagens virtuais. Uma ilustrao das
definies acima descritas pode ser vista na Figura 2.5.

Figura 2.5. Definio dos Ambientes Real e Virtual e da Realidade Misturada.


Fonte: O Autor.

2.3.1 Aplicativos de traduo


A combinao da tecnologia de realidade aumentada com as dimenses
social e colaborativa da Web 2.0 pode ser a base de novos ambientes de
aprendizagem adaptados s realidades e experincias dos nativos digitais. Esta
combinao integra um conceito que muitos profissionais, como Paul Mason do blog
do BBC News, designam por Web 3.0 [MASON, 2012].
Como dito anteriormente, a visualizao dos objetos virtuais pode ser feito
direta ou indiretamente. Para que os objetos virtuais sejam visualizados no ambiente
real e sejam manuseados deve-se utilizar um software com capacidade de viso do
ambiente real e do posicionamento dos objetos virtuais.
De acordo com Tori et al. (2006), o hardware de Realidade Aumentada
pode usar dispositivos de Realidade Virtual, mas tende a no obstruir as mos, que
devem atuar naturalmente no ambiente misturado. Tcnicas de rastreamento visual,
usando viso computacional e do poder de processamento de imagens so
importantes neste caso. Kirner e Siscoutto (2007) descrevem que com a
popularizao da webcam, dispositivos mveis e com o avano das tcnicas de
18

viso computacional e do poder de processamento destes microcomputadores, o


rastreamento ptico passou a ser uma realidade, em funo da disponibilidade e do
baixo custo.
Como API de traduo pode-se escolher um dicionrio com um banco de
dados dos verbetes indexado. O tamanho do banco de dados depender do nmero
de idiomas que o tradutor ir abranger. Uma das vantagens de uma API de traduo
baseado neste paradigma a sua utilizao mesmo sem uma conexo com a
Internet. Por outro lado, a traduo realizada feita isoladamente por verbetes, ou
seja, caso seja necessria uma traduo baseada no contexto, no pode ser
empregada.
Outra soluo possvel para o mdulo de traduo a utilizao de um
servio de traduo. Existem diversos servios para traduo online. A maioria utiliza
o sistema de traduo baseado no SYSTRAN [SYSTRAN, 2011]. O SYSTRAN um
sistema proprietrio hbrido de traduo online instantneo em 52 idiomas. Este
sistema hbrido combina as vantagens da tecnologia lingstica com tcnicas
estatsticas que permitem com que o sistema aprenda automaticamente atravs de
tradues existentes e validadas [SYSTRAN, 2011]. Em outras palavras, o sistema
une a previsibilidade e a consistncia da mquina tradutora baseada em regras
gramaticais com a fluncia e flexibilidade dos modelos estatsticos. As tcnicas de
auto-aprendizado permitem aos usurios treinarem o sistema para um domnio
especfico ou de negcios para alcanar uma melhor qualidade nas tradues. Babel
Fish do Yahoo, o Babylon da AOL e o Google Translate do Google Inc. (este possui
uma peculiariedade sobre os demais) so exemplos de tradutores online que
utilizam possuem o sistema de traduo baseado no SYSTRAN por serem
alternativas gratuitas. Os dois primeiros tradutores fornecem opes de traduo
pr-definidas, impossibilitando ao usurio uma traduo alm destas opes
fornecidas.
O Google Translate uma engine gratuita de traduo estatstica
fornecida pelo Google Inc. para a traduo de uma poro de texto, um documento
ou at mesmo uma pgina web inteira para um outro idioma. Inicialmente, o Google
Translate tambm utilizava um tradutor baseado no SYSTRAN, porm em 2007,
decidiu-se por trocar o SYSTRAN por um sistema prprio de traduo criado pelo
Google e que j era anteriormente usado para suas tradues em rabe, chins e
russo. Em alguns casos, a traduo gerada pelo Google Translate pode no ser
19

adequada quanto o desejado, porm em outros casos como no Ingls-Francs


muito boa [TCWORLD, 2011]. Essa dificuldade se deve a mquina de traduo ser
baseada em regras e estatsticas. Esse tipo de modelo melhor aplicvel se o textoalvo curto e particularmente evidente para tradues do chins para o ingls.
[TCWORLD, 2011].
O paradigma do dicionrio de verbetes apresenta resultados favorveis
apenas para a traduo de palavras isoladas. Os dois ltimos apresentam resultados
no muito favorveis, mas quase prximos aos obtidos pela mente humana. O
Google Translate, assim como a maioria dos sistemas de traduo comerciais do
estado da arte utilizados atualmente foram desenvolvidos usando uma abordagem
baseado em regras, as quais demandaram de esforos dos lingistas para definir os
vocabulrios e as gramticas. Utiliza-se a traduo de verbetes conhecidos ou
busca-se por sua traduo isoladamente e estas so alinhadas conforme a
aplicao de tcnicas de aprendizado estatsticas para a construo de um modelo
de traduo. Essa tcnica de aprendizado consiste basicamente em uma srie de
computadores alimentados por bilhes de palavras de textos e exemplos das
tradues humanas entre as diversas linguagens [GOOGLE INC., 2011]. Desta
forma, o computador constri padres baseados na anlise dos dados de entrada.
Assim, o Google Translate oferece aos usurios a oportunidade de usufruir do
sistema e ainda aprimorar as tradues.
A escolha pela API do Google Translate como componente do prottipo
desta pesquisa, deve-se ao fato do mesmo ser um servio disponvel gratuitamente
aos desenvolvedores e possuir a flexibilidade da opo do idioma alvo. Alm destas
vantagens, esta API fornece um mdulo para a requisio de deteco do idioma de
entrada, facilitando assim para que o usurio do aplicativo indique somente o idioma
no qual deseja a traduo. At o momento, o Google Translate passou por 24
estgios de desenvolvimento (atualizaes), cada um com melhorias no sistema de
traduo ou com a adio de um novo idioma.
H duas formas de integrar a API Google Translate: atravs de um cliente
GUI Java ou atravs da utilizao de servios web. Na implementao de um cliente
Java, seria necessria a incluso de uma biblioteca Java de 320 Kbytes e
importao de classes da API do Google. Na abordagem de servios web, a troca
das mensagens feita atravs de objetos JSON entre o servidor e o aplicativo.
JSON so pequenos objetos javascript para troca de dados que so inteligveis para
20

humanos (ler e escrever) e de fcil utilizao para que mquinas servidoras


analisarem e gerem respostas. So compostos de uma coleo de pares de nomes
e valores. Essa coleo pode ser um objeto, uma tupla, uma estrutura, um dicionrio,
uma tabela hash, uma lista-chave ou um array associativo. Alm disso, diminui-se a
ocorrncia de erros por no ter que reescrever cdigo, mas sim apenas a construo
dos objetos JSON. Como em ambos modelos seria necessria uma conexo com a
Internet, optou-se pela implementao com servios Web.

2.4 Trabalhos Correlatos


O TranslatAR (Figura 2.6) consiste de um tradutor em Realidade
Aumentada desenvolvido utilizando a cmera e o sistema touchscreen do
smartphone Nokia N900 combinados com uma API de OCR e um servio de
traduo online (Google Translation API).
O paradigma abordado no TranslatAR o mesmo abordado neste
trabalho, denominado magic lens. A plataforma N900 roda sobre o sistema
operacional Maemo 5 Linux, o que aumenta a portabilidade da aplicao. Porm o
Maemo 5 o sistema operacional baseado no Linux desenvolvido pela Nokia,
ficando restrito a seus dispositivos. Em contrapartida o Android tem se popularizado
entre os dispositivos mveis, onde se destacam, Motorola, Sony Ericsson, Samsung,
LG e HTC.

Figura 2.6 TranslatAR para Nokia N900


Fonte: Fragoso, 2011.
Outros trabalhos correlatos so os dispositivos de traduo eletrnica
stand alone denominados automatic translation helpers [FRAGOSO, 2011]. Estes
dispositivos provem funcionalidades tanto de tradutores como tambm de
dicionrios. iTranslate (Figura 2.7) um aplicativo para o iPhone da Apple que
21

capaz de traduzir em 50 idiomas, nos dois sentidos e fornece uma funcionalidade


text-to-speech, que possibilita ao usurio ouvir a traduo no idioma indicado
[SONICMOBILE, 2011].

Figura 2.7 iTranslate para iPhone


Fonte: Sonic Mobile, 2011.
Um trabalho relevante a ser citado o aplicativo Jibbigo [JIBBIGO, 2011].
Jibbigo, ilustrado na Figura 2.8, um aplicativo para iPhone que fornece uma
traduo atravs da pronncia da frase ou palavras a serem traduzidas. Como sada,
o aplicativo fala como seria a traduo no idioma em questo. Apesar do nmero
reduzido de idiomas de traduo, os desenvolvedores do aplicativo apontam como
sua maior vantagem, sua disponibilidade de uma forma exacerbada. No site do
Jibbigo [JIBBIGO, 2011] so mostrados fotos dos lugares mais isolados do mundo,
com a inscrio: Voc pode usar o Jibbigo aqui.

22

Figura 2.8 Tela do aplicativo Jibbigo


Fonte: Jibbigo, 2011
A Tabela 2.2 apresenta as principais caractersticas desta pesquisa e dos
trabalhos correlatos citados anteriormente.
Esta Pesquisa

Jibbigo

iTranslate

TranslatAR

Android

Android e iOS

iOS

Maemo 5 Linux

63

9 (Em pares)

50

63

Online

Offline

Offline

Online

No

Sim

Sim, para

No

(ARTranslator)
Portabilidade
Nmero de Idiomas
Disponibilidade
Reconhecimento
por voz

alguns
idiomas

Licena

Livre

Proprietria

Livre

Livre

Tabela 2.2. Trabalhos Correlatos.


Fonte: O Autor.

23

3 AR-TRANSLATOR: TRADUO INSTANTNEA PARA


DISPOSITIVOS PORTTEIS
Este captulo apresenta uma modelagem da arquitetura do prottipo
desenvolvido neste trabalho. So descritos o ambiente de desenvolvimento,
ferramentas, linguagens, tecnologia utilizadas, bibliotecas importadas, classes
implementadas e a plataforma de execuo do aplicativo. Ao final so descritas as
dificuldades encontradas durante o desenvolvimento bem como as solues
adotadas e uma descrio de como elas influenciam na execuo do prottipo.
O prottipo proposto neste trabalho consiste em um prottipo que utiliza
bibliotecas de viso computacional, de reconhecimento tico de caracteres de
cdigo fonte livre e um servio web gratuito para traduo instantnea. Todas essas
bibliotecas foram utilizadas no desenvolvimento do aplicativo proposto, que pode ser
executado em qualquer dispositivo com o sistema operacional Android.

3.1 Ambiente de desenvolvimento


O desenvolvimento do prottipo foi realizado em um computador com Duo
Processor 1.83 GHz e 1GB de memria RAM e sistema operacional Windows XP
SP2. Como a plataforma Android utiliza um kernel Linux modificado, aplicativos
desenvolvidos so apenas pacotes de classes escritas na linguagem Java
compiladas e arquivos XML de configurao e definio. O desenvolvimento do
prottipo proposto foi feito utilizando o kit de desenvolvimento Java 6 (verso
1.6.0_29) e o ambiente de desenvolvimento Eclipse SDK release 3.6.1.
A escolha pela programao para o sistema operacional Android deve-se
ao fato de grande parte dos dispositivos mveis terem suporte a este sistema
operacional, como os fabricados por Samsung, HTC, T-Mobile, Sony Ericsson e
recentemente pela Motorola. Conforme Christina Bonnington da CNN Tech, o
Android OS lidera a competio de sistemas operacionais para celulares, fechando o
ano de 2011 com 52,5% do mercado global de dispositivos mveis, contra 25% do
ano anterior. A parcela correspondente ao iOS (sistema operacional para iPhone)
teve uma leve queda de 16,6% para 15%. Deve-se ressaltar que esse nmero do
iOS compreende o mercado de celulares e tambm o de tablets. O Symbian segue
rumo sua obsolescncia, perdendo o topo do ranking de 2010 com 36,3%,
reduzindo drasticamente para 17%. Os dados apontam ainda que a pequena parcela
24

ocupada pelo Windows Mobile diminuiu de 2,7% para 1,5%. O relatrio no chega a
mencionar o Palm OS que o pioneiro no segmento, mas hoje encontra-se obsoleto
tendo a verso 6.0 Cobalt como sua ltima verso e nem o Blackberry OS,
desenvolvido pela RIM (Research in Motion) restrito aos aparelhos Blackberry
[BONNINGTON, 2011].
Apesar dos aplicativos serem escritos em Java, no h um cdigo na
plataforma e o bytecode Java no diretamente executado. As classes Java so
recompiladas em executveis Dalvik e executados em uma mquina virtual Dalvik
(mquina de execuo do Android). Essa mquina virtual uma Virtual Machine
modificada para o Android, com dispositivos otimizados que so executados com
energia proveniente de uma bateria e com uma CPU de baixa capacidade.
Para que o cdigo Java seja executado como um aplicativo Android, a
emulao feita por meio da integrao do IDE Eclipse com suporte ao Android
SDK release 14.
O Android SDK junto a ferramenta de desenvolvimento Android forneceu
um conjunto rico de ferramentas, como depurador, bibliotecas, emulador,
documentao, exemplos de cdigos e tutoriais, ao mesmo tempo que auxilia no
aproveitamento dos recursos ricos do Eclipse, como assistente de contedo,
recursos open source e integrao com JUnit.
A cmera do dispositivo simulada por meio de uma webcam instalada
ao computador e a execuo de um applet que serve de interface entre a webcam e
a cmera do dispositivo virtual Android.
O aplicativo que d suporte emulao da cmera do dispositivo virtual
o WebcamBroadcaster, uma classe java que captura os quadros de uma webcam e
os transmite por meio de uma conexo, que pode ser TCP/IP ou por sockets.
importante ressaltar o fato do sistema operacional ser necessariamente o Windows
XP ou Linux. A classe WebcamBroadcaster utiliza funes da biblioteca Java Media
Framework (JMF). Porm, essa biblioteca no oferece suporte aos sistemas
operacionais mais recentes, sendo um projeto que foi descontinuado. Ao ser
instalado em sistemas operacionais mais recentes, a biblioteca no detecta
dispositivos de entrada de vdeo, apenas de udio, sendo invivel para o
desenvolvimento do projeto.

25

3.2 Modelo do prottipo


Uma modelagem do prottipo, ilustrada na Figura 3.1, formada pelos
seguintes componentes: biblioteca de viso computacional do Google Leptonica,
biblioteca OCR do Google Tesseract, API Camera Manager, API de OCR, API de
traduo e API de Realidade Aumentada e componentes externos como o idioma de
treinamento do OCR e as mensagens do Google Translate.
Quando o aplicativo iniciado a atividade principal, a CaptureActivity
instanciada. Esta classe contm como atributos os objetos principais das outras APIs,
como pode ser observado na Figura 3.6. Esta classe responsvel pela
instanciao

inicializao

das

outras

classes,

como

por

exemplo,

OcrInitAsyncTask e TessBaseAPI para inicializao do OCR, atribuio de


SurfaceHolder para a inicializao da cmera e criao dos menus de preferncia e
de contexto.
Ao pressionar o boto de disparo, a CaptureActivity envia o stream de
imagens para o objeto OcrRecognizeAsyncTask. Esta classe responsvel pelas
chamadas classe que realmente faz o reconhecimento dos caracteres, a
decodeThread. A decodeThread realiza o reconhecimento dos caracteres e em caso
de sucesso, envia o texto para a CaptureActivity, ou uma mensagem de erro em
caso de erro.
Em caso de erro, a CaptureActivity exibe na sua tela, a mensagem de erro
no reconhecimento de caracteres, sem a instanciao das classes de traduo.
Em caso de sucesso, a CaptureActivity envia o texto reconhecido (em
formato texto) para a classe TranslateAsyncTask. Esta atividade responsvel por
decodificar os cdigos dos idiomas de traduo e original para o modelo utilizado
pelo Google Translate e enviar uma requisio contendo os cdigos dos dois
idiomas e o texto a ser traduzido. Ao receber a resposta com o texto traduzido, a
classe TranslateAsyncTask, "aumenta" o texto na tela de pr visualizao da
CaptureActivity.
As sees seguintes descrevem cada parte do modelo proposto.

26

Figura 3.1. Modelo do prottipo


Fonte: O autor.

27

3.2.1 Biblioteca Tesseract


A biblioteca Tesseract OCR responsvel pelo reconhecimento tico
dos caracteres de entrada. Adicionalmente, foi necessrio importar a biblioteca
Google Leptonica, que contm funes de viso computacional os quais o
Tesseract depende. Originalmente a arquitetura da biblioteca Tesseract (Figura
3.2) foi desenvolvida pela HP-UX em C. Atualmente, o projeto continuado pelo
Google que fornece tambm uma interface Java para utilizao nativa das
funes.
A Figura 3.2 ilustra o fluxo de trabalho do Tesseract. Todo o processo
segue o tradicional pipeline passo-a-passo. Primeiramente passada como
entrada uma imagem (na escala cinza ou colorida) para o processamento. Neste
processamento, a imagem binarizada e os objetos so extrados do fundo da
imagem.
No prximo passo, realizada uma anlise sobre esses objetos e linhas
delimitadoras so traadas em torno da imagem referente ao texto. Esse texto
delimitado analisado e quebrado em palavras de acordo com o espaamento
entre letras. O reconhecimento continua como um processo de dois passos. No
primeiro passo, as palavras so reconhecidas uma a uma. Cada palavra
passada para o classificador do idioma de treinamento. Caso no seja
reconhecida, armazenada pelo classificador como um dado de treinamento, pois
as mesmas podem ser encontradas posteriormente at atingir o final do texto.
Caso o classificador tenha utilizado estas palavras para o reconhecimento, um
segundo passo realizado para as mesmas a partir do incio do texto.
Para que a biblioteca seja suportada pela plataforma Android, ela foi
compilada em uma biblioteca que fornece uma API Java provida de acesso s
funes Tesseract compiladas nativamente.
A API Java resume-se classe TessBaseAPI (Figura 3.3). Esta classe
uma simples interface Java para o mecanismo de OCR da Tesseract. Nem todos
os mtodos JNI (Java Native Interface) disponveis esto implementados, mas o
suficiente para o propsito deste trabalho. Inicialmente, as bibliotecas nativas
Tesseract e Leptonica (libtess.so e liblept.so), que esto no formato .so (shared
object) so carregadas para a utilizao das funes nativas e o construtor da
classe faz a instanciao do objeto.
28

Figura 3.2. Arquitetura da biblioteca Tesseract.


Fonte: Tesseract, 2011.

A funo InitOcrEngine da classe CaptureActivity faz a inicializao da


Tesseract com um modelo de especfico de idioma. Esta funo recebe como
parmetros o caminho do modelo de idioma e o nome do idioma. Os arquivos de
modelo devem estar localizados no diretrio raiz Tessdata. O nome do idioma uma
string ISO 639-3. O padro ISO 639-3 um padro internacional que determina
cdigos para a representao de nomes de idiomas. Descreve cdigos de 3
caracteres para a identificao de um idioma [W3, 2011]. Caso o parmetro
contenha um valor nulo, a inicializao ser feita por padro no idioma ingls.
Em alguns casos, pode ocorrer do usurio escolher um modelo de idioma
que ainda no tenha sido instalado no aplicativo. Nesses casos, o aplicativo ir
realizar uma verificao pelo idioma de reconhecimento escolhido. Caso o modelo
no esteja instalado, o aplicativo far uma chamada funo downloadFile da
classe OcrInitAsyncTask (Figura 3.8).
29

Figura 3.3 Classe do reconhecimento de caracteres TessBaseAPI.


Fonte: O Autor.
Esta funo realiza uma conexo ao repositrio de idiomas do OCR
Tesseract em [TESSERACT, 2012], posposto do modelo de idioma e da extenso
.gz. Com a URL formada, a funo downloadFile a passar como parmetro para a
funo downloadGzippedFileHttp. Ao receber o arquivo compactado, uma chamada
ao mtodo gunzip que armazenar o arquivo em um objeto do tipo GZIPInputStream,
far a descompresso do arquivo e apagar o arquivo compactado.
30

Os arquivos de modelo de idiomas so armazenados na memria interna


ou em um carto de disco removvel, sendo este, um dos requisitos para a execuo
do aplicativo deste projeto.
Como os idiomas utilizados podem ser armazenados em um dispositivo
de armazenamento mvel, caso este aplicativo seja instalado em outro dispositivo
mvel com os arquivos de modelo, o aplicativo faz a instalao a partir do carto de
memria, antes de buscar no repositrio do servidor. Esta instalao utilizar a
funo installFromAssets que por sua vez chamar a funo installZipFromAssets
para descompactar os arquivos.
O mtodo Clear e End so simples chamadas aos respectivos mtodos
nativos. O primeiro, libera espao na memria utilizado por resultados de
reconhecimento de caracteres e dados temporrios, enquanto que o segundo fecha
a Tesseract e libera toda a memria, o equivalente a destruir o objeto TessBaseAPI.
Uma vez que End usado nenhuma das funes da API pode ser utilizada.
As funes setVariable, setPageSegMode e setDebug executam os
mtodos nativos correspondentes e realizam atribuies em variveis e parmetros
de configurao do Tesseract.
A funo wordConfidences utilizada quando o reconhecimento de
caracteres realizado de modo contnuo. Neste modo, o reconhecimento feito de
modo contnuo e as palavras so pr reconhecidas e so armazenadas de forma
que seja possvel aumentar a confiabilidade do reconhecimento e que seja atingido o
resultado esperado.
As funes setRectangle, setImage e getUTF8Text so as funes
utilizadas para o processamento OCR propriamente dito. A setRectangle ir criar um
retngulo de delimitao para reconhecimento de caracteres na imagem. Pode ser
passado um objeto rect (retngulo) ou somente as coordenadas esquerda e topo e
tamanhos de largura e altura. Cada chamada a setRectangle deleta o resultado de
reconhecimento previamente feito.
A funo setImage prov a imagem que passar pelo processo de OCR.
A imagem passada como argumento para a funo nativa pode ser de 4 tipos: File,
Bitmap, Pix ou Image Buffer. File um tipo de arquivo genrico do sistema de
arquivos. Bitmap uma imagem em formato de um mapa de bits. Pix a
representao da imagem no formato da API Leptonica. Image Buffer uma imagem
31

em formato de um conjunto de bytes armazenado no buffer. TessBaseAPI far a


chamada correspondente funo nativa.
A funo getUTF8Text simplesmente retorna o texto resultado do
processamento do OCR em formato UTF8.

3.2.2 API de Processamento de Imagens


A

API

Tesseract

utiliza

como

biblioteca

de

funes

de

viso

computacional, a biblioteca do Google, Leptonica. Essa biblioteca prov uma grande


quantidade de funes e ferramentas tanto para processamento de imagens,
tambm conhecido por imaging quanto para anlise de imagem, que inclui
operaes

fundamentais

de

processamento,

transformaes,

tcnicas

de

renderizao, entrada e sada, transformaes affine entre outras [TOM POWERS,


2011].
A biblioteca Leptonica possui um pequeno nmero de estrutura de dados
ao contrrio da sua quantidade de funes, ambas utilizando o paradigma de
orientao a objetos. As funes esto divididas em duas bibliotecas: funes de
alto nvel, que utilizam um conjunto esparso de estruturas de dados como Pix, Box,
etc, e as de baixo nvel que utilizam intrinsicamente tipos de dados do C. Os
arquivos da biblioteca de baixo nvel, possuem o sufixo low anexado ao nome de
arquivo na biblioteca de alto nvel correspondente. Quando uma estrutura de dados
est associada a um array um a adicionado ao nome do arquivo, como em Pixa.
Ao se tratar de arquivos de imagens, extensa a quantidade de formatos
existentes, porm somente alguns so suportados pelo Leptonica. Alguns como os
simples BMP e PNM, so suportados sem problemas. Quanto aos tipos de imagens
com compresso com bibliotecas open source se enquadram o (gzip) PNG, (JFIF)
JPEG e o novo (libvpx, uma biblioteca de compresso de vdeo) WEBP que so
suportados por todos os navegadores. H o suporte para um formato no suportado
pelos navegadores, a compresso TIFF CCITT-G4. O Leptonica no oferece suporte
ao formato GIF, pois o tipo de compresso (LZW) foi recentemente patenteada. Para
que o suporte a estes formatos esteja disponvel, o Leptonica utiliza as bibliotecas
externas libjpeg, libtiff, libpng, libz, libgif e libwebp. Como o formato de imagem
utilizado neste projeto o JPEG apenas a biblioteca libjpeg.so carregada em
tempo de execuo.

32

A classe AdaptiveMap contm mtodos para mapeamento de imagens


adaptativas. Para o uso da biblioteca Tesseract ser necessria apenas a
implementao do mtodo de normalizao do fundo de uma imagem.
A classe Binarize contm mtodos para binarizao de imagens. A funo
otsuAdaptiveThreshold. Threshold adaptativo um algoritmo de segmentao de
imagem para a definio dos objetos de uma imagem de seu fundo, dependendo de
suas condies de iluminao [LIAO, 1999]. O algoritmo utilizado pelo Leptonica o
Otsu. Outros detalhes podem ser encontrados no anexo.
A classe Box representa um container para o box nativo da biblioteca
Leptonica. Contm funes para a criao do box que ir conter a restrio da
poro do texto que ser enviada API de reconhecimento de caracteres. Todas as
coordenadas passadas devem ser valores inteiros e no negativos.
As definies para as constantes utilizadas pela biblioteca Leptonica
localizam-se na classe Constants contm as.
A classe Convert contm mtodos de converso de qualquer tipo de
imagem para imagens com 8 bits de canal. As imagens so convertidas e o retorno
ser uma imagem em 8 bits em escala de cinza ou um cdigo de erro.
A classe Enhance contm mtodos para melhorar a nitidez das imagens.
A funo unsharp masking far a chamada para a funo nativa correspondente que
criar uma camada sobre a imagem, tratando a nitidez.
A classe JpegIO contm mtodos de entrada e sada de arquivos no
formato Jpeg. A funo compressToJpeg compacta/converte qualquer imagem
bitmap para o formato Jpeg, com qualidade padro (85%) e codificao seqencial.
A diferena da codificao seqencial da progressiva, que na primeira os bits so
codificados um a um em ordem, enquanto que na segunda, os bits semelhantes no
mapa de bits so codificados em bloco uma nica vez.
A classe Pix a representao Java de um objeto Pix nativo da biblioteca
Leptonica. Cada objeto da classe Pix contm atributos como localizaes horizontal
e vertical do pixel e a cor em formato de bits. Implementa vrios mtodos nativos
como clone, copy, getDimensions, entre outros.
A classe Pixa a representao Java de um objeto nativo PixA. Um
objeto PixA uma representao de um array de pixels e o container o qual
pertencem, podendo ser um mapa de pixels.
33

A Classe ReadFile contm mtodos para criao de objetos de 32 bbp


(bits por pixel) ou 8 bbp a partir de dados codificados. Os formatos suportados por
este objeto so o bitmap e o jpeg. Os mtodos so utilizados para leitura e escrita de
imagens.
A Classe Rotate implementa mtodos de rotao bsico de imagens a
partir de seu centro. Para pequenas rotaes um clone retornado. Em outros casos,
a rotao feita por amostragem de rea.
A Classe Scaling contm mtodos para redimensionar imagens. As
imagens podem ser redimensionadas, pelo eixo x ou y independentemente ou
mantendo a proporo original.
A Classe Skew contm mtodos de deteco de rotao e distoro Esta
classe localiza e retorna o ngulo de inclinao, fazendo, primeiramente uma
varredura por um conjunto de ngulos iguais e depois faz uma pesquisa binria at a
convergncia.
Estas classes da biblioteca Leptonica podem ser obtidas gratuitamente
sobre licena GNU e licena Apache 2.0 em GoogleCode e utilizadas livremente em
qualquer projeto. Instrues de como utilizar as classes tambm podem ser
encontradas no site do Leptonica no GoogleCode. [GOOGLE CODE, 2011].

3.2.3 API Camera Manager


A API Camera Manager contm classes que fazem o gerenciamento de
configurao e das aes da cmera do dispositivo.
A classe AutoFocusCallBack implementa a interface callback da classe
Camera do Android. Apenas dois atributos so utilizados o manipulador,
autoFocusHandler e um inteiro indicando a mensagem de notificao do
manipulador. A funo setHandler faz apenas uma atribuio de um manipulador
para a cmera. A funo onAutoFocus faz o tratamento das mensagem vindas do
manipulador, em caso de sucesso ou falha no foco da cmera.
A classe CameraConfigurationManager a classe responsvel pelo
gerenciamento das configuraes da cmera como zoom, resoluo, contexto do
Android, formato do preview, resoluo da tela. O construtor faz a atribuio do
contexto da aplicao. A funo getCameraResolution retorna a resoluo da
cmera do dispositivo. Para tanto, esta funo recebe apenas o tamanho do display

34

do objeto WindowManager do objeto context e retorna um objeto do tipo Point com


os parmetros da resoluo.
A principal classe da API, Camera Manager (Figura 3.4) o controlador
de todas as funes da cmera do dispositivo. Seu construtor carrega as
configuraes atribudas para a cmera, instancia os objetos PreviewCallback e
AutoFocusCallback. So implementados tambm funes para controle de
luminncia YUV, controle do retngulo delimitador do reconhecimento de caracteres
(adjustFramingRect), inicializao e finalizao do driver da cmera, iniciar e
encerrar a pr-visualizao e fazer chamadas para a API de reconhecimento de
caracteres. Esta chamada feita pelo mtodo requestOcrDecode.

Figura 3.4 Classe CameraManager.


Fonte: O Autor.
A funo AdjustFramingRect (Figura 3.5) a funo que cria o retngulo
delimitador baseado nas coordenadas do usurio. Caso o ponto passado pelo
usurio seja maior do que a largura e/ou altura limites, a funo delimita-os para o
valor mximo.
35

Figura 3.5 Funo AdjustFramingRect da classe CameraManager


Fonte: O Autor.
A classe FlashLightManager a classe responsvel pelo gerenciamento
do hardware do flash do dispositivo. Contm mtodos para habilitar e desabilitar o
flash e inicializar o servio.
A

classe

PreviewCallBack

implementao

da

interface

android.hardware.Camera.PreviewCallback. Esta classe utilizada para recuperar


os quadros da pr-visualizao conforme eles so visualizados para o usurio. Estes
quadros sero utilizados pela API de OCR para reconhecimento dos caracteres. A
funo responsvel por isso a onPreviewFrame. Ela faz a instanciao de
setPreviewCallback e de um manipulador do tipo previewHandler.
A classe ShutterButton uma classe derivada da classe de imagens de
uma content view, a android.widget.ImageView. Esta classe uma representao
das imagens que aparecem no aplicativo. Neste caso, define o boto para tirar uma
foto para ser utilizado na tela do dispositivo. Assim como as variveis do aplicativo
deste projeto, a imagem referente a esta classe est indicada no arquivo XML
capture que localiza-se em res/layout.capture.xml. Neste arquivo a classe
ShutterButton referenciada imagem ic_camera_indicator_photo localizada em
drawable. O construtor recebe o parmetro do contexto ao qual este boto
pertencer e se este se encontra em modo pressionado. A funo performClick far
uma chamada ao mtodo onShutterButtonClick que chama o foco, recebe a imagem
pr-visualizada e libera o foco. Esta seqncia de eventos importante, pois este
boto simula o boto da cmera fsica. Nesta classe define-se tambm a interface
onShutterButtonListener que ser chamada quando o boto da cmera estiver
pressionado.

36

A atividade principal da API da cmera, CaptureActivity (Figura 3.6 e


Figura 3.7), responsvel por todo o processo de captura das imagens e chamada
aos mtodos de reconhecimento de caracteres. Ela faz o carregamento das classes
da API Camera Manager e tambm a API Tesseract. A atividade armazena tambm
atributos como o modo de captura, os idiomas original e de traduo padro, os
idiomas original e de traduo correntes, as preferncias do usurio, o boto de
captura, o resultado do reconhecimento de caracteres anterior, o local de
armazenagem dos dados temporrios, entre outros. Ao ser criada, pelo mtodo
onCreate, a atividade inicializa a classe CameraManager, o boto da cmera, as
views da traduo e do resultado do OCR. Nesta classe so implementados
mtodos que so utilizados durante todo o processo de captura, como:

getStorageDirectory: Monta um diretrio em um dispositivo de


armazenagem externo, como um carto SD, e retorna um objeto do
tipo File que ser armazenado no espao reservado especificado.

initCamera:

faz

inicializao

do

dispositivo

da

cmera,

carregando o driver, faz a atribuio da API Tesseract e do boto


de captura.

initOcrEngine: carrega o idioma de reconhecimento, instancia a API


Tesseract e a atividade assncrona de OCR.

resetStatusView: redefine todas as variveis da view desta


atividade como o texto de OCR e a visibilidade do boto de captura.

retrievePreferences: recupera as preferncias definidas pelo


usurio. Caso alguma opo seja alterada, este mtodo altera as
opes para seus respectivos valores.

handleOcrContinuousDecode: utilizado para o reconhecimento


contnuo. Os sucessivos reconhecimentos so armazenados e
tambm os tempos entre eles. Quando este intervalo se reduz a
zero o reconhecimento definido.

handleOcrDecode: o resultado do reconhecimento dos caracteres e


o arquivo de imagem capturado do quadro da cmera so
recuperados. Os idiomas de reconhecimento e de traduo so
definidos e a atividade de traduo TranslateAsyncTask
instanciada e executada.
37

onCreateContextMenu: define as opes do menu de contexto do


aplicativo. So apenas duas opes: copiar o texto reconhecido e
copiar o texto traduzido.

onCreateOptionsMenu: define as opes do menu do aplicativo.


So dois itens: de configuraes e sobre.

onDestroy: faz uma chamada ao mtodo onDestroy da atividade e


finaliza a API Tesseract.

onKeyDown: realiza uma chamada ao mtodo click do boto de


captura da cmera ou de atraso no foco.

onOptionsItemSelect: faz uma chamada a atividade de preferncias


e atualiza com os novos valores definidos pelo usurio.

onShutterButtonClick: executa o mtodo click do boto de captura.

onShutterButtonFocus: executa um atraso no foco automtico da


cmera.

onPause: chama o mtodo onPause da atividade e finaliza o driver


da cmera.

onResume: retoma a atividade aps uma chamada ao mtodo


onPause.

Primeiramente

faz

chamadas

aos

mtodos

resetStatusView e retrievePreferences. Faz uma verificao do


idioma de reconhecimento, da API Tesseract e do diretrio externo
de armazenagem. Aps todas essas verificaes executa o mtodo
resumeOcr.

resumeOcr: carrega um novo manipulador da atividade e uma nova


instncia da API Tesseract e chama a funo initCamera, que faz o
restante das inicializaes.

setSourceLanguage: define o idioma de reconhecimento.

setTargetLanguage: define o idioma de traduo.

setSpanBetweenTokens:

atribui

espaos

entre

as

palavras

reconhecidas.

setStatusViewTop:

Imprime

as

mensagens

do

estado

do

reconhecimento para o modo de captura de imagens.

setStatusViewTopContinuous: Imprime as mensagens do estado


do reconhecimento para o modo contnuo de reconhecimento.
38

showErrorMessage: Mostra mensagens de erro na tela corrente.

stopHandler: Faz uma chamada ao mtodo stop do manipulador.

surfaceCreated: Inicializa a cmera com a superfcie do aplicativo


passada por parmetro.

surfaceDestroyed: Atribui valor falso para o atributo de superfcie.


Utilizado para o reconhecimento de caracteres a partir de um
quadro de imagem da cmera, em formato bitmap.

Figura 3.6 Atributos da classe CaptureActivity.


Fonte: O Autor.
O envio e o processamento das mensagens da CaptureActivity fica sob
responsabilidade da classe CaptureActivityHandler. Este manipulador responsvel
tambm por realizar todo o gerenciamento das chamadas a API de OCR e
inicializao da cmera aps o reconhecimento. Mais importante do que o
39

gerenciamento das mensagens da atividade, o manipulador realiza todo o processo


de comunicao entre a atividade de captura e o sistema de OCR, fazendo a
inicializao ou reinicializao deste ltimo. O processamento do reconhecimento de
caracteres executado ao fazer uma chamada ao mtodo start do decodeThread,
um dos atributos do manipulador.

Figura 3.7 Principais funes da classe CaptureActivity.


Fonte: O Autor.

40

3.2.4 API de Reconhecimento de Caracteres


A classe DecodeThread, herdada da classe thread, o processo que
armazena a atividade de captura da cmera e a API Tesseract, faz a inicializao de
seu prprio manipulador, DecodeHandler e de um contador regressivo, usado para o
reconhecimento contnuo.
Assim, como a classe CaptureActivity possui um manipulador, a classe
DecodeThread tambm o possui. O manipulador responsvel por fazer as
chamadas API de OCR. Alm do mtodo para o gerenciamento das mensagens,
possui dois mtodos ocrDecode e ocrContinuousDecode, porm esta ltima
utilizada para reconhecimento contnuo. O princpio bsico de execuo de ambas
mesmo. Atribuies da API Tesseract e da PlanarYUVLuminanceSource so feitas.
A imagem bitmap processada para escala em tons de cinza e ento invocada o
mtodo execute da classe OcrRecognizeAsyncTask (Figura 3.9).
Todo o processo de inicializao e carregamento das bibliotecas e
arquivos necessrios para a utilizao da API de reconhecimento de caracteres de
responsabilidade da classe OcrInitAsyncTask. Basicamente, esta classe prov
mtodos para que o reconhecimento seja executado sem problemas. Se um idioma
de reconhecimento seja selecionado e o arquivo modelo no esteja instalado no
carto de memria, o mtodo downloadFile conecta-se ao servidor pela url
"http://tesseract-ocr.googlecode.com/files/" acompanhado pelo idioma e a extenso
".gz".
O arquivo recebido do servidor um arquivo compactado, que deve ser
descompactado pelo mtodo gunzip que transforma o arquivo recebido do tipo File
em um dado do tipo GZIPInputStream e depois em um arquivo FileOutputStream.
Aps a descompactao do arquivo, o arquivo compactado original deletado. Caso
o idioma j esteja instalado no carto de memria, transferido ou ainda previamente
baixado do servidor, a funo installFromAssets far a leitura seqencial do arquivo
do modelo diretamente do carto ou caso o mesmo esteja em formato ".gz", a
funo installZipFromAssets faz a descompactao e instalao do mesmo.

41

Figura 3.8 Classe OcrInitAsyncTask e as funes para transferncia


dos arquivos de idiomas.
Fonte: O Autor.

A funo getGZipSizeUncompressed utilizada por todas as outras que


utilizam mtodos de descompactao de arquivos para se ter o conhecimento do
tamanho do arquivo no estado descompactado mesmo antes de ser descompactado.
Trs mtodos para informar o usurio sobre o andamento do processo de
42

inicializao tambm so implementados: onPreExecute, onProgressUpdate e


onPostExecute. Estes trs mtodos so executados antes, durante e depois da
execuo da thread OcrInitAsyncTask, nesta ordem. O primeiro informa que o
aplicativo est verificando por modelos de idiomas instalados. O segundo informa
sobre o estado dos idiomas se devem ser baixados do servidor, descompactados e
outros. O terceiro informa se houve xito na inicializao da API OCR ou falha, como
por exemplo, na conexo com a internet.
A classe OcrRecognizeAsyncTask (Figura 3.9) representa a thread para o
reconhecimento de caracteres. Enquanto o processo de OCR realizado pela classe
decodeHandler, OcrRecognizeAsyncTask informa ao usurio sobre o resultado do
reconhecimento e a imagem utilizada no reconhecimento ou se houve falha no
processamento.

43

Figura 3.9 Classe OCRRecognizeAsyncTask.


Fonte: O Autor.
44

3.2.5 API de traduo


A API de traduo consiste de uma classe que implementa chamadas aos
webservices do Google Translate. A traduo do texto feita atravs da chamada do
mtodo translate da classe TranslationHelper. O mtodo translate basicamente
recebe como argumentos o texto a ser traduzido, o idioma de entrada (este podendo
ser opcional) e o idioma de sada.
De posse destes parmetros, o mtodo constri a string da URL do
servio Google Translate. Basicamente, a url do Google Translate consiste de um
prefixo bsico: https://www.googleapis.com/language/translate/v2?. Esta string com
a url, seguida do padro key seguido pela chave que pode ser obtida no site do
Google Translate, &q=, o texto a ser traduzido, &source, o idioma original,
&target e idioma para o qual se deseja a traduo. Os idiomas devem seguir o
padro do Google, indicados por siglas de 2 caracteres ou de 3 caracteres (ISO6393), com exceo do idioma chins que possui 5 caracteres para diferenciar o
simplificado do tradicional, que podem ser obtidas no site oficial do Google Translate
e tambm referenciados no cdigo fonte deste projeto.
Para padronizar este processo de recuperao de nomes e siglas para os
idiomas

foi

desenvolvida

classe

LanguageCodeHelper.

As

funes

getLanguageName e getTranslationLanguageName recebe como parmetros o


cdigo do idioma e retorna o seu nome. Por outro lado, a funo mapLanguageCode
faz o mapeamento dos cdigos do padro ISO-6993 para o padro ISO-6391. Ela
utilizada para um recebimento de um pacote de modelo de idioma no encontrado
no aplicativo, por exemplo.
Esses parmetros so passados para um mtodo protegido da classe
TranslationHelper, o runHttpRequest (como pode ser visto na Figura 3.10) , que de
posse do contexto da URI do Google Translate faz a requisio para o webservice
do Google Translate. Este mtodo realiza o tratamento de erros sobre a resposta
recebida (APIException) ou ainda quando a traduo no est disponvel. O mtodo
envia uma requisio e recebe um objeto JSON em formato stream com o resultado
da traduo. O resultado passado como retorno para a funo translate.

45

Figura 3.10 Mtodo runHttpRequest da classe TranslationHelper.


Fonte: O Autor.
Com o resultado, a funo translate, ilustrada na Figura 3.11, verifica se
houve erro ou no e retorna a traduo.
Esses mtodos so invocados pela classe TranslateAsyncTask. Esta
classe uma extenso da classe android.os.AsyncTask. A TranslateAsyncTask
uma tarefa assncrona que permite que a thread da User Interface seja
apropriadamente manipulada e que operaes e chamadas a mtodos sejam
realizadas em background e os resultados podem ser exibidos enquanto a user
interface permanece ativa. Uma AsyncTask possui 4 mtodos da classe pai que
podem ser implementados. Obrigatoriamente o mtodo doInBackground deve ser
implementado. Na maioria dos casos, como o deste projeto, quando a computao
dos dados necessita ser exibida ao usurio, o mtodo onPostExecute tambm
implementada na classe filha.
O construtor da classe TranslateAsyncTask apenas faz a inicializao dos
atributos da classe como a atividade, o text view da atividade, o idioma original, o
idioma para o qual ser feita a traduo, o texto original.
O mtodo doInBackground recebe esses parmetros e faz a instanciao
de um objeto da classe TranslationHelper e faz a chamada ao mtodo translate
passando os parmetros necessrios (conforme a Figura 3.12).
46

Figura 3.11 Mtodo Translate de TranslationHelper.


Fonte: O Autor.
O mtodo onPostExecute faz atribuies aos elementos da View como o
text view e type face e exibe o resultado da traduo na view ativa.

47

Figura 3.12 Mtodos doInBackground e onPostExecute da classe


TranslateAsyncTask.
Fonte: O Autor.

3.2.6 API de Realidade Aumentada


Existem diversos frameworks para a implementao da realidade
aumentada em dispositivos mveis, em computadores desktop e para Internet. No
contexto de dispositivos mveis esto disponveis servios on-line para a
implementao da realidade aumentada, como o Layar (Lightweight AR) [LAYAR.
2011].

48

O Layar um navegador (browser) para realidade aumentada com


interatividade com milhes de objetos aumentados (layers) cadastrados em seu
banco de dados. uma plataforma que auxilia e acelera o desenvolvimento de
aplicaes em realidade aumentada, fornecendo toda a estrutura envolvida para sua
implementao como chamadas a cmera do dispositivo, busca dos metadados e
visualizao dos resultados, bastando apenas ao usurio decidir o que e como
compartilhar utilizado no aumento. Porm, a utilizao da realidade aumentada no
aplicativo deste projeto tem um propsito diferente.
A implementao da realidade aumentada neste projeto, consiste de duas
partes: os dados em tempo real (pr-visualizao da cmera) que so aumentados e
os metadados (resultado da traduo) que so utilizados no processo de aumento
da realidade. Essas duas partes so combinadas gerando a realidade aumentada. O
que diferencia a abordagem utilizada no Layar e a deste projeto, que no Layar os
metadados so previamente armazenados no banco de dados, enquanto que neste
projeto, os metadados so requisitados para e computados pelo servidor em tempo
real, sem qualquer armazenamento. Devido a isso, a implementao da realidade
aumentada ser realizada de forma diferente.
A exibio em tempo real da cmera do dispositivo corresponde a
realidade em realidade aumentada. Os dados da cmera esto disponveis
utilizando

as

funes

da

API

da

cmera

do

Android

no

pacote

android.hardware.Camera. Alm disso, como a aplicao faz utilizao dos dados


dos quadros da previsualizao da cmera, as chamadas so feitas funo
setPreviewCallback do objeto Camera.PreviewCallback que possibilita ao aplicativo
a obteno da pr-visualizao na forma de imagens quadro a quadro, ao invs da
funo setPreviewDisplay, que faz apenas exibio da pr-visualizao.
Enquanto que para algumas aplicaes a localizao (GPS) e a posio
(sensores de orientao como accelerometer, vetor de rotao) do dispositivo so
importantes para a computao, neste projeto esses fatores no fazem diferena e
no alteram a computao do resultado final. Sendo assim, o uso de API dos
sensores e de localizao tornam-se dispensveis.
O correspondente aos metadados, que so objetos utilizados no processo
de aumento, so os resultados de traduo dos parmetros de entrada. Como a
idia de realidade aumentada a renderizao de objetos sobre a pr-visualizao
da cmera em tempo real, que compreende desde simples desenhos e quadros de
49

informaes objetos tridimensionais (todos presentes em bibliotecas do Android


como android.graphics e android.opengl), o simples fato de inserir um quadro com o
resultado da traduo, completa o paradigma de realidade aumentada que feita
pela funo doInBackground e exibida pela funo onPostExecute da classe
TranslateAsyncTask.

3.2.7 Classes Acessrias


Algumas classes no pertencem a nenhuma API, mas so utilizadas por
algumas classes para oferecer suporte a algumas operaes, estas so as classes
acessrias.
A classe BeepManager um gerenciador de sons e vibraes do
aplicativo. Cada vez que um som deve ser emitido como um sinal de alerta ou erro
uma chamada aos mtodos desta classe realiza. Esta classe contm um atributo
do tipo android.Media.MediaPlayer, sendo criado pelo mtodo buildMediaPlayer e
que ser responsvel pela reproduo dos sons. Para a reproduo do efeito de
vibrao, feita apenas uma reproduo com o volume no modo de vibrao.
A

classe

FinishListener

implementa

as

interfaces

DialogInterface.OnClickListener e DialogInterface.OnCancelListener e Runnable.


Esta classe apenas um simples listener utilizado para finalizar o aplicativo em
alguns casos.
O propsito da classe abstrata LuminanceSource padronizar diferentes
implementaes de bitmaps entre as plataformas em uma interface padro para
valores de luminncia em escalas de cinza. Ela apenas fornece mtodos imutveis
de recorte e criao de cpias. Isso garante que os bitmaps no sofram
modificaes na fonte de iluminao original. Os valores de luminncia variam de 0
(preto) a 255 (branco) [BLACKBERRY, 2011].
A classe PlanarYUVLuminanceSource implementa a iluminao do
tipoYUV da classe abstrata LuminanceSource. O padro YUV anteriormente
batizado como YCrCB um modelo de representao de cor que possui dados de
luminncia (luminosidade), o padro Y, e crominncia (cor), os padres U e V. Foi
criado originalmente para que informaes em cores possam ser afixadas em
padres de escalas de cinza [PCMAG, 2011]. As relaes entre esse padro e o
padro RGB que vinculam Y a R, G e B, U a R e luminncia e V a B e luminncia,
so:
50

Y = 0.299R + 0.587G + 0.114B

U = -0.147R - 0.289G + 0.436B = 0.492(B - Y)

V = 0.615R - 0.515G - 0.100B = 0.877(R - Y)

Esta classe utilizada pela biblioteca de leitor de cdigo de barras da API


BlackBerry 7.0.0. As preferncias do aplicativo so definidas pela atividade
PreferencesActivity.

Ao ser criada, as preferncias so carregadas. Ao serem

alteradas pelo usurios, elas so retidas para que quando invocados os mtodos
onPause e onResume, estas possam ser recuperadas. As preferncias ficam
armazenadas no dispositivo de armazenamento externo.

51

TESTE DO PROTTIPO E RESULTADOS


Este captulo descreve o teste realizado no prottipo e os resultados

obtidos.

4.1 Ambiente de teste


A estrutura fsica consiste de um tablet Samsung Galaxy TAB P1000,
provido de cmera principal 3.0 Mega Pixel e com suporte a touchscreen. A conexo
com a Internet disponibilizada pela rede sem fio local ou pela conexo banda larga
3G Tim do chip do tablet. O dispositivo de armazenamento externo consiste de um
carto micro SD de 2 Gibabytes de armazenamento.A estrutura lgica definida
pelo sistema operacional Android verso 2.2 conhecido tambm por FroYo (Frozen
Yogourt, verso de maio de 2010).
Os testes foram realizados com a utilizao de textos de origem variada
tais como artigos de revistas (Figura 4.1) e jornais impressos, textos gerados e
exibidos em telas LCD (Figura 4.2) e textos manuscritos e vdeos. Os textos foram
selecionados de diferentes tipos de mdia, pois possuem diferentes tipos de
resoluo, granularidade, definio, luminosidade, entre outras caractersticas. O
propsito do teste em diferentes tipos de mdia tambm deve-se ao fato de poder
verificar a performance do sistema OCR, uma das limitaes deste trabalho.
Foram comparados o nmero de tentativas necessrias at a completude
do reconhecimento e se esta encontra-se na forma correta, ou seja, nmero de
tentativas e nmero de erros encontrados antes de se alcanar xito no
reconhecimento.

4.2 Descrio do teste


Para o teste foram selecionados vrios tipos de mdias. Os textos variam
o tipo de mdia e o tipo da letra (como caligrafia, cor e tipo da fonte). A mdia de onde
so retirados importante, pois esta influencia em atributos variveis como
luminncia, contraste e saturao de cor.

52

Figura 4.1. Texto retirado de revistas.


Fonte: Isto, 2011.

Figura 4.2. Texto em Telas LCD.


Fonte: Esportes Terra, 2012.
Como citado anteriormente, o emulador do Android no prov uma
emulao da cmera por meio de uma webcam. Por isso, primeiramente
necessrio executar a classe WebcamBroadcaster, que recupera as imagens
sequenciais providas por uma webcam e transmite esses quadros por uma conexo.
A classe webcambroadcaster utiliza bibliotecas do framework JMF (Java Media
Framework). Esse framework pode ser obtido no site da Oracle [ORACLE, 2012]
(Figura 4.3).

53

Figura 4.3 Site do JMF da Oracle.


Fonte: Oracle, 2012.
Aps baixar o instalador do JMF, basta instal-lo e reiniciar o computador.
Ao executar o webcambroadcaster, uma tela para configurao da entrada de udio
e vdeo aparecer. Nessa tela selecione o JMStudio (Figura 4.4) e caso a webcam
ainda no esteja configurada poder ser feita no JMStudio.
Com a webcam configurada, necessrio decidir se o aplicativo ser
executado no emulador ou num dispositivo mvel. Caso o aplicativo seja executado
em um dispositivo mvel, basta export-lo como um aplicativo no menu Android
Tools. Caso o aplicativo seja executado no emulador, necessrio adicionar a
classe SocketCamera ao projeto do ARTranslator. Com a classe adicionada,
preciso configurar o IP da webcam (Figura 4.5) indicado pelo JMStudio. Para isso,
basta atribuir o nmero do IP para o atributo address.

54

Figura 4.4 Execuo da classe WebCamBroadcaster.


Fonte: O Autor.

Figura 4.5 Atribuio do IP na Classe SocketCamera.


Fonte: O Autor.
55

Aps a configurao da webcam, executar o projeto ARTranslator como


uma aplicao Android. O eclipse ir compilar o projeto e abrir o emulador indicado
por padro no SDK Manager automaticamente (Figura 4.6). Dependendo do
computador este processo poder demorar alguns minutos.

Figura 4.6 Tela do emulador sendo carregado.


Fonte: O Autor.
Ao executar o ARTranslator, pode-se configurar o idioma de entrada e o
idioma de traduo, escolhendo a opo settings (Figura 4.7). Na tela de
configuraes, basta escolher as opes recognize (para o idioma de entrada) e
translate to (para o idioma de traduo) (Figura 4.8) e o idioma para cada opo
como indicado na Figura 4.9.

Figura 4.7 Menu de Opes.


Fonte: O Autor.
56

Figura 4.8 Tela de opes.


Fonte: O Autor.

Figura 4.9 Tela de opes de idiomas.


Fonte: O Autor.
Caso o idioma selecionado para reconhecimento de caracteres ainda no
foi utilizado, o prottipo no encontrar o arquivo de treinamento referente. Neste
caso, o prottipo procura no repositrio de idiomas do Tesseract o arquivo e o instala,
como mostra a Figura 4.10.

57

Figura 4.10 Transferncia e instalao do arquivo do idioma.


Fonte: O Autor.
Com os idiomas de entrada e traduo selecionados, basta focar na tela
principal o texto a ser traduzido. Ajuste o retngulo delimitador de acordo com o
tamanho do texto. Com o texto focado e envolto pelo retngulo, para iniciar o
processo de reconhecimento de caracteres, basta clicar no cone de captura (Figura
4.11).

Figura 4.11 Texto envolto pelo retngulo delimitador.


Fonte: O Autor.
Ao pressionar o boto de captura, o processo de reconhecimento de
caracteres se inicia automaticamente. Neste processo podem ocorrer trs casos:
1. Sucesso no reconhecimento de caracteres, mas o texto no
reconhecido corretamente (Figura 4.12);
58

2. Sucesso no reconhecimento de caracteres e o texto reconhecido


(Figura 4.13);
3. *Falha no reconhecimento de caracteres (Figura 4.14).

Figura 4.12 Erro no reconhecimento do texto.


Fonte: O Autor.

Figura 4.13 Sucesso no reconhecimento de caracteres e no texto reconhecido.


Fonte: O Autor.

59

Figura 4.14 Falha no reconhecimento de caracteres.


Fonte: O Autor.
Esses erros no reconhecimento de caracteres so comuns no sistema
OCR. Este sistema nunca obteve uma taxa de reconhecimento que seja 100%
perfeito [AIM, 2000]. Com o conhecimento desta limitao, um requisito importante
o rpido processamento e correo precisa da entrada. Porm para que
qu se obtenha
bons resultados, outros fatores devem ser considerados alm do sistema OCR. A
estes fatores a serem considerados somam-se,
somam se, variveis como a qualidade dos itens
a serem processados e a preciso da captura de imagens do hardware.
Quanto a qualidade
quali
da entrada, a European Computers Manufacturers
Association (ECMA) criou especificaes para um padro de qualidade para o
documento impresso. Propriedades ticas como, reflexo, quantidade de opacidade e
rudos, espessura, rigidez, superfcie e outras caractersticas para manipulao
manual, processamento, impresso e codificao, esto documentadas em ECMAECMA
15 [ECMA, 1977]. A ltima reviso do documento, contm especificaes
recomendadas para o uso de documentos paginados ou para um documento de
linha nica.
O cumprimento destas especificaes ou de parte delas, garantem um
documento de melhor qualidade para o tratamento pelo OCR e uma conseqente
melhora no reconhecimento de caracteres [ECMA, 1977].
Outro tpico a ser discutido refere-se
refere
quanto a Realidade
dade Aumentada. A
idia original da implementao da realidade aumentada compreende a exibio do
resultado da traduo como parte integrante da pr-visualizao
pr visualizao da cmera. O
60

resultado seria apresentado como um metadado inserido na tela de contexto ao


mesmo tempo em que outros elementos da realidade fosse visualizado pelo usurio.
Porm, essa prtica foi descartada pois ocorreu um conflito ao realizar as operaes
atribudas ao plano de fundo (doInBackground) e exibio do resultado (execuo
ps processamento, onPostExecute). Para evitar esse conflito, duas threads foram
implementadas para serem executadas em contextos separados. A thread
assncrona de reconhecimento dos caracteres executada durante a chamada da
pr-visualizao da cmera, enquanto que a thread da traduo executada aps o
reconhecimento dos caracteres sendo exibida no contexto de traduo. Com isso,
como pode ser verificado nas Figura 4.13, a pr-visualizao da cmera exibida
enquanto sobreposta pela traduo do verbete.
Uma dificuldade no desenvolvimento do prottipo refere-se quanto a
traduo dos textos. Em dezembro de 2011, de acordo com Jeff Chin, a API do
Google Translate deixou de ser gratuita para fazer parte de uma srie de aplicativos
pagos do Google, conhecido como Google Apps for Business [CHIN, 2012].
Os testes realizados com o Google Translate (quando ainda encontravase disponvel gratuitamente) revelaram que as requisies de traduo enviadas ao
Google Translate obtiveram resposta em todos os casos (desde que uma conexo
com a internet era disponvel).
Os nmeros correspondentes aos testes realizados pelo prottipo,
correspondem s tentativas de reconhecimento dos textos. Nestes testes, foi
considerado que a traduo seria realizada em 100% dos casos, ao invs da
indisponibilidade da traduo (Translation Unavailable), como pode ser visto nas
Figuras 4.12 e 4.13.

4.3 Resultados
Durante o teste emprico nos diversos tipos de textos foram anotados o
nmero de tentativas realizadas at o reconhecimento com exatido. Os melhores
resultados foram apresentados em textos com luminosidade uniforme e com melhor
contraste entre o texto e o fundo. O resultado dos testes pode ser visualizado na
Tabela 4.1.

61

Tipo de Mdia

Nmero de
Tentativas

Nmero de
Acertos

Nmero de Erros

Jornais

20

17

Revistas

20

15

Textos em LCD

20

14

Textos em Papel

20

17

Textos em Papel
Escritos a Mo

20

13

Texto em Vdeos

20

12

Tabela 4.1 Resultados do teste emprico


Os resultados obtidos indicam que meios fsicos, impressos possuem
estatsticas melhores quanto ao reconhecimento dos caracteres. Porm, os nmeros
acima representam uma estatstica sobre uma pequena amostra de testes. Testes
feitos separadamente aos dos testes acima, demonstram pequenas divergncias
quanto aos nmeros acima, pois muitos so os fatores que influenciam, como, por
exemplo, o formato dos caracteres.
Quanto mais prximos os caracteres estiverem da grafia de forma, mais
precisas so as chances do reconhecimento dos caracteres. O sistema de OCR
apresentou dificuldades no reconhecimento de caracteres na forma cursiva. A
pequena diferena na crominncia entre os caracteres e o fundo, e o fato dos
caracteres estarem sobrepostos uns aos outros so fatores que dificultam o
reconhecimento.

62

5 CONSIDERAES FINAIS E TRABALHOS FUTUROS


Este trabalho buscou auxiliar a entrada de dados em tradutores por meio
do desenvolvimento de um prottipo para traduo instantnea. A soluo proposta
utilizou entrada de texto visual por meio de um dispositivo mvel provido de uma
cmera e suporte touchscreen. Para o desenvolvimento do prottipo, realizou-se um
estudo sobre Realidade Aumentada, sistema Android em dispositivos mveis,
reconhecimento de caracteres e traduo instantnea.
O trabalho busca contribuir para o desenvolvimento de aplicativos para a
plataforma Android, existentes para diversos outros dispositivos, utilizando muitas
das bibliotecas e aplicaes j existentes e servios web disponveis a fim de criar
aplicativos intuitivos e disponibiliz-los a comunidade.
A proposio do paradigma de viso computacional por meio do
reconhecimento tico de caracteres contribui para um dos objetivos especficos
deste trabalho, porque a barreira encontrada pelo usurio ao ter que se digitar um
texto que est alm do limite de sua compreenso eliminada, tornando o capaz da
traduo em muitos idiomas.
Uma breve descrio do ambiente de desenvolvimento, as bibliotecas
utilizadas, as classes desenvolvidas e alguns problemas encontrados durante o
desenvolvimento foram relatados. Durante a fase de testes do prottipo, alguns
problemas tambm foram constatados. Uma dificuldade na execuo desta pesquisa
refere-se a API do Google Translate. Esta abordagem no exigiu uma programao
maante, porm sua funcionalidade corresponde metade da funcionalidade de
todo o prottipo (reconhecimento/traduo), a traduo. Esta problemtica poder
ser abordada em um trabalho futuro.
Tendo como referncia alguns outros automatic translation helpers
presentes em outras plataformas, uma extenso interessante a ser implementada
a traduo pelo reconhecimento de voz. Por meio de APIs de reconhecimento de
voz, como o disponvel para a plataforma Android, possvel capturar palavras e
sentenas ditas por um ser humano ou simulado por computador, enviar os dados
para processamento do tradutor e retornar ao usurio um streaming de voz com a
traduo no idioma desejado.

63

A API de traduo seria a mesma j utilizada por este aplicativo. Porm,


para este paradigma imprescindvel que o usurio indique corretamente tanto o
idioma original quanto o idioma de sada, para que a sada da traduo por voz seja
corretamente pronunciada. Caso contrrio, a sada ouvida pelo usurio pode ser
confusa e at, em alguns casos, indistinguvel.
Um estudo baseado na experimentao, interpretao, e avaliao de
resultados quanto ao tempo de resposta deste prottipo pode ser considerado
relevante para um trabalho futuro, visto que no presente trabalho no foram
levantados tpicos para instrumentao, treinamento, participantes, hipteses,
variveis e nem utilizada alguma tcnica estatstica. O trabalho englobaria todo o
escopo de uma experimentao, desde o planejamento e execuo at a anlise e
interpretao dos resultados obtidos.
Outra extenso interessante a ser desenvolvida a disponibilidade offline.
Enquanto que para a traduo verbete por verbete a implementao de um banco
de dados de palavras uma soluo simples, o mesmo no pode ser dito para a
traduo dependendo do contexto.

64

REFERNCIAS
AIM Global Inc. Optical Character Recognition (OCR). Pittsburgh, PA, USA, 2000.
10 p.
ANDROID CENTRAL. Teclado QWERTY. Disponvel em: <
http://cdn.androidcentral.com/sites/androidcentral.com/files/articleimage/2437/2010/1
1/km-3.jpg >. Acesso em: 15 jan. 2012.
ANDROID DEVELOPER. What is Android? Disponvel em:
<http://developer.android.com/guide/basics/what-is-android.html>. Acesso em: 15 de
mar. 2011.
APPLE STORE. Apple Web Apps iTranslate. Disponvel em:
<http://www.apple.com/webapps/productivity/itranslate.html>. Acesso em: 20 mar.
2011.
BIER, E., STONE, M., FISHKIN, BUXTON, W., BAUDEL, T. (1994). A taxonomy of
see-through tools. Proceedings of the SIGCHI Conference on Human Factors in
Computing Systems: Celebrating interdependence, pp. 358-364, 0897916506,
Boston, April 1994, ACM, New York.
BIER, E., STONE, M., PIER, K., BUXTON, W., DEROSE, T. (1993). Toolglass and
magic lenses: the see-through interface, Proceedings of the 20th Annual
Conference on Computer Graphics and interactive Techniques SIGGRAPH '93,
0897916018, pp. 73-80, ACM, New York.
BLACKBERRY REFERENCE. Planar YUV Luminance Source Blackberry JDE
7.1.0 API Reference. Disponvel em:
<http://www.blackberry.com/developers/docs/7.1.0api/net/rim/device/api/barcodelib/P
lanarYUVLuminanceSource.html>. Acesso em: 15 nov. 2011.
BONNINGTON, Christina. Android crushed the smartphone competition last
quarter. Disponvel em: <http://edition.cnn.com/2011/11/16/tech/mobile/androidcompetition-gartner/index.html>. Acesso em: 16 nov. 2011.
CHIN, Jeff. Paid version of Google Translate API now open for business.
Disponvel em: <http://googlecode.blogspot.com/2011/08/paid-version-of-googletranslate-api.html>. Acesso em: 25 jan. 2012.
CVISION TECHNOLOGIES INC. Applications of OCR. Disponvel em:
<http://www.cvisiontech.com>. Acesso em: 28 set. 2011.
EUROPEAN COMPUTER MANUFACTURERS ASSOCIATION. Recommended
OCR Paper Specifications. 2. ed. Geneva - Switzerland, 1977. 24 p.
FRAGOSO, Victor; GAUGLITZ, Steffen; KLEBAN, Jim. TranslatAR: A Mobile
Augmented Reality Translator on the Nokia N900. California, Santa Barbara, Eua:
Ucsb, 2010. 7 p.
65

FRANKLIN ELECTRONICS PUBLISHERS. Global Translator in Travel


Accessories. Disponvel em: <http://www.franklin.com/estore/product/TGA-470/>.
Acesso em: 20 mar. 2011.
GIBARA, Tom. Webcam Broadcaster. Disponvel em:
<http://www.tomgibara.com/android/>. Acesso em: 10 jul. 2011.
GOOGLE CODE. Leptonica - An open source C library for efficient image
processing and image analysis operations. Disponvel em:
<http://code.google.com/p/leptonica/>. Acesso em: 06 out. 2011.
GOOGLE INC. Google Translate. Disponvel em:
<http://www.google.co.uk/help/faq_translation.html>. Acesso em: 20 mai. 2011.
IBM Research. IBM Research Case Studies. Disponvel em: <
http://domino.watson.ibm.com/odis/odis.nsf/pages/case.32.html>. Acesso em: 05 abr.
2011.
ISTO - POR QUE ELES (E OUTROS CRAQUES) ESTO NO BRASIL. So Paulo
- Sp: Editora3, v. 2177, 29 jul. 11. Semanal.
JIBBIGO. Jibbigo Mobile Voice Translation Apps. Disponvel em:
http://www.jibbigo.com/website/. Acesso em: 14 out. 2011.
KIRNER, C. ; TORI, R. . Fundamentos de Realidade Aumentada. Em:
Fundamentos e Tecnologia de Realidade Virtual e Aumentada. 1 ed. Porto Alegre:
Sociedade Brasileira de Computao - SBC, 2006, v. 1, p. 23-37.
KIRNER, Claudio; SISCOUTTO, Robson. Realidade Virtual e Aumentada:
Conceitos, Projeto e Aplicaes. Petrpolis, Rj: Sbc, 2007.
LAYAR AR Browser. Layar Augmented Reality Browser. Disponvel em:
<http://www.layar.com>. Acesso em: 28 ago. 2011.
LIAO, Ping-sung; CHEN, Tse-sheng; CHUNG, Pau-choo. A Fast Algorithm for
Multilevel Thresholding. Journal Of Information Science And Engineering, Taiwan,
p. 713-727. 30 dez. 1999.
MASON, Paul. Suddenly the way to Web 3.0 seems clear. Disponvel em:
<http://www.bbc.co.uk/blogs/newsnight/paulmason/2010/09/suddenly_the_way_to_w
eb_30_see.html>. Acesso em: 24 jan. 2012.
MORI, Shunji; SUEN, Ching Y.; YAMAMOTO, Kazuhiko. Historical Review of OCR
Research and Development. Proceedings Of The Ieee,Yokohama, Japan, p. 10291058. 06 ago. 2002.
NIJHOLT, Anton; TRAUM David. The virtuality Continuum revisited, presented at
CHI 2005 Workshop on the virtuality continuum revisited. Abril, 2005.
ORACLE Sun Developer Network. Oracle Sun Developer Network JNI
Tecnology. Disponvel em: <
66

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jni.html>.
Acesso em: 07 ago. 2011.
ORACLE. Java Media Framework. Disponvel em:
<http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html>.
Acesso em: 09 fev. 2012.
PCMAG. PCMAG Encyclopedia Definition of YUV. Disponvel em:
<http://www.pcmag.com/encyclopedia_term/0,2542,t=YUV&i=55165,00.asp>.
Acesso em: 17 out. 2011.
RAIS, Naveed Bin; HANIF, M. Shehzad; TAJ, Imtiaz A.. Adaptive Thresholding
Technique for Document Image Analysis. Inria - Fr: Ieee, 2010. 6 p.
SCHWEGLER, Armin. Language and Globalization. Disponvel em:
<http://www.google.com.br/url?sa=t&rct=j&q=armin%20schwegler%20globalization&
source=web&cd=1&ved=0CCUQFjAA&url=http%3A%2F%2Fwww.globalization101.o
rg/uploads/File/Syllabus-Lang-Globalization.pdf>. Acesso em: 15 jan. 2012.
SONICMOBILE. iTranslate for iPhone. Disponvel em:
http://www.sonicomobile.com/itranslate-iphone/. Acesso em: 14 out. 2011.
SYSTRAN. SYSTRAN - Online translation, translation software and
tools. Disponvel em: <http://www.systransoft.com/>. Acesso em: 25 abr. 2011.
TANG, Son-lik; KWOH, Chee-keong; TEO, Ming-yeong. Augmented reality
systems for medical applications. 17. ed. Nanyang Technology University Singapore: Engineering In Medicine And Biology Magazine, Ieee, 1998. 49-58 p.
TCWORLD. Comparison of online machine translation tools. Disponvel em:
<http://www.tcworld.info/tcworld/translation-and-localization/article/comparison-ofonline-machine-translation-tools/>. Acesso em: 25 abr. 2011.
TERRA NETWORKS BRASIL S.A. (Brasil). Esportes Terra. Disponvel em:
<http://esportes.terra.com.br/>. Acesso em: 02 fev. 2012.
TESSERACT, Ocr. Tesseract OCR - An OCR Engine that was developed at HP
Labs between 1985 and 1995... and now at Google. Disponvel em:
<http://tesseract-ocr.googlecode.com/files/>. Acesso em: 02 fev. 2012.
THOMAS, Bruce H.; SANDOR, Christian. What Wearable Augmented Reality Can
Do For You. Passau, Lower Bavaria, Germany: Ieee Cs, 2009. 8 p.
TOM POWERS. Unofficial Leptonica v1.68 Documentation. Disponvel em:
http://tpgit.github.com/UnOfficialLeptDocs/>. Acesso em: 14 out. 2011.
W3. ISO 639 Language Codes. Disponvel em:
<http://www.w3.org/WAI/ER/IG/ert/iso639.htm>. Acesso em: 01 out. 2011.
ZORZAL, Ezequiel R.. Realidade Aumentada. Disponvel em:
<http://realidadeaumentada.com.br>. Acesso em: 24 jan. 2012.
67

Você também pode gostar