电子墨水处理的制作方法

文档序号:6402253阅读:176来源:国知局
专利名称:电子墨水处理的制作方法
技术领域
本发明涉及电子墨水处理。本发明的各个方面尤其是应用于电子墨水的分析,包括电子墨水的布局分析、分类和识别。本发明的附加方面涉及使用经布局分析、分类和识别的电子墨水,例如用于提供电子墨水文档内丰富和灵活的注解。
背景技术
随着计算机在社会中扮演的角色越来越扩展,开发了多种技术以将数据输入计算机。一种特别有用的提交数据的技术是通过手写。通过用记录笔或另一对象写入数字化仪以生成“电子墨水”,计算机用户可以避免与键盘输入相关的量和不便。手写输入很方便地用于以下方面,例如医生巡视、建筑师在工地上时、邮递员发送包裹、仓库工人在仓库巡视以及任何不方便使用键盘的情况下。虽然手写输入在许多情况下比键盘输入很方便,但用电子墨水书写的文字一般不能直接为大多数软件应用程序操控。因此,用电子墨水写的文字必须经分析以转换成另一形式,诸如ASCII字符。该分析包括书写识别过程,该过程基于形成电子墨水词的单个电子墨水笔画而识别字符。
书写识别算法近年来得到了大大的改善,但当电子墨水以某角度书写时其准确性减少。类似地,当分开的墨水笔画组不能很容易地被识别时,诸如当两个词写的很相近时,许多识别算法不能准确地识别电子墨水。一些识别算法还可能不正确地将实际上是绘图的电子墨水识别为文字。例如,用于可能使用加下划线、加亮(highlights)、画圈或交叉的电子墨水笔画对写入的文字的一部分进行加注解。书写识别算法可能不正确地将这些注解笔画识别为划线、数字零或字母“O”。
许多识别算法的准确性可以通过在使用书写识别算法前,对电子墨水“作语法分析”(例如通过分析电子墨水的布局和/或“分类”)而大大改善。分类过程一般确定电子墨水笔画是否是绘图的一部分(即绘图墨水笔画)或书写文字的一部分(即文字墨水笔画)。用于标识其它笔画类型的分类算法也是可能的。布局分析过程一般将电子墨水笔画分成有意义的关联,诸如词、行和段落。布局分析和分类过程因此可以用于标识电子墨水集合中的哪个笔画属于单个词,哪些电子墨水词与用电子墨水文字写入的单行相关联,电子墨水写的哪些文字行与段落相关。
虽然布局分析和分类墨水可以大大改善电子墨水的识别,许多软件应用程序研发者在识别电子墨水前未意识到这些行为的重要性。直到最近,还没有可用的布局和分类算法与现存的软件应用程序一起使用。例如MicrosoftWindows XP Tablet PC Edition Version 2002操作系统一般与MicrosoftWindows Journal软件应用程序一起卖出,用于存储、显示以及操控电子墨水。虽然Microsoft Windows Journal软件应用程序使用内部语义分析器,直到最近该语义分析器对于在操作系统上运行的其它软件应用程序是不可用。
虽然来自Windows Journal软件应用程序的语义分析过程现在可被其它软件应用程序分开访问,该语义分析器的使用不是众所周知的,且该语义分析器不能很容易地与许多软件应用程序一起使用,或用于用户期望输入书写输入的地方。而且,即使软件应用程序研发商要建立专门与期望的软件应用程序一起使用的语义分析器(这本身可能是一个困难且耗时的过程),执行语义分析的过程可能非常耗时。例如,使用相对较快的微处理器对几笔电子墨水进行语义分析,语义分析器需要几秒甚至几分钟。如果软件应用程序必须停止操作以等待语义分析过程完成,则软件应用程序对于大多数用户的实际使用而言会过于缓慢。
因此,需要一种电子墨水处理技术,该技术可以为多种软件应用程序使用,例如用于分析电子墨水的布局,对其进行分类和识别。另外,需要一种电子墨水处理技术,该技术可以处理电子墨水,然而仍能允许使用该技术的软件应用程序接收新的电子墨水输入,而不使得墨水处理的结果无效。
本发明的简要概述较有优势地,本发明的各个示例提供了电子墨水处理技术,该技术可以被多个软件应用程序用于处理电子墨水。另外,这些电子墨水处理技术允许电子墨水相对于实现该技术的软件应用程序被异步操作,使得电子墨水可以不需要停止也不会大大延迟软件应用程序的操作的情况下被处理。软件应用程序甚至可以在先前的电子墨水输入正在被处理的同时继续接收新的电子墨水输入。
本发明的各个示例中,文件或文档内的元素可以基于相互间的空间位置而被描述。例如,电子墨水笔画和打字文字可以用相同的空间坐标系统描述。使用空间信息描述文档的元素,管理文档的软件应用程序可以维持描述其文档元素间关系的数据结构。特别是,软件应用程序可以维持描述各个文档元素的类和定义多个文档元素间关联的数据结构。这些关联可以被定义为例如用于将电子墨水笔画数据或其集合与电子文档内的其它元素(诸如词、行、段落、附图、表格单元等)相关联的信息。
通过基于其空间位置而描述文件或文档数据结构内的文档元素,多种文件类型的文档元素可以使用一般的技术用以标识并操控其文档元素。尤其是,多个软件应用程序可以基于其空间位置而描述在文档内的文档元素,并使用该空间位置参考以使用一般的电子墨水分析方法。而且,通过规定分析的文档的特定区域,每个软件应用程序可以将分析过程限定为只有文档内期望的元素。
根据本发明的多个示例,为了分析输入文档的新的电子墨水输入,管理文档的软件应用程序修改与文档相关的数据结构以包括要分析的新墨水。软件应用程序然后将该数据结构(或其相关的部分)提供给墨水分析工具,它对用于分析的数据结构的一些或所有进行复制(并对独立于应用程序文档数据结构的数据的拷贝进行操作)。墨水分析工具将拷贝传递到分析过程,诸如语义分析过程(例如布局分析过程和/或分类过程)。软件应用程序可能继续其正常操作,包括接收新的电子墨水和/或其它数据,而墨水分析过程同时在被执行。除了接收新的电子墨水外,应用程序程序还可以接收任何“其它数据”,例如对现存的墨水、文字、图像、图形、表格、流程图、图例等进行大小、位置或内容的修改的数据;加入附加文字、图像、图形、表格、流程图、图例等的数据;删除现存文字、图像、图形、表格、流程图、图例等的数据。在完成所有期望分析过程后,分析结果被返回到墨水分析工具。
因此,根据本发明的系统和方法的各个示例允许墨水分析过程与使用墨水分析过程的软件应用程序的操作异步执行。该一步操作允许用户继续使用软件应用程序而不被分析过程所延时。另外,它使得多个分析过程能同时执行。
根据接收到的分析结果,墨水分析工具从软件应用程序获得电子文档的数据结构的当前版本(这可能包含当实行分析过程时新的和/或修改后的输入数据),并使得分析结果与当前的数据结构版本协调(reconcile)。通过分析的结果和数据结构的当前版本的协调,本发明的示例可以避免更复杂的技术,诸如“锁定”以异步地访问正在为软件应用程序使用的数据。而且该协调可以为任何软件应用程序调用,而不需要复杂的内部锁定规定。
在将分析结果与数据结构的当前版本协调后,墨水分析工具然后将协调的分析结果的复制提供给另一分析过程,诸如书写识别过程。同样,软件应用程序可以继续其正常操作,包括接收新的电子墨水输入和/或其它数据,而同时正在第二墨水分析过程。在完成了所有的期望的第二分析过程后,第二分析过程的结果被返回到墨水分析工具。墨水分析工具然后从软件应用程序获得数据结构的当前版本(这可能在同样包括新和/修改后的数据),并使得第二分析结果与数据结构的当前版本一致。墨水分析工具然后使用协调的第二分析过程的结果以更新数据结构。当然,可以使用任何数量的墨水分析过程和/或阶段而不偏离本发明。
上述的多种墨水分析过程以及空间信息的使用可以用于提供在电子文档内丰富、灵活以及自然的墨水注解,该空间信息将电子墨水数据与电子文档的其它特征相关或相链接。例如,本发明的方面可以用于提供电子墨水注解,该注解可以根据对于正在被注解的基础(underlying)的文档元素的变化而动态地移动和/或改变。用户一般以多种方式对文档进行注解,例如他们可以画圈、加下划线、加亮或删去单词;在边上写入注释;画出到位于边上的注解的箭头或其它指针等。而且,用户可以在更多样的不同文档类型中进行注解,包括例如文字、电子数据表、绘图、幻灯片、表格、图表、图形、流程图等。
将电子墨水注解平滑地整合入电子文档需要注解在基础的电子文档因为某个原因改变时也作出适当的反应。例如,如果用户在电子文档内圈出一个单词(作为注解),且然后在该单词前的文档的某处加入文字,这可能会导致加圈的单词的移动。在该实例中,加圈的注解应该移动,保持和单词在一起。作为另一例,如果用户从加圈的单词中加入或移去了字符,或者改变改变了其大小,则加圈的注解应扩展或收缩以适应单词的新大小。最好,当因为某种原因加下划线的电子文档重新流动和/或更新互相相关的其组成元素(例如段落、图片、专栏)的位置和/或页数时。电子墨水注解还会重新进行位置排列,并适当地位于与基础的文字或其它信息相关的位置。除非注解以该种方式对加基础的电子文档文字进行反应,否则在注解后对实时的电子文档进行编辑或共享会变得很不实际,打印输出仍是最简单且最有用的加注解的方法。
确定如何合适地改变注解的方法取决于各种与注解和电子文档相关的因子。例如,在回流情况下合适地改变注解可以取决于例如计算系统(例如语义分析器)的能力(a)将电子墨水标识为注解;(b)标识电子墨水注解类型;以及(c)标识电子墨水与基础的电子文档内的特定元素的关系。虽然可查询(query)用于获得一些或所有该种类型的信息,相比在纸上加注解的过程,该种系统使得用户的使用体验变得很麻烦。相应地,根据本发明的各个方面,以上的信息可以从以下推断出(1)电子墨水本身和(2)基础的文档的内容,包括与电子墨水相关的文档内的各个元素的空间位置。
由于确定墨水注解的意义可能非常复杂且困难,期望每个应用程序能单独实现标识逻辑的注解是不实际的,其中用户可能希望这些应用程序的文档进行加注。而且,最好能提供一种可以再次使用的组件,用于帮助该注解功能,且每个应用程序可以简单地整合。例如,就如基于笔的计算系统的操作系统提供电子墨水的收集和翻译的组件,最好操作系统能提供一种组件,它确定墨水注解的意义(还被称为“注解语义分析器”),使其在与涉及的墨水一起看来是流利的。
然而标识基础电子文档的内容在提供“智能”注解能力时有很大的困难。例如,多种不同的应用程序有完全不同的存储、管理以及回流文档的方法。本发明提供一种可以再次使用的注解语义分析器,它能确定可能的墨水注解与多种不同类型的电子文档间的关系。特别是,根据本发明的一些方面,提供给注解语义分析器一种机制,即回到应用程序以提供与正在被进行语义分析分析的墨水的相关信息(例如,与对应墨水注解的空间区域内的电子文档相关的信息,以提供给墨水注解“上下文”)。该机制非常简单,能很实际地被整合入任何基于文档的应用,且用于很大的文档会很有效(这可以在部分内经处理,诸如页等)。
根据本发明的各个示例的墨水处理技术因此允许多个软件应用程序能通过墨水分析工具实现电子墨水上的多种处理。而且,使用这些技术的软件应用程序可以在分析过程时继续其正常操作,包括接收新的电子墨水输入,而不会使得分析过程无效。
附图简述本发明以上和其它对象、特征和优势将从以下的结合所附附图的详细描述中变得清楚且完全可以被理解,其中
图1说明通用计算机计算环境的示意图,其中可实现本发明的一些方面;图2说明基于笔的个人计算机(PC)环境,其中可实现本发明的一些方面;图3和4说明与电子文档注解相关的本发明方面的示例实现的各种特征;图5说明电子文档的墨水语义分析的一般特征;图6A到6I说明在实现本发明的至少一些方面中有用的示例数据结构;图7A到12B说明在处理电子文档的电子墨水注解时的示例电子文档和有用的相关示例数据结构;图13A到14B说明在处理电子文档的电子流程特征时的示例电子文档和有用的相关示例数据结构;图15A到15C说明在处理电子文档的电子表格特征的示例电子文档和有用的相关的示例数据结构;图16A-16D根据本发明的多个实施例说明处理电子墨水的方法;图17、19-21以及23-26根据本发明的多个示例说明在示例墨水分析期间数据对象的转移;图18和22根据多个本发明的示例说明可以被操控的简单数据树;图27说明一流程图,它示出使得分析结果与文档的当前状态协调的方法;以及图28根据另一本发明的示例说明用于异步分析电子墨水的安排。
附图详述术语以下术语用于该说明书中,且除非特别声明或上下文中很清楚,术语有以下提供的意义“呈现”或“被呈现”或“正在呈现”——确定信息(包括文字、图形和/或电子墨水)如何显示的过程,无论是在屏幕、打印或以一些其它的方式输出。
“计算机可读媒质”——任何可以由在计算机系统上的用户访问的任何媒质。例如但不限制,“计算机可读媒质”可以包括计算机存储介质和通信媒质。“计算机可读媒质”包括易失和非易失、可移动和非可移动媒质,它们以任何存储信息的方法和技术实现,诸如计算机可读指令、数据结构、程序模块或其它数据。“计算机可读媒质”包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术;CD-ROM、数字化视频光盘(DVD)或其它光存储设备;磁盒式磁带、磁带、磁性光盘介质或其它存储设备;或任何其它用于存储期望信息且可以为计算机访问的介质。“通信媒质”一般体现以已调数据信号的计算机可读指令、数据结构、程序模块或其它数据,已调数据信号诸如载波或其它传输机制。“已调数据信号”意味着信号有一个或多个其特征集合或以一种方式改变以对信号中的信息编码。例如但不限于,通信媒质包括有线媒质,诸如声波、RF、红外线或其它无线媒质。任何以上的组合也包括在“计算机可读介质”范围内。
概述根据本发明的多个示例,文档(或其它类型的文件)内的元素的属性可能包括与该文档内的元素的空间位置相关的信息。因此,电子墨水笔画和书写文字可能以对于文档的相同空间坐标系统而描述和/或以文档内的其它元素的空间关系或其它关系而描述。而且,文档内的相关元素可以简单地通过标识包含这些元素的文档的空间区域和/或通过将这些元素相链接而被标识。
使用多个文档元素间的空间关系,软件应用程序可以建立并维持描述文件元素间的其它关系的数据结构。例如,软件应用程序可能维持数据结构,诸如数据树,它定义文档内多个元素的类。因此,数据结构内的节点可能对用对应书写的单词或包含一个或多个墨水笔画的绘图,且存储在节点内的数据可能进一步指明该页上的该单词的位置。一般存储的与墨水笔画和/或电子墨水单词相关的任何其它的合适或常规的数据还可以存储在单词节点。
该类型的数据结构还可以将文档元素(诸如单个墨水笔画或书写的文字字符)相关联为有意义的组,诸如单词、单词行、句子、段落等。因此,如果软件应用程序维持描述书写电子墨水的段落的文档树结构,则数据结构的叶节点可能包括与电子墨水的单个笔画相关的数据,且一个或多个笔画可以在数据结构内相关联,作为对应段落内的该单词的单词节点(例如,由语义分析器和/或识别器确定的单词)。树结构然后可能将单词节点与在段落内的行对应的行节点相关联。每个行节点进一步可以与对应段落的节点相关联。而且,软件应用程序可以维持树或其它数据结构,它将对应电子墨水笔画和/或一些其它的电子墨水的分组的节点与对应非墨水文档元素的其它节点(诸如图像、墨水绘图、书写字符、单词、行段落等)相关联。这些数据结构因此可以用于定义相关的电子墨水笔画间的关系,以区分从对非墨水文档元素进行注解的电子墨水笔画形成书写文字的不同的电子墨水笔画,和/或用将电子墨水笔画与其它文档元素相链接。
如以下详述,这些数据结构根据本发明的多个示例与墨水分析工具一起使用以分析在文档内的电子墨水。根据本发明的各个示例,软件应用程序可以通过首先为文档建立数据结构而获得电子墨水的分析。数据结构描述已经被分析的文档元素(如果有的话)间的关系,且因此可以提供任何新的电子墨水可以被分析的上下文。该数据结构或“分析上下文对象”还包括任何没有被分析的电子墨水。即该分析上下文对象还包括电子墨水,还没有建立该电子墨水与其它文档元素间的关系。对于本发明的一些示例,软件应用程序子自己建立分析上下文对象。然而本发明的其它实施例中,软件应用程序使用墨水分析工具或其它工具以建立分析上下文对象。
在软件应用程序将分析上下文对象提供给墨水分析工具(或墨水分析工具建立分析上下文对象),墨水分析工具对与包含未经分析的电子墨水的分析上下文对象的至少部分相关的信息进行复制或获取。通过复制或接收与分析上下文对象的期望部分相关的信息,墨水分析工具可以建立接下来被分析而不改变软件应用程序维持的分析上下文对象的数据结构。即该副本是独立于用于软件应用程序的实际电子文档的,且因此在以下被称为“独立于文档”的分析上下文对象。
一旦墨水分析工具已经建立了独立于文档的分析上下文对象,墨水分析工具将该独立于文档的分析上下文对象提供给一个或多个分析过程。例如,如果书写识别要对文档内的未经电子墨水实现,则墨水分析工具可能将独立于文档的分析上下文对象提供给分类和/或布局分析过程,用于将墨水分类为文字和绘图笔画(如果必要或期望)和然后将未经分析的电子墨水笔画分组为基于墨水布局的相关联的分组。在分类和/或布局分析过程正在分析独立于文档的分析上下文对象时,软件应用程序可以继续其正常操作。特别是,软件应用程序可以继续接收新的电子墨水输入和/或任何由应用程序程序维持的电子墨水内的其它数据。
当分析过程诸如语义分析过程已经完成其对独立于文档的分析上下文对象的分析时,它将分析结果返回到墨水分析工具。更具体的,语义分析过程(这还包括其它事物,如上所述的分类和布局分析过程)会返回独立于分析上下文对象的修改版本,该分析上下文对象示出先前未经分析的电子墨水的新关系。由于软件应用程序有空接收新的电子墨水输入和/或在上述的语义分析操作期间的文档的任何其它数据,然而文档的分析上下文对象的当前版本(即应用程序维持的版本)可能不同于原来提供给墨水分析工具的独立于文档的分析上下文对象和由语义分析过程的语义分析结构。
相应地,在本发明的示例内,墨水分析工具可以获得来自软件应用程序的分析上下文对象的当前版本,且使得语义分析的结果于分析上下文对象的当前版本协调。在该使协调过程中,墨水分析工具会更新分析上下文对象的当前版本以反应语义分析过程的结果。墨水分析工具然后会将协调后的数据从当前分析上下文对象传递到用于识别的书写识别过程。然而在本发明的其它示例内,墨水分析工具可以略去使协调过程,取而代之将语义分析结果直接传递到书写识别过程。
一旦语义分析与分析上下文对象的当前版本相协调,软件应用程序可能再次回到其常规操作,且因此可能继续接收新的电子墨水输入和/或任何与文档相关的其它数据。同时,识别过程从当前分析上下文对象(或者语义分析结果)中分析协调的数据。在识别过程完成其对协调的数据(或语义分析结果)的分析,它将其识别结果返回到模式分析工具。同样,由于软件应用程序可能在识别过程中已经接收了新的电子墨水输入以及/或文档的任何其它数据,墨水分析工具从软件应用程序获得分析上下文对象的当前版本。墨水分析工具然后将来自识别过程的结果与分析上下文对象的当前版本协调以用识别的结果更新分析上下文对象的当前版本。
示例操作环境图1说明了可以用于实现本发明的各个方面的通用数字计算环境的示意图。在图1内,计算机100包括处理单元110、系统存储器120,和系统总线130,系统总线130耦合多个系统组件,包括将系统存储器120耦合到处理单元110。系统总线130可能是任何类型的总线结构,包括使用多种总线结构的任何一种的存储器总线或存储器控制器、外围总线和本地总线。系统存储器120可能包括只读存储器(ROM)140和随机访问存储器(RAM)150。
基本输入/输出系统160(BIOS)包含帮助在计算机100内的元件间传递消息的基本例程,诸如在启动时的例程,它们被存储在ROM 140内。计算机100还可能包括硬盘驱动170,用于从硬盘(未示出)中读出或写入;磁盘驱动180,用于从可移动磁盘190读出或写入;以及光盘驱动191,用于从诸如CD ROM或其它光媒质的可移动光盘192读出或写入。硬盘驱动170、磁盘驱动180以及光盘驱动191通过硬盘驱动接口192、磁盘驱动接口193和光盘驱动接口194相应地连到系统总线130。这些驱动和其相关联的计算机可读媒质提供了计算机可读指令、数据结构、程序模块以及其它的个人计算机100的数据的非易失存储。可以为领域内的技术人员理解其它类型的计算机可读媒质可可以用于示例操作环境,诸如磁带、闪存卡、数字视频盘、Bernoulli录音盒带、随机访问存储器、只读存储器等。
多个程序模块可能存储在硬盘170上、磁盘190、光盘192、ROM 140或RAM 150,包括操作系统195、一个或多个应用程序196、其它程序模块197以及程序数据198。用户可能在计算机100内通过诸如键盘101和定点设备102的输入设备输入命令和信息。其它输入设备(未示出)可能包括麦克风、操纵杆、游戏垫、卫星电视天线、扫描仪等。这些与其它输入设备经常通过耦合到系统总线的串行端口接口106连到处理单元110,该接口耦合到系统总线130,但它们可能由其它接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。而且这些设备可能通过合适的接口(未示出)直接耦合到系统总线130。
显示器107或其它类型的显示设备还可以通过诸如视频适配器108的接口连到系统总线130。除了显示器107外,个人计算机一般包括其它外围输出设备(未示出),诸如扬声器和打印机。在一例中,提供了笔数字化仪165和相伴的笔和记录笔166以数字化地捕获徒手输入。虽然笔数字化仪165和串行端口界接口106间的连接在图1内示出,但实际上,笔数字化仪165可能直接耦合到处理单元110,或它可以以任何合适的方式耦合到处理单元110,如领域内已知的并行端口或另一接口以及系统总线130。另外,虽然数字化仪165在图1中被示为显示器107的一部分,数字化仪165的可使用输入区域可以与显示器107的显示区域一起共同扩展。而且,数字化仪165可能被整合在显示器107内,或它可能作为单个设备覆盖或附加到显示器107。
计算机100在使用逻辑连接到一个或多个诸如远程计算机109的远程计算机的网络环境内操作。远程计算机109可以是服务器、路由器、网络PC、对等设备或其它公共网络节点,且它一般包括许多或所有的所述的与计算机100相关的元件,虽然是为了简洁,且在图1中只说明了存储设备111。图1内描述的逻辑连接包括本地局域网(LAN)112以及广域网(WAN)113。该种网络环境在使用有线和无线连接的办公室、企业计算机网络、内部网和因特网内很常见。
当用于LAN网络环境内时,计算机100通过网络接口或适配器114连到本地网络112。当用于WAN网络环境时,计算机100一般包括调制解调器115或其它在WAN 113上建立通信的方法,诸如因特网。调制解调器115可能是内置或外置的,通过串行端口接口106连到系统总线130。在网络环境中,与个人计算机100相关描述的程序模块或计算机100的部分可以存储在远程存储设备内。
可以理解示出的网络连接为示例且可以使用在计算机间建立通信连接的其它技术。假设已存在的诸如TCP/IP、以太网、FTP、HTTP、UDP等的多种已知协议,系统可以在用户—服务器配置内操作以使得用户能从基于网页的服务器获取网页。任何常规的网页浏览器可以被用于显示和操控网页上的数据。
虽然图1的环境示出示例环境,但可以理解也可以使用其它计算环境。例如,本发明的一个或多个计算环境可以使用带有比图1和上述示出的所有方面少的环境,且这些方面可以以不同的组合或子组合出现,这对于领域内的技术人员是很明显的。
图2说明可以根据本发明的各个方面使用的基于笔的个人计算机(PC)201。图1的系统内的任何或所有的特征、子系统和功能可以包括在图2的计算机内。基于笔的个人计算机系统201包括大显示表面202,例如数字化平面显示,诸如液晶显示(LCD)屏幕,其上显示了多个窗口203。使用数字化仪204,用户可以选择在数字化显示区域上加亮并书写。合适的数字化显示屏的示例包括电磁笔数字化仪,诸如Mutoh公司(现在被称为FinePoint创新公司)或Wacom技术公司提供的笔数字化仪。可以使用其它类型的笔数字化仪,例如光数字化仪和触屏数字化仪。基于笔的计算系统201对使用记录笔204进行的姿势进行解释以操控数据、输入文字并执行常规的计算机应用程序任务,诸如建立、编辑并修改电子数据表、word处理程序等。
记录笔204可能备有按钮或其它特征以增加其功能。在一例中,记录笔204会被实现为“铅笔”或“笔”,其中一端由写入部分组成,另一端由“擦除”端组成,且当在显示上移动时,指明要被擦除的显示上的电子墨水部分。也可以使用其它类型的输入设备,诸如鼠标、轨迹球、键盘等。另外,用户自己的手指可以用于在对触摸敏感或对接近敏感的显示上用于选择或指明显示图像的部分。因此,术语“用户输入设备”如在此使用的,用于带有更广泛的定义且包括许多已知的输入设备的变体。
在各个示例中,系统提供墨水平台作为应用程序可以捕获、操控并存储墨水的一组COM(组件对象模型)服务。墨水平台还可以包括标记语言,包括类似可扩展标记语言(XML)的语言。另外,系统可能使用DCOM作为另外的实现。但可能使用另外的实现包括微软公司的Win32编程模型和.Net编程模型。这些平台可以经商业购买且在领域内是已知的。
除了与基于笔的计算系统或“薄形PC”(例如可转变的笔记本电脑或“板”形薄形PC)的最大性能一起使用,本发明的该方面可以与其它类型的基于笔的计算系统一起使用以及/或其它接受作为电子墨水的数据和/或电子笔或记录笔输入,诸如手持或掌上计算系统;个人数字助理;口袋个人计算机;移动和蜂窝电话,寻呼机和其它通信设备;手表;电器;和任何以下设备或系统包括显示器或其它显示设备和/或向用户表示打印的或图形信息的数字化仪,以及/或允许使用电子笔或记录笔的输入,或可以处理由另一设备收集的电子墨水(例如可以处理由薄形PC收集的电子墨水的常规台式机)。
本发明现在与其余的附图一起描述,这说明本发明的多个示例和帮助解释本发明的信息。包含在该详细描述内的这些特定的附图和信息不应被理解为限制发明。
空间文档视图抽象如上所述,本发明的一些方面一般涉及用于在电子文档内使用电子墨水而提供更丰富和更通用的注解的系统和方法。以下更详细地描述了本发明的多个方面和示例。
A.本发明的一般概述图3根据本发明的至少一些示例说明系统和方法的操作。尤其是,如图3内说明,用户可以以一定方式与电子文档300(图3内的文档A)交互,例如,通过向文档300加入电子墨水。在说明的示例中,电子文档300包括电子或书写的文本302(说明示例中的“采样文本”)和墨水绘图304(说明示例中的房子)。当然,电子文档300可以包括任何数据或信息,而不偏离本发明,诸如电子文本、电子墨水(绘图或文本)、图像、图形、表格、图表、其它图形或电子信息和/或其组合。为了该示例,假设原来的电子文档300(在本申请中还被称为“基文档”或“基部分”)。在该示例中,随着用户重新浏览文档A 300,她决定将电子墨水注解包括到文档300内。尤其是,在说明的示例中,注解包括在电子文本302的一些部分308周围的圈306。
在该例中,在用户输入注解后,应用程序会调用语义分析器310并请求对新输入的电子墨水数据进行语义分析(如上所述,“语义分析”可能包括例如将电子墨水分类为多种墨水类型(例如,绘图、文本、流程图、音乐等)和/或墨水布局分析(例如确定墨水笔画间的空间和位置关系,并将其分成合适的分组),以及其它的分析过程)。尤其是,应用程序会将输入电子墨水数据(在该例中,表示注解306)发送到语义分析器310,作为未经分类的墨水数据。这在图3内用输入箭头312说明。
可选地,在该时间左右或在该时间处,应用程序可以将一些或所有与基础电子文档300相关的数据发送到语义分析器310。该数据可能包括例如与文档300内的信息的空间布局相关的数据,诸如电子文本302、绘图304的位置等。另外,应用程序可能发送在文档内指明数据的等级结构的数据,这将在以下详细描述。作为另一示例,这也将在以下详细描述,语义分析器310可以调回到应用程序,请求一些与电子文档300相关的数据,诸如与与新的未经分类的墨水相关联的空间区域的电子文档300(在该实例中,数据表示书写文本和空间位于接近注解306的信息)。该到语义分析器310的数据输入在图3内用输入箭头314说明。当然,未经分类的墨水和先前分析的数据可以同时被发送以及/或对语义分析器可用,而不偏离本发明。
语义分析器310接受输入电子文档数据314和输入的未经分类的墨水数据312,并使用该信息将新的电子墨水数据分类为墨水类型。该墨水可以被分类为多种不同的墨水类型,而不偏离本发明,且多种可能墨水类型的示例在以下更详细地经描述。对于本示例,基于包含在基础文档300内的输入墨水306和信息302,根据本发明该示例的语义分析器310可能确定并将输入墨水306作为注解分类,或更特定地将其分类为对应包含特定书写文本的包含注解(例如圈)的墨水绘图。当然,其它的注解类型也是可能的,诸如加亮注解,“指向”注解、“指自”注解、锚注解(例如,不需要指向或指自)、水平跨度、垂直跨度等,且多个示例更详细地在以下进行描述。
一旦经语义分析,与注解306相关联的数据可能被包括在“文件树”等级数据结构内,该数据结构与电子文档300相关联(或任何其它合适或期望的数据结构),且该数据结构(或用于修改由应用程序维持的现存数据结构的指令)可能被发送回应用程序,如图3内为箭头316指明。如果期望,还可以从语义分析器310返回其它数据到应用程序,而不偏离本发明。例如,如在图3内指明的,与识别分析过程结果相关联的数据(诸如书写识别器或其它识别器)可以被返回到应用程序,如果语义分析器310动作包括对一个或多个识别器模块、组件和/或程序的调用。
图4说明在本发明的一些示例中使用的各个特征的实现400的示例。如说明的,生成、存储和/或由应用程序400a作为数据结构或文档模型402维持的电子文档(诸如图3的文档A)。该数据结构402可能是等级数据结构或任何其它期望或合适的数据结构而不偏离本发明。应用程序400a包括“分析上下文”对象404,它包含镜像副本、选择副本或其它与数据结构402相关的信息(例如分析上下文对象404可能是“翻译”层,其中分析上下文对象404上的查询被转换程自然文档模式结构内的查询—这样,根据本发明的方面的语义分析技术可以为与多种不同的自然应用程序一起使用而经翻译)。“平台”400b或该示例实现400的操作系统边包括“墨水分析器”方法406,它可以为应用程序400a调用。应用程序400a调用墨水分析方法406并将其传递到参考分析上下文对象404。墨水分析器方法406回调用语义分析器408(以及该示例中平台400b的一部分),语义分析器对输入数据的布局进行分类和分析,如一般上述。根据本发明的示例实施例实现的操作在以下的墨水分析部分详述。一旦语义分析器408完成器分析和处理,平台400b可以将数据发送回应用程序400a以使得文档模型402和/或分析上下文对象404基于语义分析器处理和结构而重建其数据结构,如在图4的箭头410处一般说明的。
图5一般说明在本发明的至少一些示例中用于存储电子文档数据的数据结构的示例,例如作为“分析上下文”对象404的一部分、作为文档模型402或作为由语义分析器408生成和/或输出的数据结构。在图5内尤其说明了示例电子文档500。当存储为分析上下文对象502或进行语义分析时,数据结构可能包括被分类或安排成不同的分组或“节点”的多个文档元素。例如,如图5内说明,电子文档500包括三个电子文本段落504、506和508;一个电子墨水绘图510以及一个电子墨水注解512。在图5内将用于电子文档500的示例分析上下文数据结构502示出为顶层元素列表。特别是,节点元素504(a)对应电子文档内的段落504,节点元素506(a)对应电子文档内的段落506,节点元素508(a)对应电子文档内的段落508,节点元素510(a)对应电子文档内的墨水绘图510,以及节点元素512(a)对应电子文档内的墨水注解512。另外的节点可能被存储在数据结构(例如等级安排内)作为图5内说明的顶层节点504a、506a、508a、510a和512a的父节点和/或自节点,如下将详细描述。
B.上下文节点和等级数据结构图6A到6I根据本发明的一些示例说明多个上下文节点的示例以及数据结构,它们可以用于构建、分析电子文档数据并对其进行语义分析,诸如分析上下文对象。图6A说明示例数据结构600,它可能用于存储未经分类的墨水数据(例如由用户新近输入的墨水,它还没有经语义分析)。该示例数据结构600包括根节点602(这可能对应应用程序中的整个电子文档、文档的特定页或一些合适或期望的数据分组,诸如应用程序使用的分组)。任何合适和期望的数据可以包含在根节点602中,诸如页号、到前一页以及下一页的指针、边位置或大小等。每个根节点602可能包括任何数量的未经分类的墨水节点604为子节点,且每个未经分类的墨水节点604还进一步可能包括任何数量的单个笔画节点606(在等级结构内的最后节点(在该示例中为笔画节点606)还可能在该说明书中被称为“叶子节点”)。数据结构600的多个节点可能包括任何对应节点的期望或合适的数据。例如,笔画节点606可能包括数据表示数字化仪点或其它标识电子墨水笔画的数据;笔画位置或定向数据;笔画色彩数据;笔画压力数据;笔画输入计时数据;笔画ID数据;和/或任何其它的常规或有用的数据,用于在能接收电子墨水的系统和方法中存储笔画信息。类似地,未经分类的墨水节点604可能包括任何与墨水或节点相关联的期望或合适的数据,诸如数据表示包含在节点内的所有笔画的边界框的大小;边界框位置;输入信息;墨水的几何信息(诸如例如凸壳信息);和/或任何其它常规或有用的与包括在节点内的未经分类的墨水笔画相关的数据。或者,如果期望,笔画数据一般可以被保存为另一节点(例如单词节点、表格节点等)的特性,而不是文档树内的分开节点。
一旦未经分类的墨水被发送到分类器、布局分析器、识别器和/或另一语义分析系统,至少一部分墨水可以相关联在一起和/或被分类为多种不同类型,且与墨水相关联的数据结构可以被改变而对应各种相关和其分类为的类型。图6B说明电子墨水的示例数据结构610,它被分类为墨水文本。使用语义分析技术,包括在领域内已知和使用的语义分析器,输入电子墨水笔画(例如在下笔事件和时间上接着的提笔事件或一些同样的方式收集的电子墨水数据)可以经语义分析并以等级方式存储,其中相关的单个墨水笔画可以经分组在一起并存储为墨水单词,线性安排的墨水单词可以经组合在一起并存储为墨水行,相关的墨水行可以被分组在一起并存储为墨水段落,且相关的墨水段落可以被存储为电子文档(例如在单个的页部分,作为整个文档或以任何合适的根分组)。对应经该方式语义分析并存储的电子墨水数据示例等级数据结构610,如图6B说明,可能包含根节点612,这可能对应整个电子文档、页、或另外为应用程序使用的分组。每个根节点612可能包含任何数量的对应段落或类似的电子墨水笔画分组的节点614。段落节点614可以包含任何数量的单个行节点616,这接着可以包含任何数量的单个墨水单词节点618,这进一步还可以包含任何数据量的单个笔画节点620,该节点对应输入电子墨水数据的单个笔画。可选地,如上所述,笔画数据可以被存储为相关联的单词节点的“特性”,如果需要。多个节点612、614、616、618和620可以存储任何与多个单个笔画或包含在节点内的笔画的集合相关的合适数据,类似于空间定向或定位数据和/或上述类似的其它数据。
其它对应输入电子墨水笔画的数据类型和数据结构安排也是可能的,而不偏离本发明。例如,分类、布局分析或识别器技术可以确定输入电子墨水形成墨水绘图。图3说明示例墨水绘图304,它包含几个单个墨水笔画。图6C和6D说明示例等级数据结构,它可以用于被确定于墨水绘图相关的电子墨水数据的分组和存储。如在图6C内示出的,数据结构630包括根节点632(这可能对应整个电子文档、电子页、或一些其它数据的分组,如上所述)。每个根节点632可能包括任何数量的单个墨水绘图节点636(例如,使得每个单个绘图由单个的节点,它存储关于例如绘图宽度、绘图高度、绘图位置、边界框大小等的数据),且每个墨水绘图节点636可能包括任何数量的单个墨水笔画节点638(对应组成绘图的单个墨水笔画)。可选地,墨水笔画数据可以被存储为其对应墨水绘图节点(或其它节点)的“特性”。
图6D说明包含一个或多个墨水绘图的电子文档的另外的数据结构630a。在该示例中,电子文档或数据的页或其它的分组(如由根节点632a表示)可能包含电子墨水绘图的一个或多个组(由节点634a表示),带有其相关的一起的数据,并以图6C描述的等级方式存储(例如,整个电子文档(由根节点632a表示)可能包括几个单独页(每个由组节点634a表示),且每个单个页可以由一个或多个单个墨水绘图(每个由墨水绘图节点636a表示),且每个单个墨水绘图可能包含一个或多个单个墨水笔画(每个由笔画节点638a或墨水绘图节点的特性表示)。值得注意的是组和墨水绘图可能是同一根节点或任何组节点的孩子。另外,如果需要,组节点可以包含附加的组节点。当然,还可以使用其它合适的数据结构用于存储墨水绘图,而不偏离该发明。
然而,等级数据结构不限于与输入电子墨水数据一起使用。输入打字文本(例如来自键盘)还可以关联成多个组并存储在等级数据结构中。图6E说明该种数据结构640的示例。该数据结构640可能包括根节点642(例如类似于上述的根节点)。每个根节点642可以包括任何数量的文本段落节点644(对应文本的段落),每个段落节点644可以包括任何数量的文本行节点646(或者,文本句子节点),且每个行节点646可以进一步包含任何数量的单个文本单词节点648。如果需要,文本单词会进一步被分成单个文本字符节点,且进一步被分为单个字符特征节点(与例如每个字符的基线、衬线、上行字母、下行字母特征)。多个节点可以存储任何与文本相关的合适数据,诸如段落、行或单词空间位置、内容、大小等;页边缘;边大小或位置;页数目等。
以上连同图6A到6E描述的各种数据结构说明指包含电子墨水数据或电子打字文本数据的数据结构。语义分析技术可以被用于分析、组合、相关联并将这些不同的数据类型在单个数据结构中组合而不偏离本发明。图6F说明示例数据结构650,其中电子文档或其一部分(由根节点652表示)包含一个或多个单个段落(由段落节点654表示)以及一个或多个单个行(由行节点656表示)。行潜在地可以包含打字文本(由文本单词节点658表示)和电子墨水文本(由墨水单词节点660和墨水笔画节点662表示)。每个单个段落、行和单词节点(均为打字文本和墨水单词)会包含合适的独立数据,取决于段落、行和单词的内容。附加或或者,单个单词可以进一步包括墨水字符和打字字符,而不偏离本发明。
其它电子数据还可以被包括在电子文档的数据结构中(包括等级数据结构)而不偏离本发明。例如,图像数据(诸如数字照片、图形信息等)可以被包括在电子文档的数据结构内,例如如图6G的数据结构664示出。如在该示例中说明的,数据结构664包括电子文档或其一部分(由根节点666表示),它包含一个或多个数据的单个分组(由组节点668表示)。该示例中的每个数据的分组进一步可能包括电子图像(由图像节点670表示),以及打字文本(由段落节点672、行节点674和文本单词节点676表示),如连同图6E和6F一起一般描述的。当然,类似图6G内说明的数据结构还包括电子墨水数据(例如类似图6A到图6D内说明的数据结构)或其它期望的数据类型,而不偏离本发明。
图6H根据本发明的至少一些示例说明可能被使用的另一潜在数据结构680的示例。尤其是,图6H的数据结构680对应包含一个或多个列表(由列表节点684表示)的电子文档或其一部分(由根节点682表示)。电子文档内的列表可以包含任何数量的单个列表项(由列表项节点686表示),且每个列表项可以包含多种不同类型的电子信息。例如,一些列表项可选地可以包含列表墨点,这可以由打字墨点或电子墨水墨点(墨水墨点节点688包括一个或多个对应的墨水笔画节点690,这在图6H的示例中说明)组成。另外,每个列表项可选地可以包括一个或多个电子墨水段落(由节点链692表示),一个或多个墨水绘图(由节点链694表示),和/或一个或多个打字段落(由节点链696表示)。另外(或或者),每个列表项可选地可以包括一个或多个图像(由图像节点698表示)和/或一个或多个数据分组,诸如上述连同图6D和6G描述的分组(由组节点链700表示)。由于多个节点和/或节点链692、694、696、698、700可以一般对应在图6A到图6G内说明的示例数据结构,以及对应这些数据结构的子集和/或分组,略去进一步的说明。如果需要,在至少一些实例中,单个列表项节点686还可以自己包含带有类似图6H内说明的数据结构的列表。
图6I说明另一示例数据结构710,它可以用于本发明的至少一些示例中。该示例数据结构710对应经分析、相关联在一起、经分组并存储为表格的电子数据。在该说明的示例中,每个电子文档或其一部分(由根节点712表示)可能包括一个或多个表格(由表格节点714表示)。表格在该例中,可以包括一或多行的信息(由行节点716表示),且每行可以包括一个或多个单个单元格(由单元格节点718表示)。单个单元格可以包括一个或多个数据结构包括例如上述的多种不同的数据结构的任何一种。在说明的示例中,单个表格单元格被示出为潜在包含任何数量的图像(由图像节点720表示)、任何数量的打字文本段落(由节点链722表示)、任何数量的分组(由节点链724表示)、任何数的墨水绘图(由节点链724表示)、任何数量的附加表格(由节点链728表示)以及任何数目的列表(由节点链730表示)。当然,任何合适或期望的数据结构可能被包括在表格内而不偏离本发明,包括上述的多种特定数据结构和/或数据结构的组合和子集,例如如上述的这些。
任何合适和期望的数据可以被存储在多种不同的节点内,包括上述的多种数据类型。为了与关于注解的数据处理一起使用,可能在本发明的至少一些示例中,多个节点存储与电子文档内的空间位置、定向或节点位置相关的数据是有用的,可选地由于该空间信息与电子文档数据结构内的其它节点相关或相链接。
而且其它类型的语义分析器、分类器和/或识别器和数据类型可以被使用而不偏离本发明。例如识别器可以用于分析、识别、分组和/或将以下元素相关联电器或电子符号(例如电阻、电压源、电容等)、音乐符号、数学符号、流程元素、圆形分隔统计图元素等,而不偏离本发明。
图6A到6I说明的数据结构指示可以根据本发明的方面而使用的各种数据结构的示例。领域内的技术人员可以意识到使用的特定的数据结构可以作很大的改变而不偏离本发明。例如,可能使用表示不同布局分组的不同的节点,可以加入附加的节点类型或一些描述的节点类型可以被省略而不偏离本发明(例如可以在表格数据结构内使用列节点而不是行节点)。另外,以上的描述为与语言和文本表示使用而最优化,其中一页中的字符从左到右、从上到下地被读取。设计与其它语言和字符安排一起使用并与之对应的数据结构,例如可以使用适合从右到左、从上到下、从下到上以及其组合的语言读取的数据结构,而不偏离本发明。另外,如果需要(特别是对一些语言,诸如亚洲语言),笔画可以经合适地组合成字符,字符然后可以被组成行,而不使用中间“单词”节点,如上所述。作为另一示例,可以略去行节点的使用且单词节点可以被组合在一起作为段落和/或其它期望的分组。例如,可以使用适应特定语言的特征的这些和其它的数据结构的变体,而不偏离本发明。
C.本发明的方面在注解上的应用本发明的方面,包括上述的上下文节点的使用的等级数据结构,可以被用于提供电子文档内的“智能”电子墨水注解。如上所述,基于笔的计算系统的一个期望且有利的使用是在电子文档的注解内。然而,为了特别有用且有效,在基于笔的计算系统上的文档内用电子墨水进行的注解应足够灵活使得如果且当与在基础文档内的多个元素相关联的特征因为某个原因改变时(例如边改变、显示大小改变、字体改变、信息加入、信息删除等),注解能基于对基础文档内的加注的元素的改变准确地改变位置和/或其它特征。这可以例如通过将与注解相关联的至少一个上下文节点与和基础文档相关联的一个或多个上下文节点相链接。在至少一些实例中,与基础文档相关的相关联并存储的数据和/或特征,诸如与空间属性、位置和/或一个或多个文档元素的位置,可以用于控制注解的位置、外观和/或其它特征。
图7A和7B说明可以通过电子墨水应用到电子文档的注解的一例。如图7A内说明的,电子文档750包括句子“Today the sky is green”。基于笔的计算系统的用户使用电子墨水对该文档750进行注解,在“green”一词上加下划线(下划线注解在参考号752处示出)。图7B说明对应该复合电子文档750的示例等级数据结构760(整个电子文档750在数据结构760内由根节点762示出)。一旦经完全语义分析,数据结构760会包括示出整个文档结构的上下文节点。更特别的是,电子文档750内的与打字文字相关的信息会经分析并相关联在一起以指明电子文档750包含一个段落(段落节点764),段落包含行(行节点766),且行包括五个单词(对每个单词“Today”、“the”、“sky”、“is”和“green”相应对应一个文本单词节点768a-768e)。另外,语义分析器会注意与注解752相关的电子文档750内数据的存在,且它会将给数据分类为电子墨水绘图(墨水绘图节点770)。另外,基于墨水绘图笔画在基础文档750内的关于打字文字的定位和位置,语义分析器能识别并将注解分类为“加下划线”注解并生成下划线节点772。另外,语义分析器会将所有对应下划线注解的实际墨水笔画的笔画数据存储在一个或多个笔画叶子节点774内(可选地,笔画数据可能被存储为下划线节点772或另一合适节点的特性)。
另外,为了维持在与该单个词“green”在电子文档750内任何地方出现一起的电子墨水下划线笔画752(例如如果单词因为某个原因被移动),数据被保存在该示例的数据结构760内,以指明下划线上下文节点772(例如在该链接示例中“源”上下文节点)为单词“green”(在该示例中的“目的地上下文”节点链接到文本单词节点768e上,如在图7B中用箭头776说明的,且数据被保存以指明文本单词节点768e为下划线节点772链接,如箭头778指明。该链接将下划线节点772“紧扣”到文本单词节点768e(例如“锚”类型链接)。相应地,如果由于某个原因,存储在文本单词上下文节点768e内的数据指明单词“green”的位置在电子文档内改变了,则链接776和778会允许应用程序检测到,如果可能,它应将下划线注解呈现到在改变的电子文档内的文本单词上下文节点768e的位置和/或空间位置。如另一示例,如果“边界框”数据、单词宽度数据或其它存储在上下文节点768e内的数据指明单词大小或位置因为某个原因而改变(例如由于字体大小改变、加入字符、删除字符、改变字符等),则应用程序然后可能改变呈现的下划线的大小(例如伸展或截短),如果可能以对应与上下文节点768e表示的文本单词相关的新大小。如果可应用,如果对基础文档的改变使得加注解的文档元素出现在多行上(例如由于加入的单词、以连词符号连接等),根据本发明的至少一些示例的系统和方法可以分解注解的笔画以出现在多于一行上。而且,可以使用在节点或任何合适的表示链接的数据间的任何合适的链接安排而不偏离本发明。
图8A和8B说明另一注解示例。在该例中,如图8A说明的,电子文档800同样包括句子“Today the sky is green,”但在该实例中,基于笔计算系统的用户已经使用电子墨水对文档800进行注解以删去单词“green”(删除在参考号802示出)。一旦完全经语义分析,图8B说明对应该复合电子文档800的示例等级数据结构810(因为图8B的大部分的特定上下文节点对应图7B的上下文节点,如图7B相同的参考号在图8B内使用,且略去重复的解释)。在该实例中,语义分析器会注意电子文档800内的数据相对注解802的存在,且它会将该数据分类为电子墨水绘图(墨水绘图节点812)。另外,基于相对于在文档800内的基础打字文本的内容的墨水绘图笔画的定位和位置(例如,删除注解横跨文本单词),语义分析器会识别并将注解分类为“删除”注解并生成删除节点814。另外,语义分析器会存储所有对应在一个或多个笔画叶子节点816内的删除注解的实际墨水笔画的所有笔画数据(或者,作为删除节点814或其它合适的节点内的特性)。
如在图7A和7B中描述的加下划线注解的情况,如果单词因为某个原因移动,则删除注解可以与该单个单词“green”维持在一起。同样,这可能例如通过将数据保存在数据结构810内而完成,以指明删除上下文节点814(在该例中的“源”上下文节点)与单词“green”的文本单词节点768e相关联(该示例中的“目的地”上下文节点),如在图8B中由箭头818说明,并通过将数据存储在数据结构内以指明文本单词节点768e与删除节点814相链接,如箭头820指明。在该示例中的链接类型是“水平”跨度链接类型,它将删除节点814紧扣到文本单词节点768e。相应地,如果因为任何原因,存储在文本单词上下文节点768e内的数据指明单词“green”(或与节点768e相关的其它单词)的位置和/或大小在电子文档800内改变了,则链接818和820会允许应用程序检测到,如果可能它应调整删除的呈现和/或调整其大小(如果可能)到存储在改变的电子文档内的上下文节点768e内存储的单词的位置、空间位置和/或大小。同样,可以使用任何在节点或任何合适的表示链接的数据间合适的链接安排而不偏离本发明。
图9A和9B说明另一注解类型的示例并进一步示出与多于一个的文本单词的相关联或链接注解。在图9A和9B说明的示例中,电子文档900同样包括句子“Today the sky is green,”但在该实例中,基于笔计算系统的用户已经使用电子墨水对文档900进行夹住以圈出单词“is green”(圈或“包含”类型注解在图9A的参考号902内示出)。图9B说明一旦经完全语义分析对应该复合电子文档900的示例等级数据结构910(因为图9B的大部分的特定上下文节点对应图7B的上下文节点,如图7B相同的参考号在图9B内使用,且略去重复的解释)。在该实例中,语义分析器会注意电子文档800内的数据相对注解902的存在,且它会将该数据分类为电子墨水绘图(墨水绘图节点812)。另外,基于相对于在文档900内的基础打字文本的内容的墨水绘图笔画的定位和位置,语义分析器会识别并将注解分类为“包含”注解并生成数据结构910内的墨水包含节点914。另外,语义分析器会存储所有对应在一个或多个笔画叶子节点916内的包含注解的实际墨水笔画的所有笔画数据(或者,作为删除节点914或其它合适的节点内的特性)。
如在图7A和7B中描述的加下划线注解的情况,如果单词因为某个原因移动,则包含注解可以与该单个单词“green”维持在一起。同样,这可能例如通过将数据保存在数据结构910内而完成,以指明墨水包含上下文节点914(在该例中的“源”上下文节点)与单词“green”的文本单词节点768e相关联(该示例中的“目的地”上下文节点),如在图9B中由箭头918a和918b说明。另外,数据可以被存储在数据机构910内以指明文本单词节点768d和768e由包含节点914相链接,如图9B内的箭头920a和920b指明。该链接是“包含”类型链接。相应地,如果因为任何原因,存储在文本单词上下文节点768d和768d内的数据指明单词“green”(或与这些上下文节点相关的其它单词)的位置和/或大小在电子文档900内改变了,则链接918a、918b、920a和920b会允许应用程序检测到,如果可能它应调整包含注解的呈现和/或调整其大小(如果可能)到存储在改变的电子文档内的上下文节点768d和768e内存储的单词的位置、空间位置和/或大小。另外,如果用户在单词“is”和“green”之间加入单词,或如果单词或字符以某种方式被移去或改变,应用程序可能改变包含注解的大小和/或位置以适应这些改变。同样,可以使用任何在节点或任何合适的表示链接的数据间合适的链接安排而不偏离本发明。
图10A和10B说明另一经常使用的注解类型的示例,特别是“边注释”类型注解。在该例中,如图10A说明的,用户对包含句子“Today the sky is green,”的电子文档1000进行注解,其电子墨水边注解1002声明“it’s not green!”。值得注意的是,在该实例中,如图10B示出,与打字本本相关联的数据结构1010已经被改变,因为该文本在电子文档1000内为两行(不同于图7A、8A和9A中单行示出)。相应地,数据结构1010有两个行节点1012和1014,且第一个行节点1012包括文本单词节点768a和768b(与单词“Today”和“the”相关联)且第二行节点1014包括文本单词节点768c、768d和768e(与单词“sky”、“is”和“green”相关联)。
一旦复合电子文档1000经完全语义分析,语义分析器会将注解1002识别为包含电子墨水文本,且它会将该注解(由于其在文档1000的边上的位置)分类为“边注释”类型注解。相应地,语义分析器会为边注解生成合适的上下文节点1016。由于该边注释1002指包含电子墨水文本,语义分析器进一步生成与电子墨水的等级结构相关联的段落节点1018、两个行节点1020和1022以及合适的墨水单词节点1024、1026、1028和笔画节点1030、1032和1034(如前所述,可选地或或者,墨水笔画数据可以存储为墨水单词节点的特性,以及/或行节点可以从数据结构1010中略去)。
在图10A和10B的示例中说明了不同的链接关系。特别是在该示例中,基于边注解1002相对于页边缘和基本文档内容的定位和定向,语义分析器会将数据保留在数据结构1010中,指明与边注解1002相关联的段落节点1018(在该示例中为“源”上下文节点)链接到与打字文本相关联的段落节点764,如图10B内用箭头1036说明的。另外,语义分析器会将数据保留在数据结构1010内以指明与打字文本相关联的段落节点764由边注释1002的段落节点1018链接,如箭头1038说明。这是“紧扣”类型链接安排,其中墨水段落紧扣到文本段落。这样,无论打字段落在电子文档1000内移到何处,甚至可选地如果附加的行和/或单词被加入段落,和/或如果在段落或电子文档1000内进行改变,链接1036和1038会允许应用程序检测如果可能它应该移动边注解1002以保持在相链接的打字段落相邻的边内。当然,可以存储其它链接安排或与链接相关联的数据而不偏离本发明。例如,边注解节点1016可能被链接到打字段落的一个或多个单个文本单词节点,诸如第一文本单词节点768a。
图11A和11B是根据本发明的至少一些示例,比较复杂的由系统和方法识别的注解的示例。在说明的示例中,电子文档1100同样包括句子“Today thesky is green,”,但在该实例中,用户使用不同的注解类型的组合对电子文档1100进行注解。尤其是,用户已经在单词“green”上打圈画出包含类型注解1102,包含电子墨水单词“blue!”,以及连接符类型注解1106(例如在该示例中的箭头)从包含类型注解1102指向边注释注解1104。
由于各个注解类型相对于基本文档、打字文档文本和文档的边缘的相对位置和空间定向,根据本发明的至少一些示例的语义分析器系统会识别多种注解类型、其内容以及相互间的关系以及与打字的电子文档的关系,如上所述。图11B示出由语义分析器生成的电子文档1100的等级数据结构1110。由于打字文本的等级结构与图7B内描述的相同,所以对图11B的结果使用相同的参考号,略去详细描述。而且,如在图11B内说明的,墨水包含类型注解1102的节点链1112类似于图9B说明的,且边注释类型注解1104的节点链1114类似于图10B内说明的。相应地,不包括这些节点链的详细描述。
为了维持注解与基础文本的合适部分和空间位置的空间位置,由语义分析器提供在注解节点间的多个链接以及合适的文本节点并将其存储在数据结构1110内。在说明的示例中,墨水包含节点1116(在此为“源”上下文节点)链接到它包含的单词的文本单词节点768e(例如在该示例中为对应单词“green”的“目的地”节点),如图11B内用箭头1118说明的。类似地,数据被存储在数据结构1110内,指明文本数据节点768e由墨水包含节点1116链接,如图11B内由箭头1120指明。这是“包含”类型链接安排。
如上所注,根据本发明的该示例的语义分析器进一步识别电子文档1000包括对应墨水连接符的墨水绘图1106(即在该示例中包含注解1102和边注释注解1104间的箭头)。该连接符注解1106作为墨水绘图被存储在数据结构1110内(由墨水绘图节点1122表示),这包含指明注解类型的节点(在该示例中,墨水连接符节点1124),这还进一步包括数据,指明笔画或组成连接符的笔画(例如在笔画节点1126内或在与墨水连接符节点1124(或其它合适节点)相关联的特性内)。另外,信息被存储在数据结构1110内,以指明墨水连接符节点1124(在该示例中为“目的地”节点)指自墨水包含节点1116(在该示例中“源”节点)。该链接(“指自”类型链接)在图11B内用箭头1128表示。另外,数据结构1110进一步包括指明墨水连接符节点1124的数据(在示例中“源”上下文节点)链接到墨水单词节点1132(在该示例中“目的地”上下文节点)。链接(“指向”类型链接)在图11B内用箭头1134表示。或者,墨水链接节点1124可以与节点链1114的墨水行节点、墨水段落节点或边注释节点的任何一个相链接,而不偏离本发明。用上述的特定链接,数据结构1110指明墨水连接符1106指自圈绘图1102并指向墨水单词,如图11A说明。这些各种链接允许应用程序检测基本文档和多个注解分量间的相关联。然后,如果可能,应用程序可以将注解元素移动以合适地对应基础文档内的移动。可以使用任何合适的链接安排或与链接相关联的数据而不偏离本发明。
图12A和12B说明另一经常使用的注解特征的示例。在该示例中,如在图12A内说明的电子文档1200同样包含句子“Today the sky is green”,但在该实例中,基于笔计算系统的用户使用电子墨水对文档1200进行注解以将一星号置于接近句子的第一单词处(注解在参考号1202处示出)。图12B说明一旦经语义分析对应该复合电子文档1200的示例等级数据结构1210(因为图12B的大部分的特定上下文节点对应图7B的上下文节点,如图7B相同的参考号在图12B内使用,且略去重复的解释)。在该实例中,语义分析器会注意与注解相关的电子墨水数据存在,且它会将该数据分类为电子墨水绘图(墨水绘图节点1212)。另外,基于相对于在文档1200内的基础打字文本的内容的墨水绘图笔画的定位和位置(例如,在打字文本的行的一边),语义分析器会识别并将注解分类为“星号”、“墨水”或锚类型注解并生成星号节点1214。另外,语义分析器会存储所有对应在一个或多个笔画叶子节点1216(或其它节点)内或在星号节点的特性(或一些其它节点)的星号注解的实际墨水笔画的所有笔画数据。
在该示例中,如果打字文本因为某个原因移动,则星号类型注解可以与出现在电子文档1200内的无论哪里的该行的整个打字文本维持在一起。这可能例如通过将数据保存在数据结构1210内而完成,以指明星号上下文节点1214(在该例中的“源”上下文节点)与文本行节点766相关联(该示例中的“目的地”上下文节点),如在图12B中由箭头1218说明,并通过将数据以指明文本行节点766与星号节点1214相链接,如箭头1220指明。相应地,如果因为任何原因,存储在文本行上下文节点766内的数据指明行的位置和/或大小在电子文档1200内改变了,则链接1218和1220会允许应用程序检测到,如果可能它应调整星号的呈现调整到与存储在改变的电子文档内的上下文节点766相关联的数据的呈现对应的位置、空间位置。同样,可以使用任何在节点或任何合适的表示链接的数据间合适的链接安排而不偏离本发明。或者,如果需要,语义分析器会将星号节点1214(或其它与星号注解相关联的合适节点)捆绑到段落节点764或一个单个单词节点(例如单词节点768a)而不偏离本发明。而且如果需要,墨水绘图节点1212可以是紧扣到行节点766的源节点(或在该示例中其它对应打字文字的合适节点)。可以使用任何合适的链接安排或表示链接的数据而不偏离本发明。
借助图13A和13B内说明了链接的注解的“流程图”类型。在该示例中,电子文档1300包括流程图,它可选地作为在整个较大电子文档内的注解的部分而被包括。如在图13A内说明,注解或流程图包括打圈的或为第一包含注解1304围起的第一墨水项1302(在该例中为字母“A”)以及由第二包含注解1308打圈或围起的第二墨水项1306。另外,连接符注解1310(在该示例中为箭头)从第一包含注解1304扩展到第二包含注解1308。然而应理解,文档元素间的关系可以以不同于链接的形式表示。例如,这些关系可以通过例如使用包含相关联的文档元素的包含节点而用数据树本身的结构表示。
图13B说明一示例数据结构1320,一旦完全经语义分析,它可以与图13A内的电子文档1300的流程图注解相关联。在该示例数据结构1320中,可能对应电子文档1300的所有或部分的根节点1322作为在流程图类型注解内的节点的父节点而提供。与特定注解结构相关的第一上下文节点是对应墨水包含1304的墨水绘图节点1324。墨水包含节点1326作为子节点提供给墨水绘图节点1324,且与墨水包含注解1304相关联的特定笔画被存储在叶子节点1328内,或作为墨水包含节点1326(或其它节点)的特性。
如上关于图13A所述,注解进一步包括对应字母“A”1302的电子墨水文本。由于与其它上述的电子墨水相同,与该墨水文本相关联的电子墨水存储在等级数据结构1320内作为段落节点1330,它包含行节点1332,行节点1332包含墨水单词节点1334,节点1334可选地包含一个或多个叶子节点1336,叶子节点对应在墨水文本注解或包含笔画数据的特性内的单个笔画。存储在数据结构1320内的信息指明包含注解1304的墨水包含节点1326(“源”节点)链接到字母“A”的段落节点1330(“目的地”节点),如图13B中箭头13B说明。或者,如果需要,墨水单词节点1334或行节点1332会作为目的地节点。另外,存储在数据结构1320内的信息还指明段落节点1330为墨水包含节点1326链接,如在图13B内用箭头1340表示。由于墨水包含1308的数据结构和该示例中的注解的字母“B”1306共享与墨水包含1304和字母“A”1302相同的同一一般结构,但在图13B内的墨水包含1308和墨水单词1306后有字母“b”。当然,多种等级安排和链接结构或链接数据不同于上述特别描述的,而不偏离本发明。
注解还包括连接符注解1310,在数据结构1320内用墨水绘图节点1342表示。如上与图11B一起描述,表示墨水连接符注解的墨水附图的数据结构还可能包括墨水连接符节点1344,这可能进一步包括一个或多个特性或叶子节点1346,这包括与组成连接符1310的特定笔画相关联的数据。为了完成该示例的注解数据结构,与墨水连接符注解1310(源节点)相关联的数据链接到与两个包含注解1304和1308(目的地节点)相关联的数据。特别是,如图13B的示例示出,信息存储在数据结构1320内以指明墨水包含节点1326链接到墨水连接符节点1344(用箭头1348表示)作为“指自”注解类型。另外,信息被存储在数据结构1320内以指明墨水连接符节点1344链接到墨水包含节点1326b(用箭头1352表示)作为“指向”注解类型。这样存储的与链接相关的数据指明连接符1310从圈包含1304指向圈包含1308,如图13A内说明的。因此,存在多个链接会使得电子文档1300内的注解的一部分接着注解的另一部分,因此使得注解不受影响,即使电子文档1300在某些方面改变。当然,这整个结构还可以链接到一些如上所述的基础文档元素,而不偏离本发明。
类似地,注解可能涉及与写入注释一起的两个由连接符相连的闭圈(encloser),诸如例如“switch these!”。如果移动注解的一部分,可能需要独立地移动注解的其它部分,诸如当单词在两个闭圈之间插入。表示电子墨水注解的上下文节点和表示非墨水内容的节点间的链接可以为应用程序用于重新定位注解的部分,并当完成定位操作时将其捆绑在一起。
图14A和14B说明带有流程图类型注解或墨水结构的电子文档1400的另一示例。在该示例中,字母“A”的电子墨水注解1402连到字母“B”1404和“C”1406的电子墨水注解,以及相应地在字母“A”、“B”间和“A”和“C”间的电子墨水连接符1408和1410。
图14B内说明了在语义分析后电子文档1400的示例数据结构1420。与整个电子文档或其一些部分相关的数据可以存储在父根节点1422内。对应电子墨水单词“A”、“B”和“C”的数据有相同的段落节点(1424a、1424b、1424c)、行节点(1426a、1426b、1426c)、墨水单词节点(1428a、1428b、1428c)和笔画节点(1430a、1430b、1430c)结构,如在以上的几张附图内使用的。省略这些节点的重复描述。类似地,墨水连接符有在以上图11B和13B中使用的墨水绘图节点(1432a、1432b)、墨水包含节点1434a、1434b)以及笔画节点(1436a、1436b)结构,所以省略重复描述。当然,可以使用这些特定数据结构的变体,包括上述的可能变体,而不偏离本发明地被使用。
为了完成该示例的注解数据结构,与墨水连接符注解1408相关联的数据链接到与它连接的两个墨水单词注解1402和1404相关联的数据,且与墨水连接符注解1410相关联的数据链接到与它连接的两个墨水单词注解1402和1406相关联的数据。尤其是,如在图14B的示例中示出,信息存储在数据结构1420内以指明墨水附图节点1432a(“源”节点)“指向”墨水单词节点1428a和1428b(如相应地由箭头1438和1440表示)。类似地,信息被存储在数据结构1420内以指明墨水绘图节点1432b(“源”节点)“指向”墨水单词节点1428a和1428c(如相应地由箭头1442和1444表示)。墨水单词节点1428a、1428b和1428c作为“目的地”节点。由于多个链接,电子文档1400内的注解一部分的移动跟随着注解的另一部分,从而使得注解不受影响或被链接,即使电子文档1400以某些方式改变。而且,该注解可以与电子文档内的一个或多个其它元素链接,诸如打字文本、绘图、图像等,而不偏离本发明。
图15A到15C说明电子文档1500和示例数据结构的示例,这包括以带有多行和多列的表格形式的电子墨水注解。特别是,如在图15A的示例中说明的,电子文档1500包括带有两行和两列的表格1502(构成四个单元格),且表格的每个单元格由电子墨水2的边线组成并包含电子墨水文本输入。
在图15A内说明电子墨水表格1502内的示例数据结构1510,在经完整语义分析后,在图15B内示出。在该示例中,数据结构1510包括根节点1512,这可以对应电子文档1500的所有或部分。在根节点1512下,与表格相关的数据存储在表格节点1514内。这可以包括例如指明表格大小、表格位置、行数、列数、边框大小等的数据。在表格节点1514下,为表格的每行提供分开的行节点(在该示例中,如在图15B内说明的,提供两个行节点1516和1518)。该示例数据结构的每个行节点进一步包括一个或多个单元格节点(在说明的示例中,行节点1516包括两个单元格节点1520和1522,而行节点1518包括两个单元格节点1524和1526)。由于该示例的每个单元格包含电子墨水文本数据,该示例等级数据结构1510的剩余由类似的上述的段落节点、行节点、墨水单词节点和笔画节点。当然,表格单元格可以包含一个或多个除了和/或以上关于图6I详细描述的各种数据类型的其它类型数据,而不偏离本发明。作为另一示例,不包含行节点1516和1518,数据结构可以包含列节点,这可以包括单元格节点、段落节点等,如图15B示出。组成实际表格的墨水笔画可以例如存储为表格节点1514的一部分(例如如与该节点相关联的特性)、存储为取决于表格节点1514(此下存储着相关联的笔画)的墨水绘图节点和/或在数据结构1510内的任何其它合适位置。
在图15C内示出了包括表格1502的电子文档1500的另一示例数据结构1530。在该示例中,根节点1512、表格节点1514、行节点1516和1518以及单元格节点1520、1522、1524和1526与在图15B中说明的那些相同。然而,不是将电子墨水文本数据作为子节点包括在多个单元格节点1520、1522、1524和1526中,电子墨水文本数据的段落节点1528a、1528b、1528c、1528d(或任何其它合适或需要的数据结构)链接到其相应的单元格节点1520、1522、1524和1526,如图15C中用箭头1530a、1530b、1530c和1530d相应示出。在该示例中的单元格节点对于包含在其中的墨水单词可以作为包含类型“源”节点,且墨水段落、行或单词节点作为“目的”上下文节点。由于多个链接,电子文档1500内的表格注解的一个部分的移动后接着注解的另一部分,从而保持表格注解不受影响或经链接,即使电子文档1500以某些方式改变。而且,部分基于基本电子文档,表格还可以链接到一些其它存在的节点。同样,或者,行节点1516和1518可以用包含多个单元格的列节点替换,而不偏离本发明。而且,组成实际表格的墨水笔画可以存储在任何位置而不偏离本发明,例如作为表格节点1514的一部分(例如作为与该节点相关联的特性)、作为取决于表格节点1514的墨水附图节点(带有其下存储的相关联笔画)和/或在数据结构1510内任何其它合适的位置。
当然,与上述各个示例注解类型相关的各个附图仅是描述可能的注解类型、注解的使用以及可以包含在注解内的信息的示例。领域内的技术人员可以意识到可以对此进行多种修改和改变,而不偏离本发明。例如,注解可以包含许多不同类型的数据(诸如电子墨水文本、绘图、图像、打字文字和图像等),以及其组合和排列而不偏离本发明。
另外,多种链接方案与多种上述的数据结构一起描述。该种链接方案或技术只是多种数据节点可以被链接在一起的方式的示例。任何合适的链接安排会与链接相关的数据可以被存储而不偏离本发明。例如,可能用单个标识符表示每个节点(诸如“全局唯一标识符”即GUID)以及使用GUID对(或更多)表示链接。作为另一方法,单个的链接可能被用于链接节点,而不是一些上述示例描述的双链接安排。作为另一可能,如果需要或期望,节点可以与自己链接(自链接,例如即源节点与目的地节点是同一节点)。领域内的技术人员可以意识到可以使用任何合适的将多个数据集合相互间相链接或相关联,不偏离本发明。
墨水分析现在根据说明本发明的示例描述在电子文档内用于分析电子墨水的多种示例技术。特别是,图16A到16E说明根据本发明的多个示例分析文档步骤的流程图。图17到26说明在分析过程中使用的不同组件间的关系。
回到图17,该


应用程序1701。应用程序1702维持文档1703,该文档可以包含电子墨水数据1705和非墨水数据1707,诸如打字字符或图像。如上详述,电子墨水数据1705和非墨水数据1707的特性可以由等级数据结构描述,诸如树。为了开始电子墨水的分析,在步骤1601,应用程序1701建立一种数据结构,在图1709内被标识为分析上下文对象1709。
图18说明类型的的示例树1801,该树可能被包括在分析上下文对象1709。树1801包括根节点1803以及段落节点1805。段落节点1805对应电子墨水文本的段落,例如,这可能从早先的分析过程中先前经标识。段落节点1805连到两个行节点1807和1809,这两个节点表示电子墨水文本的段落内的两行。行节点1807与两个单词节点1811和1813相关联。每个单词节点1811和1813对应由行节点1807表示的电子墨水文本的行内的单词。单词节点1811包含墨水笔画数据1815以及墨水笔画数据1817。因此,笔画数据1815和1817对应组成单词节点1811表示的单词的文本电子墨水笔画。类似地,单词节点1813包含墨水笔画数据1819和墨水笔画数据1821,这对应组成组成单词节点1813表示的单词的文本电子墨水笔画。墨水1823-1827表示新的墨水笔画,这些笔画未经分类或与其它墨水笔画或其它文档元素相关联。
因此,不是存储在单个笔画节点内的笔画,多个节点可以由相关的“笔画”特性,它存储对应与节点相关联的笔画的数据。例如(a)未经分类的上下文节点可以包含一个或多个“笔画”特性,这些特性带有一个或多个需要经分析的笔画;(b)墨水单词节点可以包含一个或多个“笔画”特性,这些特性包含一个或多个组成墨水单词的笔画;(c)绘图节点可以包含一个或多个“笔画”特性,这些特性包含组成附图的一个或多个笔画;以及(d)墨点节点可以包含一个或多个“笔画”特性,这些特性包含一个或多个组成列表项内的墨点的笔画。当然,用本发明的其它实现,单个笔画节点可以用于数据树以表示电子墨水的单个笔画,而不是将墨水笔画与诸如单词节点或绘图节点相关联。
虽然图18内示出的树1801包括墨水笔画,它们已被组织成单词、行和段落,可以理解树1801可以只包含还未经分类或还未与其它墨水笔画或文档元素相关联的新墨水笔画。例如,当用户开始在文档1705内输入电子墨水,这些开始的墨水笔画还未经分析。还可以理解,树1801只是用于表示的,且它是过度简化的,用于简化对本发明的各个方面的理解。例如,行节点一般会与多个单词节点相关联,且每个单词节点可以包含几个墨水笔画的笔画数据。还可以理解虽然树1801只包括与墨水相关的节点,分析上下文对象1709可以包括表示非墨水文档元素的节点,诸如图像和打字文本,如上详述。
回到图17,本发明的一些示例内,应用程序1701会建立并维持其自己的分析上下文对象1709。对这些应用程序1701,应用程序1701可以简单地提供到分析对象1709的参考。对这些应用程序1701,然而应用程序1701必须包含建立、填充和维持分析对象必须的机制。然而一些软件开发商不希望有提供给应用程序1701这些机制的麻烦。
相应地,然而在发明的其它示例内,应用程序1701可以实例化另一对象以建立分析上下文对象1709。例如,应用程序1701可以使用墨水分析工具或其它对象以建立和/或维持分析上下文对象1709。例如,应用程序1701可以标识或提供未经分析的墨水数据给墨水分析工具。取决于来自应用程序1701的指令,墨水分析工具可以然后建立表示整个文档1703的分析上下文对象1709,或另外指示包含应用程序1701标识的未经分析的墨水的文档的特定区域(或区域)。在一些应用程序1701内,应用程序1701可以之后维持并更新分析上下文对象1709,或者通过本身或者使用由墨水分析工具或另一对象提供的服务。在其它应用程序1701内,应用程序1701可能不维持分析文档对象1709,而是由墨水分析工具或其它对象在必要时建立新的分析文档对象1709。
一般,分析上下文对象1709会包含整个文档1703的文档元素上的信息。然而还值得注意的是,分析上下文对象1709可以包含在文档1703只有一部分内的文档元素的信息。即分析上下文对象1709可以只表示文档的空间区域内的文档元素,该文档包含新或“脏”的墨水或其它数据。如果包括电子墨水的文档区域内的所有文档元素已经经分析,则这些先前经分析的文档元素可能不包括在分析上下文对象1709内。或者,应用程序可以为每页维持分开的分析上下文对象1709,或其它与整个电子文档1703相关的数据的子集。
一旦应用程序1701已经建立分析上下文对象1709,在步骤1603内,墨水分析工具1901复制分析上下文对象1709的至少一部分,如图19示出。更特定地是,如果分析上下文对象1709不限于包含新墨水和/或其它数据的区域,如上所述,则应用程序1701会指定文档1703包含新墨水的区域和/或其它数据应被分析。应用程序1701然后调用墨水分析工具1901以复制对应于文档1703指定区域的分析上下文对象1709。(当然,如果分析上下文对象1709已经被限于描述包含新墨水的区域,则墨水分析工具1901可以复制整个分析上下文对象1709)。
虽然应用程序1701会知道哪些墨水先前未经分析,它可能不知道其电子文档1703的哪个部分(例如先前分析的墨水、文档结构内的基础数据等)影响新墨水(因此,哪个部分以送到墨水分析工具1901)。因此,在本发明的至少一些示例内,应用程序1701会通过分析上下文对象1709使得电子文档1703为墨水分析工具1901可用。应用程序1701留给墨水分析工具1901确定通过分析上下文对象1709来自应用程序1701实际需要的信息。
根据对分析新数据的调用,墨水分析工具1901对分析上下文对象1709进行多次呼叫,如果需要的话以从分析上下文对象1709获取信息,该信息在分析由应用程序1701指定的区域内的新墨水和/或其它数据时需要。例如,除了新墨水和/或其它数据,墨水分析工具1901可以查询分析上下文对象1709,以获得关于已经分析的指定区域内的墨水和/或数据相关的信息,或获得关于指定区域内的非墨水文档元素的信息。“指定区域”在本发明的至少一些示例中对应空间区域内的数据和/或包含要分析的新墨水或其它数据的区域附近的数据。
先前分析的墨水和非墨水文档元素,特别是位于要分析的新输入数据附近的那些元素,可以提供能改善未经分析的墨水或其它数据的分析的上下文。由于墨水分析工具1901获得来自分析上下文对象1709期望的信息,墨水分析工具1901用获得的信息建立独立于文档的分析上下文对象1903。因此,独立于文档的分析上下文对象1903至少获得包含在分析上下文对象1709内的信息的子集。基于上述的空间抽象方法在查询内使用该“调用”技术使得墨水分析工具1901有效地获得并分析必须的数据,甚至为较大的文档。然而值得注意的是,应用程序1901认可以简单地通过在被请求时不将内容透露给分析工具而限制独立于文档的分析上下文对象1903内的内容。
还值得注意的是,虽然墨水分析工具1901建立独立于文档的分析上下文对象1903,软件应用程序1701不应改变分析上下文对象1709(且它不允许在该时段内应用程序内的其它线程和/或其它程序改变分析上下文对象1709)。即软件应用程序1701不应在该时段内向文档1703输入新的数据,且不应允许其它线程和/或应用程序这样作。建立独立于文档的分析上下文对象1903的过程相对较快,然而一般它不会很严重地影响软件应用程序1701的操作。然而如果需要,到文档1703的数据输入可以经缓冲,且在建立了独立于文档的分析上下文对象1903后被输入系统。
一旦独立于文档的分析上下文对象1903经建立,可以在独立于文档的分析上下文对象1903上而不是分析对象1709上实现所有相继的对未经分析的墨水和/或数据的分析,使得软件应用程序1701能继续其正常的操作而不被未经分析的墨水和/或其它数据的分析延时或停止。软件应用程序1701可能甚至向文档1703输入新的电子墨水数据1705(并输入到分析上下文对象1709)而不干涉对独立于文档分析上下文对象1903的未经分析的墨水的分析。
相应地,在独立于文档的分析上下文对象1903已被建立后,在步骤1605内,墨水分析工具1901建立分开的分析线程以分析独立于文档的分析上下文对象1903内的墨水。相应地,在步骤1607,软件应用程序1701可以继续注处理线程的控制,且继续其正常操作。然后在步骤1609,墨水分析工具1901将独立于文档的分析上下文对象1903提供给第一分析过程以进行分析。例如,如图20示出,墨水分析工具1901可以将独立于文档的分析上下文对象1903传递到语义分析过程2001以使用分析线程进行语义分析。语义分析过程另外可能包括一个或多个分类过程而不偏离本发明(例如用于将墨水和/或其它数据分类为多个不同类型,诸如墨水文本、墨水附图、表格、图表、图形、图像、音乐、数学、包含特定符号的绘图(诸如带有电阻、电容等的电器图)等)。值得注意的是,在本发明的一些示例中,墨水分析工具1901可以对独立于文档的分析上下文对象1903进行复制。如在以下将详述的,独立于文档的分析上下文对象1903的原始形式的副本可以用于使得分析过程的分析结果与文档1703的当前状态相符和。
在第一分析过程已经分析独立于文档的分析上下文对象1903内的墨水和/或其它数据后,第一分析过程将分析结果返回到墨水分析工具1901,它接着在步骤1611通知软件应用程序分析结果。例如,如图21示出,如果第一分析过程是语义分析过程2001,则语义分析过程将语义分析结果2101返回到墨水分析工具1901,它然后将对分析结果2101的参考传递到软件应用程序1701(例如通过引发事件)。
如在以下将用本发明的一些示例详细解释的,分析结果2101可以是原始送到分析过程的独立于文档的分析上下文对象1903,但经修改以包括第一分析过程生成的新信息(例如在该示例中的语义分析结果)。然而在本发明的一些其它示例中,分析结果2101可能是独立于文档的分析上下文对象1903的经修改副本。通过将第一分析过程生成的新信息包括在独立于文档的分析上下文对象1903的副本内,原始独立于文档的分析上下文对象1903可以被保留例如为先前提到的协调器和/或其它分析过程使用。
图22说明语义分析过程诸如语义分析过程2001如何能修改数据树1801以示出语义分析操作生成的布局改变。如在该附图中所示,语义分析过程2001已经确定由笔画数据1823表示的未经分析的墨水笔画是由单词节点1813表示的单词的部分。相应地,语义分析已经将笔画数据1823与根节点1803解相关联了,而将其与单词节点1813相关联。
语义分析过程还确定由未经分类的笔画数据1825和1827表示的墨水笔画是由先前未经标识的行节点1809表示的行内的新单词的一部分。相应地,语义分析过程2001已经建立了新单词节点2201,且将该单词节点2201与行节点1809相关联。因此,语义分析结果2101描述先前未经分析的墨水笔画和由语义分析过程2001表示的其它墨水笔画(或其它文档元素)间的关系。而且,除了示出由语义分析过程2001确定的关系改变,语义分析结果2101还可以包括由语义分析过程2001确定的分类信息。例如,每个墨水笔画数据1823-1827的实例可以经修改以将其对应的墨水笔画分类为文本墨水笔画而不是绘图墨水笔画。在本发明的至少一些示例中,如果需要,语义分析结果2101可以在独立于文档的分析上下文对象1903内表示。
如上所述,软件应用程序1701能将新数据,包括新的电子墨水数据1705和新的非墨水数据1707输入到文档1703内,而同时第一分析过程正在分析独立于文档的分析上下文对象1903。相应地,第一分析过程的结果可能不再应用于文档1703的当前状态。例如,虽然语义分析过程可以确定一个墨水笔画与一个单词相关联,用于可以已经一起将墨水笔画从文档1703中删除(例如连同整个相关的单词或更多)。相应地,分析结果2101必须在步骤1613内与文档1703的当前状态相符。示例协调过程在图23内一般说明,且在以下将详述。
在本发明的一些示例中,软件1701可以人工地使得分析结果2101与文档1703的当前状态相符。即软件应用程序1701可以整理分析结果2101以确定那些结果与文档1703内当前的文档元素相关。然而在本发明的其它示例中,墨水分析工具1901可以提供协调函数以使得分析结果2101与当前分析上下文对象1709协调(即分析上下文对象1709反映文档1703的当前状态)。如以下将详细描述的,本发明的各个示例的协调函数会标识来自第一分析过程的分析结果2101来自文档1703的当前状态的分析上下文对象1709间的矛盾和“冲突”。墨水分析工具1901然后基于步骤1615内的分析结果对分析上下文对象1709进行更新,并在步骤1617内从分析上下文对象1709内的相符的分析结果中建立独立于文档的新分析上下文对象1903。
值得注意的是,虽然墨水分析工具1901使得分析结果2101与当前分析上下文对象1709相符,软件应用程序1701不应改变分析上下文对象1709(且它不允许在该时段内应用程序内的其它线程和/或其它程序改变分析上下文对象1709)。即软件应用程序1701不应允许其它线程和/或应用程序在协调完成前向文档1703输入新的数据。如同初始建立独立于文档的分析上下文对象1903的过程,协调过程相对较快,然而一般它不会很严重地影响软件应用程序1701的操作。然而如果需要,到文档1703的数据输入可以在完成协调过程后经缓冲。
在墨水分析工具1901为文档1703的当前状态将分析结果2101与分析上下文对象1709相符后,墨水分析工具1901可选地可以将经协调的分析结果提供给第二分析过程以进行进一步分析。例如,如图24示出,墨水分析工具1901可以将经协调的语义分析结果2401提供给墨水识别过程2003用于识别(例如用于文字、音乐、数学信息或其它特定数据类型的书写识别)。特别是,墨水分析工具1901会同样建立分开的分析线程以在步骤1619内实现第二分析过程。由于墨水分析工具1901建立该分开的线程用于执行第二分析过程,软件1701可以同样在步骤1621内继续其正常操作,且它可能甚至接受包括新电子墨水数据1705的新输入数据。
下一步在步骤1623,墨水分析工具1901将来自第二分析过程的协调的结果2401给第二分析过程。一旦第二分析过程开始,应用程序1701可以开始对新的未经分析墨水执行第一分析过程。因此,多个分析过程可以并行被运行,使得当第二分析过程正在对第一分析过程的结果进行分析时,应用程序1701可以重新开始第一分析过程以准备下一分析结果的集合。
有利地,并行执行分析过程可以改善软件应用程序1701的操作。例如,语义分析过程相对于识别分析过程一般较快,且语义分析结果可以被用于实现正确选择行为以及空间插入行为,而不使用识别分析结果。因此,由于不同的分析过程可以并行执行,加入文档1703的新墨水不必要等到识别分析过程完成较旧的墨水数据后它才能被选择或在其中正确地进行空间插入。另外,本发明的多个示例完成异步墨水分析以分离应用程序开发者(developer)和语义分析器以及识别器算法开发者间的多线程问题,改善可维持性并为两个组简化开发过程,并使得在不改变应用程序情况下对分析过程间的交互进行改变。
如上所述,墨水分析工具1901可以在分析文档对象1703在经更新以包括分析结果2101的相关部分后,通过从该对象中建立新的独立于文档的分析上下文对象1903而提供协调的分析结果。然而在本发明的其它示例中,墨水分析工具1901可以简单地用分析结果2101更新独立于原始文档的分析上下文对象1903以反映文档1703的当前状态。而且,墨水分析工具1901可以简单地将相关的作进一步分析墨水数据提供给第二分析过程。
因此,本发明的多个示例在执行相继的分析过程前将先前的分析过程的结果与文档1703的当前状态相符。然而值得注意的是该中间协调过程可以从本发明的一些示例中略去。尤其是,在本发明的一些示例中,早些分析过程的结果可以直接被提供给相继的分析过程,而不用将这些结果与文档1703的当前状态相符。例如,如果与墨水布局分析器过程分开提供了墨水分类器过程,则被分类为书写文本的墨水可以被提供给墨水布局分析器过程而不经中间协调步骤。
在第二分析过程2003完成分析来自第一分析过程的经协调结果2401后,对于无论哪个安排,第二分析过程2003将其结果2501返回到墨水分析工具1901,如图25示出。然后在步骤1625内墨水分析工具1901然后通知软件应用程序1701第二分析的结果2501。
如上所述,软件应用程序1701能将新数据,包括新的电子墨水数据1705输入到文档1703内,而同时第二分析过程正在分析第一分析过程的协调的结果2401。第二分析过程的结果2501可能不再应用于文档1703的当前状态。相应地,第二分析过程2003的结果2401还必须在步骤1627内与文档1703的当前状态相符。在图26内一般说明了示例协调过程,在以下将详细说明。
在本发明的一些示例中,软件1701可以人工地使得分析结果2501与文档1703的当前状态相符。或者,在本发明的其它示例中,墨水分析工具1901可以提供协调函数以使得分析结果2101与当前分析上下文对象1709协调。该协调函数会标识来自第二分析过程的分析结果2501和文档1703的当前状态的分析上下文对象1709间的矛盾和“冲突”,且墨水分析工具1901然后在步骤1629内基于分析结果对分析上下文对象1709进行更新。该过程必要时可以经重复以分析在分析过程中被改变的新的墨水输入或墨水。
从以上的讨论中,很明显根据本发明的各个示例的墨水分析技术,在分析过程中,允许电子墨水能从软件应用程序1701经异步分析,允许软件应用程序1701继续接受输入数据,包括新电子墨水。值得注意的是,虽然上述的讨论只描述两个分析过程,任何数量的分析过程可以并行地被并发实现。例如,本发明的各个实现可以使用第一语义分析过程、第二语义分析过程以及识别过程。这样,一旦完成每个分析过程,其结果可以被传递到下一分析过程,且第一分析过程可以再次在新输入的墨水上并发或并行地运行。
另外,本发明的各个示例的一个或多个分析过程可以被按顺序执行。例如,在一些软件应用程序中,用户能为墨水笔画或笔画集合指定特定的语言,诸如英语或日语。该语言指定然后可以被包括在分析上下文对象1709以及独立于文档的分析上下文对象1903内。基于语言指定,墨水分析工具1901可以将指定为第一语言的电子墨水路由到适用于该第一语言的识别过程,并接着将指定为第二语言的电子墨水路由到适用于该第二语言的不同的识别过程。这样,经分类和/或被指定为其它特定类型的输入数据可以被发送到其它特定的识别器,诸如用于音乐、电子符号、数据符号、流程图特征、图形特征等的识别器。
而且,由于分析过程不需要是软件应用程序1701的部分,任何期望的分析过程可以用于分析在软件应用程序1701内的电子墨水。例如,软件应用程序开发者可以研发并使用语义分析过程或识别过程,这些过程是特定适用于分析除了软件应用程序1701外的电子墨水输入。
本发明的各个实现还可以使用这些技术的其它变体。例如,在一些情况下,软件应用程序1701可能不期望维持反映文档1703内的多个文档元件间的关系的内部文档树。而是软件应用程序1701可能只使用简单的关于电子墨水输入的状态信息。在这些软件应用程序1701内,软件应用程序1701可以略去建立反映整个文档1703的当前状态的分析上下文对象1709。而是,软件应用程序1701可以建立特定用途的分析上下文对象1709,它只包含与软件应用程序1701期望分析的特定墨水输入相关的信息。通过使用特定用途的分析上下文对象1709,软件应用程序1701可以避免维持对应文档1703的状态的内部数据结构的复杂度,而仍能使用期望的分析过程以分析文档内的墨水。
而且,虽然上述的描述讨论电子墨水的异步分析,但值得注意的是本发明的多个示例允许墨水分析工具1901同步地分析墨水。例如,本发明的一些实现可以允许软件应用程序1701指示墨水分析工具1901以实现电子墨水立刻并同步的分析。另外,同步分析可以只针对文档1703的特定区域内或整个文档1703内的墨水。
墨水分析工具如上所述,墨水分析工具1901实现多个功能以方便电子墨水的处理。例如,根据本发明的多个实现,墨水分析工具1901从软件应用程序1701接收信息,应用程序指定带有要分析的墨水数据的文档内的一个或多个区域,查询软件应用程序1701以获得关于这些区域的信息,然后基于这些信息构建独立于文档的分析上下文对象1903。另外,墨水分析工具1901将独立于文档的分析上下文对象1903提供给一个或多个分析过程用于分析,然后将分析结构与文档1703的当前状态相符。多个处理可以使用分开的线程(如上所述)实现,通过线程池、作为分开的过程、通过机群内的机器或以任何其它合适或期望的方式,而不偏离本发明。
根据本发明的不同示例,多个软件对象和工具可以用于实现墨水分析工具1901并实现这些功能。然而在本发明的一些示例中,墨水分析工具1901作为应用编程接口(API)实现。更特定地,根据本发明的一些示例,墨水分析工具1901可以被实现为一组软件对象例程且相关的信息可以为软件应用程序1701在需要分析文档1703内的墨水时调用。
如领域内普通技术人员理解的,应用编程接口可以被组织成术语软件对象的类别或“类”。“对象”是可存储状态值和可执行行为的集合。更特定地,对象可以维持不同类型的状态值,被称为“字段”和“属性”,这可以与对象相关联或由对象获取。关于外部软件应用程序或另一软件对象,这些属性可以是只读(使用项“{get;}”标识)、只写(使用项“{set;}”标识)、或可读和可写(标识为“{get;set}”)。对象还可以经常在软件应用程序或其它对象的请求或“调用”下执行任务或“方法”。因此,应用编程接口可以包括多个由另外软件应用程序指示的对象以实现特定的任务或在请求后提供特定的信息。
可以理解的是本发明的多个示例可以经实现以要求软件应用程序1701只提供完成期望的分析过程需要的最小量的信息。因为这个原因,以下详细描述的属性只可以被讨论为只读(即“{get;}”)或只写(“{set;}”)属性,但对于本发明的多个另外实现可以为可读和可写。例如,定义为分析过程用于分析电子墨水的“暗示(hints)”的属性可以在软件应用程序1701不希望使用暗示时被标识为只读属性。这使得墨水分析器建立的对象至少读取该属性,并确定该属性的值为缺省的零值(即软件应用程序1701不需要“暗示”)。然而如果,软件应用程序1701需要使用暗示以进行墨水分析,则该属性为可读和可写以使得软件应用程序1701从零值改变该属性值,为了规定期望的暗示。
根据本发明的多个示例,体现墨水分析工具1901的实现的API(此后被称为墨水分析API)可以包含两个核心类。第一类可以被称为“分析上下文”类,第二个类为“墨水分析器”类。“分析上下文”类的分量被用于建立分析上下文对象1709。相应地,在本发明的多个实现内,其中软件应用程序1701建立并维持其自己的分析上下文对象1701,在该类中的一个或多个分量可以从墨水分析工具中略去。而是,一个或多个这些分量可以由软件应用程序1701本身实现。
“墨水分析器”类的分量然后用于建立并使用对象,该对象将独立于文档的分析上下文对象1903提供给分析过程,确定何时生成分析结果并将分析结果与文档1703的当前状态相符。根据以下将会详细讨论的本发明的多个示例这些和其它类可以包括在墨水分析API中。
首先看分析上下文类,该类由宿主应用程序1701实现以建立分析上下文对象1703,该对象用作到软件应用程序1701的内部文档树的代理视图。或者,如上所述,如果应用程序实现其自己的分析上下文对象,则该类内的一个或多个分量可以从墨水分析工具1901中略去。如上所述,分析上下文对象1703包含所有未经分析的墨水数据,且分析上下文对象1703用于标识哪些未经分析的墨水数据应经分析。这些分析上下文对象1703还包含关于先前分析的墨水的信息。这先前经分析的墨水可以被用于决定应如何分析当前未经分析的墨水,且其本身也可以在分析未经分析的墨水过程中经修改。另外,分析上下文对象1703包含关于文档1703的非墨水内容的信息,该信息被用于合适地将墨水分类为非墨水内容的注解。
根据本发明的多个示例,分析上下文类包括构建器,当为软件应用程序1701调用时,创建分析上下文对象1709。该类还可以包括分析上下文对象1709的多个属性,包括名为“Dirty Region{get;}”的属性。该Dirty Region属性定义了包含未经分析墨水数据的文档的部分(因此分析上下文对象1709的部分)。在本发明的示例中,Dirty Region还可以定义不相交的区域。DirtyRegion被规定为分析区域,以下将详述,但这可能只是文档内的矩形区域的集合。如果Dirty Region为空,则不会进行分析。该类可以进一步包括用于名为“Margin{get;}”的分析上下文对象1703的属性,它声明文档1703的页内被认为是边的区域。例如分析布局并确定电子墨水的分类的分析过程可能使用该属性以帮助确定注解非墨水内容的电子墨水分类(例如边上的墨水)。
另外,分析上下文类可能包括名为“Rootnode{get;}”的属性,它标识分析上下文对象1709内的最上面或根上下文节点。如以上详述,该根上下文节点如同子上下文节点,包含所有用于给定分析上下文对象1709的其它上下文节点对象。值得注意的是,本发明的多个示例中,根上下文节点必须是上下文节点类型“Root”。还值得注意的是,本发明的示例中,其中应用程序1701实现其自己的分析上下文对象1709,分析上下文对象1709可以由其它的上下文节点作为根上下文节点的兄弟,但墨水分析器类的分量被限制为考虑根上下文节点包含的上下文节点。
分析上下文类可以另外包括属性“Analysis Hints{get;}”,它返回由软件应用程序1701设定的analysis hint对象集合的阵列。如以下将更详细地描述的,analysis hint对象可以包含任何可以帮助分析过程的信息类型。该信息可以包括例如仿真陈述、指南或单词列表。还可以包括设定用于分析的语言的信息、指定未经分析的墨水为只书写文本或只绘图的信息或提供给语义分析过程任何类型的帮助,诸如标识墨水为列表、表格、形状、流程图、连接符、包含等。
除了这些属性外,分析上下文类还可以包含多个方法,它可以为例如软件应用程序1701调用以使得分析上下文对象1709执行任务。例如,分析上下文类可以包括名为“FindNode(Guid id)”的方法。分析上下文对象1709内的每个节点有全局唯一的标识符(即GUID),且该方法会定位在分析上下文对象1709内任何地方的调用内规定的节点。该查询方法应尽可能地有效地实现,因为该方法可以从多次关键操作中被调用。
类似于分析上下文类,墨水分析器类还定义公共构建器,它允许软件应用程序1701建立类的实例(即墨水分析器对象)以及多个属性。例如,它可以包含名为“User Interface Context{get;set;}”的属性,它定义分析过程的结果要返回的处理线程。该属性使得结果与另一对象同步。例如,如果这是设定到主形式,语义分析器结果会在应用程序主线程上被引发。它还可以包含属性“AnalysisOptions AnalysisOptions{get;set;}”,它规定可以用于分析过程的多个准则。这些准则可以包括例如启用文本识别、启用表格的使用、启用列表的使用、启用注解的使用以及启用连接符和包含的使用。
墨水分析器类会包括多个方法。例如,该类可以包括名为“AnalysisRegionAnalyze()”的方法。该方法开始同步分析过程。文档元素数据被传递到该方法,它描述文档1703的当前状态,并指明文档1703内的哪些墨水需要被分析。在本发明的一些实现内,文档元素数据可以作为分析上下文对象1709被提供(例如AnalysisRegion Analyze(Analyze context)),如上所述。或者,单个墨水笔画可以被传递到分析过程中,或者使用到笔画的引用(即AnalysisRegion Analyze(Strokes))或被引用为墨水分析器对象(例如InkAnalyzer.Strokes{get;set;})的属性而没有属性传递到分析方法。
一旦完成分析过程,该方法会返回对独立于文档的分析上下文对象的引用,该对象经修改以包含分析过程的结果。该方法还返回AnalysisRegion值(如下详细讨论),该值描述结果已经被计算的文档内的区域。
墨水分析器类可能还包括名为“AnalysisRegionAnalyze(AnalysisContext,waitRegion)”。该方法与上述的同步AnalysisRegion Analyze()方法一样,但如果结果在特定的waitRegion区域内需要,它只分析墨水。更特定地是,对该方法的调用会为文档1703标识分析上下文对象1709以及分析过程应对其进行同步分析的分析上下文对象1709的区域(被称为“waitRegion”)。本发明的多个示例中,会忽略分析上下文对象1709的所有其它区域,除非分析过程需要分析这些区域内的内容以完成其对waitRegion的分析。如上所述,与该方法传递的分析上下文对象1709包含称为“DirtyRegion”的属性,它描述需要分析的文档1703的区域。通过规定特定的waitRegion,软件应用程序1701可以更快地获得感兴趣的特定区域的分析结果,而不是分析文档1703内所有的墨水数据。
当调用这些分析方法的任何一种时,每个可用的分析过程会被执行。而且,由于这些分析方法为同步的调用,则不需要在其完成时调用相符过程,一旦其完成也不需要引发时间。
墨水分析器类还可以包括名为“BackgroundAnalyze(AnalysisContext)”的方法。该方法开始规定的分析操作,但在分开的后台分析线程上执行。因此,该方法会将控制返回到主处理线程,这几乎与实际分析操作在后台完成时。特别是,如果分析过程被成功开始,则该方法会返回“true”值。同样,传递到方法的AnalysisContext值为文档1703标识分析上下文对象1709并指明文档1703内哪些墨水需要被分析。一旦分析操作在后台线程上完成,唤醒Results时间使得软件应用程序1701能访问结果。时间包含结果以及相符方法,该方法用于在返回结果时为文档1703的当前状态将结果包括在分析上下文对象1709中。
值得注意的是这些三个分析方法的每个依次调用在“Analysis Region”类中“克隆”的方法,这在以下将被详细讨论。使用“克隆”方法,这些分析方法建立独立文档分析上下文对象,该对象接着由分析过程经修改以示出分析结果。
墨水分析器类还可以包括名为“Reconcile(Analysi sContextcurrent,AnalysisResultsEventArgs resultArgs)”的方法,该方法由软件应用程序1701在接收到由呼叫BackgroundAnalyze(AnalysisContext)方法而引起的结果事件后调用。Reconcile方法将包含在独立于文档的分析上下文对象内的分析结果与由软件应用程序1701维持的分析上下文对象1709的当前版本比较。该方法标识需要加入或从分析上下文对象1709的当前版本中移去的节点,并标识是否有任何现存节点的属性的任何一个有所改变,这些属性有其识别结果、其位置、与该节点相关联的墨水笔画或任何其它与分析操作的结果相关联的数据。该方法还将这些标识的改变写入到分析上下文对象1709的当前版本。该方法对于上下文节点排序的顺序敏感,诸如在行上下文节点上的单词上下文节点的顺序。
分析结果(即属性AnalysisResultsEventArgs的值)与该方法一起被传递回,由于它们包含公共结果结构和私用结果结构。该公共结构被返回,所以软件应用程序1701可以预览会在相符阶段发生的改变。包括私有结构以防止软件应用程序1701在相符过程前改变任何分析结果。
墨水分析器类还可以包括名为“Recognizers RecognizersPriority()”以及“SetHighestPriorityRecognizer(recognizer)”的方法。当需要识别墨水时,会基于语言和容量而使用合适的识别器。相应地,RecognizersRecognizersPriority()方法会返回识别过程,其顺序是它们由墨水分析器对象评估的顺序。该顺序取决于可用的识别过程而在每系统的基础上经确定,但可以通过对墨水分析器对象调用SetHighestPriorityRecognizer(recognizer)而使之无效。InkAnalyzer会通过该排序的列表而列举,直到找到合适的识别器。SetHighestPriorityRecognizer(recognizer)方法会唤醒识别过程的优先级。通过唤醒特定识别过程的优先级,如果识别过程匹配需要的语言和当前识别操作的容量,则使用该识别过程。基本上,SetHighestPriorityRecognizer(recognizer)将指定的识别过程推到由RecognizersPriority方法返回的列表的顶部。
墨水分析器类还包含名为“AnalysisRegion Abort()”方法,该方法可以使用分析上下文对象作为参数。该方法允许前台或后台分析操作可以早期结束。该方法返回描述在放弃前正在被分析的区域的分析区域。因此,如果软件应用程序1701要在以后某时间继续分析操作,该区域可以为文档1703的当前状态合并到分析上下文对象1709的DirtyRegion内。而且,墨水分析器类还可以包括名为“AnalysisResultsEventHandler”的事件,它按实际需要频繁地引发InkAnalyzer对象。更特定地,该事件可能在分析过程间引发,且至少每隔5秒一次。该事件可以用于将对正在进行的异步分析过程(或多个)的状态的更新提供给应用程序1701。
墨水分析API还可以包括类,除了分析上下文类和墨水分析器类外。例如,根据本发明的多个示例的墨水分析API可以包括Context Node类。该类可以包括与多个上下文节点相关的多个分量,该上下文节点组成分析上下文对象1709和独立于文档的分析上下文对象,诸如名为“ContextNodeTypeType{get;}”的属性。如在领域内的技术人员可以理解的,每个上下文节点有一种类型,且每个类型必须协调特定的规则集合。这包括诸如例如以下规则哪种类型的子上下文节点是被允许的,且是否笔画能直接与上下文节点相关联或只能通过其子上下文节点。
可能的上下文节点类型可以在ContextNodeTypes枚举内被定义,且包括(但不限于)例如以下类型InkAnnotation节点,它标识注解非文本数据的墨水数据;InkDrawing节点,它标识形成附图的墨水数据;InkWord节点,它标识形成单词的墨水数据;Line节点,它包含一个或多个形成文本行的单词的InkWord节点和/或TextWord节点;ListItem节点,这可以包含Paragraph、Image或列表内期待的类似节点;以及List节点,这包含一个或多个ListItem节点,每个描述列表内的一项。节点类型可能还包括NonInkDrawing节点,表示非墨水绘像;Object节点,表示ContextNodeType枚举的其它值未能覆盖的数据;Paragraph节点,它包含一个或多个对应形成段落的行的Line节点;Picture或Image节点,表示图片图像;Root节点,它作为分析上下文对象内的顶层节点;Table节点,它包含表示组成表格的项的节点;TextBox节点,表示文本盒;TextWord节点;以及UnclassifiedInk节点,对应还未经分类的墨水数据。节点类型还可能包括Group节点,用于其它节点的组,InkBullet节点,用于墨点项,Row节点,用于以表格的行形式表示的文档元素,以及Cell节点,用于以表格的单元格表示的文档元素。
Context Node类还可以包括名为“GUID Id{get;}”的属性,它对应当前上下文节点是全局唯一的标识符。为了允许访问任何期望的上下文节点,在单个分析上下文对象内的每个上下文节点必须总有唯一的标识符。该类还可以包括名为“AnalysisRegion Location{get;}”的属性,它标识文档空间内相关上下文节点实际位于的位置。如先前所述,AnalysisRegion是将一个或多个可能的不橡胶的矩形如同结构组合在一起的两维结构。该类还可以包括名为“StrokeCollection Strokes{get;}”的属性,它标识与相关的上下文节点相关联的墨水笔画。在本发明的多个示例中,一个叶子上下文节点(诸如Word、Drawing和Bullet节点)由Ink Analysis API允许有笔画。软件应用程序1701可以使用该属性以通过所有父辈级上下文节点而引用在叶子节点层处的笔画(例如,根节点会包含一个笔画,该笔画引用在相关的分析上下文对象内的所有笔画)。
另外,该类还包括名为“ContextNode ParentNode{get;}”,它标识包含相关上下文节点的父上下文节点。在本发明的各个示例中,上下文节点总是被建立以依靠一父上下文节点,Root上下文节点是分析对象节点的静态成员。该类还可以包括“ContextNode[]SubNodes{get;}”的属性,它标识所有是相关的上下文节点的直接子节点的上下文节点。即该属性只会标识在分析上下文对象内的一层以下的这些子上下文节点。例如,Paragraph上下文节点的该属性值只会标识由Paragraph节点包含的行上下文节点,而不包含为行上下文节点的子节点的单词上下文节点。
该类还包括名为“RecognitionResult RecognitionResult{get;}”的属性,它提供相关识别分析过程或多个过程计算的识别结果,由于RecognitionResult可以标识多于一种语言的多于一行文本。RecognitionResult对独立于文档的分析上下文对象内的每个上下文节点是可用的,即使由识别分析过程设定并用于建立RecongnitionResult的RecognitionData属性(以下将详述)可能只在上下文节点树的一层被设定以避免数据的重复。如果节点没有与之相关联的RecognitionData,则它会将其子节点的所有的识别结果合并或从其父节点抽取识别结果。该类还可以包括名为“StreamRecognitionData{get;set;}”的属性,它是RecognitionResult值的持久形式。同样,识别分析过程生成在相关的上下文节点上设定的StreamRecognitionData值。RecognitionResult对象然后根据该值被构建。
Context Node类还可以进一步包括名为“ContextLink[]Links{get;}”的属性,它提供ContextLink对象的阵列。ContextLink对象描述两个上下文节点间的其它关系。虽然上下文节点一般有与其它上下文节点的父子关系,但ContextLink允许上下文节点间的其它关系。例如,ContextLink可能允许两个上下文节点间的连接、一个上下文节点到另一上下文节点的锚定,一个上下文节点为另一上下文节点包含,或由软件应用程序1701定义的链接的一种期望类型。ContextLinks可以通过调用AddLink方法而被加入阵列,如以下将详细讨论。类似地,ContextLinks可以通过调用DeleteLink方法而从该阵列中被移去,这在以下将详细讨论。
而且,该类还可以包括“IsContainer{get;}”的属性以及“IsLinkLeaf{get;}”的属性。属性IsContainer{get;}有为“true”的值,如果相关的上下文节点不是叶子上下文节点(即如果上下文节点不包含子上下文节点,且因此被认为是包含上下文节点),且否则有“false”值。IsLinkLeaf{get;}属性有为“true”的值,如果当前上下文不是包含上下文节点,否则值为“false”。即,如果当前上下文节点不包含任何子上下文节点,则它被认为是叶子上下文节点。还值得注意的是,在本发明的各个示例中,InkLeaf上下文节点被期望包含对笔画数据的引用,其中包含上下文节点没有该限制。包含上下文节点可以或可以不引用笔画数据,如软件应用程序1701指定的。
Context Node类还可以包含“Rect RotatedBoundingBox{get;set;}”的属性。该属性值可以通过布局和分类分析过程计算。如果与相关的上下文节点相关的墨水数据以某角度书写,则上下文节点的界仍会被水平对齐。然而RotatedBoundingBox属性的值会和与相关上下文节点相关俩的墨水数据的角度对齐。而且,该类还可以包括“ReCla上下文ifiable{get;}”的属性,它通知InkAnalyzer它是否被允许修改相关的上下文节点的值。
除了这些属性以外,Context Node类还可以包括多个方法。例如,该类可以包括名为“ContextNode CreateSubNode(ContextNodeType Type”的方法。该方法允许建立特定类型的子上下文节点。在本发明的各个示例中,该方法可以只允许建立有效的相关上下文节点的子类型,从而防止建立畸形的数据结构。例如,该方法可以允许Line上下文节点建立InkWord和TextWord子上下文节点。该类还可以包含名为“void DeleteSubNode(ContextNode node)”的方法,它从相关的分析上下文对象中删除被引用的子上下文节点。然而值得注意的是,在本发明的多个示例中,如果被引用的上下文节点仍包含笔画或子上下文节点,则该方法会失败。而且,如果引用上下文节点不是相关的上下文节点的直接子节点,则该方法会失败。值得注意的是,如果软件应用程序1701实现其自己的分析上下文对象1709,接着使用该方法,它不删除非空上下文节点或者不是相关上下文节点的直接子节点的上下文节点,以防止在分析上下文对象1709内的畸形数据结构。
而且,该类可能包括方法“ContextNode[]HitTestSubNodes(AnalysisRegion region)”,它返回位于特定区域内的上下文节点的阵列。然而使得注意的是,只返回该元素的直接子节点,而不是所有派生的子节点。该区域由AnalysisRegion对象定义,如前所述,可能是一个或多个举行的集合。根据本发明的多个示例,如果上下文节点的位置的任何部分与特定区域相交,则该上下文节点会在阵列内被返回。该方法被用于例如建立独立于文档的分析上下文对象,并使得分析结果与对应文档1703的当前状态的分析上下文对象相符。因此,该方法经常被调用,且应经优化以为InkAnalyzer对象快速重复访问。
Context Node类还包含名为“MoveStroke(Stroke stroke,ContextNodedestination)”的方法。该方法将笔画的关联从一个叶子上下文节点移到另一个。在本发明的多个示例中,该方法只在叶子上下文节点间被使用。它还可能包括名为“MoveSubNodeToPosition(int OldIndex,int NewIndex)”的方法,它将相关的上下文节点相对于其兄弟上下文节点而重新排序。例如,如果文档1703在一行内有三个单词,例如单词1、单词2和单词3,然后它们的顺序由从父上下文节点返回的子节点阵列暗指。该方法使得它们的顺序被改变,使得相对于相关的父上下文节点,通过将单词1的上下文节点从位置一移到位置三,单词1被规定为行上最后的单词。
而且,该类可以包括名为“AddLink(ContextLink Link)”的方法,它将新的ContextLink对象加入当前的上下文节点。在本发明的多个实施例中,ContextLink对象必须包含对相关上下文节点的引用以使得ContextLink成功地被加入与相关的上下文节点的ContextLinks的阵列。它还可以包含名为“DeleteLink(ContextLink link)”的方法。该方为相关的上下文节点从ContextLinks的阵列中删除或移去规定的ContextLink对象。值得注意的是,在本发明的多个示例中,该方法调用总是成功地完成,即使ContextLink不存在在与相关的上下文节点相关联的ContextLinks阵列内。
Ink Analysis API还可以包括Analysis Hint类。如先前许多描述的类,Analysis Hint类可以包含构建器,名为“AnalysisHint()”,它将AnalysisHints对象初始化为空状态。该类还可以包括多个属性,包括名为“AnalysisRegion Location{get;}”的属性。该属性规定文档内AnalysisHint可应用的位置(作为AnalysisRegion)。例如,如果文档1703是在页的顶部有标题部分的自由形式的笔记,则1701会为标题区域设定AnalysisHint以规定在该区域内预计的水平墨水行。该Analysis Hint会帮助增加分析过程的准确性。
该类还包括名为“string Factoid{get;set;}”的属性,它规定特定的“仿真陈述”,即用于AnalysisHint应用到的文档1703内的位置。如领域内的技术人员已知的,仿真陈述提供关于墨水数据的预计的使用提示给识别过程(例如规则文本、数字、邮政编码、文件名和网页URL)。该类还可以包括名为“RecognizerGuide Guide{get;set;}”和“OverrideLanguageID{get;set;}”的属性。RecognizerGuide Guide{get;set;}属性规定写入指南,它应用于AnalysisHint应用到的文档1703内的位置。写入指南可以例如通过规定用户并通知识别器分析过程用户在哪里写入行或字符而改善识别器分析过程的准确性。OverrideLanguageID{get;set;}属性规定AnalysisHint可应用的文档1703内的Language Hint。设定Language Hint引起InkAnalyzer对象使用指定的语言而不是在上下文节点上规定的语言。
类还可以包括名为“PrefixText{get;set;}”属性,它规定在要识别的墨水行之前写入或打入的文本。而且,该类还可以包括名为“RecognitionModesRecognitionFlags{get;set;}”属性,它规定识别过程在AnalysisHint可应用的文档1703内的位置处应遵守的特定模式类型。而且,该类还可以包含名为“SuffixTex{get;set}”属性,它规定在要识别的墨水行之后写入或打入的文本,还可以包括名为“WordList WordList{get;set;}”属性,它规定应为识别分析过程使用的特定单词集合。当在用户实际写入输入数据前知道预计的识别结果时,可以使用单词列表,诸如预计在医药表格内写入的医药项列表。
而且,该类还包括名为“WordMode{get;set;}”属性。如果该值为“true”,则分析过程会偏向为整个分析区域返回单个单词。它还可能包括名为“Coerce{get;set;}”的属性,该属性如果为“true”,则会强迫分析过程将其结果限制在相关提示内的任何仿真陈述或单词列表值集合内。该列还可以包含名为“AllowPartialDictionaryTerms{get;set;}”的属性。如果该属性为“true”,则识别分析过程会被允许从识别字典返回部分单词。
根据本发明的多个示例,Ink Analysis API可以进一步包括AnalysisRegion类。该类可能包括例如多个构建器,用于构建AnalysisRegion对象。例如,它可能包含第一构建器,用于构建带有任何区域的AnalysisRegion对象;第二构建器,用于基于二维矩形的参数而构建AnalysisRegion对象;以及第三构建器,用于基于四个空间坐标以构建AnalysisRegion对象。缺省构建器可以例如创建空区域。该类可以还包括多个属性。例如,该类还可以包括名为“Rectangle Bounds{get;}”的属性,它为AnalysisRegion获取边界矩形,还包括名为“IsEmpty{get;}”的属性,它指示相关的AnalysisRegion是否有空的内部,还包括名为“IsInfinite{get;}”的属性,它指示相关的AnalysisRegion是否被设定为无限。
该类还可以包括多个方法,诸如名为“AnalysisRegion Clone()”的方法,它克隆相关的AnalysisRegion对象。该类还可以包括名为“Equals(AnalysisRegion otherRegion)”的方法,它测试特定的AnalysisRegion对象(被称为otherRegion)是否与相关的AnalysisRegion对象相同。如果特定的AnalysisRegion对象与相关的AnalysisRegion对象的内部相同,则该方法返回“true”值,否则返回“false”值。
该类还可以进一步包含“Intersect(AnalysisRegionregionToIntersect)”方法,它将相关的AnalysisRegion对象从修剪为规定的分析区域。因此,生成的AnalysisRegion对象只会包含与规定的分析区域重叠或相交的区域。该类还包括名为“Intersect(Rectangle rectangle)”的方法,它将相关的AnalysisRegion对象修剪为规定的矩形。在此生成的AnalysisRegion对象只会包含与规定的分析区域重叠或相交的区域。它还可以包括名为“MakeEmpty()”的方法,它将相关AnalysisRegion对象初始化为空内部,还包括名为“MakeInfinte()”的方法,它设定由相关的AnalysisRegion占据的区域为无限。它还可以包括多个方法,用于联合或分离不同定义的区域,诸如名为“Union(AnalysisRegion regionToUnion)”的方法,它规定AnalysisRegion对象联合或加入到相关的AnalysisRegion对象,还包括名为“Union(Rectangle rectangle)”的方法,它将规定的矩形与相关的AnalysisRegion对象联合。使用该方法,矩形可以为相关的AnalysisRegion对象以坐标空间的形式被规定。当然,该类可以包括多个其它的方法,用于基于任何区域期望的定义而组合区域或从一个区域抽取另一个。
Ink Analysis API还可以有Recognition Result类。如许多先前讨论的类,Recognition Result类可以包括一个或多个构建器。例如,该类可以包括名为“RecognitionResult(Stream lattice)”的构建器,它从给定的识别格子构建Recognition Result对象。在本发明的各个示例中,识别格子是来自识别过程的结果的连续格式。该方法可以例如将识别格子规定为用于构建相关的Recognition Result对象的位阵列。它还可以包括名为“RecognitionResult(ContextNode node)”的构建器,它从给定的上下文节点构建RecognitionResult类对象。它还可以包括名为“RecognitionResult(stringText,int StrokeCount)”的构建器,它从规定的文本值构建RecognitionResult对象,它接着与规定数目的笔画相关联,且如果识别过程不与其它的对应实际书写墨水数据的识别值对应,它可以用于纠正。而且,该类还包括名为“RecognitionResult(RecognitionResult leftRecognitionResult,RecognitionResult rightRecognitionResult)”的构建器,它通过将两个现存的Recognition Results对象合并而构建RecognitionResults对象。
Recognition Result类还可以包括一个或多个属性,诸如名为“StrokeCollection StrokeCollection{get;}”的属性,它提供表示在单个墨水对象内包含的笔画集合的笔画索引阵列,还包括名为“RecognitionAlternate TopAlaternate{get;}”的属性,它提供识别结果的最佳方案。该类还可以包括名为“RecognitionConfidenceRecognitionConfidence{get;}”的属性,它提供了来自识别分析过程的当前结果的顶层方案选择的机密级(例如高、中等、低),还包括名为“stringTopString{get;}”的属性,它从识别分析过程返回分析结果的最佳结果字符串。
Recognition Results类还可以包括多个方法,诸如称为“publicRecognitionAlternateCollectionGetAlternateCollectionFromSelection(selectionStart,selectionLength,maximumAlternates)”,它规定了来自识别分析过程的最佳分析结果的字符串内选择的方案集合。该方案的输入参数可以包括例如一个值,它规定返回方案集合的文本选择的开始,还包括一个值,它规定返回方案集合的最大数。该方法可以从识别结果的最佳字符串内的选择返回方案的RecognitionAlternateCollection集合。
Recognition Results类还可以进一步包括一方法,名为“ RecognitionResult Merge(RecognitionResult left,stringsepartor,RecognitionResult right)”。该方法可以用于从单个字符串建立新的RecognitionResult对象,生成平格子或链接在两个现存RecognitionResult对象间的单个字符串。该类还可以包括名为“ModifyTopAlternate(RecognitionAlternate alternate)”的方法,它规定识别结果用已知的方案进行修改。在本发明的一些实施例中,缺省情况下,识别分析过程的结果的最佳结果字符串对应顶层方案。然而,该方案可以用于规定除了用于识别分析结果内的顶层方案以外的方案。如果新的顶层方案导致与先前一个不同的分段,则ModifyTopAlternate方法会自动地更新上下文节点以反映改变。值得注意的是,为了获得可以用于修改识别结果的方案,该方法调用GetAlternatesFromSelection方法,如下详述。该类还可以有名为“StreamSave()”的方法,它持久地将相关的RecognitionResults对象维持在识别格子的形式。识别格子是用于表示来自识别过程的结果的连续格式。
Ink Analysis API还有Analysis Options枚举类型。该类型可以包含一个或多个字段,它们规定墨水数据如何由分析过程分析,诸如名为“constAnalysisOptions Default”的字段,它启用所有用于分析过程的可用选项。该字段可以例如启用文本识别、表格使用、列表使用、注解使用、连接符和包含使用以及中间结果的使用。该类型还可以包括名为“const AnalysisOptionsEnableAnnotations”的字段,它启用并禁用注解的检测,还包括名为“constAnalysisOptions EnableConnectorsAndContainers”的字段,它启用并禁用连接符和包含的检测,该类型还包括“const AnalysisOptionsEnableintermediateResults”的字段,启用并禁用分析结果返回到使用不同、连续分析过程间的软件应用程序1701(例如在语义分析过程和相继的识别过程间)。该类型还可以有名为“const AnalysisOptions EnableLists”的字段,它启用和禁用列表的检测,还包括名为“const AnalysisOptionsEnableTalbes”的字段,它启用并禁用表格的检测。该枚举的类型可以进一步包括名为“const AnalysisOptions EnableTextRecognition”的字段,它启用并禁用文本识别分析过程。然而,值得注意的是,如果附加的分析过程可用(或同一分析过程的不同版本),则该类型可以相应地包括附加的AnalysisOptions。
另外,Ink Analysis API包括AnalysisResultsEventArgs类。该类可以有“public AnalysisResultsEventArgs()”的构建器,当唤醒AnalysisResults事件时,它建立包含分析结果的数据结构并被返回到软件应用程序1701。该类还可以包含名为“InkAnalyzer InkAnalyzer{get;}”的属性,它标识实现分析过程的InkAnalyzer对象。
API还可以有Line类,它与一些类型的操作系统一起时会有用,该种操作系统识别标识几何行的“Line”对象的使用。该类还可以包括构建器,诸如名为“public Line(Point beginPoint,Point endPoint)”的构建器,它创建Line对象。该类还可以包括多个属性,诸如名为“public PointBeginPoint{get;set;}”的属性,它表示行对象的开始点,以及名为“publicPoint EndPoint{get;set;}”的属性,它表示行对象的结束点。
除了这些类以外,Ink Analysis API还可以包含Recognition Alternate类。该类可以包含表示对与识别器的字典比较的墨水的分段可能的单词匹配的元素。例如,该类可以包括名为“Line Ascender{get;}”,它提供了存在在单行上(用两点表示的行)的RecognitionAlternate对象的上升行,该类还包括名为“public Line Baseline{get;}”的属性,它提供存在在单行上的RecognitionAlternate对象的基线,还包括名为“Line Descender{get;}”的属性,它提供了存在在单行上的RecognitionAlternate对象的下降行。该类还包括名为“RecognitionResult Extract{get}”的属性,它提供给当前RecognitionAlternate对象一RecognitionResults对象。该属性可以用于例如从包含一个单词的行的RecognitionResult对象中抽取该单词的RecognitionResult对象。
它还可以包括名为“Line Midline{get;}”的属性,它提供存在在单行上的RecognitionAlternate对象的中线,还包括名为“StrokeCollectionStrokes{get;}”的属性,它提供包含在墨水对象内的笔画的集合(即它提供表示与RecognitionResult相关联的笔画的StrokeCollection),还包括名为“StrokeCollection[]StrokesArray{get;}”的属性,它提供了包含在一个或多个墨水对象内的笔画集合,表示与RecognitionResult相关联的笔画。该类还可以包括名为“RecognitionConfidence RecognitionConfidenc{get;}”的属性,它提供识别过程在确定RecognitionAlternate对象或表示的识别中的机密级(例如高、中等或低)。对于非行节点,返回相关的上下文节点的子节点的最低RecognitionConfidence。它还可以包含名为“stringRecognizedString{get;}”的属性,它规定方案的结果字符串。因此,对于在单词上下文节点上的任何上下文节点,结果字符串用该方法被链接。例如,行节点会包含结果字符串,它接着包含所有其子节点或单词节点的结果。段落节点然后会包含包含其所有子节点或行节点的结果的结果字符串。
Recognition Alternate类还可以包含一个或多个方法,它们包括例如名为“StrokeCollection[]GetStrokesArrayFromTextRange(intselectionstart,int selectionlength)”的属性,它规定来自对应已知文本范围的每个墨水对象的StrokeCollection。该类还可以包含名为“StrokeCollection[]GetStrokesArrayFromTextRange(StrokeCollection[]strokesArray)”的属性,它规定包含笔画的已知输入集合的笔画的最小集合,且识别器为此提供方案。更特别地是,笔画由墨水对象的阵列被返回,每个包含集合的笔画索引阵列。值得注意的是,由该方法返回的墨水笔画集合可以匹配输入集合,或如果输入集合只匹配包括所有输入笔画的最小识别结果的一部分,则它可以更大。该类还可以进一步包括名为“StrokeCollection[]GetStrokesArrayFromTextRange(StrokeCollection strokes)”的方法,它规定包含已知笔画输入集合的最小笔画集合,且识别器为此提供方案,该类还包括一方法名为“StrokeCollection GetStrokesArrayFromTextRange(intselectionstart,int selectionlength)”,它规定对应已知文本范围的StrokeCollection。
该类还可以包括名为“void GetTextRangeFromStrokes(ref intselectionstart,ref int selectionend,StrokeCollection strokes)”的方法,它规定识别的文本的最小范围,为此识别器可以返回包含已知笔画集合的方案,该类还包括名为“void GetTextRangeFromStrokes(ref intselectionstart,ref int selectionend,StrokeCollection[]strokesarray)”的方法,它规定识别的文本的最小范围,为此识别器可以返回包含已知笔画集合的方案。它还有名为“RecognitionAlternateCollectionSplitWithConstantPropertyValue(GUID propetyyType)”的方法,它返回方案的集合,它们是在其上该方法被调用的方案的分割。集合内的每个方案包含相邻的识别分段,这些分段对于传递到方法内的属性有相同的属性值。例如,该方法可以用于获得方案,这些方案通过识别结果内的机密级(高、中等或低)的边界、行边界或分段边界分割原始方案。它还可以进一步包括名为“byte[]GetPropertyValue(GUID propertyType”的方法,它规定方案的已知属性值,诸如方案内识别器的机密。然而不是所有的识别分析过程会为所有的属性类型提供值。因此,该方法为相关的识别分析过程支持的类型提供数据。
Ink Analysis API还可以包括Recognition Alternate Collection类。如同许多上述的类,该类可以包括构建器,名为“RecognitionAlternateCollection()”,用于创建RecognitionAlternateCollection对象。该类还可以包括多个属性,诸如名为“Count{get;}”的属性,它提供包含在方案识别值集合内的对象或集合数目;名为“IsS ynchronized{get;}”的属性,它提供一值,指定对方案识别值集合的访问与软件应用程序1701同步(即“线程安全”);以及一属性名为“SyncRoot{get;}”,它提供用于同步对方案识别值集合的访问的对象。
该类还可以包括一个或多个方法,诸如名为“virtual void CopyTo(Arrayarray,int index)”的方法,它们将方案识别值的当前集合的所有元素复制到规定的一维阵列,开始于规定目的地阵列索引;名为“IenumeratorIemuerable.GetEnumerator()”的方法,它是Ienumberable的标准实现,它使得调用者能为每个使用以进行构建,以对方案识别值集合内的每个RecognitionAlternate进行枚举。该类还可以包括名为“RecognitionAlternateCollectionEnumerator GetEnumerator()”的方法,它返回包含在识别方案值集合内的所有对象的RecognitionAlternateCollectionEnumerator。该方法可以例如用于获取在识别方案值的集合内的每个对象。
Ink Analysis API可以附加地包括Recognition Confidence枚举和Recognition Mode枚举,其中的每个可以包含一个或多个与识别分析过程相关的字段。例如,Recognition Confidence类可以包含多个字段,诸如名为“Intermediate”的字段,指明识别分析过程是机密的,正确的结果在提供的方案识别值列表内;名为“Poor”的字段,它指明识别分析不是机密的,结果在提供的方案识别值列表内;以及名为“Strong”的字段,它指明识别分析过程是机密的,方案识别值内的最佳方案是正确的。
类似地,Recognition Mode类可以包含字段,这些字段规定识别分析过程如何解释电子墨水数据,因此确定识别结果字符串。例如,该类可以包括名为“Coerce”的字段,它规定识别分析过程基于为上下文规定的仿真陈述而强迫识别结果;以及名为“Line”的字段,它规定识别分析过程将电子墨水数据作为单行处理。该类还可以包括名为“None”的字段,它规定识别分析过程不应用识别模式,该类还包括名为“Segment”的字段,它规定识别分析过程将电子墨水数据作为形成单个单词或字符处理。而且,该类还可以包括名为“TopInkBreaksOnly”的字段,它禁用多个分段。
而且,Ink Analysis API可以包括Context Link类,该类定义可以被链接在一起的两个上下文节点。ContextLink节点本身表示哪两个上下文节点被链接、链接的方向和链接的类型。该类还可以包括名为“ContextNodeSourceNode{get;}”的属性,它规定正在从另一上下文节点被链接的源上下文节点;名为“ContextLinkType LinkType{get;}”的属性,它规定在源和目的地上下文节点间存在的链接关系类型;以及名为“CustomLinkType{get;}”的属性,它规定使用用户链接。该情况发生在当应用程序决定使用Ink AnalyzerAPI的链接系统以表示超出API能识别的特定应用程序的链接。
该类还可以包括名为“ContextNode DestinationNode{get;}”的属性,它规定正在从另一上下文节点被链接的目的地上下文节点。该类有两个可用的构建器,它们建立在现存源和目的地上下文节点间的关系。
该类还可以包括名为“ContextLinkType enum”的枚举,它定义两个上下文节点共享的关系类型。这些多种链接类型可以包括例如“AnchorsTo”类型,它描述一个节点锚定到另一节点。两个节点基于语义分析结果可以使用SourceNode或DestinationNode属性。链接类型还可以包括类型“Contains”,它描述一个节点包含另一节点。有该关系情况下,该包含节点可以被称为SourceNode,而被包含的节点可以被称为DestinationNode。链接类型可以进一步包括“PointsTo”类型,它描述一个节点指向另一节点。对于该关系,进行指向的节点被称为SourceNode,而被指向的节点被称为DestinationNode。而且,链接类型可以有“PointsFrom”类型,它描述一个节点指自其它节点。在该关系中,从其它节点指开的节点可以被称为SourceNode,而被指向的节点可以被称为DestinationNode。
链接类型可以附加地包括“SpansHorizontally”类型,它描述一个节点从另一节点的水平长度上跨越,还可以包括“SpansVertically”类型,它描述一个节点从另一节点的垂直长度上跨越。对于这些类型,一般写在最后的覆盖其它节点的节点(删除、加下划线、边条)被称为SourceNode,而正在被跨越的节点可以被称为DestinationNode。链接类型还可以包括“Custom”类型,它描述使用用户链接类型。当使用该值时,在ContextLink对象上的属性“CustomLinkType”可以提供关于该链路目的细节。
相应地,Ink Analyzer API提供多个函数以及服务,用于异步地分析文档内的电子墨水,且然后相继将分析过程的结果与文档的当前状态相符,如上详述。另外,可以理解的是,上述的多个类可以应用到多个操作系统和环境,诸如微软Windows操作环境、微软COM操作环境、Unix或Linux操作环境,或其它任何合适的计算机操作环境。而且,可以理解的是,根据本发明的多个实现的应用编程结构可以省略上述的一个或多个类分量,或可以包括附加的分量以提供期望的服务或功能。
协调如上详述,本发明的多个实施例使得软件应用程序1701继续操作,同时文档1703内的未经分析的电子墨水由后台分析过程进行分析。因为这样,软件应用程序1701可以以多种与分析过程的结果矛盾的方式修改文档1703。例如,软件应用程序1701可能在文档1703内输入新的电子墨水数据1705,或从文档1703删除存在的电子墨水数据1705。而且,软件应用程序1701可以编辑存在的电子墨水数据1705,诸如通过移动存在的电子墨水数据1705的位置或改变存在的电子墨水数据1705的位置。而且,软件应用程序1705可以以影响存在的电子墨水数据1705的方式加入、删除或修改非墨水文档元素1707。例如,软件应用程序1701可以删除已经用电子墨水数据1705加注的打字文本。
软件应用程序1701可以附加地“牵制”存在的电子墨水数据1705,以禁止分析过程对其进行修改。例如,如果用户手工地规定墨水笔画组的布局或分类,则软件应用程序1701可以指定这些墨水笔画留在该特定布局内或与该分类在一起,而不管语义分析过程生成的结果。类似地,用户可以为墨水笔画组规定特定的识别结果,而不管识别过程生成的结果。
根据本发明的不同实现,可以使用多种类型的牵制。例如,墨水分析工具1901可以允许软件应用程序1701“硬”牵制墨水。这样安排后,没有墨水笔画可以被加入任何经牵制的节点以下的叶子节点,没有笔画可以从任何经牵制的节点以下的叶子节点中被移去,不允许加入或移去子节点,且不允许在任何经牵制的节点以下的节点更换父节点。或者或另外,墨水分析工具1901可以允许对最新的笔画“硬”牵制,这使得最新的笔画在规定的条件下被加入,还可以仅指笔画从任何经牵制的节点以下的叶子节点中被移去,禁止加入或移去子节点,并禁止任何经牵制的节点以下的节点更换父节点。而且,模式分析工具1901可以允许软件应用程序1701或者或另外地“软”牵制墨水。这样安排后,没有笔画可以从任何经牵制的节点以下的叶子节点中被移去,由特定的规则允许加入笔画(这使得能加入最近的笔画),并允许重组、加入并移去子节点。值得注意的是可以移去牵制,且一旦移去牵制,则先前被牵制的节点和其子节点可以被认为是“脏的”即需要重新分析。
而且,根据本发明的多个示例的墨水过程可以使用多个分析过程,如上所述。相应地,早先的分析过程结果可以修改电子墨水数据1705,而同时正在执行第二相继的分析过程。相应地,分析过程的结果必须与文档1703的当前状态相符,使得只有那些对于文档1703的当前状态有效的结果被应用到其分析上下文对象1709。即当前分析上下文对象1709(以及在一些实例中,分析过程的结果)经修改以略去分析过程的结果和文档1703的当前状态间的不符或“冲突”。
值得注意的是,为了使协调过程的结果有效,文档1703的状态在协调过程中不应改变。协调过程因此可以使用软件应用程序1701在其上运行的主线程而经实现,且执行协调过程会暂时停止软件应用程序1701的操作。或者,其它的技术,诸如数据结构锁定,可以被用于保证文档1703的状态在协调过程中不改变。相应地,期望尽快实现协调过程,以防止用户对于软件应用程序1701的性能感到失望。协调过程的另一考虑是其对于在分开的后台分析线程上运行的分析过程的性能的影响。如果当前分析上下文对象1709(即反映文档1703的当前状态的分析上下文对象1709)和分析结果的不符定义太宽泛,则大量的电子墨水不必要地要经重新分析。当然,仍然可以在协调期间使用其它其它保护文档完整性的方法,而不偏离本发明。
在本发明的多个示例中,分析过程和相符过程可以协调以下的一个或多个约定以改善相符过程的有效性和方便性。第一,分析过程可以尽可能地重新使用独立于文档的分析上下文对象1903内的文档元素的节点。即通过为文档元素建立新的不相关的节点可以避免冲突。另外,相符过程应遵守软件应用程序1701指定的“牵制”。虽然该分析过程一般协调软件应用程序1701的牵制指定,但软件应用程序1701可以牵制电子墨水数据1705,而同时执行分析过程。另外,协调过程应保证在完成协调过程后在当前分析上下文节点1709内不应留有空节点。然而值得注意的是根据本发明的其它实现,可以略去一个或多个这些约定,或不遵守这些约定。例如,本发明的一些实现可以允许分析对象1709包含空节点。
除了这些约定外,相符过程一般必须协调分析上下文对象1709规定的结构规则。例如,在本发明的一些实现中,分析上下文对象1709不允许文档元素的节点被删除,除非它没有子节点。
如先前所述,当分析过程对独立于文档的分析上下文对象1903进行改变时发生冲突,该对象在某些方面与在初始分析过程后对分析上下文对象1709进行的改变冲突。冲突可以被分为两种类型强制冲突和任意冲突。
强制冲突发生在当不可能由分析过程将对独立于文档的分析上下文对象1903进行改变为文档1703的当前状态应用到分析上下文对象1709时。强制冲突会发生在例如当软件应用程序1701已经“强制”或固定了分析上下文对象1709内的节点,且分析过程已经改变独立于文档的分析上下文对象1903内的对应节点时。强制冲突还发生在当分析过程已经对独立于文档的分析上下文对象1903的节点进行了任何类型的改变,但软件应用程序1701已经从分析上下文对象1709删除了对应的节点,且当软件应用程序1701已经向分析上下文对象1709内的节点加入笔画或子节点时,当分析过程已经删除独立于文档的分析上下文对象1903内的对应节点时。另外,强制冲突发生在当分析过程重新安排或建立了独立于文档的分析上下文对象1903内对应节点的链接时,软件应用程序1701已经删除了分析上下文对象1709内的节点的时候。
任意冲突发生在当软件应用程序1701改变了分析上下文对象1709内的值,而该值与分析过程在独立于文档的分析上下文对象1903内改变的值相关,但分析上下文对象1709的接口的牵制限制、元素重新使用限制以及固有限制仍会允许应用分析过程对分析上下文对象1709的改变。任意冲突仍可以作为改变应用于分析上下文对象1709或者避免。另外,协调过程可以简单地忽略一些一起的任意冲突类型。
任意冲突的图形示例发生在当分析上下文对象1709和独立于文档的分析上下文对象1903内的原始节点有墨水笔画A和B的子节点A和B时。软件应用程序1701然后可以在分析上下文对象1709内为墨水笔画C加入第三子节点C,而同时分析过程向独立于文档的分析上下文对象1903加入墨水笔画D的第三子节点D。在本发明的多个实施例中,协调过程可以在分析上下文对象1709中基于分析结果将子节点D加入父节点。虽然在分析上下文对象1709内的父节点的改变不被禁止,但是它仍然以一种软件应用程序1701不期望的方式改变了父节点的特征。例如,与父节点相关联的墨水可以相继地被认为经分析,且可能不会经重新分析以考虑墨水C对墨水笔画组的影响。另外,父节点的识别结果现在被称为错误的子节点或笔画,且它不会再次被纠正。
相应地,本发明的多个示例基于分析过程的结果,在更新分析上下文对象1709时,不会为任意冲突应用改变。虽然该准则基于任意冲突,可以要求附加的处理以标识并封阻改变,但该准则相对而言比较容易实现且容易维持。当然,本发明的其它示例可以根据其它准则实现对应任意冲突的改变。更特定地是,这些其它的示例可以实现来自任意冲突的改变,这些改变不建立分析上下文对象1709内持久的逻辑不一致关系。
值得注意的是冲突可以有传递效应,因为一个冲突会创建另一个。例如,分析过程可以为行建立节点L,然后为作为节点L的子节点的单词建立节点W。如果建立节点L由于任何类型的冲突而未应用到分析上下文对象1709,,则节点W的创建将会是强制冲突。
本发明的多个示例可以使用基于对数的方法以使得分析过程的结果与文档1703的当前状态相协调。在该基于对数的方法中,独立于文档的分析上下文对象1903包括由分析过程对独立于文档的分析上下文对象1903进行的改变的记录。该记录可以是改变记录列表。每个改变记录然后可以包括进行的改变的类型(例如通过标识被调用以改变独立于文档的分析上下文对象1903的方法)、改变的文档元素(通过标识例如对其调用方法的独立于文档的分析上下文对象1903内的节点)以及任何为方法呼叫重建自变量需要的信息。有利地,由于独立于文档的分析上下文对象1903由墨水分析工具1901和分析过程实现,则改变记录对于软件应用程序1701可以是不可见的(虽然记录或者可以向应用程序1701显示,如果需要的话)。
为了使用改变记录方法执行相符过程,墨水分析工具1901检查按事件顺序的改变的每个改变记录。即墨水分析工具1901标识对独立于文档的分析上下文对象1903进行的改变。对于每个改变,墨水分析工具1901可以实现图27内说明的过程。首先,在步骤2701,墨水分析工具1901试图访问需要应用改变的当前分析上下文对象1709内的对应节点。值得注意的是如果软件应用程序1701从分析上下文对象1709删除了一个或多个必须的节点,则该获取步骤可能失败,导致强制冲突。
下一步,在步骤2703,墨水分析工具1901确定改变是否建立了强制或任意冲突。以下将详细解释确定的过程。在步骤2705,如果墨水分析工具建立强制冲突或任意冲突因为相符过程的准则被禁止,则墨水分析工具1901或者进行改变,或者禁止改变。例如,如果改变创建强制冲突或相符过程的准则禁止任意冲突,则墨水分析工具1901可能封阻在分析上下文对象1709内的节点的改变,该分析上下文对象标识进行改变的文档1703的对应区域。如果在另一方面,应用改变,则墨水分析工具1901可以调用合适的方法以对分析上下文对象1709内的必要节点进行期望的改变。
如果分析过程向分析上下文对象1709加入新的元素节点,但不能成功将笔画节点移到新节点,则分析过程不会在笔画节点已经被成功地移到新节点的假设下试图删除元素节点。因此,在独立于文档的分析上下文对象1903内会有一个元素节点,其中分析上下文对象1903对应当前分析上下文对象1709的空节点。相应地,一旦处理了所有分析上下文对象1709的改变,在步骤2707内,墨水分析工具1901预览独立于文档的分析上下文对象1903以删除分析上下文对象1709内的任何“空”节点,其中分析上下文对象1709对应独立于文档的分析上下文对象1903的节点。该空节点删除步骤是可选的,可以被略去,而不偏离本发明。
值得注意的是,独立于文档的分析上下文对象1903不应包含任何空节点,且相符过程应禁止在独立于文档的分析上下文对象1903内创建空节点。还值得注意的是该步骤不会试图删除分析上下文对象1709的根节点,即使它例外地是一个空节点。最后,在步骤2709内,墨水分析工具1901会向软件应用程序1701标识独立于文档分析上下文对象1903内的分析结果和当前分析上下文对象1709间的任何冲突,使得软件应用程序1701可以包括受到相继分析过程内的冲突影响的文档1703的区域。
现在回到步骤2703内的冲突检测,一旦访问了分析上下文对象1709内的所有节点,其中分析上下文对象1709对应独立于文档的分析上下文对象1903内的改变,则分析上下文对象1709内的每个节点的所有其它可能的强制冲突可以静态被检测到(或者,可以为每个节点检测到强制冲突)。更特别的是,强制冲突可以基于分析上下文对象1709的接口指定的规则而被检测到。
然而任意冲突,没有关于文档1703的附加状态信息一般不能被标识,因为这些改变没有分析上下文对象1709的接口的授权,相反这些改变是基于任意选择,任意选择是关于当同时影响到分析上下文对象1709内的相同节点时,倾向于软件应用程序1701进行的改变,而不是分析过程进行的改变。这些冲突相反可以通过将当前分析上下文对象1709与独立于文档的分析上下文对象1903的原始版本相比较而被检测到,以确定在分析上下文对象1709内的哪些节点为软件应用程序1701改变。
例如,相符准则可以定义从父节点由软件应用程序1701加入或删除子笔画节点对于该父节点是任意冲突。为了确定该种改变的发生,墨水分析工具1901可以预览取决于当前分析上下文对象1709内的节点的子笔画节点,并将其数目和Guid(或其它唯一的标识符)与子笔画节点相比较,该子笔画节点取决于独立于文档的分析上下文对象1903的原始版本内的对应节点。如果子笔画节点匹配这些方面(以及任何其它期望的方面),则墨水分析工具1901可以对分析上下文对象1709内的父节点应用这些分析过程进行的改变。
继续该示例,记录项内的下一改变可以包括另一笔画节点,该节点被移动以依附于独立于文档的分析上下文对象1903内的父节点。如果该改变没有强制冲突,则墨水分析工具1901被允许对分析上下文对象1709进行对应的改变。当墨水分析工具1901检查独立于文档的分析上下文对象1903的原始版本以确定是否存在任意冲突,然而,其结论是当前分析上下文对象1709内的父节点比独立于文档的分析上下文对象1903多一个或多个非独立的笔画节点,所以它会错误地确定任意冲突存在(即它会基于它进行的改变而确定存在冲突)。
相应地,基于记录的相符过程应排除先前由相符进行的改变,该相符基于当前分析上下文对象1709和独立于文档的分析上下文对象的原始版本间的比较。在本发明的多个示例中,在检查任何改变列表项前,可以通过将当前分析上下文对象1709内的所有节点于其在独立于文档的分析上下文对象1903的原始版本内的对应节点相比较而进行排除,并保留冲突的节点列表。
或者或另外,本发明的多个示例可以维持当前分析上下文对象1709内的元素的缓冲,该对象1709对应独立于文档的分析上下文对象内的元素,该分析上下文对象带有在任何时候获取对应元素时使用的分析结果。不存在初步的通过(pass),但在确定对应的元素没有任意冲突时第一次填充缓冲。可选地,缓冲还可以跟踪结果内的哪些元素有任意冲突。当改变记录很短时,该方法的性能优于任意冲突—找到通过(pass)方法,但如果带有分析结果的独立于文档的分析上下文对象1903包含许多节点,则该方法性能较差。且该方法不比其它方法复杂。
值得注意的是,缓冲内的元素的父上下文节点应经缓冲。更特别的是,对于子上下文节点的改变会被认为是对其父上下文节点的属性的改变。因此,存储在缓冲内的上下文节点的父上下文节点还需要对软件应用程序1701在改点进行的改变重新评估。为缓冲内的每个上下文节点缓冲父节点需要在树上向上经重复(例如从父节点到祖父节点到曾祖父节点)直到通过根节点或直到检测到改变。然而在许多情况下,该重复只是几个节点,因为树一般不会很深。
值得注意的是,在本发明的多个示例中,独立于文档的分析上下文对象1903的原始版本只用于检测任意冲突。如果任意冲突的检测在本发明示例中是不必要的,则可以删去独立于文档的分析上下文对象1903的原始版本和对应的元素缓冲。该“基于记录”的方法的维持要比以下描述的“基于比较”的方法要简单,因为它需要更少的缓冲以确定分析过程进行了何种改变,而且独立于文档的分析上下文对象1903(诸如“删除节点”或“建立节点”是被分开处理的),所以加入操作的新类型不会影响其它操作。
不使用“基于记录”的技术用于将分析结果与文档1703的当前状态相比较,取而代之本发明的多个示例可以使用“基于比较”的方法用于相符。基于比较方法的主要特征是不保留对独立于文档的分析上下文对象1903进行的改变的记录,所以该技术不收集关于分析过程干了什么的信息,而是将包含分析结果的独立于文档的上下文对象1903与独立于文档的分析上下文对象1903的原始版本相比较。因此,使用该方法,独立于文档的分析上下文对象1903的原始版本总是需要的,这与关于任意冲突的判断无关。
使用该方法,墨水分析工具1901首先建立笔画地图。即对于独立于文档的分析上下文对象1903的原始版本内的每个墨水叶子节点,如果在当前分析上下文对象1709内有对应节点,则叶子节点被加入哈希表格(或其它的合适数据结构)。因此,哈希表格将在独立于文档的分析上下文对象1903内的笔画GUID(或其它唯一的节点标识符)映射到当前分析上下文对象1709内的叶子节点引用。
下一步,墨水分析工具1901标识软件应用程序1701在分析上下文对象1709内已经改变的所有节点。这可以使用上述用于确定任意冲突的技术完成。对于独立于文档的分析上下文对象1903的原始版本内的每个节点,如果在当前分析上下文对象1709内有对应的节点,且它在重要的方面不同于独立于文档的分析上下文对象1903的原始版本内的节点,则墨水分析工具1901确定该节点已经为应用程序改变了,且是潜在的冲突。对该种节点的引用保留在对应分析结果节点的第一列表和建立任意冲突的节点的第二列表中,这些分析结果节点不应加入分析上下文对象1709(此后被称为resultsNodesNotToAdd列表)。
对于独立于文档的分析上下文对象1903的原始版本内的每个节点,墨水分析工具1901在带有分析结果的独立于文档的分析上下文对象1903和当前的分析上下文对象1709内查询对应的节点。对于分析上下文对象1709内的每个节点,墨水分析工具1901确定软件应用程序1701是否删除了该节点。该种节点存在于独立于文档的分析上下文对象1903的原始版本内。带有分析结果的独立于文档的分析上下文对象1903内的对应节点被加入resultsNodesNotToAdd列表,如果它存在的话。
下一步,墨水分析工具1901确定分析过程是否从独立于文档的分析上下文对象1903中删除了节点。当在分析上下文对象1709内有对应节点,且它没有改变,但在独立于文档的分析上下文对象1903内没有对应节点时可以被检测到。分析过程删除的节点可以被保留在被删除的节点列表内。该种节点不加入当前的分析上下文对象1709,但它不进入resultsNodesNotToAdd列表,因为在带有分析结果的独立于文档的分析上下文1903中没有对应的节点。
如果软件应用程序1701没有删除或改变节点,且分析过程没有删除节点,则墨水分析工具1901可以确定分析过程是否改变了节点。如上描述的用于检测软件应用程序1701进行的改变的相同技术可以用于检测分析过程进行的改变。值得注意的是分析过程进行的改变被加入resultsNodesNotToAdd列表,且改变通过调用在分析上下文对象1709内的节点上的合适方法而经传播。如果软件应用程序1701或分析过程都没有改变或删除节点,则节点不发生任何情况,且墨水分析工具1901将节点加入到resultsNodesNotToAdd列表,因为节点存在于带有分析结果的独立于文档的分析上下文对象1903内,且不被加入分析上下文对象1709内。
下一步,对于带有分析结果的独立于文档的分析上下文对象1903内的每个节点,如果节点不在resultsNodesNotToAdd列表内,则墨水分析工具1901可以通过在分析上下文对象1709内建立对应的节点而传播有分析过程进行的对节点的改变。遍历分析结果内的节点可以通过使用从上到下前序的方法实现,使得父节点保证在子节点创建前被创建。
当在分析上下文对象1709内创建新叶子节点时,任何于包含在分析结果内的节点相关联的墨水笔画还可以从分析上下文对象1709内的其它节点被移到新的节点。上述的笔画地图还可以被用于为移动笔画标识源元素。如果源元素不存在(建立强制冲突)或如果源元素被包含在上述的任意冲突列表内,则墨水笔画不被移动。为了避免对分析上下文对象1709不必要的调用,如果没有至少一个非冲突的笔画源节点,则该墨水分析工具1901可以避免调用方法以建立子上下文节点。对于非墨水叶子节点也实现相同的笔画源检查,使得不建立行的节点,直到例如至少一个行的组成单词要包含至少一个成功被移动的笔画。
其它的信息然后被应用于新建立的节点,诸如识别格子。识别格子即使在一定笔画不能被移动时也被应用,建立应用的(即不被封阻的)导致暂时逻辑不一致的任意冲突。然而,由于失败的笔画移动在分析上下文对象1709的部分的指定内被反映,其中分析上下文对象1709对应改变被封阻的文档的区域,则不一致是暂时的,因为软件应用程序1701被建议重新分析被封阻的区域。
对于每个要从分析上下文对象1709删除的节点,墨水分析工具1901列表检查节点是否实际被删除,且实现了所有其它的对分析上下文对象1709的编辑和加入操作。要被删除的节点和实际没有所有子节点的节点和笔画从分析上下文对象1709中被删除。一旦删除了该节点,所有的父辈节点(直到但不包括根节点)被连续删除直到遇到带有剩余子节点的父辈节点。
最终墨水分析工具1901在带有分析结果的独立于文档的分析上下文对象1903和分析上下文对象1709间的节点排序进行全局比较,以检测并传播分析过程对分析上下文对象1709进行的改变。然而值得注意的是,该比较忽略独立于文档的分析上下文对象1903的原始版本,这样它没有办法检测软件应用程序1701对排序进行的改变。下一步,对于在分析上下文对象1709内有对应节点的分析结果内的每个包含节点,比较包含节点的子节点的排序。如果两个包含节点有完全相同的子节点集合,则分析结果内的排序被传播到分析上下文对象1709,这是通过循环在分析结果内的包含节点的子节点列表直到在分析上下文对象1709内的包含节点列表内的相同位置找到节点为止,该分析上下文对象1709没有于分析结果内的子节点相同的GUID(或其它类型的标识符)。当找到该种不匹配时,必须在分析上下文对象1709内的子节点列表中进一步找到对应节点。墨水分析工具1901然后搜索分析上下文对象1709内的剩余子节点列表以找到该节点,并调用方法以移动子节点,为了纠正分析上下文对象1709内的该节点的顺序。墨水分析工具1901然后继续在分析结果内的节点的循环。
当然,对相同列表的假设不一定为真,因为分析列表或软件应用程序1701可以在两个列表内删除或插入节点。“子列表映射器”对象用于模仿该假设为真,这是通过只包含公有元素的“经修剪”的列表而实现的。上述的过程然后在经映射的子节点列表上运行,且这些移动被转换成实际索引和列表映射器对象的调用。
因此,根据上述的本发明的各个示例的协调技术使得能对文档内的当前文档元素应用分析过程的结果,即使文档的内容在分析过程开始后有所改变。协调技术因此使得文档内的电子墨水能于寄宿文档的软件应用程序的操作异步地经分析。另外,这些协调技术可以有利地为多个不同的软件应用程序使用,包括带有现存、专有锁定或其它同步策略的现存多线程软件应用程序。
被事件驱动的系统如上所述,本发明的多个示例通过复制独立于文档的分析上下文对象而建立文档的状态的“快照”,然后在寄宿文档的软件应用程序继续操作同时对独立于文档的分析上下文对象进行异步分析。或者,本发明的各个示例可以居先使用独立于文档的分析上下文对象进行异步墨水分析。不同的是,本发明的这些示例可以使用密封的分量以存储文档的所有墨水和语义数据。更特别的是,本发明的这些示例识别对文档进行的两种类型的修改墨水事件,诸如加入、删除或修改笔画;以及结构事件,诸如将笔画组成单词、加入语义节点或将文本识别结果于笔画相联系。每个事件包含为向外部收听者完全描述事件需要的所有数据。有了这些“丰富”的事件,收听者可以通过按接收顺序运用这些事件而维持墨水对象完全一样的副本。
图28根据本发明的示例说明如何使用该安排的示例。如在该图内可见,应用程序2801使用墨水分析工具2803。墨水分析工具2803为应用程序2801维持墨水数据2805以及文档结构2807(例如诸如树结构)。应用程序还使用事件队列2809、语义分析器过程2811和识别过程2817。语义分析器过程2811维持墨水数据2805的克隆2813和文档结构2807的克隆2815。类似地,识别过程2817维持墨水数据2805的克隆2819以及文档结构2807的克隆2821。
当应用程序生成墨水数据时,它将墨水数据通过方法2823提供给墨水分析工具2803。作为响应,墨水分析工具2803生成对应墨水数据内的改变的事件、向每个事件加入标记并将期望的分析过程或多个定义为监听带有特定标记的事件的分量。例如,所有用户对墨水的改变可以用标记“UserChange”标记,且带有该标记的事件2825响应该改变被同时发送到事件队列2809。在未来的一些点,语义分析器过程2811以及识别过程2817会从事件队列2809获取经标记的事件。
第一分析过程(例如语义分析过程2811)会监听墨水分析工具2803发出的所有事件,并对带有标记UserChange的事件进行响应。第一分析过程然后会将事件规定的改变应用到其墨水数据2813的内部复本以及文档数据2815、分析事件内描述的数据,然后创建并对尤其改变生成的带有标记“PaserlChange”的事件2827进行标记。第二分析过程(例如写入识别过程2817)然后会监听标记有ParserlChange标记的事件。作为响应,它会对其内部的墨水数据2819的内部副本和文档结构2821应用事件规定的改变,并能够作为响应分析事件内描述的数据。第二分析器然后会创建并对带有其分析结果的事件2829用标记“HandwritingRecognitionChange”进行标记。由于墨水分析工具2803接收来自语义分析器过程2811和识别过程2817的事件,它将事件2831发送到应用程序2801以指明文档结构2807内的改变。
本发明的这些实施例还会通过监听多于一个事件的事件支持每个分析过程,并基于内部处理对有改变的事件用不同标记进行标记。相应地,本发明的这些其它实现还可以允许在文档内分析电子墨水,该文档与寄宿文档的软件应用程序的操作异步。
结论虽然本发明是用包括实现本发明的最优模式的特定示例描述的,领域内的技术人员可以理解,存在上述系统的多个变体和排列组合以及在本发明的原理和范围内的技术,如在权利要求书中提出的。
权利要求书(按照条约第19条的修改)1.一种用于分析电子墨水的应用编程接口,包括分析上下文对象,为包含电子墨水内容的文档维持文档数据,所述文档由一在第一处理线程上运行的软件应用作宿主,以及墨水分析器对象,其采用所述第一线程来制作所述文档数据的副本,把所述文档数据的副本提供给电子墨水分析过程,以及把所述第一处理线程的控制返回到所述软件应用。
2.如权利要求1所述的应用编程接口,其特征在于,所述墨水分析器对象将所述分析过程的结果与所述文档的当前文档数据相协调。
3.如权利要求1所述的应用编程接口,其特征在于,所述墨水分析器对象制作所述文档数据的第二副本,用于将所述分析过程的结果与所述文档的当前文档数据相协调。
4.一种应用编程接口,其特征在于包括墨水分析器对象,其从作为所述文档的宿主并且在第一处理线程上运行的软件应用接收包含电子墨水内容的文档的文档数据,采用所述第一线程来制作所述文档数据的副本,把所述文档数据的副本提供给电子墨水分析过程,把所述第一处理线程的控制返回到所述分析过程;以及将所述分析过程的结果与所述文档的当前文档数据相协调。
5.一种分析电子墨水的方法,其特征在于包括接收一标识分析上下文对象的分析上下文值,所述分析上下文对象包括一数据结构,所述数据结构包含文档的一个或多个元素的特征数据;以及响应于所述分析上下文值的接收,提供对所述分析上下文对象的分析结果。
6.如权利要求5所述的方法,其特征在于还包括接收一定义第一处理线程的用户界面属性;响应于所述分析上下文值的接收,使用第二处理线程来分析所标识的分析上下文对象;以及响应于所述用户界面属性的接收,把所述分析上下文对象的分析结果提供给所述第一处理线程。
7.如权利要求5所述的方法,其特征在于还包括接收一指定用于分析所述分析上下文对象的一个或多个分析标准的选项属性;以及响应于所述分析上下文值的接收,使用所指定的分析标准来分析所标识的分析上下文对象。
8.如权利要求7所述的方法,其特征在于,所述分析标准包括由以下组成的组中的一个或多个启用文本识别、启用表格的使用、启用列表的使用、启用注解的使用以及启用连接符和包含器的使用。
9.如权利要求5所述的方法,其特征在于还包括响应于所述分析上下文值的接收,使用背景处理线程来分析所标识的分析上下文对象;以及允许在文档分析期间对文档的改变。
10.如权利要求5所述的方法,其特征在于还包括通过标识为了包括所述分析上下文对象的分析结果而修改的所述分析文档对象的副本,而提供所述分析上下文对象的分析结果。
11.如权利要求5所述的方法,其特征在于,所述提供所述分析上下文对象的分析结果包括在所述分析上下文对象的分析完成后,产生一结果事件,指示所述分析上下文对象的分析的完成。
12.如权利要求5所述的方法,其特征在于还包括接收调用以将所述分析上下文对象的分析结果与所述文档的当前状态相协调;以及响应于所述接收调用以将所述分析上下文对象的分析结果与所述文档的当前状态相协调,将所述分析上下文对象的分析结果与所述文档的当前状态相协调。
13.如权利要求5所述的方法,其特征在于还包括接收调用来分析所述分析上下文对象的至少一部分;响应于所述调用的接收,分析所述分析上下文对象的所述至少一部分;以及禁止对所述文档的改变,直到已经分析了所述分析文档对象的所述至少一部分为止。
14.如权利要求13所述的方法,其特征在于还包括接收所述文档一区域的标识;以及响应于所述区域的标识的接收,仅分析与所述文档所标识的区域相对应的所述分析文档对象的一部分。
15.一种创建用于分析文档的分析上下文对象的方法,其特征在于包括接收调用来创建与文档相对应的分析上下文对象;以及响应于所述接收调用来创建与文档相对应的分析上下文对象,创建包括一数据结构的分析上下文对象,所述数据结构包含文档的一个或多个元素的特征数据。
16.如权利要求15所述用于创建分析上下文对象的方法,其特征在于,所述分析上下文对象包括一值,该值定义了要在文档分析过程期间被分析的所述分析上下文对象的一部分。
17.如权利要求15所述用于创建分析上下文对象的方法,其特征在于,所述分析上下文对象包括一值,该值定义了所述文档的页边缘。
18.如权利要求15所述用于创建分析上下文对象的方法,其特征在于,所述分析上下文对象包括一标识符,该标识符标识了所述数据结构的根节点。
19.如权利要求15所述用于创建分析上下文对象的方法,其特征在于,所述分析上下文对象包括用于辅助文档分析过程的暗示。
20.如权利要求15所述用于创建分析上下文对象的方法,其特征在于还包括接收调用以提供所述数据结构的所标识的节点;以及响应于所述接收调用以提供所述数据结构的所标识的节点,提供所述数据结构的所标识的节点。
权利要求
1.一种用于分析电子墨水的应用编程接口,包括分析对象,其为包含电子墨水内容的文档维持文档数据,所述文档由一在第一处理线程上运行的软件应用作宿主,以及墨水分析器对象,其采用所述第一线程来制作所述文档数据的副本,把所述文档数据的副本提供给电子墨水分析过程,把所述第一处理线程的控制返回到所述软件应用。
2.如权利要求1所述的应用编程接口,其特征在于,所述墨水分析器对象将所述分析过程的结果与所述文档的当前文档数据相协调。
3.如权利要求1所述的应用编程接口,其特征在于,所述墨水分析器对象制作所述文档数据的第二副本,用于将所述分析过程的结果与所述文档的当前文档数据相协调。
4.一种应用编程接口,其特征在于包括墨水分析器对象,其从作为所述文档的宿主并且在第一处理线程上运行的软件应用接收包含电子墨水内容的文档的文档数据,采用所述第一线程来制作所述文档数据的副本,把所述文档数据的副本提供给电子墨水分析过程,把所述第一处理线程的控制返回到所述分析过程;以及将所述分析过程的结果与所述文档的当前文档数据相协调。
全文摘要
一应用编程接口例示了一墨水分析器对象,该对象从一软件应用接收包含电子墨水内容的文档的文档数据,所述软件应用是该文档的宿主并且运行在第一处理线程上。然后墨水分析器对象采用第一线程来制作文档数据的副本,把文档数据的副本提供给电子墨水分析过程,并且把第一处理线程的控制返回分析过程。在分析过程已经分析了电子墨水后,墨水分析器对象将分析过程的结果与文档的当前文档数据相协调。
文档编号G06F13/00GK1662877SQ03801888
公开日2005年8月31日 申请日期2003年8月21日 优先权日2003年8月21日
发明者R·敦坎, B·德莱塞维克, J·维克安姆, H·苏坦特, S·拉古帕蒂, T·H·卡纳佩尔, Z·斯拉依, J·特纳, T·兰德斯塔德, 王海勇, R·内特萨 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1