Reconhecimento de Matemática Manuscrita - Wiki

Transcrição

Reconhecimento de Matemática Manuscrita - Wiki
Universidade do Minho
Escola de Engenharia
Departamento de Informática
MathIS - Reorientando a Matemática para a Sociedade da Informação
Reconhecimento de Matemática Manuscrita
Luiz Fernando Vilar Lopes
[email protected]
CCTC - Centro de Ciências e Tecnologias da Computação
Departamento de Informática
Universidade do Minho
Índice
Índice de Figuras .............................................................................................................................. 4
1. Introdução ..................................................................................................................................... 6
2. Reconhecimento de Matemática Manuscrita........................................................................... 8
3. Ferramentas de Reconhecimento Matemático Manuscrito ................................................. 10
3.1 MathJournal .......................................................................................................................... 10
3.2 JMathNotes ........................................................................................................................... 10
3.3 Natural Log ........................................................................................................................... 11
3.4 FFES - Freehand Formula Entry System ......................................................................... 11
3.5 JIMHR - Java Interactive Mathematical Handwriting Recognizer ................................ 11
3.6 MathBrush ............................................................................................................................. 12
3.7 Infty Editor ............................................................................................................................. 12
3.8 Math Speak & Write............................................................................................................. 12
3.9 Maple ..................................................................................................................................... 13
3.10 MathIP ................................................................................................................................. 13
3.11 MoboMath ........................................................................................................................... 13
3.12 Express Math - Reconhecimento de Expressões matemáticas ................................. 14
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
2
3.13 Sketch Equation ................................................................................................................. 14
3.14 Equation Writer - Microsoft Experience for Windows Vista......................................... 14
3.15 Draculae .............................................................................................................................. 15
3.16 CIT ....................................................................................................................................... 15
3.17 Microsoft Math .................................................................................................................... 15
3.18 Windows 7 Math TIP ......................................................................................................... 15
3.19 StarPad SDK ...................................................................................................................... 15
3.20 MathPad2 - A System for the Creation and Exploration of Mathematical Sketches 16
3.21 MathPaper .......................................................................................................................... 16
4. Quadros Interactivos ................................................................................................................. 18
5. Plataforma e tecnologias de desenvolvimento ...................................................................... 19
5.1 StarPad SDK ........................................................................................................................ 21
5.1.1 Aplicações - Apps ......................................................................................................... 25
5.1.2 Bibliotecas - Libs........................................................................................................... 27
5.1.3 Reconhecimento Matemático ..................................................................................... 29
5.2 Windows Presentation Foundation ................................................................................... 32
5.3 XAML ..................................................................................................................................... 34
6. Aplicação MathIS Project .......................................................................................................... 36
7. Conclusões e Trabalho Futuro................................................................................................. 42
8. Referências ................................................................................................................................. 44
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
3
Índice de Figuras
Figura 1: Arquitectura de Camadas - Reconhecimento de Manuscrita Matemática.......................... 8
Figura 2: Nintendo DS ....................................................................................................................... 19
Figura 3: ATM .................................................................................................................................... 19
Figura 4: Smartphone ........................................................................................................................ 20
Figura 5: PDA ..................................................................................................................................... 20
Figura 6: Tablet PC............................................................................................................................. 20
Figura 7: Stylus Pen ........................................................................................................................... 20
Figura 8: Árvore de Bibliotecas e Aplicações do StarpadSDK............................................................ 22
Figura 9 - Modelo de Camadas do StarPad SDK ................................................................................ 23
Figura 10 - Camada de Base do StarPad SDK .................................................................................... 24
Figura 11 - Camada de Ink do starPad SDK ....................................................................................... 24
Figura 12 - Camada de Suporte a Aplicação do StarPad SDK ............................................................ 25
Figura 13 - Resolução Matemática exemplo 1 .................................................................................. 26
Figura 14 - Simplificação Matemática exemplo ................................................................................ 26
Figura 15 - Resolução Matemática exemplo 2 .................................................................................. 27
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
4
Figura 16 - Reconhecimento de símbolos matemáticos 1 ................................................................ 30
Figura 17 - Reconhecimento de símbolos matemáticos 2 ................................................................ 31
Figura 18 - Pilha da plataforma .NET................................................................................................. 32
Figura 19 - Características do WPF .................................................................................................... 33
Figura 20 - Aplicação MathIS Project ................................................................................................ 36
Figura 21 - Expressão exemplo.......................................................................................................... 37
Figura 22 - Janela apresentada através do botão Save ..................................................................... 37
Figura 23 - Ficheiro com a expressão manuscrita não foi gerado..................................................... 38
Figura 24 - Janela para guardar expressão matemática manuscrita ................................................ 38
Figura 25 - Apresentação da expressão a ser guardada e ficheiro LaTeX ......................................... 39
Figura 26 - Janela apresentada através do símbolo de Simplificação/Resolução ............................. 39
Figura 27 – Janela indicando que a simplificação não foi gravada em ficheiro ................................ 40
Figura 28 - Janela para guardar expressão simplificada ................................................................... 40
Figura 29 - Expressão simplificada a ser guardada e ficheiro LaTeX ................................................. 41
Figura 30 - Apresentação da expressão simplificada no ecrã ........................................................... 41
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
5
1. Introdução
Escrever matemática num computador é uma tarefa difícil, porque o teclado e o rato não
suportam todos os símbolos necessários. Linguagens como LATEX e MathML são muito
úteis, mas o seu uso requer um enorme esforço mental por parte do utilizador. Algumas
aplicações, tais como Scientific WorkPlace1 e MathMagic2, foram criadas para simplificar a
escrita de matemática, mas, como estas aplicações requerem o uso do teclado e rato,
muitos dos problemas mantêm-se.
Assim, o uso de teclado e rato para escrita de matemática não é tão simples nem tão
natural quanto usar papel e lápis. O ideal seria escrever matemática num computador
como fazemos num papel com lápis, o que é possível usando um dispositivo baseado em
Caneta (Pen) como um Tablet PC. Existem actualmente algumas aplicações e projectos de
investigação que visam a escrita de matemática usando um Tablet PC, mas essas
ferramentas estão muito orientadas apenas ao reconhecimento e obtenção de um
resultado final. Além disso, essas ferramentas não suportam a escrita de documentos, tais
como artigos e relatórios contendo matemática. O objectivo do projecto no qual a
proposta de investigação MathIS se insere, é criar uma ferramenta para suporte de escrita
e ensino de matemática possibilitando a edição estruturada de matemática manuscrita.
O projecto de investigação MathIS3 do CCTC (Centro de Ciências e tecnologias da
Computação)4 teve início em Janeiro de 2009 e visa a necessidade de reconhecimento de
novas aproximações ao ensino e a aprendizagem da Matemática na Sociedade da
Informação pois esta requer um grau cada vez mais elevado de “fluência matemática”
recorrendo à linguagem e ao método matemático para modelar problemas e situações e
raciocionar de uma forma produtiva no interior destes modelos.
Actualmente, o projecto MathIS apresenta duas fortes áreas de investigação: O
Refactoring da Matemática Escolar e o Reconhecimento de Matemática Manuscrita, cujo
trabalho este documento faz referência.
Este trabalho tem uma componente de investigação orientada ao apoio da tese de
doutoramento de Alexandra Mendes sob a orientação do professor Roland Backhouse da
1
http://www.mackichan.com/
http://www.mathmagic.com/
3
http://twiki.di.uminho.pt/twiki/bin/view/Research/Matisse/MathIS
4
http://cctc.uminho.pt/
2
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
6
Universidade de Nottingham no Reino Unido e co-orientção do professor José Nuno
Oliveira da Universidade do Minho em Portugal.
A tese de Alexandra Mendes entitulada de "Structure Editing of Handwritten
Mathematics", visa não só o reconhecimento mas também a manipulação de documentos
que contêm quantidades substanciais de matemática utilizada em resolução de problemas
algorítmicos.
O reconhecimento de expressões matemáticas pode ser útil para transformar documentos
técnicos e científicos que se encontram em papel para o formato electrónico, ou então
para a entrada de expressões matemáticas em sistemas computacionais, através de
escrita em dispositivos como Tablets e Smartboards (Quadros Interactivos).
A partir do momento que o reconhecimento da matemática é feito através de um
dispositivo computacional, diversas aplicações algorítimicas podem ser desenvolvidas com
o objectivo da resolução de diversos problemas não só ao nível da matemática mas da
própria engenharia e até mesmo da física.
Desta forma, um novo conceito computacional está começando a se desenvolver e
trazendo, ainda mais, as novas teconologias ao serviço dos utilizadores. Uma das grandes
vantagens deste novo conceito é o auxílio no Ensino destas temáticas. Através de
dispositivos informáticos de manuscrita é possível, então, fazer e ensinar Matemática e
outras disciplinas transformando radicalmente o ensino tradicional e tornando-o num
ensino cada vez mais dinámico.
São diversos os projectos espalhados pelo mundo que visam a informatização e
dinamismo do ensino, sobretudo secundário. Em Portugal, o projecto Camões introduziu
este conceito nas escolas de ensino secundário do país onde podemos encontrar, pelo
menos, um Quadro Interactivo (Smartboard) em inúmeras escolas do território português.
Os softwares utilizados por estes Smartboards apresentam tecnologias de
reconhecimento de manuscrita que são frutos de projectos de investigação para
computação orientada a dispositivos centrados em Caneta (A conhecida Pen-Based
Computing) e ainda não estão acabadas. Algumas destas técnicas e tecnologias foram
abordadas neste projecto e apresentam-se neste documento através das diversas
aplicações e projectos de investigação inerentes.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
7
2. Reconhecimento de Matemática Manuscrita
O reconhecimento de expressões manuscritas matemáticas envolve duas fases distintas
[1]. O reconhecimento de caracteres e a análise estrutural. Ambas as fases apresentam
dificuldades no que compete a um correcto e completo reconhecimento de expressões
matemáticas.
O reconhecimento de caracteres tem conhecido uma evidente evolução nos últimos
tempos, apresentando resultados satisfatórios embora ainda se verifique uma dificuldade
elevada no reconhecimento de vários símbolos, simultaneamente. A dificuldade acresce
quando entra em jogo a análise estrutural, evidenciando uma análise completa da
estrutura das expressões reconhecidas, tanto ao nível Gramatical como Semântico.
Desta forma podemos estruturar, através de uma arquitectura de camadas, o
reconhecimento completo de matemática manuscrita. Esta divisão pode ser vista através
de uma arquitectura de camadas apresentada na Figura 1.
Figura 1: Arquitectura de Camadas - Reconhecimento de Manuscrita Matemática
Como exemplo, a dificuldade inerente ao reconhecimento de símbolos pode acontecer
num simples reconhecimento do caractere x. Torna-se necessária uma correcta leitura
para o caso do símbolo ser uma letra ou ser um símbolo matemático representativo de
uma variável de expressão ou até mesmo de um operador de multiplicação.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
8
Para o caso de uma entrada do tipo dx, o reconhecedor deverá conseguir interpretar de
uma forma correcta, o significado da expressão, seja como uma multiplicação de d por x,
ou parte de um integral. Nesses casos ou quando a leitura do input envolve um conjunto
alargado de símbolos como letras Gregas, operadores, variáveis e outras, formando
expressões matemáticas mais complexas, torna-se de extrema e indispensável
importância uma análise de contexto no que diz respeito a estrutura da informação lida.
É, então, indispensável uma determinação de relação entre os símbolos reconhecidos,
logo após os seus reconhecimentos individuais. Como exemplo, podemos evidenciar uma
simples entrada do símbolo raiz quadrada, ou do operador soma onde deverão ter um
significado muito específico e todos os seus argumentos deverão estar alinhados e
presentes em suas específicas regiões. Na expressão
, por exemplo, o
reconhecedor deverá ser capaz de identificar a soma dos quadrados como argumento da
raiz quadrada, ser capaz de reconhecer o caractere 2 como símbolo identificador do
quadrado tanto de a como de b, para além de estarem em suas determinadas regiões,
sendo definidas através do operador +.
O reconhecimento de manuscrita matemática somente estará concluído após estas duas
fases estarem totalmente completas.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
9
3. Ferramentas de Reconhecimento Matemático Manuscrito
Existem algumas ferramentas de reconhecimento e alguns reconhecedores matemáticos
já implementados, além de alguns projectos de investigação em desenvolvimento,
embora nenhum deles consiga satisfazer as nossas necessidades, por completo e de uma
forma correcta, no que compete ao reconhecimento matemático. Todos eles apresentam
limitações, como por exemplo acerca da caligrafia utilizada, por parte dos utilizadores, no
input das expressões ou na quantidade de símbolos reconhecíveis. Aqui, é importante que
um reconhecedor seja extensível e preferencialmente capaz de aprender tanto com a
caligrafia do utilizador, bem como com o método e modelo matemático aplicado.
Felizmente, não se torna necessária a criação, de raiz, de uma máquina de
reconhecimento completa. Temos a permissão da MapleSoft [10] para utilização de seu
reconhecedor para símbolos individuais matemáticos, bem como da utilização de seu
produto final para Matemática e Modelagem, Maple 13, em sua versão académica.
A seguir descreve-se um apanhado de alguns exemplos de implementações e ferramentas
existentes e capazes de reconhecer e trabalhar com a matemática manuscrita como input.
3.1 MathJournal
MathJournal [9] é uma ferramenta interactiva para Tablet PCs que oferece um ambiente
natural e intuitivo para resolver problemas matemáticos e de engenharia. O software
reconhece, interpreta e fornece soluções para manuscritas e construções matemáticas e
de engenharia.
Esta ferramenta reconhece um grande número de símbolos matemáticos. Ele avalia vários
tipos de expressões matemáticas e, dada uma expressão, cria o seu correspondente
gráfico. Esta aplicação está disponível para o sistema operativo Windows.
3.2 JMathNotes
JmathNotes [8] é uma aplicação Java que reconhece expressões matemáticas escritas
sobre
o

Retirado de [2].
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
10
ecrã e fornece manipulação e correcção das expressões e gestos através de menus. É
capaz de reconhecer símbolos gregos, expoentes, os operadores Integrante, Soma e
Produto, Raiz Quadrada e todos os símbolos matemáticos básicos. Produz LaTeX e gera
saída adequada para uso em processadores de texto e computação simbólica. Ela também
fornece manipulação algébrica através do sistema de álgebra computacional
Mathematica. Esta aplicação é gratuita e pode ser modificada e/ou redistribuída de
acordo com os termos da GNU General Public License. Pode ser usado em Windows, Linux
ou qualquer outra plataforma Unix.
3.3 Natural Log
Natural Log [6] é uma applet escrita em Java, que foi criada como uma ferramenta para a
demonstração de conceitos apresentados na Tese de Mestrado de Nicholas Matsakis.
Reconhece todos os símbolos matemáticos básicos, algumas letras gregas, somatórios,
frações e raízes quadradas. Ele não reconhece nem integrais e nem notação em índice.
Esta applet produz LaTeX e MathML e não avalia expressões matemáticas.
3.4 FFES - Freehand Formula Entry System
A aplicação Freehand Fórmula Entrada System [7], permite uma entrada livre e edição de
fórmulas utilizando uma caneta e um Tablet. É utilizado um reconhecimento automático
de fórmulas manuscritas para gerar uma cadeia de comando LaTeX para a fórmula. É
implementado em C++ e Tcl/Tk e é distribuída sob a GNU General Public License. A versão
mais recente pode ser usada tanto em Linux ou Windows (através do Cygwin).
3.5 JIMHR - Java Interactive Mathematical Handwriting Recognizer
O Java Interactive Mathematical Handwriting Recogniser (JIMHR) é uma ferramenta que
processa a entrada de manuscrita através do rato ou de uma caneta e gera suas saídas
correspondente como fórmulas matemática em tempo real num tipo de imagem e LaTeX
ou MathML. Este programa permite, ao utilizador, corrigir eventuais erros resultantes
para reorganizar os símbolos de forma a se adaptarem às suas necessidades. JIMHR é
executado em Unix, Linux e Windows. Este sistema baseia-se no Natural Log e no
Freehand Fórmula Entry System, mencionados anteriormente.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
11
3.6 MathBrush
O sistema MathBrush [5] permite que um utilizador introduza expressões matemáticas
com uma Caneta e, em seguida, a expressão é enviada para um sistema de álgebra
computacional que irá proporcionar um resultado. Este sistema foi concebido para
proporcionar um ambiente de experimentação com os vários componentes necessários
para fazer matemática baseada na utilização de dispositivos centrados em Caneta. Esta
ferramenta apresenta alguns gestos definidos e eles foram escolhidos para serem
similares aos que o utilizador usa ao escrever utilizando uma caneta e um papel e também
para ser coerente com outras aplicações baseadas em Caneta. Uma característica
importante desta ferramenta é que ela proporciona o Logging de manipulações
matemáticas. Isto significa que ela mantém uma trilha de todas as acções feitas pelo
utilizador numa Folha (Sheet).
3.7 Infty Editor
Este editor tem um reconhecimento online de expressões matemáticas manuscritas e,
logo que um caractere é escrito, ele é automaticamente reescrito por Strokes em uma
posição e um tamanho adequado. Ele utiliza o formato XML como formato de dados para
as expressões manuscritas. O InftyEditor [3] fornece saídas em vários formatos diferentes
como Latex, MathML, PDF, etc. Este sistema pode se comunicar com o sistema de álgebra
computacional Mathematica e está previsto que irá comunicar, no futuro, com diversos
sistemas de álgebra computacional.
3.8 Math Speak & Write
O sistema Math Speak & Write [4] permite a criação de expressões matemáticas
utilizando a manuscrita e a fala. Os criadores desta ferramenta procuraram fornecer,
simultanemente, entradas de fala e manuscrita. No entanto, não implementaram uma
entrada multi-modo completa não permitindo as duas entradas ao mesmo tempo. Além
disso, esta ferramenta utiliza caixas coloridas para a ajuda da remoção de ambiguidade no
Parsing matemático em duas dimensões. De um modo geral, cada símbolo tem três caixas
com cores para cada campo do símbolo, como o próprio símbolo, o expoente e o índice do
símbolo.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
12
Alguns símbolos têm diferentes cores de caixas como, por exemplo, a barra de divisão que
contem duas caixas sendo uma para o numerador e outra para o denominador. A
interação do utilizador com a ferramenta é feita através de clicks do rato nas caixas para
inserção dos símbolos. Uma restrição do reconhecimento da manuscrita é a necessidade
de uma escrita pausada de símbolos por um pequno período de tempo.
3.9 Maple
O Maple 13 (versão mais recente da Maplesoft [10]) é o software matemático de maior
apoio aos engenheiros e pesquisadores. Utilizado tanto para resolução de cálculos
rápidos, desenvolvimento de planilhas ou produção de modelos sofisticados de simulação
de alta-fidelidade, o Maple 13 fornece a tecnologia necessária para reduzir erros e
aumentar drasticamente a produtividade analítica. Apresenta-se assim como um
instrumento para se fazer Matemática pela mistura do poder computacional e a facilidade
de uso.
3.10 MathIP
Sofware de reconhecimento matemático escrito, como texto livre em tablet PC, numa
aplicação do Microsoft Silverlight. É feita uma pesquisa no google, com o resultado obtido
pelo MathIP [12], automaticamente após a conversão digital. Um vídeo apresentativo
desta
ferramenta
pode
ser
visto
no
Youtube
através
do
link
http://www.youtube.com/watch?v=u1FVTEBI1bg. Este software apresenta pouca acurácia
e muita limitação simbólica além da objectividade de sua utilização na plataforma de
pesquisa Google.
3.11 MoboMath
O MoboMath [13] é um projecto comercial da Eventra para reconhecimento de
manuscrita e edição de expressões matemáticas. Converte expressões matemáticas
manuscritas em formato de texto para utilização em cálculos, documentos técnicos,
páginas WEB e apresentações incluindo suporte à diversos formatos, imagens e aplicações
populares como o Microsoft Word 2003 e 2007, Maple 12, MathML, TeX, LaTeX. É uma
boa ferramenta com fácil usabilidade permitindo adição, reordenação e o apagar de texto
ao longo da escrita. Uma outra característica importante é que, para além dos diversos
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
13
tipos de Output que apresenta, esta ferramenta permite uma interoperabilidade com o
pacote da Maple.
3.12 Express Math - Reconhecimento de Expressões matemáticas
Este recente projecto, ainda em fase de desenvolvimento na Universidade de São Paulo,
tem como objectivo o estudo, implementação e teste de técnicas voltadas ao
reconhecimento de expressões matemáticas manuscritas. Para isso, envolve também o
desenvolvimento de um sistema computacional para reconhecimento de expressões
matemáticas manuscritas e sua transformação em formato electrónico ou para Input em
outras ferramentas. Outro objectivo do projecto Express Math [15] é investigar a escrita,
em adição aos usuais teclado e rato, como um mecanismo de interacção com os sistemas
computacionais.
Este projecto está ligado ao projecto de investigação "IAPen (InterActive Pen) que visa
uma interacção via dispositivos de escrita propondo-se investigar a escrita como meio de
interacção em dois contextos distintos (reconhecimento de expressões matemáticas
manuscritas e segmentação de imagens) a fim de propor modelos genéricos de interacção
via escrita que possam também ser utilizados em outros contextos de aplicação. Desta
forma, visa contribuir para a difusão de softwares capazes de explorar todo o potencial da
escrita como mecanismo de interacção.
3.13 Sketch Equation
Sistema de reconhecimento de expressões matemáticas manuscrita reconhecendo a
estrutura matemática e convertendo em imagem, tex, MathML e outros. Este sistema faz
parte de um projecto de doutoramento ainda em desenvolvimento e não público.
O Sketch Equation [14] Aparenta ser uma ferramenta interessante, embora ainda faça
parte de um projecto protótipo inserido numa tese de doutoramento cujo estado de
resultado ainda é experimental.
3.14 Equation Writer - Microsoft Experience for Windows Vista
O Equation Writer [16] é um dos programas pertencentes ao Microsoft Experience para o
Windows Vista que facilmente adiciona expressões matemáticas a documentos. Converte
em imagens para documentos e apresentações. Como aspecto negativo podemos avaliar
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
14
que não é um pacote orientado a resolução matemática e sim a escrita em documentos
matemáticos, tirando proveito de um tablet pc.
3.15 Draculae
É o Parser de expressões utilizado no FFES (Freehand Formula Entry System).
3.16 CIT
É o pacote reconhecedor de caracteres utilizado no FFES (Freehand Formula Entry
System).
3.17 Microsoft Math
Software da Microsoft vocacionado ao ensino da matemática. Contém um pequeno
módulo de reconhecimento de escrita mas não foi concebido para uso em Tablet PC.
Resolve as equações, apresenta gráficos, geometria e trigonometria. É um software
voltado para utilização no ensino.
3.18 Windows 7 Math TIP
O Math TIP [11] do recente Windows 7 da Microsoft é um software que já vem embutido
no Sistema Operativo. Este software é utilizado pelo software Mathematica e permite
apagar e corrigir as expressões introduzidas.
3.19 StarPad SDK
O Centro de Investigação em Computação Centrada em Caneta (Microsoft Center for
Research on Pen-Centric Computing) da Microsoft na Universidade de Brown, nos Estados
Unidos, desenvolveu um grupo alargado de projectos de investigação [17] orientados a
utilização de tecnologias para utilização em dispositivos com interfaces de ultização
através de uma Caneta (Pen-Centric Interfaces), como o Tablet PC e Quadros Interactivos
utilizados sobretudo no Ensino Secundário.
O objectivo inicial do starPad SDK [18] é de trazer uma maior facilidade de escrita de
aplicações oriendadas a este tipo de computação, por parte de desenvolvedores de
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
15
Software provendo uma conveniente interface de funcionalidades para a utilização de
Canetas juntamente com algumas funcioanlidades de investigação. Esta aplicação está
desenvolvida, actualmente, para a plataforma de desenvolvimento MS Windows.NET e
utiliza o WPF (Windows Presentation Foundation).
Dentro das funcionalidades e operações incluídas neste pacote podemos destacar
operações de Stroke-Level e uma livraria de reconhecimento para matemática manuscrita
e para Gestos como Zooming, Selection, Undo para além de técnicas de UI como
GestureBar.
2
3.20 MathPad - A System for the Creation and Exploration of Mathematical Sketches
Mais um projecto do Microsoft Center for Research on Pen-Centric, o MathPad2 [19] é um
protótipo de uma aplicação para Tablet PC que visa a resolução de problemas
matemáticos. Em seu núcleo de funcionalidades, abrange o coiceito de Sketching
Matemático onde são criadas ilustrações dinámicas por combinação de reconhecimento
de matemática manuscrita e diagramas em Free-Form. Assim, este aplicativo foi
desenhado para que o utilizador possa criar ilustrações simples para serem utilizadas em
contxto de trabalho. Esta teconlogia é uma mais-valia para os professores que podem,
assim, transformar suas lições e aulas num contexto mais dinâmico.
3.21 MathPaper
O objectivo inicial do MathPaper é enriquecer a matemática manuscrita por extendimento
das notações matemáticas e diagramas e com foco numa manipilação centrada em Caneta
(Pen-Centric). Dessa forma, o MathPaper deverá munir os estudantes, professores e
profissionais da matemática, de capacidades de integração de matemática simbólica
standard com geometria, algorítmos e computação simbólica assistida em diversos
dispositivos domo PDAs, Tablet PC’s e Smartboards (Quadros Interactivos).
Sendo mais um projecto de investigação do Microsoft Center for Research on Pen-Centric,
o MathPaper disponibiliza um reconhecimento de entradas de manuscrita livre (FreeForm) de múltiplas expressões matemáticas para assistência computacional simbólica e
numérica.
As extensões algorítimicas demonstram a forma de como o MathPaper pode suportar a
entrada de manuscrita de algorítimos matemáticos. É possível incorporar fluxos de
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
16
controlo e notações de programação através de entradas manuscritas. Apresenta, assim,
uma nova forma de tratamento de Debbug algorítimico.
Utiliza reconhecimento em tempo real através de um leque de técnicas, suporte gestual e
edição interactiva do tipo Widget-based além de explorar também uma aproximação para
a entrada e manipulação matricial.
A tecnologia evidenciada neste projecto de investigação está sendo comercializada,
actualmente, pela Fluidity Software5.
5
Fluidity Software Testsite: http://www.fluiditysoftware.com/FluidityTestSite/
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
17
4. Quadros Interactivos
Muitas das aplicações e investigações desenvolvidas no campo do reconhecimento da
manuscrita são orientadas ao ensino com vista a dinamizar e informatizar o ensino
corrente transformando as aulas e lições em algo mais agradável por parte dos alunos e
professores.
Algumas destas aplicações e estudos foram apresentadas anteriormente a ambas
apresnetam técnicas de reconhecimento e técnicas gestuais muito características com o
objectivo simples de fazer matemática. Dentro destas aplicações, focamos com maior
ênfase o MathSpad pois é uma framework que apresenta vários gestos e técnicas
utilizadas em diversas aplicações e software. Imenso software tem sido desenvolvido,
sobretudo para utilização em Tablet PC e Quadros Interactivos.
Como exemplos de Quadros Interactivos podemos citar o Interwrite Smartboard ou o FXDUO da Hitachi, entre outros, cujo software de geometria bastante utilizado, o Cabri
Geometry II Plus6, reconhece desenhos geométricos e matemática com um fim muito
específico. Estas técnicas são muito semelhantes as que podemos encontrar em
ferramentas e projectos apresentados anteriormente. Toda a linha de produtos Cabri é
direccionada para a utilização na aprendizagem da Matemática. Podemos citar também a
aplicação Cabri 3D7 que faz o tratamento de imagens geométricas em três dimensões.
Um Smartboard não é mais do que um dispositivo externo que, ligado ao computador por
uma porta USB e com projecção da imagem do PC, sobre si, através de um projector,
funciona como se trata-se de um verdadeiro Tablet PC cujo ecrã táctil seria externo ao
próprio computador.
Em Portugal, o projecto Camões procura equipar as escolas do ensino básico e secundário
com Smatrbords para inovar e dinamizar o ensino do país. Desta forma, e porque um
Smartboard funciona com as mesmas aplicações de um vulgar Tablet PC, chegamos a
simples conclusão que o projecto MathIS poderá ter algo a dizer nesse campo de
investigação e trazer uma nova aproximação ao ensino e aprendizagem da Matemática de
uma forma dinámica e orientada ao ensino secundário, também através de dispositivos do
tipo Smartboard.
6
7
http://www.chartwellyorke.com/cabri.html
http://www.cabri.com/cabri-3d.html
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
18
5. Plataforma e tecnologias de desenvolvimento
O projecto MathIS visa a necessidade de reconhecimento de novas aproximações ao
ensino e a aprendizagem da Matemática na Sociedade da Informação e para isto tenta
utilizar das novas tecnologias para conseguir trazer ao ensino, sobretudo secundário, uma
nova visão do estudo e ensino da matemática.
Assim sendo, a capacidade de se reconhecer a matemática através de uma forma
manuscrita, num computador, seria a abordagem ideal para o trabalho a ser desenvolvido.
Actualmente são diversos os dispositivos existentes que permitem a escrita através de
uma Caneta (Pen) chamada Stylus. Inicialmente uma Stylus era utilizada para prevenir o
contacto da gordura e sujeira proveniente dos dedos das pessoas em algum aparelho
sensível ao toque, chamado Tochscreen.
Em pouco tempo, uma diversidade de aparelhos do tipo Touchscreen apareceram, por
exemplo em consolas de jogo como o Nintendo DS, cabines ATM, PDAs (Personal Digital
Assistent), Mobile Phones, Smartphones, Tablet PCs e Monitores de diversos tipos,
sobretudo LCDs. Mais recentemente existem aparelhos que conseguem transformar um
espaço num Touchscreen através de movimento sensorial, como os Quadros Interactivos
que ligam-se a simples computadores sem Touchscreen e através de software específico
conseguem lhe atribuir esta funcionalidade.
Figura 2: Nintendo DS
Figura 3: ATM
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
19
Figura 4: Smartphone
Figura 5: PDA
Assim sendo, torna-se mais do que evidente que o projecto MathIS necessitaria de utilizar
uma destas tecnologias e como o objectivo seria o ensino da matemática, a escolha recaiu
sobre um computador portátil do tipo Tablet PC.
A aquisição de um Tablet PC exigiu um cuidado especial no que compete a necessidade de
uma tecnologia de reconhecimento de escrita muito específica por parte do dispositivo e
desta forma o notebook adquirido precisaria de vir munido da tecnologia Active Digitizer
trazendo assim a capacidade de reconhecimento e sensibilidade a pressão do toque e da
escrita. Esta capacidade é extremamente importante para provir a plataforma de um
melhor reconhecimento tanto ao nível de caracteres como ao nível de gestos, que seriam
definidos na própria plataforma.
Figura 6: Tablet PC
Figura 7: Stylus Pen
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
20
Com vista ao desenvolvimento de uma ferramenta de reconhecimento matemático
ajustado às necessidades do projecto MathIS e como apoio ao projecto de doutoramento
da Alexandra, era evidente a necessidade de escolha de uma ou mais ferramentas de
software existentes e apresentadas no capítulo 3 para uma definição completa de uma
plataforma de desenvolvimento fundamental para a construção desta ferramenta.
Tendo em vista que o projecto MathIS necessitava de efectuar trabalhos sobre um ponto
de vista de inovação e personalização, um primeiro e relevante aspecto a se ter em conta
para esta tomada de decisão seria que a(s) ferramenta(s) deveria(m) ser de livre acesso,
ou seja, de código fonte livre para alterações e personalização ao projecto.
Desta forma, seria possível, ao MathIS, trazer uma componente inovadora ao trabalho já
evidenciado e aplicar todo o seu propósito no que compete ao conteúdo matemático a ser
aplicado a ferramenta, sempre tendo como principal objectivo o foco do ensino da
matemática.
Dentre as ferramentas encontradas e apresentadas no capítulo anterior, verificou-se que
a sua grande maioria tinha finalidades puramente comerciais e de muito restrito acesso.
Uma destas ferramentas é o MoboMath que apresenta-se bastante evoluído em termos
de técnicas de reconhecimentos, conjunto de caracteres matemáticos e gestos bem
definidos proporcionando uma maior facilidade de trabalho online. Apesar disso, e como a
ferramenta é de foco comercial, não nos foi possível a sua utilização para além de uma
mera demonstração de seu pacote final.
5.1 StarPad SDK
O principal objectivo do projecto Starpad SDK é o de proporcionar maior facilidade de
escrita de aplicações fornecendo uma interface conveniente para uma ampla camada de
funcionalidades ao nível da Pen-Centric Computing. Actualmente, este projecto está
escrito para desenvolvimento na plataforma Microsoft Windows.Net, fazendo uso das
tecnologias de programação C# e F# para esta plataforma bem como o Windows
Presentation Foundation (WPF) com a linguagem de programação extensível XAML além
de várias APIs definidas para Tablet PC para o trabalho sobre a Pen-Centric Computing.
Ele inclui uma interface conveniente para operações ao nível de Stroke, uma biblioteca de
matemática para o reconhecimento de manuscrita e gestos, algumas técnicas tais como
GestureBar, e uma aplicação baseada em utilização gestual através de uma caneta com
suporte a técnicas como selecção, undo, redo e zooming.
O StarPad SDK já vem com uma aplicação de
demonstração por defeito chamada ANAPP, e
pode ser localizada na árvore da Figura 8. Esta
aplicação é um exemplo de utilização das
funcionalidades
do
SDK
como
o
reconhecimento de escrita matemática que
pode ser visualizado nas Figuras 13, 14, 15, 16 e
17.
A árvore é dividida em duas partes principais:
Apps e Libs. Apps possui aplicações destinadas
a utilizadores finais e exemplos de utilização
demonstrando a funcionalidade do SDK. Libs
detém a biblioteca, geralmente útil, dos
módulos do SDK que são fornecidos através de
diversos projectos do Visual Studio.NET,
juntamente com alguns utilitários.
Todo o sistema matemático pode ser
encontrado na directoria Libs\Math. Este
sistema está dividido em diversas partes, como
o reconhecimento de caracteres e símbolos
bem como o reconhecimento matemático. O
projecto que define o conjunto de informação
matemática já reconhecida é o Projecto
Libs\Math\Expr onde é definida uma Expressão.
Figura 8: Árvore de Bibliotecas e Aplicações do
StarpadSDK
A Figura 8 apresenta a Árvore de directorias do
StarpadSDK dividida em Aplicações e
Bibliotecas.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
22
Figura 9 - Modelo de Camadas do StarPad SDK
Possivelmente, o StarPad SDK pode ser dividido e identificado, num ponto de vista
estrutural em camadas, conforme podemos verificar na Figura 9. Uma Camada de Base
(Figura 10) que conterá a Base da estrutura completa, como por exemplo a definição de
Points e Unicode que servirão de base para a estruturação do projecto tanto ao nível de
localizações como ao nível que reconhecimento de símbolos permitindo a representação e
a manipulação de caracteres especiais, símbolos, textos e sistemas de escrita, no caso
matemático, de uma forma consistente.
A Figura 11 apresenta uma segunda camada estrutural do StarPad SDK. A Camada de Ink
onde é feito todo o trabalho de Ink (tinta) e Stroke. Aqui o Ink passa a chamar-se Inq e
Stroke passa a ser identificado como Stroq. As APIs tradicionais são utilizadas e o StarPad
redefine estas informações de Collection, Canvas e algoritmos de Ink.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
23
Figura 10 - Camada de Base do StarPad SDK
Figura 11 - Camada de Ink do starPad SDK
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
24
Figura 12 - Camada de Suporte a Aplicação do StarPad SDK
Por fim, uma terceira camada (e última), que poderá ser chamada de Suporte a Aplicação
e está apresentada na Figura 12, apresenta o trabalho de reconhecimento de símbolos,
gramática de gestos e parsing matemático. Este trabalho é feito sobre as camadas
anteriores e oferecendo suporte as aplicações desenvolvidas sobre o StarPad SDK.
5.1.1 Aplicações - Apps
Actualmente, o único projecto e exemplo de aplicação geral é o ANAPP, localizado em
App\AnApp, que se destina a ser um programa concebido com a expectativa de ser capaz
de lidar com uma gama de funcionalidades do SDK, como undo/redo, e utilização do
GestureBar para proporcionar acessibilidade aos gestos (visível como uma barra de
ferramentas em toda a parte superior da janela principal da aplicação), e manipulação de
eventos. Ele também suporta entrada e de computação com a matemática manuscrita.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
25
Figura 13 - Resolução Matemática exemplo 1
Figura 14 - Simplificação Matemática exemplo
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
26
As Figuras 13, 14 e 15 apresentam a aplicação AnApp onde identifica-se o GestureBar, que
apresenta as funcionalidades possíveis de utilização na aplicação. Verificamos nestas
figuras, também, exemplos de utilização de algumas funcionalidades como Resolução e
Simplificação de expressões matemáticas manuscritas reconhecidas pelo SDK.
Figura 15 - Resolução Matemática exemplo 2
5.1.2 Bibliotecas - Libs
A árvore de directorias e projectos VS.NET do StarPad SDK apresenta um conjunto de
bibliotecas através da directoria Libs. Cada um deles produz uma DLL para o trabalho a ser
executado através das aplicações potencialmente existentes na directoria App\ conforme
já descrita anteriormente.
Uma breve descrição dos projectos Libs e sub-projectos é apresentada a seguir.
Libs\AppLib implementa grande parte das funcionalidades reutilizáveis ao nível da
aplicação exemplo AnApp. Isso inclui uma variedade de comandos gestuais
(Commands.cs), um sistema para os unir (CommandSet.cs), uma implementação das
funcionalidades Undo/Redo (Undo.cs), um mecanismo de selecção (Floatie, Selection*.cs),
um Inking Canvas genérico para apresentação dos Strokes que será a zona de trabalho
(InqScene.cs), e um modo de interacção com a matemática (MathEditor.cs).
Libs\DollarRecognizer contém uma implementação de um reconhecedor de gestos "$1"
simples, mas eficaz e treináveis, publicado em [21].
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
27
Libs\Geom contém várias definições geométricas de pontos, vector e estruturas
relacionadas com outras coisas como linhas, ângulos, etc, bem como alguns utilitários
simples. Estruturas como ponto, vector e outras, fornecem um conjunto mais completo de
operações e operadores de estruturas análogas da Microsoft, e também são projectados
de modo que todas as operações têm uma forma funcional pura. Podem ser vistas como
um substituto completo para os tipos da WPF da Microsoft.
Libs\GestureBar implementa o trabalho descrito em [22]. Ele fornece uma interface UI
acessível para a aprendizagem de interacções gestuais que permitem uma experiência de
uso semelhante a aprendizagem com menus padrão e interfaces de ferramentas.
Aproveitando o aspecto familiar, limpo e a sensação de uma barra de ferramentas
comum, GestureBar apresenta uma divulgação de informações de gestos que consiste em
imagens animadas, dicas e detalhes. Com um design simples, GestureBar também tem
uma utilização geral para o uso de qualquer técnica de reconhecimento e integração com
padrões de componentes não gestuais.
Libs\Inq é uma equivalência das classes WPF relacionadas ao Stroke, mas utilizando as
classes de geometria (pontos, etc) e e provendo algum estilo de utilização tais como na
linguagem Perl, como, por exemplo, na indexação (stroq[-1] é utilizado para obter o
último ponto na stroq). A classe mais básica é a classe stroq, equivalente da classe Stroke
no WPF. Há também a InqCanvas, equivalente a InkCanvas, que pode ser utilizada para
colectar e exibir Stroqs sem ter que lidar com os Strokes. StroqCollection é igualmente
análogo ao StrokeCollection. StroqElement permite a exibição de apenas um stroq como
um elemento WPF e é análoga a StrokeElement. Gesturizer.cs fornece a infra-estrutura
básica para o tratamento de gestos. Features.cs tem uma série de testes para várias
características que podem fazer parte das definições de gestos. Inq.BobsCusps é usado
pelo código de reconhecimento de matemática.
Libs\Math contém um conjunto de módulos relacionados para o reconhecimento,
representação, computação, processamento e exportação de matemática. Estes módulos
(projectos) são descritos na secção 6.1.3.
Libs\Utils contém um conjunto de módulos utilitários para o StarPad SDK. São eles:
Utils\Unicode contém uma classe que lhe permite fazer referência a qualquer caractere
Unicode pelo nome e obter o nome de qualquer caractere Unicode fornecidos pelo valor.
Isto é usado principalmente pelo código de matemática, mas também pode ser utilizada
por outras aplicações.
Utils\UniDescribe é um plugin para o Visual Studio (não compilado ou testado por
enquanto) principalmente para trabalhar com o código matemático, que acrescenta um
item de menu de contexto para o editor de texto para mostrar-lhe o nome Unicode do
caractere na selecção actual.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
28
Utils\Utils fornece um conjunto de utilitários que não têm nada a ver com o StarPad,
excepto que sejam necessárias as suas utilizações. Talvez estes utilitários já devessem
fazer parte de uma biblioteca, por exemplo uma biblioteca da C# ou C++ padrão. Fornece
uma facilidade para adicionar várias operações sobre um mesmo objecto, por exemplo,
provocando um retorno, que é usado internamente por diversas bibliotecas.
Libs\WPFHelp contém actualmente o ficheiro C# chamado WPFutil.cs, que se destina a
produzir utilitários para WPF, tais como encontrar Bounding Boxes de
FrameworkElements e uma série de outros ficheiro para lidar com a interoperabilidade do
Win32 no que compete a utilização na captura de ecrã da aplicação AnApp.
5.1.3 Reconhecimento Matemático
Conforme dito anteriormente, todo o trabalho de reconhecimento, representação,
computação, processamento e exportação de matemática é feito através dos projectos
existentes na directoria Lib\Math do Starpad SDK.
Os mecanismos utilizados e a maioria das técnicas UI (User Interface) disponíveis no SDK
são os mesmos que podemos encontrar em [23], [24] e [25] onde são descritas
arquitecturas, técnicas e mecanismos para reconhecimento matemático.
O código matemático do Starpad SDK pode ser dividido em duas partes. Uma primeira
parte, e a mais importante refere-se ao reconhecimento e uma segunda que apresenta
projectos acessórios. O código de reconhecimento é composto por dois pacotes:
CharRecognizer, que faz reconhecimento de caracteres, e MathRecognizer, que analisa a
estrutura espacial dos caracteres reconhecidos em semântica matemática.
A saída semântica matemática do código de reconhecimento é representada em uma
estrutura de classes chamada Expr. É esta a estrutura principal do Starpad e que
acompanha todo o trabalho matemático através de outras estruturas de representação
matemática, também chamadas Expr, como ExprText, ExprMathML, ExprBackends,
ExprStringEgine e ExprWPF, que representam a segunda parte do código matemático.
MathRecognition é parcialmente uma classe cola que converte de Stroqs e WPF Strokes
em Windows Forms Strokes. A cola não é um perfeita, portanto, algumas técnicas de
interface (UI) requerem algum conhecimento sobre Windows Forms Strokes.
O exemplo ANAPP também faz uso do código de matemática.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
29
Figura 16 - Reconhecimento de símbolos matemáticos 1
Math\Expr é o projecto que contem o sistema de classes Expr para a representação
semântica matemática (cujo ficheiro correspondente em C# é Expr.cs), e que contém um
sistema (Parser), não utilizado, de exportação de LaTeX (cujo ficheiro correspondente em
C# é TeX.cs). A semântica da Exprs só é definida relativamente para funções padrão (+, sin, etc.). Efectivamente, as outras funções são definidas por suas traduções na
exportação de diversos sistemas de computação. Além disso, este projecto contém o
ficheiro Syntax.cs que apresenta definições de operadores urtilizados na análise de
entrada de Strokes formatação de resultados para o WPF, LaTeX e MathML.
Math\ExprBackends é o projecto que contém código para uma interface de “backends”
computacional para estruturas do tipo Expr. Actualmente, o Starpad SDK contém o seu
próprio BuiltInEngine que se apresenta rápido mas incompleto, bem como interfaces para
utilização do software Mathematica (mais testado) e Maple (pouco testado). Existe
também uma interface para um StringEngine (projecto ExprStringEngine).
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
30
Figura 17 - Reconhecimento de símbolos matemáticos 2
Math\ExprMathML contém código de exportação e de importação de Apresentação
MathML. Está escrito em F# para facilitar o reconhecimento padrão na análise MathML
pois trata-se de uma linguagem funcional.
Math\ExprStringEngine é um projecto que faz parte de uma interface para um motor de
“backend” que ainda não foi distribuído. É muito genérico, porém, concebido para
qualquer motor de matemática que utiliza MathML e devolve MathML.
Math\ExprText contém um sistema para importação de um formato de texto simples para
Expr e exportação de dois formatos de texto simples (um é muito simples, enquanto o
outro é mais perto de como um ser humano pode entrar na matemática). Foi projectado
sobretudo para depuração. Este projecto também está escrito em F# para que seja
possível a utilização de analisadores e geradores léxicos F#, através de edições feitas à
mão para o ficheiro do projecto.
Math\ExprWPF desenha um conjunto de formas da entrada Expr numa WPF
DrawingContext, com base nos algoritmos descritos em “The Texbook”. Exemplos de
utilização estão em MathRecoScaffold. Assim, realizasse uma ligação entre o WPF e a
estrutura Expr.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
31
5.2 Windows Presentation Foundation
Inicialmente chamado de Avalon, o Windows Presentation Foundation (WPF) apresenta-se
então como um subsistema gráfico da do .NET Framework 3.0 (inicialmente chamado de
WinFX), que utiliza uma linguagem de marcação, conhecida como XAML e foi
desenvolvimento para criação de aplicações e interfaces gráficas (GUI) ricas possibilitado
uma maior experiência do utilizador. O WPF está incluído nos sistemas operativos
Microsoft Windows 7, Windows Vista e Windows Server 2008, e também está disponível
para Windows XP Service Pack 2 e mais recentes, e para Windows Server 2003.
Figura 18 - Pilha da plataforma .NET
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
32
Oferece um modelo consistente de programação para construir aplicações e uma clara
separação entre interface com o utilizador e lógica de negócios. Uma Aplicação WPF pode
ser implantada em ambientes de desktop ou hospedada em um site da Web. A figura 18
apresenta a pilha da plataforma .NET com indicação do subsistema WPF.
WPF combina interfaces de aplicação, gráficos 2D, gráficos 3D, documentos e multimédia
em uma única estrutura. Seu vector baseado num motor de “renderização” utiliza
aceleração de hardware de placas gráficas modernas. Isso torna a UI (User Interface) mais
rápida, escalável e com resolução independente.
A ilustração da figura 19 [20] fornece uma visão geral das principais novidades do WPF.
Figura 19 - Características do WPF
Separação entre Aparência da Interface e Comportamento
WPF separa a aparência de uma interface de utilizador (UI) e seu comportamento. A aparência é
geralmente especificada na linguagem Extensible Application Markup Language (XAML), enquanto
que o comportamento é implementado em uma linguagem de programação como C# ou Visual
Basic. As duas partes estão ligadas entre si por eventos de ligação de dados e comandos. A
separação de aparência e comportamento traz os seguintes benefícios:

A aparência e o comportamento são fracamente acoplados.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
33

Os designers e os desenvolvedores podem trabalhar em modelos distintos.

As ferramentas de design gráfico podem trabalhar com documentos XML simples, em vez
de analisar o código.
Composição Rica
Os controlos no WPF são extremamente combináveis. É possível definir quase qualquer
tipo de controlo como o conteúdo de outro. Embora esta flexibilidade aparenta ser
horrível para os Designers, é uma característica muito poderosa desde que seja utilizada
de uma forma adequada. Basta adicionar uma imagem em um botão para criar um botão
de imagem, por exemplo, ou inserir uma lista de vídeos em um Combobox para escolher
um ficheiro de vídeo.
Alta Personalização
Devido a estrita separação entre a aparência e o comportamento, é possível facilmente
mudar a aparência de um controle. O conceito de estilos permitem controlar a aparência
quase como CSS em HTML. Modelos permitem substituir toda a aparência de um controle.
Independência de Resolução
Todas as medidas em WPF são unidades lógicas - não pixels. Uma unidade lógica é um
1/96 de polegada. Se resolução do ecrã for aumentada, a interface do utilizador fica do
mesmo tamanho - se fica é mais nítida. Como WPF é construído sobre um vector baseado
num motor de “renderização” tornou-se de uma incrível facilidade a construção de
interfaces de utilizador escaláveis.
5.3 XAML
A XAML (Extensible Application Markup Language) é uma linguagem de programação
simples e baseada em XML para criação e inicialização de objectos da plataforma .NET
com relações hierárquicas. Embora sua criação tenha sido desenvolvida para utilização no
WPF, ela também pode ser utilizada para criar qualquer tipo de árvore de objectos.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
34
Hoje, a XAML é imensamente utilizada para criar interfaces de utilizadores do WPF, para
declarar os fluxos de trabalho no WF e para o papel electrónico no padrão XPS.
Todas as classes no WPF têm construtores sem parâmetros e fazem um uso excessivo de
propriedades. Isso é feito para torná-las perfeitamente aptas para utilização de idiomas
XML como a XAML.
Vantagens de utilização da XAML
Tudo o que é possível de ser feito em XAML também pode ser feito em código não
orientado a XML. A XAML é apenas uma outra maneira de criar e de inicializar objectos. É
possível utilizar o WPF sem utilizar XAML. Cada utilizador é que decidirá ou não sua
utilização. Declarar uma UI (User Interface) em XAML tem algumas vantagens:




O código XAML é curto e muito claro facilitando a sua leitura
Existe uma separação entre o código de designer e o código de lógica
É necessária para utilização em algumas ferramentas de design gráfico como o
Expression Blend
A separação entre código XAML e a lógica da UI permite uma clara diferenciação
de papéis entre o designer e o programador.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
35
6. Aplicação MathIS Project
Todo o trabalho desenvolvido para o MathIS Project foi acrescentado ao exemplo AnApp
que vem incluído no Starpad SDK. A Figura 20 apresenta uma imagem deste trabalho.
Verifica-se assim, na aplicação MathIS Project, dois novos botões do lado direito da barra
Home. São eles o Save e o Exit.
Figura 20 - Aplicação MathIS Project
O Botão Exit simplesmente serve para terminar a aplicação fechando a janela. O botão
Save apresenta a principal nova funcionalidade adicionada a aplicação AnApp, que deu
origem a aplicação MathIS Project.
Esta funcionalidade é descrita a seguir através de um exemplo apresentado na Figura 21
cuja expressão foi criada de uma forma manuscrita e reconhecida em tempo real pela
plataforma Starpad SDK. O reconhecimento é apresentado em azul por baixo da expressão
manuscrita.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
36
Figura 21 - Expressão exemplo
Caso o botão Save seja pressionado neste momento, surgirá uma janela questionando o
utilizador acerca de uma gravação da expressão. A Figura 22 mostra esta pergunta.
Figura 22 - Janela apresentada através do botão Save
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
37
Figura 23 - Ficheiro com a expressão manuscrita não foi gerado
Caso o utilizador escolha a opção No, da janela da Figura 22 surgirá uma mensagem “Not
Saved” (Figura 23) mas se a escolha for Yes, então a expressão será guardada em ficheiro
que deverá ser escolhido ou editado (Figura 24).
Figura 24 - Janela para guardar expressão matemática manuscrita
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
38
A Figura 25 apresenta uma janela com os detalhes da gravação. O Ficheiro gravado tem o
formato .tex pois a gravação é uma conversão da expressão manuscrita para o formato
LaTeX. Por defeito, o nome do ficheiro será expression.tex.
Figura 25 - Apresentação da expressão a ser guardada e ficheiro LaTeX
Caso o utilizador decida escrever uma seta para a direita, visando a simplificação da
expressão introduzida, o mesmo processo será despoletado mas desta feita visando a
gravação, em ficheiro .tex, da expressão resultante da simplificação que será criada.
Figura 26 - Janela apresentada através do símbolo de Simplificação/Resolução
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
39
Figura 27 – Janela indicando que a simplificação não foi gravada em ficheiro
Figura 28 - Janela para guardar expressão simplificada
Por defeito, o ficheiro a ser gravado apresenta o nome simplifiedExpression.tex (Figura 28)
A Figura 29 apresenta os detalhes desta gravação.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
40
Figura 29 - Expressão simplificada a ser guardada e ficheiro LaTeX
Por fim, a expressão simplificada é apresentada no ecrã, conforme a Figura 30.
Figura 30 – Apresentação da expressão simplificada no ecrã
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
41
7. Conclusões e Trabalho Futuro
Existem muitos trabalhos de investigação nesta área conforme verificamos neste
documento. Muitos deles até se transformaram em aplicações comerciais, o que
demonstra claramente que esta área está em constante evolução e é de bastante
interesse pela comunidade científica.
O desafio de fazer matemática, sobretudo no auxílio do ensino vem trazendo cada vez
mais adeptos para o mundo da Pen-Centric Computing e, com certeza, trará uma nova
vida ao mundo da informática aliada a matemática.
O trabalho aqui descrito apresenta alguns pontos interessantes do ponto de vista do
próprio Starpad SDK, como a capacidade alargada, rápida e eficaz de expressões
matemáticas manuscritas e a capacidade de simplificação das expressões editadas
manualmente para além de reconhecimento de gestos.
Ao único exemplo existente, de nome AnApp, foi acrescentada a funcionalidade de
conversão para LaTeX, não só da expressão escrita no ecrã, bem como da expressão
simplificada ou resolvida que é gerada através de seu código interno. Apesar do Starpad já
conter um analisador LaTeX, este não era utilizado.
Algumas novas funcionalidade poderiam ser adicionadas a esta ferramenta bem como
algumas características como:

Capacidade de integração com outros softwares como Mathematica, Maple e
softwares voltados ao ensino da matemática, por exemplo, através de quadros
interactivos (Smartboards).

Exportação para MathML através da linguagem F# através da utilização do
projecto ExprMathML já existente mas não usado.

Realização de uma ligação mais estreita ao projecto de doutoramento da
Alexandra, em curso. Poderia se projectar duas situações em paralelo, sendo uma
para o doutoramento e outra para o projecto MathIS.

Adicionar mais gestos a ferramenta, que venham a demonstrar utilidade e mais
robustez e funcionalidades ao projecto.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
42

Adicionar mais caracteres e símbolos matemáticos, como por exemplo os
caracteres para demonstrações, equivalências, teoria de conjuntos,
distributividade, trigonometria e outras que venham a se tornarem úteis.

Demonstrações matemáticas com propriedades, definições, axiomas, hipóteses,
lemas e teoremas.

O projecto exemplo Anapp foi alterado e o que foi feito foi acrescentado a si. Um
novo projecto .NET, que deverá chamar-se App\MathIS poderá ser criado com o
que foi feito e com novas implementações e definições a serem desenvolvidas.
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
43
8. Referências
[1]
Kam-Fai Chan and Dit-Yan Yeung. Mathematical expression recognition: A survey.
Technical Report HKUST-CS99-04, Department of Computer Science - The Hong
Kong University of Science & Technology, 1999.
[2]
Alexandra Mendes. Structure Editing of Handwritten Mathematics First-Year
Report. University of Nottingham. 2007
[3]
Mitsushi Fujimoto, Toshihiro Kanahori, and Masakazu Suzuki. Infty editor - a mathematics
typesetting tool with a handwriting interface and graphical front-end to openxm servers.
[4]
Cassandra Guy, Michael Jurka, Steven Stanek, and Richard Fateman. Math speak & write,
a computer program to read and hear mathematical input, August 2004.
[5]
George Labahn, Scott MacLean, Mirette Marzouk, Ian Rutherford, and David Tausky. A
preliminary report on the mathbrush pen-math system.
[6]
Nicholas Matsakis. Recognition of handwritten mathematical expressions. Master's thesis,
Massachusetts Institute of Technology, Cambridge, MA, May 1999.
[7]
Steve Smithies. Freehand formula entry system. Master's thesis, Computer Science, May
1999.
[8]
Ernesto Tapia. Understanding Mathematics: A System for the Recognition of On-Line
Hand-written Mathematical Expressions. PhD thesis, Fachbereich Mathematik u. Informatik,
Freie Universit• at Berlin, 2004. http://www.diss.fu-berlin.de/2005/12/indexe.html.
[9]
Lothar Wenzel and Holger Dillner. Mathjournal - an interactive tool for the tablet pc.
http://www.xthink.com/downloads/MathJournal 2003.pdf.
[10]
Website da Maplesoft: http://www.maplesoft.com/ (acedido em Julho de 2009)
[11]
Windows 7 Math TIP URL:
http://reference.wolfram.com/mathematica/tutorial/HandwrittenMathRecognition.html
(acedido em Julho de 2009)
[12]
Referência ao MathIP no Tabletpcpost: http://www.tabletpcpost.com/math (acedido
em Julho de 2009)
[13]
MoboMath website: http://www.enventra.com/products/mobomath/overview.htm
(acedido em Julho de 2009)
[14]
Apresentação no Youtube do Sketch Equation (Tese de Doutoramento):
http://www.youtube.com/watch?v=i1UK9W2IsDo&NR=1 (acedido em Julho de 2009)
[15]
Website do projecto na Universidade de São Paulo:
http://www.vision.ime.usp.br/~nina/projetos/expressmath/index.html (acedido em
Julho de 2009)
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
44
[16]
Equation Writer da Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyID=4861aad3-1d67-4b02-bfd54add1879d3dc&displaylang=en#QuickInfoContainer (acedido em Julho de 2009)
[17]
Microsoft Center for Research on Pen-Centric Computing Website, Brown
University, Rhode Island, USA: http://pen.cs.brown.edu/research.html (acedido em
Julho de 2009)
[18]
Projecto starPad SDK do Microsoft Center for Research on Pen-Centric
Computing: http://pen.cs.brown.edu/starpad.html (acedido em Julho de 2009)
[19]
Joseph LaViola's MathPad Ph.D. project website:
http://www.cs.brown.edu/~jjl/mathpad/ (acedido em Julho de 2009)
[20]
Christian Moser’s WPF Tutorial.net. http://www.wpftutorial.net/Home.html (acedido em
Julho de 2009)
[21]
Wobbrock, J. O., Wilson, A. D., and Li, Y. 2007. Gestures without libraries, toolkits or
training: a $1 recognizer for user interface prototypes. In Proceedings of the 20th Annual
ACM Symposium on User interface Software and Technology (Newport, Rhode Island,
USA, October 07 - 10, 2007). UIST '07. ACM, New York, NY, 159-168.
DOI=http://doi.acm.org/10.1145/1294211.1294238
[22]
Andrew Bragdon, et al. “GestureBar: Improving the Approachability of Gesture-based
Interfaces”. In Proceeding of The 27th Computer Human Interaction, CHI 2009. April 2009,
Boston, MA, USA.
[23]
Robert Zeleznik, Timothy Miller, and Chuanjun Li. Designing UI Techniques for Handwritten
Mathematics. In EUROGRAPHICS Workshop on Sketch-Based Interfaces and Modeling, p.
91–98, August 2007.
[24]
Robert Zeleznik, Timothy Miller, Chuanjun Li, and Joseph J. LaViola Jr. MathPaper:
Mathematical Sketching with Fluid Support for Online Computation. In Smart Graphics: 9th
International Symposium, SG 2008. Rennes, France, August 2008. Lecture Notes in
Computer Science 5166, p. 20–32. Springer-Verlag: Berlin, Heidelberg.
[25]
Chuanjun Li, Robert Zeleznik, Timothy Miller, and Joseph J. LaViola Jr. Online Recognition
of Handwritten Mathematical Expressions with Support for Matrices. Proceedings of the
19th International Conference on Pattern Recognition. December 2008.
2
Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes
45