CONVERSÃO DE IMAGENS DIGITAIS ATRAVÉS DE TÉCNICAS DE RECONHECIMENTO ÓPTICO DE CARACTER PARA PLATAFORMA ANDROID

Por Bruno Alves | 23/06/2011 | Tecnologia

[b]
1. CARACTERIZAÇÃO DO PROJETO
Neste projeto será implementado um aplicativo que fará uma análise em uma figura que contenha caracteres TrueType e após essa análise o aplicativo gerará um arquivo de texto simples contendo os caracteres exibidos na figura.
Diante dessa necessidade de se digitalizar essa informação off-line, pesquisadores vêm trabalhando em formas de interpretar esses dados e transformá-los em informação tratável. Um dos métodos utilizados é o chamado Reconhecimento Óptico de Caracteres (ou OCR - acrônimo de Optical Character Recognition) que é um campo de pesquisa em reconhecimento de padrões, inteligência artificial e visão computacional. O denominado Reconhecimento Óptico de Caracteres se resume em um método eletrônico de tradução de imagens textuais manuscritas, datilografadas ou impressas em um texto de máquina editável [BARRETO e SANTOS, 200?, p. 01].
O aplicativo será implementado para operar na Plataforma Android, que é uma plataforma open source baseada em Java com um sistema operacional em Linux que foi desenvolvida pela Google para o ramo de dispositivos móveis como tablets, celular, smartphone, e outros.
A figura 1 nos mostra um exemplo de imagem que poderá ser oriunda tanto de uma imagem tirada pelo próprio usuário através da câmera de um dispositivo móvel, quanto de um cartão de memória, ou ainda de um web site.


Figura 1.Exemplo de Imagem a ser analisada através de OCR
Fonte: Autor
1.1 Tema
Conversão de Imagens Digitais através de Técnicas de Reconhecimento Óptico de Caracter para a Plataforma Android.
1.2 Delimitação do Tema
Análise e conversão de Imagens digitais de fontes gráficas true type através de técnicas de reconhecimento óptico de caracter visando agilizar o desempenho em determinadas funções do dia-a-dia, o protótipo será desenvolvido na plataforma móvel Android onde poderá ser usada em qualquer smartphone, celular ou tablet.

1.3 Órgão Promotor
UNEMAT - Universidade do Estado de Mato Grosso
Campus Universitário Deputado Rene Barbour
Departamento de Ciência da Computação
1.4 Carga Horária
300 horas

1.5 Local de Execução
UNEMAT ? Universidade do Estado de Mato Grosso

1.6 Residência do Execução
Rua Getúlio Vargas, Nº 510, Bairro São Raimundo, Barra do Bugres ? MT, Brasil.


2. NÍVEIS ENVOLVIDOS
2.1 Professor Coordenador de Estágio
Prof. Rodrigo Fernando Shimazu
2.2 Professor orientador
Prof. Alexandre Berndt

2.3 Organização Estagiada
UNEMAT - Universidade do Estado de Mato Grosso
Campus Universitário Deputado Rene Barbour
Departamento de Ciência da Computação


3. OBJETIVOS
3.1 Objetivo Geral
Desenvolver um aplicativo sobre a plataforma Android que converta imagens digitais de fontes True Type, em textos editáveis e pesquisáveis, fazendo uso de técnicas de Reconhecimento Óptico de Caractere.

3.2 Objetivos Específicos
? Instalação e configuração de um ambiente que permita a programação de aplicativos para a plataforma Android;
? Estudo do paradigma de programação Orientada à Objeto;
? Estudo da linguagem Java;
? Estudo da linguagem XML;
? Estudo das diferentes técnicas de Reconhecimento Óptico de Caractere (OCR)
? Desenvolver o Protótipo da Aplicação;
? Realizar testes da aplicação desenvolvida;
? Análise e depuração dos dados obtidos através dos testes;


4. JUSTIFICATIVA

Martin King, revolucionou a história dos dispositivos móveis após a invenção de um novo sistema de digitação em dispositivos móveis, esse sistema se chama T9 (Text on 9 Keys), mais conhecido como previsão de texto T9.
Com a popularização dos celulares em 1995 e o crescente uso de Short Message Service popular conhecido como SMS, ele viu ali uma necessidade de um avanço tecnológico visto que era a digitação de uma mensagem levava um tempo considerável, foi aí que King implantou um dos sistemas mais brilhantes para dispositivos móveis e hoje mesmo com tantos avanços tecnológicos esse sistema ainda é muito utilizado e estima-se que ainda haja 4 bilhões de dispositivos operando com o T9.
O mercado de celulares está crescendo cada vez mais. Estudo mostram que hoje em dia mais de 3 bilhões de pessoas possuem um aparelho celular, e isso corresponde à mais ou menos metade da população mundial[LECHETA, 2010, p.19].
Para acompanhar essa evolução da tecnologia e satisfazer os usuários, os fabricantes e operadoras de celular, as empresas e desenvolvedores, existe uma grande corrida estrelada pelas maiores empresas do mundo em tecnologia móvel para competir com esse nicho do mercado [LECHETA, 2010, p.20].
O Android é a resposta do Google para ocupar esse espaço. Consiste em uma nova plataforma de desenvolvimento para aplicativos móveis, baseado em um sistema operacional Linux, com diversas aplicações já instaladas, e ainda, um ambiente de desenvolvimento bastante poderoso, ousado e flexível [LECHETA, 2010, p.20].
A plataforma Android apresenta mais de 300mil ativações por dia e mais de 170 dispositivos compatíveis com o Android, 27 OEMs, 169 operadores, e 69 dispositivos [SCHMIDT, Congresso Mundial de Móveis de 2011, ]. Esses números revelam a projeção do Android que em pouco tempo se tornou o mais promissor sistema operacional para dispositivos móveis, e os números tendem a aumentar ainda mais.
A plataforma Android que foi desenvolvida pela Google atualmente é gerida pela OHA (Open Handset Alliance). Segundo [LECHETA, 2010, p.21] a Open Handset Alliance (OHA) é um grupo formado por gigantes do mercado de telefonia de celulares liderados pela Google. Entre Alguns integrantes do grupo estão nomes consagrados como a HTC, LG, Motorola, Samsung, Sony Ericsson, Toshiba, Sprint Nextel, China Mobile, T-Mobile, Asus, Intel, Garmin e muito mais.
O Android é a primeira plataforma para aplicações móveis completamente livres e código aberto (open-source), o que representa uma grande vantagem para sua evolução, uma vez que diversos programadores do mundo poderão contribuir para melhorar a plataforma [LECHETA, 2010, p.24].
O mercado de software para computadores apresenta hoje em dia diversas opções de software de reconhecimento de imagens OCR (ex.: OmniPage e ABBYY FineReader), porém no mercado de dispositivos móveis não temos tantas opções assim e os resultados são inferiores aos softwares para computadores.
A grande maioria dos scanners é acompanhado de pelo menos 1 programa de Reconhecimento Óptico de Caractere, essas técnicas apresentam resultados satisfatório para que seja implementado o protótipo do aplicativo.
A difusão e o incentivo do estudo da plataforma Android e a implementação de aplicativos na comunidade acadêmica da Unemat ? Campus Barra do Bugres, visto que a programação de aplicativos para a plataforma Android é um projeto inédito e pioneiro no Campus.

5. FUNDAMENTAÇÃO TEÓRICA
5.1 Plataforma Android
Para implementar os aplicativos será usado compilador Eclipse IDE Índigo tendo ele como ambiente de desenvolvimento. O Eclipse tem acesso a todas as ferramentas e API?s contidas no Kit de desenvolvimento Android SDK (Software Developer Kit) que permite programar os mais diversos tipos de aplicativos para a Plataforma Android, mas para que isso funcione o Eclipse precisa utilizar um complemento, o plugin ADT (Android Developer Tools) fornecido gratuitamente pela google. O Android foi desenvolvido para acelerar e inovar o desenvolvimento de aplicativos móveis
O sistema operacional Android, essa plataforma contém 12 milhões de linha de códigos sendo elas 3 milhões em XML, 2.8 milhões de linhas em C, 2.1 milhões de linhas de código Java e 1.75 milhões de linhas de código em C++.
Para os fabricantes de celulares, isso também foi uma grande vantagem, uma vez que é possível utilizar o sistema operacional do Android em seus celulares sem ter que pagar por isso. Além disso, a licença Apache Software Foundation (ASF) permite que alterações sejam efetuadas no código-fonte para criar produtos customizados sem precisar compartilhar as alterações com ninguém [LECHETA, 2010, p.25].
A plataforma Android nos traz diversos recursos disponíveis em suas API?s e ferramentas [SILVA, 2010, p.08], dentre eles podemos citar alguns dos recursos disponíveis:
 Application framework proporciona a reutilização e substituição de componentes;
 Dalvik Virtual Machine Otimizada para dispositivos móveis;
 Browser Integrado baseado no webkit engine;
 Gráficos Otimizados possui uma biblioteca 2D e 3D baseada na especificação OpenGL ES 1.0 (aceleração de hardware é opcional);
 SQLite para guardar dados estruturados;
 Suporte multimídia para áudio, vídeo e formatos de imagem (MPEG4, H.264, MP3, AAC, MR, JPG, PNG, GIF);
 Telefonia GSM (dependente de hardware);
 Bluetooth, EDGE, 3G, e WiFi (dependente de hardware);
 Câmera, GPS, compasso, e acelerômetro (dependente de hardware);
 Rico ambiente de desenvolvimento, incluindo um emulador de dispositivo, ferramentas de depuração, memória, desempenho e um plugin para o Eclipse (ADT).

No Android é possível construir a tela de duas formas: diretamente pela código-fonte Java, de forma similar ao Swing, ou utilizando um arquivo XML de layout que define a tela que será exibida [LECHETA, 2010, p.58].
A classe R.java tem constantes para facilitar o acesso aos recursos do projeto como por exemplo, um arquivo XML que define uma tela, ou imagem localizada em alguma pasta [LECHETA, 2010, p.56]. A classe R.java não pode ser alterada manualmente, sempre que um novo recurso for adicionado, a classe R.java será atualizada para conter uma nova constante para este novo recurso conforme mostra a figura 2.


Figura 2.Abstração feita pela classe R.java, ligando assim os layouts XML na classe Java.
Fonte: Autor

A linguagem Java e utilizada para construir as aplicações para o Android. O fato é que em seu sistema operacional não existe uma máquina virtual Java (JVM). Na verdade, o que temos é uma máquina virtual chamada de Dalvik que é otimizada para execução em dispositivos móveis [LECHETA, 2010, p.24].
O Android utiliza a versão 2,6 do kernel do Linux para os serviços centrais do sistema, tais como segurança, gestão de memória, gestão de processos, etc. O Kernel também atua como uma camada de abstração entre o hardware e o resto do software [SILVA, 2010, p.11].
Ao desenvolver as aplicações para o Android você vai utilizar a linguaguem Java e todos os seus recursos normalmente, mas depois que o bytecode (.class) é compilador, ele é convertido para o formato .dex (Dalvik Executable), que representa a aplicação Android compilada[LECHETA, 2010, p.24].
A Máquina Virtual Dalvik permite que programas sejam distribuídos em formato binário (bytecode) e possam ser executados em qualquer dispositivo Android compatível com a versão requerida da plataforma, independentemente do processador utilizado
No Android uma versão do sistema operacional é conhecido como plataforma [LECHETA, 2010, p.32]. Existem diferentes versões da plataforma Android, seus nomes são nomes de sobremesas ou bolos (em inglês) e seguem a ordem alfabética:
? 1.5 : Cupcake (Abril de 2009, com a última revisão oficial a maio de 2010);
? 1.6 : Donut (Setembro de 2009, com a ultima revisão oficial a maio de 2010);
? 2.1 : Eclair (Janeiro de 2010, com a última revisão oficial a maio de 2010);
? 2.2 : FroYo (Frozen Yogourt - Maio de 2010, com a última revisão oficial a julho de 2010);
? 2.3 : Gingerbread (versão atual lançada a 6 de dezembro de 2010);
? 3.0 : Honeycomb (Lançada especialmente para Tablets em Janeiro de 2011) ;
O protótipo do aplicativo apresentado nesse projeto será implementado usando a versão 2.3 do Android, pois oferece suporte à língua portuguesa e é uma das versões da plaforma Android mais recente.

5.2 Reconhecimento Óptico de Caracter

O denominado Reconhecimento Óptico de Caracteres se resume em um método eletrônico de tradução de imagens textuais manuscritas, datilografadas ou impressas em um texto de máquina editável [BARRETO e SANTOS, 200?, p.01]. A grande maioria dos scanners vem com pelo menos um programa OCR que podem ser usado para extrair texto de páginas impressas, substituindo-se assim a digitação manual.
O principal requisito de um software de OCR é oferecer suporte à língua Portuguesa, pois, caso contrário, os caracteres acentuados não serão reconhecidos, fazendo com que o texto apresente muitos erros (MORIMOTO, 2005).
As fontes True Type utilizadas pelos editores de texto são gravadas em modo vetorial, uma descrição matemática das curvas e linhas que compõem o caracter. Este recurso permite que o tamanho da fonte seja alterado livremente, sem perda de qualidade. Um programa de OCR atua basicamente comparando os caracteres escaneados com estas fontes gráficas (MORIMOTO, 2005).
Inicialmente um programa OCR começa examinando a imagem á procura dos espaços em brancos e faz um mapeamento deles, o segundo processo é a comparação de cada caractere com o modelo de fonte gráfica estabelecido, havendo uma porcentagem aceitável de coincidência, então o caractere é reconhecido, porém a eficiência deste processo depende de uma semelhança muito grande entre as fontes e os caracteres digitalizados, assim muitos caracteres acabam não sendo reconhecidos, especialmente caracteres em negrito ou itálico.
Um segundo processo é aplicado nos caracteres não reconhecidos, porém este processo é mais detalhado, pois analisa geometricamente cada caractere, calculando a altura, largura, e combinações de retas, curvas e áreas em branco. Novamente usamos a probabilidade, por exemplo um caractere em forma de meia lua que continua na forma de uma reta tem grandes chances de ser um "d" minúsculo porém também poderá ser um "b" minúsculo, este processamento secundário é muito mais demorado visto que para cada caractere não-reconhecido terá vários processo.
Uma última alternativa para reconhecer caracteres ilegíveis, pode ser mostrar individualmente o bitmap de cada caracter não reconhecido e, pedir ao usuário que o substitua pela letra correspondente, ou então, simplesmente, usar um símbolo como ~,% ou # no lugar do caractere para que o usuário possa corrigir o erro manualmente depois (MORIMOTO, 2005).

6. METODOLOGIA

O projeto será conduzido na UNEMAT ? Universidade Estadual de Barra do Bugres no Campus de Barra do Bugres através da disciplina de Estágio Supervisionado, onde a pesquisa será dividida em várias fases. A primeira fase será o levantamento dos dados necessários para o desenvolvimento do protótipo do aplicativo, onde realizaremos pesquisas na área de OCR e pesquisas sobre a plataforma Android.
A segunda fase consiste em desenvolver o aplicativo a partir dos dados previamente pesquisados e estudados, o aplicativo terá que atender aos requisitos necessários para que possa atingir seu objetivo final.
A terceira fase deste projeto consiste na análise dos resultados obtidos através do protótipo do aplicativo, onde serão extraídos dados quantitativos e qualificativos dos resultados do protótipo do aplicativo. Na quarta e última fase será feita a redação do relatório final do projeto.



7. RISCOS NA IMPLANTAÇÃO/REALIZAÇÃO DO PROJETO
A plataforma Android é uma plataforma nova e traz um novo conceito de programação para dispositivos móveis, porém a falta de fontes de consultas, e a escassez de material didático na biblioteca do Campus, assim como na web, representam um risco para a implantação deste projeto.

[/b]