45
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

Reconhecimento de Matemática Manuscritatwiki.di.uminho.pt/twiki/pub/Research/Matisse/MathISPublications/... · Figura 19 - Características do WPF ... Introdução Escrever matemática

Embed Size (px)

Citation preview

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

Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes 2

Í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 3

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 4

Í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 5

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 6

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/

2 http://www.mathmagic.com/

3 http://twiki.di.uminho.pt/twiki/bin/view/Research/Matisse/MathIS

4 http://cctc.uminho.pt/

Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes 7

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 8

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 9

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 10

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 11

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 12

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 13

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 14

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 15

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 16

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.

3.20 MathPad2 - 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 (Free-

Form) 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 17

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 18

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 FX-

DUO 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 http://www.chartwellyorke.com/cabri.html

7 http://www.cabri.com/cabri-3d.html

Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes 19

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 20

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

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.

Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes 22

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.

A Figura 8 apresenta a Árvore de directorias do StarpadSDK dividida em Aplicações e Bibliotecas.

Figura 8: Árvore de Bibliotecas e Aplicações do

StarpadSDK

Reconhecimento de Matemática Manuscrita| MathIS |Luiz Fernando Vilar Lopes 23

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 24

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 25

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 26

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 27

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 28

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 29

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 30

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 31

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 32

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 33

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 34

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 35

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 36

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 37

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 38

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 39

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 40

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 41

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 42

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 43

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 44

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 45

[16] Equation Writer da Microsoft: http://www.microsoft.com/downloads/details.aspx?FamilyID=4861aad3-1d67-4b02-bfd5- 4add1879d3dc&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 MathPad2 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.