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