UNIVERSIDADE ESTADUAL DE MARINGÁ CENTRO DE TECNOLOGIA - DEPARTAMENTO DE INFORMATICA - DIN ESPECIALIZAÇÃO EM DESENVOLVIMENTO DE SISTEMAS PARA WEB



Documentos relacionados
Introdução a Computação Móvel

O que é o Android? O que é o Android

Desenvolvendo Websites com PHP

Dispositivos móveis e o mercado Android Open Handset Alliance Informações sobre Android Arquitetura

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Sistemas Operacionais

Desenvolvimento de um aplicativo básico usando o Google Android

A plataforma Android: Uma Introdução

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

Um Driver NDIS Para Interceptação de Datagramas IP

Visão geral Estrutura do sistema Ferramentas de desenvolvimento Uma aplicação. Android. Universidade Federal de Santa Catarina. 17 de dezembro de 2008

Aplicação Prática de Lua para Web

Manual do Usuário Android Neocontrol

Introdução à Computação

Informática. Informática. Valdir

UM FRAMEWORK PARA DESENVOLVIMENTO DE

5 Mecanismo de seleção de componentes

Acadêmico: Maicon Machado Orientador: José Carlos Toniazzo

CONSTRUÇÃO DE BLOG COM O BLOGGER

4 Estrutura do Sistema Operacional Kernel

HCT Compatibilidade Manual do Usuário

IW10. Rev.: 02. Especificações Técnicas

Sistemas Operacionais

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Figura 01 Kernel de um Sistema Operacional

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

2 Geração Dinâmica de Conteúdo e Templates de Composição

PROJETO INFORMÁTICA NA ESCOLA

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

BlackBerry Mobile Voice System

EQUIPE: ANA IZABEL DAYSE FRANÇA JENNIFER MARTINS MARIA VÂNIA RENATA FREIRE SAMARA ARAÚJO

Pré-Projeto do Trabalho de Conclusão de Curso Tiago Garcia Pereira 1. INTRODUÇÃO

Informática Básica. Microsoft Word XP, 2003 e 2007

Processos Técnicos - Aulas 4 e 5

Como configurar s nos celulares. Ebook. Como configurar s no seu celular. W3alpha - Desenvolvimento e hospedagem na internet

MANUAL DE UTILIZAÇÃO. Instalação do MV Portaria

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Aula 1 Introdução, e conhecendo a Área de Trabalho

1.1. Organização de um Sistema Computacional

OneDrive: saiba como usar a nuvem da Microsoft

Manual do Aplicativo - Rastreamento Veicular

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

Como se tornar um desenvolvedor de plug-ins para AutoCAD e Revit

Tecnologia e Informática

Guia. PDA e SmartPhones. Windows Mobile, Pocket PC e CE.

15 Computador, projeto e manufatura

ANIMAÇÕES WEB AULA 2. conhecendo a interface do Adobe Flash. professor Luciano Roberto Rocha.

Existem 109 questões nesta pesquisa

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Noções de. Microsoft SQL Server. Microsoft SQL Server

Especificação Suplementar

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador.

O PaperPort 12 Special Edition (SE) possui uma grande variedade de novos e valiosos recursos que ajudam a gerenciar seus documentos.

Guia do usuário do PrintMe Mobile 3.0

Capítulo 2 Introdução à ferramenta Flash

Tecnologia PCI express. Introdução. Tecnologia PCI Express

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Google Drive: Acesse e organize seus arquivos

TRBOnet MDC Console. Manual de Operação

ESTUDO DE CASO WINDOWS VISTA

Sumário 1. SOBRE O NFGoiana DESKTOP Apresentação Informações do sistema Acessando o NFGoiana Desktop

Manual de instalação e configuração da Ferramenta Android SDK

BlackBerry Mobile Voice System

Operador de Computador. Informática Básica

INTERNET HOST CONNECTOR

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Administração de Sistemas de Informação Gerenciais

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

PROPOSTA DE UM MODELO DE SISTEMA HIPERMÍDIA PARA APRESENTAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

APLICATIVO MOBILE CATÁLOGO DE PÁSSAROS - PLATAFORMA ANDROID/MYSQL/WEBSERVICE

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Manual do usuário. Mobile Auto Download

Integração de sistemas utilizando Web Services do tipo REST

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Funcionalidades do Sistema de Negociação de Créditos de Carbono. Anexo VIII

LILDBI-Web. Objetivo: Aplicar as funcionalidades do LILDBI-Web para alimentação de bases de dados bibliográficas. Conteúdos desta aula

Inicialização Rápida do Novell Vibe Mobile

Programação para Dispositivos Móveis

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

DocuWare Mobile ProductInfo. Gerenciamento móvel de documentos. Benefícios

Planejando o aplicativo

Feature-Driven Development

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Passo 3: Posicionando a Câmera na Prova Didática Teórica ou na Prova de Defesa da Produção Intelectual

REALIDADE AUMENTADA APLICADA NA EDUCAÇÃO: ESTUDOS DOS SEUS BENEFÍCIOS

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Transcrição:

UNIVERSIDADE ESTADUAL DE MARINGÁ CENTRO DE TECNOLOGIA - DEPARTAMENTO DE INFORMATICA - DIN ESPECIALIZAÇÃO EM DESENVOLVIMENTO DE SISTEMAS PARA WEB ARTRANSLATOR: PROTÓTIPO DE UM TRADUTOR BASEADO EM TÉCNICAS DE RECONHECIMENTO ÓTICO E REALIDADE AUMENTADA PARA DISPOSITIVOS MÓVEIS OSVALDO MASSAKAZU KOHATSU MARINGÁ 2012

OSVALDO MASSAKAZU KOHATSU ARTRANSLATOR: PROTÓTIPO DE UM TRADUTOR BASEADO EM TÉCNICAS DE RECONHECIMENTO ÓTICO E REALIDADE AUMENTADA PARA DISPOSITIVOS MÓVEIS Monografia apresentada à Universidade Estadual de Maringá como requisito parcial à obtenção do título de especialização 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 ESPECIALIZAÇÃO EM DESENVOLVIMENTO DE SISTEMAS PARA WEB OSVALDO MASSAKAZU KOHATSU ARTRANSLATOR: PROTÓTIPO DE UM TRADUTOR BASEADO EM TÉCNICAS DE RECONHECIMENTO ÓTICO E REALIDADE AUMENTADA PARA DISPOSITIVOS MÓVEIS Monografia aprovada em / / para obtenção do título 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

DEDICATÓRIA Dedico esta monografia aos meus pais que me deram muito apoio e carinho nos momentos mais difíceis da minha vida e contribuíram durante todo meu crescimento e também nessa nova etapa de minha vida. A minha namorada pela mais pura forma e incondicional de amor, companheirismo, incentivo, paciência e ajuda sem medir esforços sempre presentes em minha vida, a minha orientadora que colaborou com presteza para o desenvolvimento e concretização deste trabalho.

AGRADECIMENTOS Agradeço a Deus, pela vida, paz e tranqüilidade em todos os momentos de minha vida. A todas as pessoas do meu convívio que acreditaram e contribuíram direta e indiretamente para a conclusão deste trabalho. A todos os professores da especialização por compartilharem seus conhecimentos. A todos os amigos que conheci durante o curso e pelos momentos de amizade e convivência.

PENSAMENTO A vida é uma peça de teatro que não permite ensaios. Por isso, cante, chore, dance, ria e viva intensamente, antes que a cortina se feche e a peça termine sem aplausos. Charles Chaplin

RESUMO Em uma era dirigida pela informação e o advento de dispositivos móveis mais robustos, ter a informação aliada à mobilidade trilha caminhos à comodidade. Neste cenário, em um mundo globalizado onde a comunicação entre pessoas de diferentes países e línguas tem se tornado cada vez mais comum, é necessário o conhecimento em idiomas que são mais utilizados ou que fazem parte do cotidiano profissional. O conhecimento de um idioma demanda tempo. Este trabalho apresenta um protótipo de um tradutor de textos baseado em técnicas de reconhecimento de caracteres para entrada de dados, tradução automática por meio de webservices para processamento e realidade aumentada para visualização dos resultados. O reconhecimento de caracteres responde satisfatoriamente no quesito de entrada de dados enquanto que a tradução instantânea foi inviabilizada devido a uma alteração na disponibilidade do webservice de tradução.

SUMÁRIO 1. INTRODUÇÃO... 1 1.1. O problema de pesquisa... 1 1.2. Objetivos... 3 1.3. Justificativa e Motivação... 3 1.4. Procedimentos metodológicos... 4 1.4.1. Materiais e métodos... 5 1.5. Limitações da pesquisa... 5 1.6. Organização do documento... 6 2. REVISÃO TEÓRICA... 8 2.1. Sistema operacional Android... 8 2.1.1. Sistema de runtime... 9 2.1.2. Bibliotecas... 10 2.1.3. Framework de aplicação... 11 2.2. OCR (Reconhecimento Ótico de Caracteres)... 14 2.3. Realidade aumentada... 17 2.3.1. Aplicativos de tradução... 18 2.4. Trabalhos correlatos... 21 3. ARTRANSLATOR: TRADUÇÃO INSTANTÂNEA PARA DISPOSITIVOS PORTÁTEIS... 24 3.1. Ambiente de desenvolvimento... 24 3.2. Modelo do protótipo... 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 tradução... 45 3.2.6. API de realidade aumentada... 48 3.2.7. Classes acessórias... 50 4. TESTE DO PROTÓTIPO E RESULTADOS... 52 4.1. Ambiente de teste... 52 4.2. Descrição do Teste... 52 4.3. Resultados... 61 5. CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS... 63 REFERÊNCIAS BIBLIOGRÁFICAS... 65

LISTA DE FIGURAS Figura 1.1 Exemplos de símbolos em Idiomas não-latinos. Figura 1.2 Teclado QWERT. Figura 2.1 Arquitetura do Android. Figura 2.2 Emulador do Kit de Desenvolvimento Android. Figura 2.3 Emulação da Câmera do Emulador. Figura 2.4 Exemplo de aplicação do OCR. Figura 2.5 Definição 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 protótipo. Figura 3.2 Arquitetura da biblioteca Tesseract. Figura 3.3 Classe do reconhecimento de caracteres TessBaseAPI. Figura 3.4 Classe CameraManager. Figura 3.5 Função AdjustFramingRect da classe CameraManager. Figura 3.6 Atributos da classe CaptureActivity. Figura 3.7 Principais funções da classe CaptureActivity. Figura 3.8 Classe OcrInitAsyncTask e as funções para transferência dos arquivos de idiomas. Figura 3.9 Classe OCRRecognizeAsyncTask. Figura 3.10 Método runhttprequest de TranslationHelper. Figura 3.11 Método Translate de TranslationHelper. Figura 3.12 Métodos 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 Execução da classe WebCamBroadcaster. Figura 4.5 Atribuição do IP na Classe SocketCamera. Figura 4.6 Tela do emulador sendo carregado. Figura 4.7 Menu de Opções. Figura 4.8 Tela de opções. Figura 4.9 Tela de opções de idiomas. Figura 4.10 Transferência e instalação do arquivo do idioma Figura 4.11 Texto envolto pelo retângulo 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 símbolos não latinos. Tabela 2.1 O Android em código fonte. Tabela 2.2 Trabalhos Correlatos. Tabela 4.1 Resultados do teste empírico.

1 INTRODUÇÃO 1.1 O problema de pesquisa A linguagem escrita é um importante meio de transmissão da informação inserido no cotidiano das pessoas. Contudo, quando a escrita se encontra em uma língua desconhecida pelo leitor da informação, ela não é compreendida. Para amenizar esse problema, soluções tecnológicas de tradução são propostas, desde dicionários eletrônicos a tradutores instantâneos. Nos primeiros dicionários eletrônicos, o texto não compreendido é manualmente inserido como entrada dos aplicativos. Esses buscam em um índice alfabético e apresentam ao usuário o resultado em forma de texto ou saída de voz. Um exemplo desse tipo de dicionário é o Franklin TGA-470 Global Translator [FRANKLIN ELETRONIC PUBLISHERS, 2011]. O desenvolvimento da Internet e redes sem fio promoveram a comunicação entre pessoas em qualquer hora e lugar. Com o surgimento de dispositivos móveis com maior capacidade de processamento, foram concebidos novos tradutores eletrônicos, como o itranslate [APPLE STORE, 2011] e o Jibbigo [JIBBIGO, 2011]. Esses dispositivos auxiliam a compreensão de textos, porém necessitam que o usuário forneça a entrada de dados por meio de digitação (no caso do Franklin TGA-470 1 ) ou pronúncia (no caso do Jibbigo). Dessa forma, tornase necessário que o usuário tenha conhecimento do idioma para pronunciar as palavras ou digitar os símbolos corretamente, o que nem sempre é uma tarefa simples. Essa dificuldade é comum em idiomas de origem oriental como o chinês, coreano, árabe entre outros que possuem escritas cujos símbolos são peculiares. Essa problemática é exemplificada no seguinte cenário. Um usuário, que conhece somente a língua portuguesa brasileira se encontra em um país de língua 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 cenário, os dois aplicativos citados provavelmente atenderão a necessidade de tradução do usuário. 1 O Franklin TGA-470 é um tradutor eletrônico portátil digital. 1

Suponha que o usuário seguiu sua viagem para um país de língua de origem latina ou neolatina, como o espanhol, francês entre outras. Também não haveria muita dificuldade com os verbetes água e eau ou pronunciar a ɣ wa e eau. Como no cenário anterior, os dois aplicativos citados provavelmente atenderiam a necessidade de tradução do usuário. Finalmente, o usuário segue sua viagem para um país no oriente. Nesse último cenário o usuário poderá se deparar com caracteres não-latinos, como os ilustrados na Figura 1.1 e Tabela 1.1. Neste momento surgem as dificuldades: como digitar tais símbolos no teclado QWERT (tipo de teclado cujas primeiras letras são o QWERT) de seu dispositivo, que não suporta esses caracteres (Figura 1.2)? Como pronunciá-los? Figura 1.1. Exemplos de símbolos em Idiomas não latinos. Fonte: O Autor. Idioma Nome Nativo Arabic العربية Armenian Bashkir Հայերեն башҡорт теле Kashmiri Kazakh كشميري क म र, қазақ тілі Marathi (Marāṭhī) मर ठ Tabela 1.1. Exemplos de verbetes em idiomas com símbolos não latinos. Fonte: Google Inc., 2011. 2

Figura 1.2. Teclado QWERT Fonte: Android Central 2012. Nesse contexto, este trabalho propõe auxiliar a entrada de dados em tradutores por meio do desenvolvimento de um protótipo para tradução instantânea. A solução proposta nesta pesquisa utiliza entrada de texto visual por meio de um dispositivo móvel provido de uma câmera e suporte touchscreen. Para tornar a solução viável, foi utilizado um sistema de reconhecimento ótico de caracteres para a transcrição do verbete em tipo de entrada legível para sistemas computacionais. 1.2 Objetivos Objetivo geral Este trabalho tem como objetivo geral contribuir com tradução instantânea de textos que contenham símbolos de difícil compreensão pelos usuários com a utilização de dispositivos móveis. Objetivos específicos Empregar técnicas de Realidade Aumentada (RA) para simplificar o processo de visualização de dados para tradução de textos; Permitir a tradução de textos entre diferentes idiomas com entrada de dados por reconhecimento ótico de caracteres (OCR). 1.3 Justificativa e motivação Com as vertentes do desenvolvimento mundial direcionadas para o processo de globalização da economia, é imprescindível o estudo ou o conhecimento de idiomas ou a competência para comunicar-se em uma língua diferente da língua mãe. De acordo com Armin Schwegler [SCHWEGLER,2012], quando economistas (e linguistas) escrevem sobre globalização e seus efeitos sobre 3

a sociedade moderna, classificam o idioma como sendo um bem econômico, ou seja, pessoas que se comunicam em outros idiomas diferente da língua-pátria são detentoras deste bem. Em adição conclui também que, no mundo globalizado as interconexões são realizadas por intermédio de grupos de pessoas multilíngüe. A globalização tornou essencial às pessoas se comunicarem umas com as outras para diferentes fins como realizar negócios, diálogo político, desenvolvimento de pesquisas, socialização, entretenimento, entre outros. Os idiomas favorecem o relacionamento interpessoal e servem para estabelecer elos. Entretanto, a diferença de idiomas ainda é um obstáculo na comunicação entre pessoas. Tradutores e dicionários eletrônicos são utilizados para atenuar as dificuldades de tradução e no aprendizado de novas línguas. Com o advento de dispositivos móveis mais modernos e capazes de realizar tarefas e aplicações mais complexas, além da capacidade de conexão com a Internet, a possibilidade de desenvolvimento de aplicativos mais práticos e eficientes tornou-se viável. Com isso, um dispositivo móvel como um celular pode ser provido de dicionários ou tradutores instantâneos para serem utilizados em qualquer hora e lugar. Grande parte dos dispositivos móveis 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 experiência de um desktop em qualquer lugar na palma da mão. Este cenário de desenvolvimento motivou o estudo e adoção de funcionalidades inovadoras (providas por áreas de pesquisa como a visão computacional, programação para dispositivos móveis, tradução instantânea online e realidade aumentada) para o desenvolvimento do protótipo proposto nesta pesquisa. 1.4 Procedimentos Metodológicos Quanto à natureza, esta pesquisa é classificada como aplicada. Para o desenvolvimento da pesquisa, inicialmente foi realizado uma revisão da literatura, buscando conhecer os principais conceitos, tecnologias e ferramentas existentes. O levantamento bibliográfico e estudo de conceitos sobre sistema de reconhecimento ótico de caracteres, ambiente de desenvolvimento Android, integração de serviços 4

Web e Realidade Aumentada permitiu a definição dos recursos tecnológicos adotados no desenvolvimento do protótipo. Foram utilizados como fontes de pesquisa artigos científicos, livros e relatórios técnicos, monografias, teses, fóruns entre outras fontes confiáveis sobre o tema da pesquisa. Com base na literatura, a seleção dos recursos utilizados no desenvolvimento do protótipo considerou a facilidade de integração, desempenho, usabilidade, manutenabilidade e portabilidade. Por ser um protótipo de tradução, é relevante considerar o desempenho, enquanto a portabilidade em questão trata-se dos componentes em si e não do produto final (protótipo). Na modelagem e desenvolvimento do protótipo priorizou-se a utilização de ferramentas e tecnologias de código aberto ou softwares livres, tais como a linguagem Java, serviços web, ambiente de desenvolvimento Eclipse, e plugins Android. Para a avaliação do protótipo, realizou-se testes controlados. 1.4.1 Materiais e Métodos Entre outros, os softwares utilizados no desenvolvimento do protótipo são: biblioteca de reconhecimento ótico de caracteres; Tesseract; serviço web de tradução; Google Translate; IDE Eclipse com plugins ADT (Android Development Tools); o kit de desenvolvimento Android; Android SDK. O hardware utilizado no desenvolvimento, testes e avaliação é 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 câmera e sistema touchscreen disponíveis ou um emulador. 1.5 Limitações da Pesquisa A presente pesquisa apresenta as seguintes limitações. A primeira referese ao fato do aplicativo não realizar o reconhecimento dos caracteres capturados pela câmera numa taxa de 100% de acurácia. Outra limitação 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 serviço de tradução e pela exibição da tradução para o usuário na tela do dispositivo. Como trabalho futuro se faz necessário um estudo para melhorar a acurácia e tempo de processamento do aplicativo proposto. 5

Uma limitação do protótipo, quanto a tradução de textos, atribui-se a quantidade de máxima de caracteres a serem traduzidos. Esta quantidade máxima limita-se a 4.500 caracteres. Caso o texto a ser traduzido ultrapasse este limite, o texto é truncado considerando-se sempre a posição do primeiro caracter como ponto de início para a contagem dos caracteres. Os testes finais do protótipo foram restritos em relação à etapa de tradução instantânea. Tal restrição se deve ao fato da versão do Google Translate API passar a ser paga durante a etapa de execução de testes finais no protótipo. Conforme Jeff Chin [CHIN, 2012], gerente de produtos da Google, a versão gratuita do Google Translate tornou-se obsoleta e removida desde o dia 01 de dezembro de 2011, dando lugar a versão paga com suporte a 50 idiomas. Atualmente a tradução do Google é oferecida aos usuários comuns somente pelo site do Google Translate e pela tradução de páginas da Internet, sendo o Web Service disponível apenas na versão paga. Como trabalho futuro, os testes poderão ser complementados com a aquisição da versão paga ou pela solicitação de uma versão disponibilizada pela Google para Universidades. 1.6 Organização do Documento O presente trabalho é organizado como segue. O capítulo 1 aborda questões relacionadas ao problema de pesquisa, justificativa, objetivos, metodologia, material e limitações da pesquisa. O capítulo 2 apresenta os principais conceitos das tecnologias adotadas para o desenvolvimento do protótipo, como o sistema operacional Android, o reconhecimento ótico de caracteres, a realidade aumentada e o sistema de tradução instantânea. São descritos alguns trabalhos correlatos e uma breve comparação entre eles e este trabalho. O capitulo 3 descreve o protótipo 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 código fonte das funções principais. Estão inclusas, a API da câmera, a API do reconhecimento ótico de caracteres e a API de tradução. Neste capítulo também apresenta-se uma arquitetura do protótipo e as ligações com web services. 6

O capítulo 4 aborda o teste do protótipo. São descritos o ambiente experimental, o tipo das entradas, os passos do teste, resultados obtidos e conclusões sobre os resultados obtidos. Finalmente, o capítulo 5 apresenta a conclusão deste trabalho, contribuições, trabalhos futuros e um retrospecto do trabalho. 7

2 REVISÃO TEÓRICA Este capítulo apresenta os principais temas estudados para o desenvolvimento do trabalho. São 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. Porém, a gerência do projeto e a engenharia de processos é de responsabilidade da Google [ANDROID DEVELOPER, 2011]. É um sistema operacional livre e de código aberto (sob licença Apache 2.0), executado sobre um kernel Linux (monolítico) versão 2.6 modificado para serviços essenciais como segurança, gerenciamento de memória, pilha de rede e modelo de drivers. O kernel do Linux também é responsável pela comunicação entre o hardware e o software, ou seja, ele funciona como uma camada de abstração entre hardware e software. Pra ser mais específico, o Android corresponde a uma pilha de softwares que inclui um sistema operacional, um middleware e as aplicações chave. O Android é basicamente estruturado em kernel linux, bibliotecas, sistema de Android, framework de aplicações e as aplicações propriamente ditas. A Figura 2.1 ilustra uma visão geral da arquitetura Android. A camada mais inferior é a correspondente à camada do kernel Linux. Nesta camada localizam-se os componentes que fazem a comunicação entre o hardware do dispositivo, como câmera, auto falantes, disco de armazenamento, etc, e o Android. Logo acima localizam-se as bibliotecas do sistema e a máquina virtual Dalvik que faz a execução dos aplicativos. O Application Framework é a camada que corresponde aos componentes que gerenciam e que são utilizados no desenvolvimento de novas aplicações. Por fim, a camada de aplicações localiza-se no topo da pilha de softwares, onde estão os aplicativos (programas) do dispositivo, tais como agenda telefônica, navegador, calculadora, entre outros. 8

Figura 2.1. Arquitetura do Android Fonte: Android Developer, 2011. 2.1.1 Sistema de Runtime Esta pilha de softwares consiste em aplicações Java sendo executadas, cada qual com sua instância e processo próprios, em um framework de aplicação baseado em orientação a objetos sobre bibliotecas nativas Java executadas em uma máquina virtual Dalvik com compilação JIT (Just-in-Time). Essa compilação JIT ou tradução dinâmica é essencial pois otimiza a performance de execução, ao passo que dispositivos móveis possuem uma arquitetura de hardware restrita. A máquina virtual Dalvik suporta a execução de múltiplas VMs eficientemente. É uma máquina baseada em registradores e executa classes compiladas por um compilador Java que converte o código fonte em um executável.dex através da ferramenta dx. O formato.dex, Dalvik Executable, é otimizado para um consumo mínimo de memória. A arquitetura do Android permite que os aplicativos sejam desenvolvidos na linguagem de programação Java. O aplicativo controla o dispositivo através de bibliotecas Java desenvolvidas pela Google. 9

2.1.2 Bibliotecas O Android possui um conjunto de bibliotecas C/C++ usado por vários componentes do sistema Android. Elas estão disponíveis aos desenvolvedores através do framework de aplicações Android. As bibliotecas escritas em C/C++ incluem: Surface Manager: gerencia o acesso ao subsistema de display e realiza a composição das camadas gráficas 2D e 3D de múltiplas aplicações; Framework de media OpenCore: bibliotecas que suportam a reprodução e gravação dos mais populares formatos de áudio e vídeo, assim como arquivos de imagens estáticas, 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 gráfica que prove aceleração 3D de hardware (quando disponível) ou um software rastreador 3D altamente otimizado; SGL: uma engine 2D gráfica subjacente; WebKit: engine de layout; SSL: Utilizado para armazenamento de keystores. Cada aplicação contém sua própria keystore onde são armazenados os certificados SSL, para verificação em webservices. FreeType: para renderização de fontes vetoriais e bitmaps. LibWebCore: uma engine que provê um navegador Android e embed. Biblioteca System C: uma implementação derivado do BSD da biblioteca system padrão do C (libc) adaptado para dispositivos com Linux; Além do C, o Android é escrito também em XML (12 milhões de linhas de código), Java (2,1 milhões de linhas de código), em C++ (1,75 milhão de linhas de código) e outras linguagens conforme ilustra a Tabela 2.1. 10

Tabela 2.1. O Android em código fonte. Fonte: Android Developer, 2011. 2.1.3 Framework de Aplicação A plataforma Android oferece aos desenvolvedores a construção de aplicações extremamente ricas e inovadoras, pois é permitido o acesso completo ao framework das APIs usadas nas principais aplicações. A arquitetura da aplicação é projetada para simplificar o reuso dos componentes. Qualquer aplicação pode prover suas funcionalidades e qualquer outra pode fazer o uso destas. O framework para o desenvolvimento de aplicações contém os seguintes serviços e componentes: 11

Um conjunto de Views rico e extensível que pode ser usado para construir uma aplicação, incluindo listas, grids, caixas de texto, botões e até um navegador web embutido; Servidores de conteúdo que provêem o acesso de aplicações a dados de outras aplicações (como lista de contatos), ou para compartilhar seus próprios dados; Gerenciador de recursos que provê o acesso a recursos não codificados como strings localizadas, gráficos e arquivos de layout; Um gerenciador de notificações que permite que todas as aplicações exibam mensagens de alerta ou erro na barra de status; Um gerenciador de atividades que gerencia o ciclo de vida de uma aplicação e provê uma navegação padrão. A Figura 2.2 apresenta a interface do emulador virtual de um dispositivo móvel, o AVD (Android Virtual Device), usado para a realização dos testes e execução do aplicativo proposto nesta pesquisa. Figura 2.2. Emulador do Kit de Desenvolvimento Android Fonte: O Autor. Uma limitação existente no emulador do Android é quanto o requisito câmera. O emulador do Android não prove a emulação de uma câmera, requisito necessário para este trabalho. O emulador faz apenas a indicação de que a câmera 12

será utilizada pelo aplicativo, mas uma vez executado o projeto, a câmera restringese a apenas a visualização de um fundo com quadriculado, conforme a Figura 2.3. Até o presente momento, a Google não forneceu indícios de estar trabalhando em alguma implementação ou pelo menos uma data de quando ela estará disponível nos emuladores. Figura 2.3. Emulação da Câmera do Emulador Fonte: O Autor. A solução adotada para a emulação de um dispositivo de câmera foi por meio da conexão de uma webcam e execução de applets em Java. O código fonte de domínio público para esta solução é apresentada em Gibara [GIBARA, 2011]. As classes consistem em: CameraSource: Uma interface que fornece ao usuário a possibilidade da escolha da fonte da câmera a ser utilizada no emulador; GenuineCamera: Implementação de CameraSource que utiliza o dispositivo câmera original do emulador (aquele que apresenta um fundo quadriculado); HttpCamera: Implementação que utiliza imagens obtidas através de um inputstream de uma conexão HTTP; SocketCamera: Implementação que obtêm imagens diretamente de uma conexão TCP/IP; BitmapCamera: Implementação que utiliza um bitmap como emulação de uma câmera; 13

WebcamBroadcaster: Um pequeno aplicativo Java que utiliza as bibliotecas JMF para a transmissão de uma seqüência de imagens através de uma rede. Com essas classes, a solução consiste em: executar o aplicativo WebcamBroadcaster para a transmissão do stream de vídeo, obtido de uma webcam instalada, através 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 transmissão e enviará para o emulador como se fosse a câmera do dispositivo. Outro problema constatado foi em relação ao código fonte do autor Tom Gibara. As classes publicadas [GIBARA, 2011] utilizam funções que já estão em desuso pelas novas implementações do SDK do Android. Como não serão utilizadas todas as classes, adaptações foram feitas apenas nas classes SocketCamera e WebcamBroadcaster. 2.2 OCR (Reconhecimento Ótico de Caracteres) OCR é acrônimo para Optical Character Recognition ou Reconhecimento Ótico de Caracteres [AIM, 2000]. É uma tecnologia que permite com que sistemas computacionais reconheçam caracteres por meio de um mecanismo ótico. O mecanismo ótico é uma interpretação de imagens e compreensão de sinais em forma textual. O reconhecimento ótico é feito pelo humano através dos olhos. Enquanto este reconhecimento é feito pelos olhos (entrada), a interpretação (processamento) varia de pessoa para pessoa de acordo com muitos fatores como qualidade da câmera do dispositivo, porcentagem de ruído das imagens, formato dos caracteres de entrada, entre outros. Três dos problemas enfrentados pelos desenvolvedores de sistemas OCR podem ser comparados com o mecanismo humano. Primeiro, o ser humano ao ler um texto que não esteja em sua língua nativa, pode até reconhecer alguns caracteres, porém não compreende o sentido das palavras e seus significados. Porém, caso o texto que se deseja ler seja composto por números, 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 numéricos e uma pequena variação de caracteres alfabéticos. 14

Segundo, as similaridades no formato entre alguns caracteres numéricos e alfabéticos também configura-se como um empecilho. Ao ser analisada uma string de letras e números, pode ocorrer uma pequena diferença visível entre, por exemplo, a letra maiúscula O e o numeral 0, a letra maiúscula S e o 5, a letra maiúscula I e o 1 entre outros. Para os humanos, entretanto, basta a compreensão do contexto para determinar o significado exato. Na computação, essa tarefa é mais complicada, pois não existe esta compreensão do contexto. O terceiro problema refere-se à questão do contraste entre a cor do texto e a cor de fundo e a sobreposição de letras ou imagens. A similaridade entre as cores de texto e de fundo e a sobreposição entre elas e a dificuldade de distinção e interpretação dos caracteres são 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 versões de OCR eram simples e requeriam calibragem do sistema. Esta calibragem constituia-se da prévia programação de imagens associadas a cada caracter e utilizando-se de apenas um tipo de fonte. Implementações atuais abordando OCR abrangem tanto caracteres do alfabeto latino quanto caracteres orientais como o chinês, japonês, etc. Algumas dessas implementações são de código fonte aberto, mas ainda encontram problemas na integração com os sistemas operacionais. A maioria pode ser executado em plataformas linux e windows, porém ainda não suportam o Android, exceto em código nativo. É necessário a implementação de uma interface para a integração de bibliotecas nativas da linguagem C que ainda não são suportadas pelo Android. O OCR é utilizado para a entrada automática 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 cartões de venda de crédito de petróleo [AIM, 2000]. Atualmente as aplicações com OCR englobam leitores de caixa registradora de fita e scanners de página. Uma aplicação inovadora são os scanners de Kurzweil que auxiliam indivíduos com deficiência visual. Estes dispositivos escaneiam textos que são processados pelo computador e convertidos para a linguagem falada. Atualmente a tecnologia OCR tem sido largamente utilizada em aplicações de visão computacional tais como: operações bancárias (digitalização e compensação de 15