KR101045444B1 - Electronic ink processing - Google Patents
Electronic ink processing Download PDFInfo
- Publication number
- KR101045444B1 KR101045444B1 KR1020047009261A KR20047009261A KR101045444B1 KR 101045444 B1 KR101045444 B1 KR 101045444B1 KR 1020047009261 A KR1020047009261 A KR 1020047009261A KR 20047009261 A KR20047009261 A KR 20047009261A KR 101045444 B1 KR101045444 B1 KR 101045444B1
- Authority
- KR
- South Korea
- Prior art keywords
- ink
- analysis
- node
- context object
- nodes
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Document Processing Apparatus (AREA)
- Character Discrimination (AREA)
Abstract
전자 문서에 풍부하고, 유연하고, 보다 평이한 전자 잉크 주석들을 만들기 위한 시스템, 방법, 및 컴퓨터 판독가능 매체는 전자 문서의 기준 부분(base portion)의 제1 부분과 연관된 제1 콘텍스트 노드를 생성하는 단계; 그 기준 부분에 대해 주석과 연관된 제2 콘텍스트 노드를 생성하는 단계; 그 제1 콘텍스트 노드와 제2 콘텍스트 노드를 링크시키는 단계를 포함한다.
전자 잉크, 주석, 콘텍스트 노드, 전자 문서, 링크
A system, method, and computer readable medium for making rich, flexible, and flatter electronic ink annotations in an electronic document, comprise generating a first context node associated with a first portion of a base portion of the electronic document. ; Creating a second context node associated with the annotation for the reference portion; Linking the first context node and the second context node.
Electronic ink, annotations, context nodes, electronic documents, links
Description
본 발명은 전자 잉크의 프로세싱에 관한 것이다. 특히 본 발명의 각종 실시예들은 전자 잉크의 레이아웃 분석, 분류, 및 인식을 포함하는 전자 잉크의 분석에 적용가능하다. 본 발명의 부가적인 실시예들은 예를 들어, 전자 잉크 문서에 풍부하고(rich) 유연한(flexible) 주석들(annotations)을 제공함에 있어서, 레이아웃이 분석되고, 분류되며, 인식되는 전자 잉크의 사용에 관한 것이다. The present invention relates to the processing of electronic inks. In particular, various embodiments of the present invention are applicable to the analysis of electronic ink, including layout analysis, classification, and recognition of electronic ink. Additional embodiments of the present invention are directed to the use of electronic ink in which the layout is analyzed, classified and recognized, for example, in providing rich and flexible annotations in an electronic ink document. It is about.
사회에서 컴퓨터의 역할이 증대됨에 따라, 컴퓨터에 데이터를 입력하기 위한 여러가지 다양한 기술들이 개발되어 왔다. 데이터를 입력하기 위한 특히 유용한 한가지 기술은 핸드라이팅(handwriting)에 의한 것이다. "전자 잉크"를 생성하기 위해 디지타이저(digitizer) 상에 스타일러스(stylus) 또는 다른 물체를 이용하여 기재함(writing)으로써, 컴퓨터 사용자는 키보드와 연관된 불편함과 큰 부피에서 벗어날 수 있다. 핸드라이팅 입력은 예를 들어, 회진을 도는 의사들, 건축 부지 위에 있는 건축가들, 소포를 배달하는 배달부들, 창고를 돌아다니는 창고 일꾼들에 의해 편리하게 사용될 수 있으며, 키보드의 사용이 힘들거나 불편한 임의의 상황에서 사용될 수 있다. 많은 상황에서 핸드라이팅 입력은 키보드 입력보다 편리하지만, 통상적으로 대부분의 소프트웨어 애플리케이션은 전자 잉크로 쓰여진 텍스트를 곧바로 처리할 수 없다. 대신에, 전자 잉크로 쓰여진 텍스트는 ASCII 문자들과 같은 또 다른 형태로 변환되기 위해 분석되어야 한다. 이러한 분석은 핸드라이팅 인식 처리를 포함하며, 이는 전자 잉크의 한 단어를 구성하는 개개의 전자 잉크 스트록들(strokes) 간의 여러 관계들에 기초하여 문자들을 인식한다. As the role of computers in society increases, many different technologies have been developed for entering data into computers. One particularly useful technique for entering data is by handwriting. By writing using a stylus or other object on a digitizer to produce an "electronic ink", a computer user can be freed from the inconvenience and large volume associated with a keyboard. Handwriting input can be conveniently used by, for example, roundabout doctors, architects on a building site, delivery workers delivering parcels, and warehouse workers who walk around the warehouse, making it difficult or inconvenient to use the keyboard. It can be used in any situation. In many situations, handwriting input is more convenient than keyboard input, but typically most software applications cannot directly process text written in electronic ink. Instead, text written in electronic ink must be analyzed to be converted into another form, such as ASCII characters. This analysis involves handwriting recognition processing, which recognizes characters based on several relationships between the individual electronic ink strokes that make up a word of electronic ink.
핸드라이팅 인식 알고리즘들은 최근 몇 년 동안 엄청나게 개선되었지만, 전자 잉크가 기울어진 채로 쓰여 질 경우 그 정확성은 떨어질 수 있다. 마찬가지로, 두 개의 단어가 서로 가까이 함께 쓰여 진 경우와 같이 잉크 스트록들의 분리된 그룹들이 쉽게 구별될 수 없는 경우, 많은 인식 알고리즘들은 전자 잉크를 정확하게 인식할 수 없다. 또한, 일부 인식 알고리즘들은 사실상 전자 잉크가 그림(drawing)을 그리도록 의도된 경우에도 전자 잉크를 텍스트로 잘못 인식할 수 있다. 예를 들어, 사용자가 타이프라이팅된(typewritten) 텍스트의 일부분을 지나가도록 밑줄을 긋거나(underlines) 하이라이트(highlight)를 표시하거나 써클(circle) 또는 크로스(cross)를 표시하여 전자 잉크 스트록을 기재함으로써 타이프라이팅된 텍스트에 주석을 달 수 있다. 핸드라이팅 인식 알고리즘은 이러한 주석 스트록들을 대시(-), 숫자 "0" 또는 문자 "O"로서 잘못 인식할 수 있다. Handwriting recognition algorithms have been tremendously improved in recent years, but their accuracy can be compromised if electronic ink is written tilted. Likewise, when separate groups of ink strokes cannot be easily distinguished, such as when two words are written together close to each other, many recognition algorithms cannot accurately recognize electronic ink. In addition, some recognition algorithms may in fact recognize the electronic ink as text even if the electronic ink is intended to draw. For example, by writing an electronic ink stroke by underlining, highlighting, or displaying circles or crosses over a portion of the typewritten text. You can annotate typed text. The handwriting recognition algorithm may misrecognize these annotation strokes as dashes, digits "0" or letters "O".
많은 인식 알고리즘들의 정확성은 핸드라이팅 인식 알고리즘을 이용하기 전에 전자 잉크를 "파싱(parsing)"함으로써(예를 들어, 전자 잉크의 레이아웃을 분석함으로써 및/또는 전자 잉크를 "분류"함으로써) 상당히 개선될 수 있다. 통상적으로 분류 처리는 전자 잉크 스트록이 그림의 일부(즉, 그림 잉크 스트록)인지, 아니면 핸드라이팅된 텍스트의 일부(즉, 텍스트 잉크 스트록)인지를 결정한다. 다른 스트록 타입을 식별하기 위한 분류 알고리즘들도 가능하다. 레이아웃 분석 처리는 통상적으로 단어들, 행들(lines) 및 단락들과 같은 의미 있는 조합으로 전자 잉크 스트록들을 그룹화한다. 그러므로, 레이아웃 분석 및 분류 처리들은 전자 잉크의 콜렉션 내의 어느 스트록들이 하나의 단어에 속하는지, 전자 잉크의 어느 단어들이 전자 잉크로 쓰여진 텍스트의 하나의 행과 연관되는지, 그리고 전자 잉크로 쓰여진 텍스트의 어느 라인이 단락과 연관되는지를 식별하는데 사용될 수 있다. The accuracy of many recognition algorithms can be significantly improved by "parsing" the electronic ink (eg, by analyzing the layout of the electronic ink and / or by "classifying" the electronic ink) before using the handwriting recognition algorithm. Can be. Typically, the classification process determines whether the electronic ink stroke is part of a picture (ie, picture ink stroke) or part of handwritten text (ie, text ink stroke). Classification algorithms for identifying other stroke types are also possible. The layout analysis process typically groups the electronic ink strokes into meaningful combinations such as words, lines and paragraphs. Therefore, the layout analysis and classification processes include which strokes in the collection of electronic ink belong to one word, which words of the electronic ink are associated with one line of text written in electronic ink, and which of the text written in electronic ink. Can be used to identify if a line is associated with a paragraph.
레이아웃 분석 및 분류 잉크는 전자 잉크의 인식을 엄청나게 개선 시킬 수 있으나, 전자 잉크 인식 전의 이러한 활동들의 중요성에 대해 많은 소프트웨어 애플리케이션 개발자들은 인식하지 못하고 있다. 최근까지도, 기존의 소프트웨어 애플리케이션들과 함께 사용하기 위한 레이아웃 및 분류 알고리즘들은 쉽게 구할 수 없었다. 예를 들어, 통상적으로 Microsoft® Windows XP Tablet PC Edition Version 2002 운영 체제는, 전자 잉크를 저장하고 표시하며 처리하기 위해 Microsoft® 윈도우즈 저널(Windows Journal) 소프트웨어 애플리케이션과 함께 판매되었다. Microsoft® 윈도우즈 저널 소프트웨어 애플리케이션은 내부 파서(internal parser)를 이용하는데, 이 파서는 최근까지도 운영 체제에 의해 실행되는 다른 소프트웨어 애플리케이션에 액세스할 수 없었다.Layout Analysis and Classification Inks can greatly improve the recognition of electronic ink, but many software application developers are not aware of the importance of these activities prior to electronic ink recognition. Until recently, layout and classification algorithms for use with existing software applications were not readily available. For example, the Microsoft® Windows XP Tablet PC Edition Version 2002 operating system was typically sold with a Microsoft® Windows Journal software application for storing, displaying, and processing electronic ink. The Microsoft® Windows Journal software application uses an internal parser, which until recently had no access to other software applications run by the operating system.
이제는 윈도우즈 저널 소프트웨어 애플리케이션으로부터의 파싱 처리가 다른 소프트웨어 애플리케이션들에 의해 별도로 액세스가 가능하지만, 이러한 파서를 사용하는 것은 잘 알려져 있지 않으며, 사용자가 핸드라이팅 입력을 입력하고자 하는 많은 소프트웨어 애플리케이션들과 함께 이러한 파서를 사용하는 일은 쉽지 않을 수 있다. 게다가, 소프트웨어 애플리케이션 개발자가 원하는 소프트웨어 애플리케이션을 사용하기 위해 특별히 파서를 생성하고자 하는 경우에도 (이는 그 자체가 어려우며 시간 소모적인 처리일 수 있으며), 파싱 처리의 실행은 매우 시간 소모적일 수 있다. 예를 들어, 비교적 빠른 마이크로프로세서를 사용하여 전자 잉크의 단지 몇 개의 스트록 만을 파싱하는 데도 수 초 또는 심지어 수 분이 걸릴 수 있다. 파싱 처리가 완료될 때까지 소프트웨어 애플리케이션이 동작을 정지해야 한다면, 그 소프트웨어 애플리케이션은 대부분의 사용자들이 실용적으로 사용하기에는 너무 느릴 것이다. Although parsing processing from Windows Journal software applications is now separately accessible by other software applications, it is not well known to use such a parser, and such parsers with many software applications where the user wishes to enter handwriting inputs. Using it may not be easy. In addition, even if a software application developer wishes to create a parser specifically to use the desired software application (which can be difficult and time consuming in itself), the execution of the parsing process can be very time consuming. For example, parsing only a few strokes of electronic ink using a relatively fast microprocessor may take seconds or even minutes. If a software application needs to stop working until the parsing process is complete, the software application will be too slow for most users to use practically.
따라서, 예를 들어 전자 잉크의 레이아웃을 분석하고, 전자 잉크를 분류 및/또는 인식하기 위해 다양한 소프트웨어 애플리케이션들에 의해 사용될 수 있는 전자 잉크 처리 기술들이 필요하다. 또한, 전자 잉크를 처리할 수 있는 전자 잉크 처리 기술과, 그 기술들을 이용한 소프트웨어 애플리케이션이 그 잉크 처리의 결과들을 무효로 하지 않으면서 새로운 전자 잉크 입력을 수용하도록 허용하는 것도 필요하다. Thus, there is a need for electronic ink processing techniques that can be used by various software applications, for example, to analyze the layout of electronic ink and to classify and / or recognize electronic ink. There is also a need for an electronic ink processing technique capable of processing electronic ink and for allowing software applications using the techniques to accept new electronic ink input without invalidating the results of the ink processing.
발명의 개요Summary of the Invention
유리하게도, 본 발명의 각종 실시예들은 전자 잉크를 처리하기 위해 여러 소프트웨어 애플리케이션들에 의해 사용될 수 있는 전자 잉크 처리 기술들을 제공한다. 또한, 이러한 전자 잉크 처리 기술들은 그 기술들을 구현하는 소프트웨어 애플리케이션의 동작과 전자 잉크가 비동기적으로 처리되도록 하므로, 소프트웨어 애플리케이션의 동작을 중지시키거나 상당히 지연시키지 않고 전자 잉크가 처리될 수 있다. 소프트웨어 애플리케이션은 심지어 이전의 전자 잉크 입력이 처리되고 있는 동안에도 새로운 전자 잉크 입력을 계속해서 수용할 수 있다. Advantageously, various embodiments of the present invention provide electronic ink processing techniques that can be used by various software applications to process electronic ink. In addition, these electronic ink processing techniques allow the electronic ink to be processed asynchronously with the operation of the software application implementing the techniques, so that the electronic ink can be processed without stopping or significantly delaying the operation of the software application. Software applications can continue to accept new electronic ink inputs even while previous electronic ink inputs are being processed.
본 발명의 각종 실시예들에서, 파일 또는 문서에서의 엘리먼트들(elements)은 그들의, 서로에 대한 공간적 위치에 기초하여 기술될 수 있다. 예를 들어, 전자 잉크 스트록 및 타이프라이팅된 텍스트 양자 모두는 동일한 공간 좌표계에 의해 설명될 수 있다. 문서의 엘리먼트들을 설명하기 위해 공간 정보를 사용하면, 그 문서를 관리하는 소프트웨어 애플리케이션은 그 문서 엘리먼트들 간의 관계를 설명하는 데이터 구조를 유지할 수 있다. 특히, 그 소프트웨어 애플리케이션은 여러가지 문서 엘리먼트들의 클래스를 설명하고, 다양한 문서 엘리먼트들 간의 연관성들을 정의하는 데이터 구조를 유지할 수 있다. 이러한 연관성들은 예를 들어, 전자 잉크 스트록 데이터 또는 그 집합들을 전자 문서 내의 (단어들, 행들, 단락들, 그림들, 테이블 셀들 등과 같은) 다른 엘리먼트들에 링크시키기 위해 사용되는 정보로서 정의될 수 있다. In various embodiments of the present invention, elements in a file or document may be described based on their spatial location relative to each other. For example, both the electronic ink stroke and the typed text can be described by the same spatial coordinate system. Using spatial information to describe the elements of a document, the software application managing the document can maintain a data structure describing the relationships between the document elements. In particular, the software application may describe a class of various document elements and maintain a data structure that defines the associations between the various document elements. Such associations may be defined, for example, as information used to link electronic ink stroke data or sets thereof to other elements (such as words, rows, paragraphs, pictures, table cells, etc.) within an electronic document. .
파일 또는 문서 데이터 구조 내의 문서 엘리먼트들을 그들의 공간적 위치에 기초하여 기술함으로써, 다양한 파일 타입들에 대한 문서 엘리먼트들은 그 문서 엘리먼트들을 식별하고 처리하기 위해 공통의 기술들을 사용할 수 있다. 특히, 다양한 소프트웨어 애플리케이션들은 그들의 공간적 위치에 기초하여 문서 내에 문서 엘리먼트들을 기술할 수 있으며, 공통의 전자 잉크 분석 메소드들을 사용하기 위해 이러한 공간적 위치 참조를 이용할 수 있다. 또한, 분석을 위해 문서의 특정 영역을 지정함으로써, 각 소프트웨어 애플리케이션은 문서 내의 희망하는 엘리먼트들만으로 분석 처리를 한정할 수 있다. By describing document elements within a file or document data structure based on their spatial location, document elements for various file types may use common techniques to identify and process those document elements. In particular, various software applications can describe document elements in a document based on their spatial location and can use this spatial location reference to use common electronic ink analysis methods. In addition, by designating specific areas of the document for analysis, each software application can limit the analysis process to only the desired elements in the document.
본 발명의 각종 실시예들에 따라 문서로의 새로운 전자 잉크 입력을 분석하기 위해, 문서를 관리하는 소프트웨어 애플리케이션은, 분석될 새로운 잉크를 포함하도록 그 문서와 연관된 데이터 구조를 변경한다. 이어서 그 소프트웨어 애플리케이션은 이러한 데이터 구조(또는 그 관련 부분들)를 잉크 분석 도구에 제공하며, 이는 분석을 위해 데이터 구조의 일부 또는 모두를 카피한다 (그리고 그 응용 프로그램의 문서 데이터 구조와는 별도로 데이터의 카피에서 동작한다). 잉크 분석 도구는 파싱 처리(예를 들어, 레이아웃 분석 처리 및/또는 분류 처리)와 같은 분석 처리에 그 카피를 전달한다. 소프트웨어 애플리케이션은, 잉크 분석 처리(들)가 수행되는 동안, 새로운 전자 잉크 입력 및/또는 다른 데이터를 수신하는 단계를 포함하는 일반적인 동작을 재개할 수 있다. 새로운 전자 잉크를 수신하는 단계에 부가하여, 임의의 "다른 데이터", 예컨대, 기존의 잉크, 텍스트, 이미지, 그래픽, 테이블, 플로우차트, 다이어그램 등의 콘텐트, 위치 및 크기를 변경하는 데이터와; 부가적인 텍스트, 이미지, 그래픽, 테이블, 플로우차트, 다이어그램 등을 추가하는 데이터; 기존의 텍스트, 이미지, 그래픽, 테이블, 플로우차트, 다이어그램 등을 삭제하는 데이터가 응용 프로그램에 의해 수신될 수 있다. 모든 희망하는 분석 처리들이 완료된 후, 그 분석 결과들은 잉크 분석 도구로 리턴된다. In order to analyze a new electronic ink input into a document in accordance with various embodiments of the present invention, the software application managing the document changes the data structure associated with the document to include the new ink to be analyzed. The software application then provides this data structure (or parts thereof) to the ink analysis tool, which copies some or all of the data structure for analysis (and separates the data from the document data structure of the application). Works on copy). The ink analysis tool delivers its copy to an analysis process, such as a parsing process (eg, layout analysis process and / or classification process). The software application may resume normal operation, including receiving new electronic ink input and / or other data while the ink analysis processing (s) is performed. In addition to receiving a new electronic ink, any " other data " such as data for changing the content, position and size of existing ink, text, images, graphics, tables, flowcharts, diagrams, etc .; Data to add additional text, images, graphics, tables, flowcharts, diagrams, and the like; Data that deletes existing text, images, graphics, tables, flowcharts, diagrams, and the like may be received by the application. After all desired analysis processes have been completed, the analysis results are returned to the ink analysis tool.
그러므로, 본 발명에 따른 시스템 및 방법의 여러가지 예시들은 잉크 분석 처리들이 그 잉크 분석 처리를 이용하는 소프트웨어 애플리케이션의 동작과 비동시적으로 실행되도록 한다. 이러한 비동시성 동작은 사용자가 소프트웨어 애플리케이션을, 분석 처리에 의해 지연되는 일 없이, 계속하여 사용할 수 있도록 한다. 또한, 이는 다수의 분석 처리들이 동시에 실행되도록 한다. Therefore, various examples of systems and methods in accordance with the present invention allow ink analysis processes to run asynchronously with the operation of a software application that uses the ink analysis process. This asynchronous operation allows the user to continue using the software application without being delayed by the analysis process. In addition, this allows multiple analysis processes to be executed simultaneously.
분석 결과들을 수신하는 것에 응답하여, 잉크 분석 도구는 (분석 처리들이 수행되는 동안 입력된 새로운 및/또는 변경된 데이터를 포함할 수 있는) 전자 문서의 데이터 구조의 현재 버전을 소프트웨어 애플리케이션으로부터 획득하고, 데이터 구조의 현재 버전을 이용하여 분석 결과를 조정(reconcile)한다. 데이터 구조의 현재 버전을 이용하여 분석 결과들을 조정함으로써, 본 발명의 각종 실시예들은, 소프트웨어 애플리케이션에 의해 사용되고 있는 데이터에 비동시적으로 액세스하기 위한, "록킹(locking)"과 같은 보다 복잡한 기술들을 피할 수 있다. 대신, 조정(reconciliation)은 복잡한 내부 록킹을 제공할 필요없이 임의의 소프트웨어 애플리케이션에 의해 호출될 수 있다. In response to receiving the analysis results, the ink analysis tool obtains a current version of the data structure of the electronic document from the software application (which may include new and / or changed data entered while the analysis processes are performed), and the data Reconcile the analysis results with the current version of the structure. By adjusting the analysis results using the current version of the data structure, various embodiments of the present invention avoid more complex techniques, such as "locking", for asynchronous access to data being used by software applications. Can be. Instead, reconciliation can be invoked by any software application without the need to provide complex internal locking.
데이터 구조의 현재 버전을 이용하여 분석 결과들을 조정한 후에, 잉크 분석 도구는 그 조정된 분석 결과들의 카피를 핸드라이팅 인식 처리와 같은 또 다른 분석 처리에 제공할 수 있다. 다시, 소프트웨어 애플리케이션은 제2 잉크 분석 처리(들)가 수행되고 있는 동안, 새로운 전자 잉크 입력 및/또는 다른 데이터를 수신하는 단계를 포함하는 일반적인 동작을 재개할 수 있다. 모든 희망하는 제2 분석 처리가 완료된 후, 제2 분석 처리의 결과들은 잉크 분석 도구로 리턴된다. 이어서 그 잉크 분석 도구는 (새롭고 및/또는 변경된 데이터를 다시 포함할 수 있는) 소프트웨어 애플리케이션으로부터 데이터 구조의 현재 버전을 획득하고, 데이터 구조의 현재 버전을 이용하여 제2 분석 결과들을 조정한다. 이어서 잉크 분석 도구는 제2 분석 처리의 조정된 결과들을 이용하여 데이터 구조를 업데이트한다. 물론, 임의의 수의 잉크 분석 절차들 및/또는 단계들이 본 발명으로부터 벗어나지 않는 범위에서 사용될 수 있다. After adjusting the analysis results using the current version of the data structure, the ink analysis tool can provide a copy of the adjusted analysis results to another analysis process, such as a handwriting recognition process. Again, the software application may resume normal operation, including receiving new electronic ink input and / or other data while the second ink analysis processing (s) is being performed. After all the desired second analysis process is completed, the results of the second analysis process are returned to the ink analysis tool. The ink analysis tool then obtains a current version of the data structure from the software application (which may include new and / or modified data again) and adjusts the second analysis results using the current version of the data structure. The ink analysis tool then updates the data structure with the adjusted results of the second analysis process. Of course, any number of ink analysis procedures and / or steps may be used without departing from the present invention.
상술한 여러 잉크 분석 처리들 및 전자 잉크 데이터를 전자 문서의 다른 특징들에 관련시키거나 링크시키는 공간적 정보의 사용은, 전자 문서에 풍부하고 유연하며 자연스러운 잉크 주석들을 제공하기 위해 사용될 수 있다. 예를 들어, 본 발명의 실시예들은 주석이 달린 바탕(underlying) 문서 엘리먼트들에 가해진 변경들에 기초하여 동적으로 이동하거나 및/또는 변화하는 전자 잉크 주석들을 제공하기 위해 사용될 수 있다. 사용자들은 통상적으로 여러 가지 서로 다른 방식(예를 들어, 단어들에 써클(circle)을 표시하거나, 밑줄을 긋거나, 하이라이트(highlight)를 표시하거나, 줄을 그어 지우는 표시(strikeout)를 할 수 있으며; 여백(margine)에 노트를 기재할 수 있고; 여백에 위치한 주석들에 화살표 또는 다른 포인터(pointer)를 그릴 수 있음)으로 문서들에 주석을 단다. 게다가, 사용자들은, 예를 들어, 텍스트, 스프레드시트(spreadsheet), 그림, 슬라이드쇼, 테이블, 차트, 그래프, 플로우차트 등을 포함하는 매우 다양한 서로 다른 문서 타입에 주석을 달 수 있다. The use of spatial information that relates or links the various ink analysis processes and electronic ink data described above to other features of an electronic document can be used to provide rich, flexible, and natural ink annotations to an electronic document. For example, embodiments of the present invention may be used to provide electronic ink annotations that move and / or change dynamically based on changes made to annotated underlying document elements. Users typically have a number of different ways (e.g., circle, underline, highlight or underline words). ; You can write notes in the margin; you can annotate documents with arrows or other pointers in the comments located in the margin. In addition, users can annotate a wide variety of different document types, including, for example, text, spreadsheets, drawings, slideshows, tables, charts, graphs, flowcharts, and the like.
전자 잉크 주석들을 전자 문서에 매끄럽게 통합시키기 위해서는, 바탕 전자 문서가 어떤 이유로 변화될 때 주석들이 적절하게 반응(behave)할 것이 요구된다. 예를 들어, 사용자가 전자 문서의 단어에 (주석으로서) 써클(circle)을 표시하고 이어서 그 단어 앞의, 문서 내의 어딘가에 텍스트를 추가하는 것은 써클이 표시된 단어를 이동시키는 결과를 가져올 수 있다. 이 경우, 써클 주석은 이동하여 그 단어와 함께 있어야 한다. 또 다른 예로서, 사용자가 써클을 표시한 단어에 문자들을 추가 또는 제거하거나, 임의의 방식으로 그 크기를 변화시킬 경우, 써클 주석은 그 단어의 새로운 크기를 수용하도록 확장 또는 수축해야 한다. 바람직하게, 바탕 전자 문서가 어떤 이유로 구성 엘리먼트들(단락, 그림, 열 등)의 서로에 대한 상대적 위치 및/또는 페이지를 업데이트하거나, 리플로우(reflow)하는 경우, 전자 잉크 주석들 또한 바탕 텍스트 또는 다른 정보와 관련하여 적절한 위치에 머무르거나 재위치할 것이다. 주석들이 바탕 전자 문서 텍스트에 대해 이러한 방식으로 반응하지 않는다면, 주석을 단 후에 생생한 전자 문서들을 편집하거나 공유하기에는 실용적이지 않으므로, 용지에 출력하는 것이(parer printout) 주석을 달기에 여전히 가장 용이하고 유용한 방식이 될 것이다. In order to seamlessly integrate electronic ink annotations into an electronic document, the annotations need to behave properly when the underlying electronic document changes for some reason. For example, a user marking a circle (as a comment) on a word in an electronic document and then adding text somewhere in the document, before that word, may result in the circle moving the marked word. In this case, the circle comment should move and stay with the word. As another example, if a user adds or removes letters to a word that marks a circle, or changes its size in any way, the circle annotation must expand or contract to accommodate the new size of the word. Preferably, when the underlying electronic document updates or reflows the page and / or the relative position of the constituent elements (paragraphs, pictures, columns, etc.) with respect to each other, the electronic ink annotations also include the base text or You will stay or reposition in appropriate positions with respect to other information. If the comments do not react in this way to the underlying electronic document text, then it is still not practical to edit or share the live electronic documents after commenting, so parer printout is still the easiest and useful way to annotate. Will be
어떻게 주석을 적절하게 변화시킬 지를 결정하는 것은 주석 및 전자 문서에 관한 여러 요소들에 의존할 것이다. 예를 들어, 리플로우(reflow) 상황에서 주석을 적절하게 변화시키는 것은 예를 들어, (a) 전자 잉크를 주석으로서 식별하고, (b) 전자 잉크 주석의 타입을 식별하고, (c) 바탕 전자 문서 내의 특정 엘리먼트에 대한 전자 잉크의 관계를 식별하는 컴퓨팅 시스템(예컨대, 파서)의 능력에 의존할 수 있다. 이러한 정보 타입의 일부 또는 모두를 사용자에게 질의하는 것이 가능할 수 있지만, 그러한 시스템에서는 사용자가 용지에 주석하는 경우보다 훨씬 더 귀찮은 경험을 하게 될 것이다. 따라서, 본 발명의 각종 실시예들에 따르면, 상기 정보는 (1) 전자 잉크 자체와, (2) 문서 내의 여러 엘리먼트들의, 전자 잉크에 대한 공간적 위치를 포함하는 바탕 문서의 콘텐트로부터 추론될 수 있다. Determining how to properly change annotations will depend on several factors regarding annotations and electronic documents. For example, properly changing the annotation in a reflow situation may include, for example, (a) identifying the electronic ink as tin, (b) identifying the type of electronic ink tin, and (c) the background electron. It may depend on the computing system's (eg, parser's) ability to identify the relationship of the electronic ink to a particular element in the document. It may be possible to query the user for some or all of these types of information, but such a system will have a much more troublesome experience than if the user annotates on paper. Thus, according to various embodiments of the present invention, the information can be inferred from the content of the underlying document, including (1) the electronic ink itself and (2) the spatial location of the various elements in the document with respect to the electronic ink. .
잉크 주석들의 의미를 판단하는 것은 복잡하고 어려울 수 있기 때문에, 사용자가 주석 달기를 희망하는 문서의 각 응용 프로그램이 주석 식별 로직을 개별적으로 구현할 것을 기대하는 것은 매우 비현실적이다. 오히려, 각 응용 프로그램이 쉽게 통합할 수 있는 이러한 주석 기능(function)을 보조하기 위한 재사용가능 컴포넌트(component)를 제공하는 것이 바람직하다. 예를 들어, 펜입력식 컴퓨팅 시스템(pen-based computing system)의 운영 체제가 전자 잉크의 렌더링 및 콜렉션(collection)을 위한 컴포넌트를 제공하는 것처럼, 연관된 잉크와 함께 매우 쉽게 작동할 수 있는, 잉크 주석들의 의미(meaning)를 결정하는 컴포넌트("주석 파서(annotation parser)"라고도 함)를 운영 체제가 제공하는 것이 바람직할 것이다. Determining the meaning of ink annotations can be complex and difficult, so it is very impractical to expect each application of a document that a user wishes to annotate to implement annotation identification logic separately. Rather, it is desirable to provide a reusable component to aid this annotation function that each application can easily integrate. For example, ink annotations that can operate very easily with associated inks, such as the operating system of a pen-based computing system providing components for the rendering and collection of electronic inks. It would be desirable for the operating system to provide a component (also referred to as an "annotation parser") that determines their meaning.
그러나, 바탕 전자 문서의 콘텐트를 식별하는 것은 "스마트한(smart)" 주석 능력을 제공함에 있어서 상당한 어려움들을 야기한다. 예를 들어, 다양한 서로 다른 응용 프로그램들은 문서들을 저장하고 관리하며 리플로우하는 매우 이질적인 방식들을 갖는다. 본 발명은, 다양한 서로 다른 타입들의 전자 문서들에 대한 가능한 잉크 주석들의 관계를 결정할 수 있는 재사용가능한 주석 파서를 제공한다. 구체적으로, 본 발명의 일부 실시예에 따르면, 파싱되고 있는 잉크에 관한 관련 정보(예를 들어, 잉크 주석에 "콘텍스트"를 제공하기 위해 잉크 주석에 대응하는 공간적 영역 내에서의 전자 문서에 관한 정보)를 제공하기 위해 응용 프로그램으로 콜백(call back)하는 주석 파서가 메커니즘에 제공된다. 메커니즘은 임의의 문서-기반의 애플리케이션에 통합하기에 알맞도록 충분히 용이하며, (페이지 등과 같은 섹션들에서 처리될 수 있는) 매우 큰 문서들을 작업하기에 충분히 효율적이다. However, identifying the content of the base electronic document introduces significant difficulties in providing "smart" annotation capabilities. For example, various different applications have very heterogeneous ways of storing, managing, and reflowing documents. The present invention provides a reusable annotation parser that can determine the relationship of possible ink annotations to various different types of electronic documents. Specifically, according to some embodiments of the present invention, information relating to an electronic document in a spatial area corresponding to the ink annotation to provide relevant information about the ink being parsed (eg, to provide “context” to the ink annotation). An annotation parser is provided to the mechanism that calls back to the application to provide. The mechanism is easy enough to fit into any document-based application and is efficient enough to work with very large documents (which can be processed in sections such as pages).
그러므로, 본 발명의 각종 실시예들에 따른 잉크 처리 기술들은, 다양한 소프트웨어 애플리케이션이 잉크 분석 도구를 통해 전자 잉크에 대한 다수의 처리를 수행하도록 한다. 또한, 이러한 기술들을 이용한 소프트웨어 애플리케이션은, 분석 처리 동안에도, 분석 처리들의 결과들을 반드시 무효화할 필요 없이, 새로운 전자 잉크 입력을 수신하는 단계를 포함하는 통상의 동작을 계속할 수 있다.Therefore, ink processing techniques in accordance with various embodiments of the present invention allow various software applications to perform multiple processing on electronic ink through an ink analysis tool. In addition, a software application using these techniques can continue normal operation during the analysis process, including receiving a new electronic ink input, without necessarily invalidating the results of the analysis processes.
본 발명의 상기 및 다른 목적들, 특징들 및 이점들은 첨부 도면들에 관련하여 설명되는 다음의 상세한 설명으로부터 쉽게 명백해지고 완전히 이해될 것이다. These and other objects, features and advantages of the present invention will be readily apparent and fully understood from the following detailed description set forth in conjunction with the accompanying drawings.
도 1은 본 발명의 일부 실시예들이 구현될 수 있는 범용의 디지털 컴퓨팅 환경의 개략도를 도시한 도면. 1 is a schematic diagram of a general-purpose digital computing environment in which some embodiments of the present invention may be implemented.
도 2는 본 발명의 일부 실시예들이 구현될 수 있는 펜입력식(pen-based) 퍼스널 컴퓨팅(PC) 환경의 개략도를 도시한 도면. 2 is a schematic diagram of a pen-based personal computing (PC) environment in which some embodiments of the invention may be implemented.
도 3 및 도 4는 전자 문서 주석에 관한 본 발명의 실시예들의 예시적인 구현들의 여러가지 특징들을 도시한 도면. 3 and 4 illustrate various features of exemplary implementations of embodiments of the present invention with regard to electronic document annotations.
도 5는 전자 문서의 잉크 파싱의 일반적인 특징들을 도시한 도면. 5 illustrates general features of ink parsing of an electronic document.
도 6a 내지 도 6i는 본 발명의 적어도 일부 실시예들을 실행하기에 유용한 예시적인 데이터 구조들을 도시한 도면. 6A-6I illustrate exemplary data structures useful for practicing at least some embodiments of the present invention.
도 7a 내지 도 12b는 예시적인 전자 문서들 및 이 전자 문서들의 전자 잉크 주석들을 실행하기에 유용한 관련 예시적인 데이터 구조들을 도시한 도면. 7A-12B illustrate exemplary electronic documents and related exemplary data structures useful for executing electronic ink annotations of these electronic documents.
도 13a 내지 도 14b는 예시적인 전자 문서들 및 이 전자 문서들의 전자 플로 우차트 특징들을 처리하기에 유용한 관련 예시적인 데이터 구조들을 도시한 도면. 13A-14B illustrate exemplary electronic documents and related exemplary data structures useful for processing electronic flow chart features of the electronic documents.
도 15a 내지 도 15c는 예시적인 전자 문서들 및 이 전자 문서들의 전자 테이블 특징들을 처리하기에 유용한 관련 예시적인 데이터 구조들을 도시한 도면. 15A-15C illustrate exemplary electronic documents and related exemplary data structures useful for processing electronic table features of the electronic documents.
도 16a 내지 도 16d는 본 발명의 각종 실시예들에 따른 전자 잉크를 처리하는 방법을 도시한 도면. 16A-16D illustrate a method of processing an electronic ink in accordance with various embodiments of the present invention.
도 17, 도 19 내지 도 21, 및 도 23 내지 도 26은 본 발명의 각종 실시예들에 따른 예시적인 잉크 분석 처리동안 데이터 오브젝트들의 전달을 도시한 도면.17, 19-21, and 23-26 illustrate the transfer of data objects during an exemplary ink analysis process in accordance with various embodiments of the present invention.
도 18 및 도 22는 본 발명의 각종 실시예들에 따른 다루어질 수 있는 간단한 데이터 트리를 도시한 도면. 18 and 22 illustrate simple data trees that can be handled in accordance with various embodiments of the present invention.
도 27은 문서의 현재 상태로 분석 결과들을 조정하는 방법을 보여주는 플로우차트를 도시한 도면. FIG. 27 is a flowchart showing a method of adjusting analysis results to a current state of a document. FIG.
도 28은 본 발명의 또다른 예들에 따라 전자 잉크를 비동기적으로 분석하기 위한 장치를 도시한 도면. FIG. 28 illustrates an apparatus for asynchronously analyzing electronic ink in accordance with still other examples of the present invention. FIG.
도면의 상세한 설명DETAILED DESCRIPTION OF THE DRAWINGS
<용어><Terms>
본 명세서에서는 이하의 용어들이 사용되며, 그 용어들은, 달리 구체화되거나 문맥상으로 명확하지 않다면, 이하에서 제공되는 의미들을 갖는다.The following terms are used herein, and the terms have the meanings provided below unless otherwise specified or contextually clear.
"렌더(Render)" 또는 "렌더링된(Rendered)" 또는 "렌더링한(Rendering)" - (텍스트, 그래픽 및/또는 전자 잉크를 포함하는) 정보가, 스크린 상이든 어디든에서 어떻게 표시되거나, 인쇄 또는 그밖에 다른 방식들로 출력되는지를 결정하는 처리."Render" or "Rendered" or "Rendering"-how information (including text, graphics and / or electronic ink) is displayed, printed or The process of determining if the output is otherwise.
"컴퓨터 판독가능 매체(Computer-Readable Medium)" - 컴퓨터 시스템 상에서 사용자에 의해 액세스될 수 있는 임의의 사용가능한 매체. 예시로서, "컴퓨터 판독가능 매체"는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있으나 이에 제한되는 것은 아니다. "컴퓨터 저장 매체"는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성과 비휘발성, 분리형 및 비분리형 매체를 포함한다. "컴퓨터 저장 매체"는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 다른 메모리 기술; CD-ROM, DVD(digital versatile disk) 또는 다른 광 저장 디바이스; 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 디바이스; 또는 원하는 정보를 저장하는데 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 제한되지는 않는다. "통신 매체"는 통상적으로 컴퓨터 판독가능 명령들, 데이터 구조, 프로그램 모듈 또는 반송파(carrier wave)와 같은 변조된 데이터 신호 내의 다른 데이터 또는 다른 전달 매체를 구현하고, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 그 신호에서 정보를 인코딩하기 위한 방식으로 설정되거나 변화된 하나 이상의 특징들을 갖는 신호를 의미한다. 일례로서, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체 및 음향(acoustic), RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하지만, 이에 한정되는 것은 아니다. 상기의 임의의 조합들 또한 "컴퓨터 판독가능 매체"의 범위 내에 포함되어야 한다. "Computer-Readable Medium"-any available medium that can be accessed by a user on a computer system. By way of example, “computer readable media” may include, but are not limited to, computer storage media and communication media. "Computer storage media" includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. "Computer storage medium" includes RAM, ROM, EEPROM, flash memory or other memory technology; CD-ROM, digital versatile disk (DVD) or other optical storage device; Magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices; Or any other medium that can be used to store desired information and can be accessed by a computer. A "communication medium" typically embodies other data or other transmission medium within a modulated data signal, such as computer readable instructions, data structures, program modules, or carrier waves, and includes any information delivery medium. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, communication media includes, but is not limited to, wired media such as a wired network or direct-wired connection and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of "computer readable media".
<개요><Overview>
본 발명의 각종 실시예들에 따르면, 문서(또는 다른 타입의 파일) 내의 엘리먼트의 속성들은 문서 내의 그 엘리먼트의 공간적 위치에 관한 정보를 포함할 수 있다. 따라서, 전자 잉크 스트록 및 타이프라이팅된 텍스트 양자 모두는 문서에 대해 동일한 공간 좌표 시스템 및/또는 문서 내의 다른 엘리먼트들과의 공간적 관계 또는 다른 관계에 의해 기술될 수 있다. 또한, 문서 내에서의 관련된 엘리먼트들은, 이러한 엘리먼트들이 포함되어 있는 문서의 공간 영역을 식별함으로써 및/또는 이러한 엘리먼트들을 링크시킴으로써 간단하게 식별될 수 있다. According to various embodiments of the present invention, the attributes of an element in a document (or other type of file) may include information regarding the spatial location of that element in the document. Thus, both the electronic ink stroke and the typed text can be described by the same spatial coordinate system and / or spatial relationship or other relationship with other elements within the document. Furthermore, related elements within a document can be identified simply by identifying the spatial area of the document in which these elements are included and / or by linking such elements.
다양한 문서 엘리먼트들 간의 이러한 공간적 관계를 이용하면, 소프트웨어 애플리케이션은 문서 엘리먼트들 간의 다른 관계들을 설명하는 데이터 구조를 생성하고 유지할 수 있다. 예를 들어, 소프트웨어 애플리케이션은, 문서 내의 다양한 엘리먼트들에 대한 클래스를 정의하는 데이터 트리와 같은 데이터 구조를 유지할 수 있다. 따라서, 데이터 구조 내의 노드는 하나 이상의 잉크 스트록을 포함하는 그림 또는 핸드라이팅된 단어에 대응할 수 있고, 그 노드에 저장된 데이터는 또한 페이지 상에서의 그 단어의 위치를 표시할 수 있다. 전자 잉크 단어 및/또는 잉크 스트록과 관련하여 통상적으로 저장된 임의의 다른 적절한 데이터 또는 종래의 데이터는 또한 단어 노드에 저장될 수 있다.Using this spatial relationship between various document elements, a software application can create and maintain a data structure that describes other relationships between document elements. For example, a software application can maintain a data structure, such as a data tree, that defines classes for various elements in a document. Thus, a node in a data structure may correspond to a picture or handwritten word comprising one or more ink strokes, and the data stored at that node may also indicate the location of that word on the page. Any other suitable data or conventional data typically stored in connection with the electronic ink word and / or ink stroke may also be stored in the word node.
이러한 타입의 데이터 구조는 또한 (개별적인 잉크 스트록 또는 타이프라이팅된 텍스트 문자들과 같은) 문서 엘리먼트들을, 단어, 단어들의 행, 문장, 단락 등과 같은 의미 있는 그룹들에 연관시킬 수 있다. 그러므로, 소프트웨어 애플리케이션이 핸드라이팅된 전자 잉크의 단락을 설명하는 문서 트리 구조를 유지한다면, 그 데이터 구조의 리프(leaf) 노드들은 전자 잉크의 개별적인 스트록들에 관한 데이터를 포함할 수 있고, 하나 이상의 스트록들은, 그 단락 내의 단어들(예를 들어, 파서 및/또는 인식기에 의해 결정된 단어들)에 대응하는 단어 노드들로서 그 데이터 구조 내에서 서로 연관될 수 있다. 이어서 트리 구조는 그 단락 내의 행들에 대응하는 행 노드들과 그 단어 노드들을 연관시킬 수 있다. 각 라인 노드는 또한 그 단락에 대응하는 노드와 연관될 수 있다. 또한, 소프트웨어 애플리케이션은, 전자 잉크 스트록 및/또는 전자 잉크의 몇 가지 다른 그룹에 대응하는 노드를, 이미지와 같은 비-잉크 문서 엘리먼트, 잉크 그림, 타이프라이팅된 문자, 단어, 행, 단락 등에 대응하는 또 다른 노드와 연관시키는 트리 또는 다른 데이터 구조를 유지할 수 있다. 그러므로, 이러한 데이터 구조들은, 연관된 전자 잉크 스트록들 간의 관계들을 정의하기 위해, 핸드라이팅된 텍스트를 형성하는 전자 잉크 스트록들을, 비-잉크 문서 엘리먼트에 주석을 다는 전자 잉크 스트록들과 구별하기 위해, 및/또는 전자 잉크 스트록들을 다른 문서 엘리먼트들에 링크시키기 위해 사용될 수 있다. This type of data structure can also associate document elements (such as individual ink strokes or typed text characters) with meaningful groups such as words, lines of words, sentences, paragraphs, and the like. Therefore, if a software application maintains a document tree structure describing a paragraph of handwritten electronic ink, the leaf nodes of that data structure may contain data about individual strokes of the electronic ink, and one or more strokes. Can be associated with each other in the data structure as word nodes corresponding to words in the paragraph (eg, words determined by a parser and / or recognizer). The tree structure can then associate the word nodes with the row nodes corresponding to the rows in the paragraph. Each line node may also be associated with a node corresponding to that paragraph. In addition, the software application may correspond to a node corresponding to an electronic ink stroke and / or some other group of electronic ink, corresponding to a non-ink document element such as an image, an ink drawing, typed characters, words, lines, paragraphs, or the like. You can maintain a tree or other data structure that associates with another node. Therefore, such data structures may be used to define relationships between associated electronic ink strokes, to distinguish electronic ink strokes that form handwritten text from electronic ink strokes that annotate non-ink document elements, and And / or may be used to link the electronic ink strokes to other document elements.
이하에서 상세하게 논의될 바와 같이, 이러한 데이터 구조들은 문서 내의 전자 잉크를 분석하기 위해 본 발명의 각종 실시예들에 따른 잉크 분석 도구와 함께 사용될 수 있다. 본 발명의 각종 실시예들에 따르면, 소프트웨어 애플리케이션은 우선 문서에 대한 데이터 구조를 생성함으로써 문서 내의 전자 잉크의 분석을 획득할 수 있다. 데이터 구조는 이미 분석된 문서 엘리먼트들 간의 관계가 있다면 이를 설명하므로, 임의의 새로운 전자 잉크가 분석될 콘텍스트를 제공한다. 이러한 데이터 구조 또는 "분석 콘텍스트 오브젝트"는 또한 분석되지 않은 임의의 새로운 전자 잉크를 포함한다. 즉, 분석 콘텍스트 오브젝트는 또한 다른 문서 엘리먼트들과의 관계가 아직 설정되지 않은 전자 잉크를 포함한다. 본 발명의 몇 가지 예들에서, 소프트웨어 애플리케이션은 스스로 분석 콘텍스트 오브젝트를 생성한다. 그러나, 본 발명의 다른 예들로서, 소프트웨어 애플리케이션은 분석 콘텍스트 오브젝트를 생성하기 위해 잉크 분석 도구 또는 또 다른 도구를 이용한다. As will be discussed in detail below, these data structures can be used with ink analysis tools in accordance with various embodiments of the present invention to analyze electronic ink in a document. According to various embodiments of the present invention, a software application may first obtain an analysis of electronic ink in a document by creating a data structure for the document. The data structure describes if there is a relationship between already analyzed document elements, thus providing a context for any new electronic ink to be analyzed. This data structure or "analysis context object" also includes any new electronic ink that has not been analyzed. In other words, the analysis context object also includes an electronic ink that has not yet established a relationship with other document elements. In some examples of the invention, the software application creates the analysis context object by itself. However, as other examples of the invention, a software application uses an ink analysis tool or another tool to create an analysis context object.
소프트웨어 애플리케이션이 잉크 분석 도구에 분석 콘텍스트 오브젝트를 제공한 후 (또는 잉크 분석 도구가 분석 콘텍스트 오브젝트를 생성한 후), 잉크 분석 도구는 분석되지 않은 전자 잉크를 포함하는 분석 콘텍스트 오브젝트의 적어도 일부에 관한 정보를 검색하거나 그 카피를 만든다. 분석 콘텍스트 오브젝트가의 원하는 부분에 관한 정보를 검색하거나 그 카피를 만드는 것에 의해, 잉크 분석 도구는 소프트웨어 애플리케이션에 의해 유지되는 분석 콘텍스트 오브젝트를 변경하지 않고도 후속하여 분석될 수 있는 데이터 구조를 생성한다. 즉, 카피는 소프트웨어 애플리케이션에서 사용되는 실제의 전자 문서와는 별개이며, 따라서 이하에서는 "문서 독립" 분석 콘텍스트 오브젝트로서 지칭될 수 있다. After the software application provides the analysis context object to the ink analysis tool (or after the ink analysis tool generates the analysis context object), the ink analysis tool is informed about at least a portion of the analysis context object that contains the electronic ink that has not been analyzed. Search for it or make a copy of it. By retrieving or making a copy of the information about the desired portion of the analysis context object, the ink analysis tool creates a data structure that can be subsequently analyzed without changing the analysis context object maintained by the software application. That is, the copy is separate from the actual electronic document used in the software application, and thus can be referred to hereinafter as a "document independent" analysis context object.
일단 잉크 분석 도구가 문서 독립 분석 콘텍스트 오브젝트를 생성했으면, 잉크 분석 도구는 문서 독립 분석 콘텍스트 오브젝트를 하나 이상의 분석 처리에 제공한다. 예를 들어, 문서 내의 분석되지 않은 전자 잉크에 대해 핸드라이팅 인식이 수행되면, 잉크 분석 도구는, (필요하거나 요구될 경우) 잉크를 텍스트 및 그림 스트록들로 분류하고 미분석 전자 잉크 텍스트 스트록들을 잉크 레이아웃에 기초하여 연관된 그룹들로 그룹화하기 위해 분류 및/또는 레이아웃 분석 처리들에 문서 독립 분석 콘텍스트 오브젝트를 제공할 수 있다. 분류 단계 및/또는 레이아웃 분석 처리들이 문서 독립 분석 콘텍스트 오브젝트를 분석하는 동안, 소프트웨어 애플리케이션은 정규의 동작을 계속할 수 있다. 특히, 소프트웨어 애플리케이션은 새로운 전자 잉크 입력 및/또는 응용 프로그램에 의해 계속된 전자 문서 내의 임의의 다른 데이터를 계속해서 수신할 수 있다. Once the ink analysis tool has created a document independent analysis context object, the ink analysis tool provides the document independent analysis context object to one or more analysis processes. For example, if handwriting recognition is performed on an unanalyzed electronic ink in a document, the ink analysis tool may classify the ink into text and picture strokes (if necessary or required) and ink the unanalyzed electronic ink text strokes. A document independent analysis context object may be provided to the classification and / or layout analysis processes to group into associated groups based on the layout. While the classification step and / or layout analysis processes analyze the document independent analysis context object, the software application may continue normal operation. In particular, the software application may continue to receive new electronic ink input and / or any other data in the electronic document continued by the application program.
파싱 처리와 같은 분석 처리가 문서 독립 분석 콘텍스트 오브젝트의 분석을 완료한 경우, 분석 결과들이 잉크 분석 도구로 리턴된다. 특히, (그중에서도 특히, 상술한 바와 같이 분류 및 레이아웃 분석 처리들을 포함할 수 있는) 파싱 처리는 앞서 분석되지 않은 전자 잉크에 대한 새로운 관계들을 보여주는 문서 독립 분석 콘텍스트 오브젝트의 변경된 버전을 리턴한다. 그러나, 소프트웨어 애플리케이션은 상술한 파싱 동작 중에 새로운 전자 잉크 입력 및/또는 문서에 대한 임의의 다른 데이터를 자유롭게 수용하기 때문에, 문서에 대한 분석 콘텍스트 오브젝트의 현재 버전 (즉, 애플리케이션에 의해 유지되는 버전)은 잉크 분석 도구에 원래 제공된 문서 독립 분석 콘텍스트 오브젝트와 파싱 처리에 의해 제공되는 파싱 결과들과는 다를 수 있다.When an analysis process such as a parsing process has completed the analysis of the document independent analysis context object, the analysis results are returned to the ink analysis tool. In particular, the parsing process (among which, in particular, may include classification and layout analysis processes as described above) returns a modified version of the document independent analysis context object showing new relationships for the electronic ink that were not previously analyzed. However, since the software application is free to accept new electronic ink input and / or any other data for the document during the parsing operation described above, the current version of the analysis context object for the document (ie, the version maintained by the application) The document independent analysis context object originally provided with the ink analysis tool and the parsing results provided by the parsing process may be different.
따라서, 본 발명의 몇가지 예들로서, 잉크 분석 도구는 소프트웨어 애플리케이션으로부터 분석 콘텍스트 오브젝트의 현재 버전을 획득할 수 있으며, 분석 콘텍스트 오브젝트의 현재 버전을 이용하여 파싱 결과들을 조정할 수 있다. 이러한 조정 처리 동안, 잉크 분석 도구는 파싱 처리의 결과들을 반영하기 위해 분석 콘텍스트 오브젝트의 현재 버전을 업데이트할 것이다. 이어서 잉크 분석 도구는 현재 분석 콘텍스트 오브젝트로부터 조정된 데이터를 인식을 위한 핸드라이팅 인식 처리로 전달할 것이다. 그러나, 본 발명의 다른 예들로서, 잉크 분석 도구는 조정 처리를 생략할 수 있으며, 대신에 파싱 결과들을 핸드라이팅 인식 처리로 직접 전달할 수 있다. Thus, as some examples of the present invention, the ink analysis tool can obtain a current version of an analysis context object from a software application, and can adjust parsing results using the current version of the analysis context object. During this adjustment process, the ink analysis tool will update the current version of the analysis context object to reflect the results of the parsing process. The ink analysis tool will then transfer the adjusted data from the current analysis context object to the handwriting recognition process for recognition. However, as other examples of the present invention, the ink analysis tool may omit the adjustment process, and instead pass the parsing results directly to the handwriting recognition process.
일단 파싱 결과들이 분석 콘텍스트 오브젝트의 현재 버전을 이용하여 조정되었으면, 소프트웨어 애플리케이션은 정규 동작으로 다시 리턴될 수 있고, 따라서 문서에 관한 임의의 다른 데이터 및/또는 새로운 전자 잉크 입력을 계속해서 수신할 수 있다. 한편, 인식 처리는 현재 분석 콘텍스트 오브젝트로부터의 조정된 데이터(또는, 그 파싱 결과들)를 분석한다. 인식 처리는 조정된 데이터(또는 파싱 결과들)의 분석을 완료한 후에 인식 결과들을 잉크 분석 도구로 리턴한다. 다시, 소프트웨어 애플리케이션은 인식 처리의 동작 중에 문서에 대한 임의의 다른 데이터 및/또는 새로운 전자 잉크 입력을 수신했을 수 있기 때문에, 잉크 분석 도구는 소프트웨어 애플리케이션으로부터 분석 콘텍스트 오브젝트의 현재 버전을 획득한다. 잉크 분석 도구는 분석 콘텍스트 오브젝트의 현재 버전을 조정 결과들로 업데이트하기 위해 인식 처리로부터의 결과들을 분석 콘텍스트 오브젝트의 현재 버전을 이용하여 조정한다. Once the parsing results have been adjusted using the current version of the analysis context object, the software application can return back to normal operation and thus continue to receive any other data and / or new electronic ink input about the document. . On the other hand, the recognition process analyzes the adjusted data (or its parsing results) from the current analysis context object. The recognition process returns recognition results to the ink analysis tool after completing the analysis of the adjusted data (or parsing results). Again, because the software application may have received any other data and / or new electronic ink input for the document during the operation of the recognition process, the ink analysis tool obtains the current version of the analysis context object from the software application. The ink analysis tool adjusts the results from the recognition process using the current version of the analysis context object to update the current version of the analysis context object with the adjustment results.
<예시적인 동작 환경><Example Operating Environment>
도 1은 본 발명의 각종 실시예들을 구현하는데 사용될 수 있는 범용의 디지털 컴퓨팅 환경의 개략도를 도시한다. 도 1에서, 컴퓨터(100)는 처리 유닛(110), 시스템 메모리(120), 및 시스템 메모리(120)를 포함하는 다양한 시스템 구성요소들을 상기 처리 유닛(110)에 결합하는 시스템 버스(130)를 포함한다. 시스템 버스(130)는 메모리 버스 또는 메모리 콘트롤러를 포함하는 몇 가지 타입의 버스 아키텍처들 중 하나의 버스 아키텍처, 주변 버스, 및 다양한 버스 아키텍쳐들 중 임의의 버스 아키텍쳐를 이용하는 로컬 버스일 수 있다. 시스템 메모리(120)는 판독 전용 메모리(ROM)(140) 및 랜덤 액세스 메모리(RAM)(150)를 포함할 수 있다. 1 shows a schematic diagram of a general-purpose digital computing environment that can be used to implement various embodiments of the present invention. In FIG. 1,
기본 입/출력 시스템(160)(BIOS)은 시동 중 ROM(140)에 저장되는 것과 같이, 컴퓨터(100) 내의 엘리먼트들 간에 정보를 전달하는 것을 돕는 기본 루틴들을 포함한다. 컴퓨터(100)는 또한 하드디스크(도시되지 않음)로부터 판독하고 하드디스크에 기록하기 위한 하드디스크 드라이브(170)와, 분리형 자기 디스크(190)로부터 판독하고 분리형 자기 디스크(190)에 기록하기 위한 자기 디스크 드라이브(180)와, CD ROM 또는 다른 광 매체와 같은 분리형 광 디스크(192)로부터 판독하고 분리형 광 디스크(192)에 기록하기 위한 광 디스크 드라이브(191)를 포함할 수 있다. 하드디스크 드라이브(170), 자기 디스크 드라이브(180) 및 광 디스크 드라이브(191)는 하드디스크 드라이브 인터페이스(192), 자기 디스크 드라이브 인터페이스(193) 및 광 디스크 드라이브 인터페이스(194)에 의해 시스템 버스(130)에 각각 접속된다. 이러한 드라이브들 및 그들의 연관된 컴퓨터 판독가능 매체는 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들 및 퍼스널 컴퓨터(100)용의 다른 데이터의 비휘발성 저장을 제공한다. 자기 카세트, 플래쉬 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지(Bernoulli cartridge), 랜덤 액세스 메모리들(RAMs), 판독 전용 메모리들(ROMs) 등과 같은 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 컴퓨터 판독가능 매체의 다른 타입들이 예시적인 동작 환경에서 사용될 수 있음을 본 기술분야의 숙련자들은 이해할 것이다. Basic input / output system 160 (BIOS) includes basic routines that help transfer information between elements in
하드디스크 드라이브(170), 자기 디스크(190), ROM(140), 또는 RAM(150)에 저장될 수 있는 많은 프로그램 모듈들은 운영 체제(195), 하나 이상의 응용 프로그램(196), 다른 프로그램 모듈(197) 및 프로그램 데이터(198)를 포함한다. 사용자는 키보드(101) 및 (마우스와 같은) 포인팅 디바이스(102)와 같은 입력 디바이스들을 통해 컴퓨터(100) 내에 명령들 및 정보를 입력할 수 있다. 다른 입력 디바이스들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 인공위성 접시(satellite dish), 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 종종 시스템 버스(130)에 접속된 직렬 포트 인터페이스(106)를 통해 처리 유닛(110)에 접속되지만, 이들은 또한 병렬 포트, 게임 포트, 또는 범용 직렬 버스(USB) 등과 같은 다른 인터페이스들에 의해 접속될 수 있다. 또한, 이 디바이스들은 적절한 인터페이스(도시되지 않음)를 통해 시스템 버스(130)에 직접적으로 결합될 수 있다. Many program modules that may be stored on
모니터(107) 또는 다른 타입의 디스플레이 디바이스는 또한 비디오 어댑터(108)와 같은 인터페이스를 통해 시스템 버스(130)에 접속될 수 있다. 모니터(107)에 부가하여, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터와 같은 다른 주변 출력 디바이스(도시되지 않음)를 포함한다. 일례로, 수기 입력(freehand input)을 디지털로 캡처하기 위해 펜 디지타이저(pen digitizer)(165) 및 이에 수반된 펜 또는 스타일러스(166)가 제공된다. 도 1에는 펜 디지타이저(165)와 직렬 포트 인터페이스(106) 간의 접속이 도시되어 있으나, 실제로 펜 디지타이저(165)는 처리 유닛(110)에 직접 결합될 수 있으며, 또는 본 기술분야에 공지된 바와 같이 병렬 포트 또는 또 다른 인터페이스 및 시스템 버스(130)를 통하는 것과 같은 임의의 적절한 방식으로 처리 유닛(110)에 결합될 수 있다. 또한, 도 1에는 디지타이저(165)가 모니터(107)로부터 분리된 것으로 도시되어 있으나, 디지타이저(165)의 사용가능 입력 영역은 모니터(107)의 디스플레이 영역과 동일한 영역이 될 수 있다. 또한, 디지타이저(165)는 모니터(107)에 통합될 수 있거나, 모니터(107)에 중첩되거나 부가된 별개의 디바이스로서 존재할 수 있다. The
컴퓨터(100)는 원격 컴퓨터(109)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속들을 이용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(109)는 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device) 또는 다른 공통의 네트워크 노드가 될 수 있으며, 도 1에는 간략하게 메모리 저장 디바이스(111) 만이 도시되어 있으나 통상적으로는 컴퓨터(100)에 대한 상술한 많은 또는 모든 엘리먼트들을 포함한다. 도 1에 도시된 논리적 접속들은 근거리 네트워크(LAN)(112) 및 광역 네트워크(WAN)(113)를 포함한다. 그러한 네트워킹 환경은 유선 및 무선 접속을 모두 사용하는 사무실, 대규모 광 컴퓨터 네트워크, 인트라넷 및 인터넷에 흔히 있는 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(100)는 네트워크 인터페이스 또는 어댑터(114)를 통해 근거리 네트워크(112)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 퍼스널 컴퓨터(100)는 통상적으로 인터넷과 같은 광역 네트워크(113)를 통해 통신 링크를 설정하기 위한 모뎀(115) 또는 다른 수단을 포함한다. 컴퓨터(100) 내부 또는 외부에 있을 수 있는 모뎀(115)은 직렬 포트 인터페이스(106)를 통해 시스템 버스(130)에 접속될 수 있다. 네트워크 환경에서, 퍼스널 컴퓨터(100) 또는 그 일부분들에 대하여 도시된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. When used in a LAN networking environment, the
도시된 네트워크 접속들은 예시들이며, 컴퓨터 간의 통신 링크를 설정하기 위한 다른 기술들이 사용될 수 있음을 이해해야 한다. TCP/IP, 이더넷, FTP, HTTP, UDP 등과 같은 다양한 잘 알려진 프로토콜들 중 임의의 프로토콜이 존재하는 것으로 추정하며, 시스템은 사용자가 웹-기반 서버로부터 웹 페이지를 검색하는 것을 허용하도록 사용자-서버 구성에서 동작될 수 있다. 다양한 종래의 웹 브라우저들 중 임의의 브라우저가 웹 페이지들 상의 데이터를 디스플레이하고 처리하는데 사용될 수 있다. It is to be understood that the network connections shown are examples, and that other techniques for establishing a communication link between computers may be used. It is assumed that any of a variety of well known protocols exist, such as TCP / IP, Ethernet, FTP, HTTP, UDP, etc., and the system is configured to allow the user to retrieve web pages from a web-based server. Can be operated on. Any of a variety of conventional web browsers can be used to display and process data on web pages.
도 1의 환경이 예시적인 환경을 도시할지라도, 다른 컴퓨팅 환경들이 또한 사용될 수 있음을 이해해야 한다. 예를 들어, 본 발명의 하나 이상의 예들은 도 1에 도시되고 상술한 모든 각종 실시예 보다 소수의 환경을 사용하며, 이러한 실시예들은 숙련가들에게 명백한 여러 조합들 및 서브조합들에서 나타날 것이다. Although the environment of FIG. 1 illustrates an example environment, it should be understood that other computing environments may also be used. For example, one or more examples of the invention use fewer environments than all of the various embodiments shown in FIG. 1 and described above, which embodiments will appear in various combinations and subcombinations apparent to those skilled in the art.
도 2는 본 발명의 각종 실시예들에 따라 사용될 수 있는 펜입력식 퍼스널 컴퓨터(PC)(201)를 도시한다. 도 1의 시스템의 특징, 서브시스템 및 기능들 중 임의의 것 또는 모두가 도 2의 컴퓨터에 포함될 수 있다. 펜입력식 퍼스널 컴퓨터 시스템(201)은 복수의 윈도우(203)가 디스플레이되는 큰 디스플레이 표면(202), 예를 들어 액정 디스플레이(LCD) 스크린과 같은 디지타이징 평판 디스플레이를 포함한다. 스타일러스(204)를 사용하여, 사용자는 디지타이징 디스플레이 영역을 선택하고, 하이라이트를 표시하며 그 위에 기록할 수 있다. 적절한 디지타이징 디스플레이 패널들의 예들은 Mutoh Co.(현재는 FinePoint Innovations Co.로서 알려져 있음) 또는 Wacom Technology Co.로부터 이용가능한 펜 디지타이저와 같은 전자기 펜 디지타이저들을 포함한다. 펜 디지타이저의 다른 타입들, 예를 들어, 광 디지타이저 및 접촉식(touch-sensitive) 디지타이저가 또한 사용될 수 있다. 펜입력식 컴퓨팅 시스템(201)은 데이터를 조작하고, 텍스트를 입력하고, 스프레드시트, 워드 프로세싱 프로그램 등을 생성, 편집 및 변경하는 것과 같은 종래의 응용 태스크를 실행하기 위해서 스타일러스(204)를 사용하여 행해진 제스처(gesture)를 해석한다. 2 illustrates a pen-input personal computer (PC) 201 that may be used in accordance with various embodiments of the present invention. Any or all of the features, subsystems, and functions of the system of FIG. 1 may be included in the computer of FIG. 2. The pen input
스타일러스(204)는 그 성능을 개선시키기 위해 버튼들 또는 다른 특징들을 구비할 수 있다. 일례로, 스타일러스(204)는 "연필(pencil)" 또는 "펜"으로 구현될 수 있고, 한쪽 끝은 기록 부분을 구성하고 다른 끝은 "지우개" 부분을 구성하여 디스플레이 상을 움직일 때, 디스플레이 상에서 지워져야하는 전자 잉크 부분들을 표시하도록 한다. 마우스, 트랙볼, 키보드 등과 같은 입력 디바이스들의 다른 부분들이 또한 사용될 수 있다. 부가적으로, 사용자 자신의 손가락이 접촉식 또는 근접식(proximity-sensitive) 디스플레이 상에 디스플레이된 이미지의 부분들을 선택하거나 표시하는데 사용될 수 있다. 결과적으로, 본 명세서에 사용된 용어 "사용자 입력 디바이스"는 넓은 정의를 갖는 것으로 의도되며, 잘 알려진 입력 디바이스들의 다양한 변형까지 포함한다. The
다양한 예들에서, 시스템은 응용 프로그램이 잉크를 캡쳐하고, 조작하고, 저장하는데 사용할 수 있는 잉크 플랫폼(ink platform)을 한 세트의 COM(컴포넌트 오브젝트 모델) 서비스로서 제공한다. 잉크 플랫폼은 또한 확장성 마크업 언어(XML)와 같은 언어를 포함하는 마크업 언어를 포함할 수 있다. 또한, 시스템은 DCOM을 또다른 구현으로서 사용할 수 있다. 또한, 마이크로소프트 코포레이션(Microsoft Corporation)으로부터의 Win32 프로그래밍 모델 및 Net 프로그래밍 모델을 포함하는 구현들이 사용될 수 있다. 이러한 플랫폼들은 상업적으로 이용가능하며 본 기술분야에 공지되어 있다. In various examples, the system provides an ink platform as a set of Component Object Model (COM) services that an application can use to capture, manipulate, and store ink. The ink platform can also include markup languages, including languages such as Extensible Markup Language (XML). The system can also use DCOM as another implementation. In addition, implementations including the Win32 programming model and the Net programming model from Microsoft Corporation may be used. Such platforms are commercially available and known in the art.
완벽한 성능의 펜입력식 컴퓨팅 시스템들 또는 "태블릿 PC들"(예를 들어, 컨버터블 랩탑 또는 "슬레이트(slate)" 타입 태블릿 PC)의 사용에 부가하여, 본 발명의 실시예들은 핸드-헬드 또는 팜-탑(palm-top) 컴퓨팅 시스템들; PDA(Personal Digital Assistant); 포켓 퍼스널 컴퓨터; 모바일 및 셀룰러 전화, 무선호출기(pager) 및 다른 통신 디바이스; 시계; 가전제품; 모니터 또는 다른 디스플레이 디바이스를 포함하는 임의의 다른 디바이스들 또는 시스템들 및/또는 프린트되거나 그래픽적인 정보를 사용자들에게 제시하거나 및/또는 전자 펜 또는 스타일러스를 사용한 입력을 허용하거나 또는 또다른 디바이스에 의해 수집된 전자 잉크를 처리할 수 있는 디지타이저(예를 들어, 태블릿 PC에 의해 콜렉팅된 전자 잉크를 처리할 수 있는 종래의 데스크탑 컴퓨터)와 같은 펜입력식 컴퓨팅 시스템들의 다른 타입들 및/또는 전자 잉크로서 데이터를 수용하고 및/또는 전자 펜 또는 스타일러스 입력을 수용하는 다른 디바이스들에 사용될 수 있다. In addition to the use of full-performance pen-type computing systems or "tablet PCs" (eg, convertible laptops or "slate" type tablet PCs), embodiments of the present invention may be hand-held or palm. Palm-top computing systems; Personal digital assistant (PDA); Pocket personal computers; Mobile and cellular telephones, pagers, and other communication devices; clock; Home appliances; Any other devices or systems, including a monitor or other display device, and / or present printed or graphical information to users and / or allow input using an electronic pen or stylus or be collected by another device Other types of pen-input computing systems, such as digitizers (e.g., conventional desktop computers capable of processing electronic ink collected by tablet PCs) and / or electronic ink. It can be used in other devices that accept data and / or accept an electronic pen or stylus input.
본 발명은 이제 본 발명의 각종 실시예들 및 본 발명을 설명을 돕기 위한 정보를 도시하는 남아있는 도면들에 관련하여 기재될 것이다. 상세한 설명에 포함된 특정 도면들 및 정보들이 본 발명을 제한하는 것으로 추론되어서는 안된다. The invention will now be described with reference to the various embodiments of the invention and the remaining figures showing information for aiding the description. The specific drawings and information contained in the detailed description should not be inferred as limiting the invention.
<공간적 문서 보기 추출(Abstraction)><Spatial Document View Extraction>
상술한 바와 같이, 본 발명의 일부 실시예들은 일반적으로 전자 문서들 내의 전자 잉크를 사용하여 보다 풍부하고 보다 다기능의 주석들을 제공하기 위한 시스템 및 방법에 관한 것이다. 다음은 본 발명의 각종 실시예들 및 예들을 보다 상세하게 기재한다. As noted above, some embodiments of the present invention generally relate to systems and methods for providing richer and more versatile annotations using electronic ink in electronic documents. The following describes various embodiments and examples of the present invention in more detail.
A. 본 발명의 포괄적 개요A. Comprehensive Overview of the Invention
도 3은 본 발명의 적어도 일부 예시들에 따른 시스템 및 방법의 동작을 개괄적으로 도시한다. 구체적으로, 도 3에 도시된 바와 같이, 사용자는 몇 가지 방법에 의해, 예컨대 전자 잉크를 전자 문서(300)에 추가하는 것에 의해 전자 문서(300)(도 3의 문서 "A")와 상호작용할 수 있다. 도시된 예시에서, 전자 문서(300)는 전자 또는 타이프라이팅된 텍스트(302)(도시된 예시에서, "Sample Text") 및 잉크 그림(304)(도시된 예시에서, 집)을 포함한다. 물론, 전자 문서(300)는, 본 발명으로부터 벗어나지 않는 범위 내에서, 전자 텍스트, 전자 잉크(그림 또는 텍스트), 이미지, 그래프, 테이블, 차트, 기타 그래픽 또는 전자 정보 및/또는 이들의 조합과 같은 임의의 데이터 또는 정보를 포함할 수 있다. 이러한 예시의 목적으로, 원래의 전자 문서(300)(본 출원에서 "기초 문서" 또는 "기초 부분"이라고도 함)는 전자 타이프라이팅된 텍스트(302) 및 전자 잉크 그림(304)을 포함한다. 사용자가 이 예시에서 문서 A(300)를 리뷰할 때, 사용자는 문서(300) 내에 전자 잉크 주석을 포함시킬 것을 결정한다. 구체적으로, 도시된 예에서, 주석은 전자 텍스트(302)의 일부분(308)을 둘러싸는 써클(306)을 포함한다. 3 schematically illustrates the operation of a system and method in accordance with at least some examples of the invention. Specifically, as shown in FIG. 3, a user may interact with the electronic document 300 (document “A” in FIG. 3) by several methods, such as by adding electronic ink to the
이 예시에서, 사용자가 주석을 입력한 후, 응용 프로그램은 파서(310)를 호출하여 새롭게 입력된 전자 잉크 데이터의 파싱을 요청할 것이다 (상술한 바와 같이, "파싱"은, 예를 들어, 전자 잉크를 여러 가지 잉크 타입(예컨대, 그림, 텍스트, 플로우차트, 음악 등)으로 분류하는 것, (예를 들어, 잉크 스트록들 간의 공간 및 위치적 관계들을 확인하고 이들을 적절한 그룹으로 그룹화하는) 잉크 레이아웃 분석 및 기타 분석 처리들을 포함할 수 있다). 구체적으로, 응용 프로그램은 (이 예시에서는, 주석(306)을 나타내는) 입력된 전자 잉크 데이터를 미분류 잉크 데이터로서 파서(310)로 보낼 것이다. 이는 도 3에서 입력 화살표(312)에 의해 도시되어 있다.In this example, after the user enters an annotation, the application will call
선택적으로, 응용 프로그램은 바탕 전자 문서(300)와 관련된 일부 또는 모든 데이터를 파서(310)로 동시 또는 거의 동시에 보낼 수 있다. 이러한 데이터는 예를 들어, 전자 텍스트(302), 그림(304) 등의 위치와 같은, 문서(300) 내의 정보의 공간적 레이아웃에 관한 데이터를 포함할 수 있다. 부가적으로, 응용 프로그램은 문서 내의 데이터의 계층적 구조를 나타내는 데이터를 보낼 수 있으며, 이는 이하에 보다 상세하게 설명한다. 다른 대안으로서, 또한 이하에서 보다 상세하게 설명하는 바와 같이, 파서(310)는, 새로운, 미분류된 잉크와 연관된 공간적 영역에서의 전자 문서(300)에 관한 정보와 같은, 전자 문서(300)에 관한 임의의 데이터(이 예시에서는, 공간적으로 주석(306) 가까이에 위치한 타이프라이팅된 텍스트 및 정보를 나타내는 데이터)를 요청하는 응용 프로그램으로 콜백(call back)할 수 있다. 파서(310)에 입력된 이러한 데이터는 도 3에 입력 화살표(314)로 도시된다. 물론, 미분류된 잉크 및 미리 분석된 데이터 양자는 모두, 본 발명으로부터 벗어나지 않는 범위 내에서, 동시에 파서로 보내질 수 있거나, 및/또는 그 파서에 사용가능하게 될 수 있다. Optionally, the application program may send some or all of the data associated with the base
파서(310)는 입력된 전자 문서 데이터(314) 및 입력된 미분류 잉크 데이터(312)를 취하고, 그 정보를 사용하여 새로운 전자 잉크 데이터를 잉크 타입으로 분류한다. 잉크는 본 발명으로부터 벗어나지 않는 범위 내에서 다양한 잉크 타입들로 분류될 수 있으며, 가능한 잉크 타입들에 대한 여러 예시들이 이하에 보다 상세하게 설명된다. 본 예시에서는, 본 발명의 본 예시에 따른 파서(310)가, 바탕 문서(300)에 포함된 입력 잉크(306) 및 정보(302)에 기초하여, 주석으로서, 또는 보다 구체적으로는 특정 타이프라이팅된 텍스트를 포함하는 콘테이너 주석(예컨대, 써클)에 대응하는 잉크 그림으로서 입력 잉크(306)를 결정하고 분류할 수 있다. 물론, 하이라이트 표시 주석, "포인트 투(point to)" 주석, "포인트 프롬(point from)" 주석, (예를 들어, "포인트 투" 또는 "포인트 프롬" 하지 않는) 고정(anchor) 주석, 수평 스팬(horizontal span), 수직 스팬(vertical span) 등과 같은 다양한 타입의 주석이 또한 가능하며, 여러 예시들이 이하에 보다 상세하게 설명될 것이다. The
일단 파싱되면, 주석(306)과 연관된 데이터는 전자 문서(300)와 연관된 "문서 트리" 계층적 데이터 구조(또는 임의의 다른 적절한 또는 원하는 데이터 구조)로 통합될 수 있으며, 데이터 구조(또는 응용 프로그램에 의해 유지되는 기존의 데이터 구조를 변경하기 위한 명령들)는, 도 3에 화살표(316)로 표시된 바와 같이 응용 프로그램으로 다시 보내질 수 있다. 원하는 경우에는, 본 발명으로부터 벗어나지 않는 범위 내에서, 다른 데이터가 또한 파서(310)로부터 응용 프로그램으로 리턴될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 포함된 파서(310)의 동작이 하나 이상의 인식기 모듈, 컴포넌트 및/또는 프로그램에서 호출된다면, (핸드라이팅 인식기 또는 다른 인식기와 같은) 인식 분석 처리의 결과와 연관된 데이터가 응용 프로그램으로 리턴될 수 있다.Once parsed, the data associated with
도 4는 본 발명의 일부 예시에서 사용된 여러 특징의 구현(400)에 대한 예시를 도시한다. 도시된 바와 같이, (도 3에서 문서 A와 같은) 전자 문서가 데이터 구조 또는 문서 모델(402)로서 응용 프로그램(400a)에 의해 생성, 저장 및/또는 유지된다. 이러한 데이터 구조(402)는, 본 발명으로부터 벗어나지 않는 범위 내에서, 계층적 데이터 구조 또는 임의의 다른 적절하거나 희망하는 데이터 구조가 될 수 있다. 응용 프로그램(400a)은 미러(mirror) 카피, 선택적 카피, 또는 데이터 구조(402)에 관한 기타 관련 정보를 포함하는 "분석 콘텍스트(Analysis Context)" 오브젝트(404)를 포함한다(예를 들어, 분석 콘텍스트 오브젝트(404)는 "번역" 레이어일 수 있으며, "번역" 레이어에서는 분석 콘텍스트 구조(404)에 대한 쿼리들이 원시 문서 모드 구조(native document mode structure)의 쿼리들로 번역되며 - 이러한 방식으로, 본 발명의 실시예들에 따른 파싱 기술은 여러 가지 서로 다른 원시 응용 프로그램들에서 사용될 수 있도록 번역될 수 있다). 본 예시인 구현(400)의 운영 체제 측 또는 "플랫폼"(400b)은, 응용 프로그램(400a)에 의해 호출되는 "잉크 분석기" 메소드(406)를 포함한다. 응용 프로그램(400a)은 잉크 분석기 메소드(406)를 호출하여, 이 레퍼런스를 분석 콘텍스트 오브젝트(404)에 전달한다. 잉크 분석기 메소드(406)는 (역시 본 예시에서 플랫폼(400b)의 일부인) 파서(408)를 호출할 것이며, 파서는 앞서 개괄적으로 설명된 바와 같이 입력 데이터의 레이아웃을 분류하고 분석한다. 본 발명에 따른 예시적인 구현의 동작은, 이하의 <잉크의 분석> 섹션에서 보다 상세하게 설명한다. 일단 파서(408)가 분석 및 처리를 완료하면, 플랫폼(400b)은, 도 4에 화살표(410)로 포괄적으로 도시된 바와 같이, 문서 모델(402) 및/또는 분석 콘텍스트 오브젝트(404)가 파서 처리 및 결과들에 기초하여 데이터 구조를 리빌드(rebuild)할 수 있도록, 응용 프로그램(400a)으로 데이터를 다시 리턴할 수 있다.
도 5는, 본 발명의 적어도 일부의 예시들에서의 전자 문서 데이터를, 예를 들어 "분석 콘텍스트" 오브젝트(404)의 일부로서, 문서 모델(402)로서, 또는 파서(408)에 의해 생성되거나 및/또는 출력된 데이터 구조로서 저장하기 위해 사용될 수 있는 데이터 구조의 일례를 개괄적으로 도시한다. 구체적으로, 도 5에는 예시적인 전자 문서(500)가 도시된다. 데이터 구조가 분석 콘텍스트 오브젝트(502)로서 저장되거나 파싱의 대상이 되는 경우, 데이터 구조는 서로 다른 그룹(grouping) 또는 "노드들"로 분류 또는 배열되는 다양한 문서 엘리먼트를 포함할 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 전자 문서(500)는 세 개의 전자 텍스트 단락(504, 506, 508); 하나의 전자 잉크 그림(510); 및 하나의 전자 잉크 주석(512)을 포함한다. 전자 문서(500)에 대한 예시적인 분석 콘텍스트 데이터 구조(502)가 도 5에서 최상위-레벨 엘리먼트들의 리스트로서 도시된다. 구체적으로, 노드 엘리먼트(504(a))는 전자 문서(500) 내의 단락(504)에 대응하고, 노드 엘리먼트(506(a))는 전자 문서(500) 내의 단락(506)에 대응하고, 노드 엘리먼트(508(a))는 전자 문서(500) 내의 단락(508)에 대응하고, 노드 엘리먼트(510(a))는 전자 문서(500) 내의 단락(510)에 대응하고, 노드 엘리먼트(512(a))는 전자 문서(500) 내의 단락(512)에 대응한다. 이하에서 보다 상세히 설명되는 바와 같이, 추가 노드들이 도 5에 도시된 최상위 레벨 노드들(504(a), 506(a), 508(a), 510(a), 512(a))에 대한 부모 노드(parent node) 및/또는 자식 노드(child node)로서 데이터 구조에 (예를 들어, 계층적 배열로) 저장될 수 있다. 4 shows an illustration of an
5 generates electronic document data in at least some examples of the invention, for example, as part of an “analysis context”
삭제delete
B. 콘텍스트 노드 및 계층적 데이터 구조B. Context Nodes and Hierarchical Data Structures
도 6a 내지 6i는, 본 발명의 일부 예시들에 따르는, 분석 콘텍스트 오브젝트와 같은 전자 문서 데이터의 빌드(building), 분석 및 파싱에 사용될 수 있는 데이터 구조들 및 콘텍스트 노드들의 다양한 예시들을 도시한다. 도 6a는 미분류 전자 잉크 데이터(예를 들어, 사용자에 의해 새롭게 입력된 잉크로서, 이전에 파싱의 대상이 되지 않았던 잉크)를 저장하기 위해 사용될 수 있는 예시적인 데이터 구조(600)를 도시한다. 이러한 예시적인 데이터 구조(600)는 (예를 들어, 응용 프로그램에서의 전자 문서 전체에 대응하거나, 문서의 특정 페이지에 대응하거나, 또는 응용 프로그램에 의해 사용되는 그룹과 같은 임의의 적절한 또는 원하는 그룹의 데이터에 대응할 수 있는) 루트 노드(root node)(602)를 포함한다. 루트 노드(602)에는, 페이지 넘버, 이전의 페이지와 다음 페이지에 대한 포인터, 여백의 위치 또는 크기 등과 같은 임의의 적절하거나 희망하는 데이터가 포함될 수 있다. 각 루트 노드(602)는 임의의 수의 미분류 잉크 노드들(604)을 자식 노드들로서 포함할 수 있고, 각 미분류 잉크 노드(604)는 또한 임의의 수의 개별 스트록 노드들(606)을 더 포함할 수 있다 (계층 구조에서 마지막 노드(본 예시에서, 스트록 노드(606))는 또한 본 명세서에서 "리프 노드(leaf node)"로도 지칭될 수 있다). (여러 도면에서 문자 "n"은 0을 포함한 임의의 수를 나타낸다.) 데이터 구조(600)의 여러 노드는, 노드에 대응하는 희망하거나 적절한 임의의 데이터를 포함할 수 있다. 예를 들어, 스트록 노드(606)는 데이터를 포함할 수 있으며, 이 데이터는 전자 잉크 스트록을 식별하는 기타 데이터 또는 디지타이저 포인트; 스트록 위치 또는 방향(orientation) 데이터; 스트록 컬러 데이터; 스트록 압력 데이터; 스트록 입력 타이밍 데이터; 스트록 ID 데이터; 및/또는 전자 잉크를 수신할 수 있는 시스템 및 방법에서 스트록 정보를 저장하는데 사용되는 임의의 기타 종래의 또는 유용한 데이터를 나타낼 수 있다. 마찬가지로, 미분류 잉크 노드(들)(604)는, 잉크 또는 노드와 연관된 임의의 희망하거나 적절한 데이터(예를 들어, 노드 내에 포함된 모든 스트록의 바운딩 박스(bounding box) 크기; 바운딩 박스 위치; 입력 타이밍 정보; (예를 들어, 최소 볼록 집합(convex hull) 정보와 같은) 잉크에 대한 기하학(geometric) 정보; 및/또는 노드에 포함된 미분류 잉크 스트록들에 관한 임의의 종래 또는 유용한 기타 데이터를 나타내는 데이터)를 포함할 수 있다. 대안으로, 필요에 따라, 스트록 데이터는 일반적으로 문서 트리의 개별 노드로서 저장되기보다는, 또 다른 노드(예를 들어, 단어 노드, 테이블 노드 등)의 속성으로서 저장될 수 있다.6A-6I show various examples of data structures and context nodes that can be used for building, analyzing, and parsing electronic document data, such as an analysis context object, in accordance with some examples of the present invention. FIG. 6A shows an
일단 미분류 잉크가 분류기, 레이아웃 분석기, 인식기 및/또는 또다른 파싱 시스템으로 보내지면, 잉크의 적어도 일부분은 서로 연관되거나 및/또는 다양한 서로 다른 타입들로 분류될 수 있으며, 잉크와 연관된 데이터 구조는 그것이 분류된 여러 타입 및 연관 조합(associations)에 대응되도록 변화될 수 있다. 도 6b는 잉크 텍스트로 분류된 전자 잉크에 대한 예시적인 데이터 구조(610)를 도시한다. 본 기술분야에서의 알려지고 사용된 종래의 파서들을 포함하는 파싱 기술을 이용하면, 입력 전자 잉크 스트록(예를 들어, 펜-다운 이벤트(pen-down event)와 시간적으로 후속하는 펜-업 이벤트(pen-up event) 사이에. 또는 몇가지 다른 방식으로 수집된 전자 잉크 데이터)은 계층적 방식으로 파싱되고 저장될 수 있으며, 관련된 개별 잉크 스트록들은 함께 분류되어 잉크 단어들로 저장될 수 있으며, 선형으로 배치된 잉크 단어들은 함께 분류되어 잉크 라인들으로서 저장될 수 있으며, 관련된 잉크 라인들은 함께 분류되어 잉크 단락들로서 저장될 수 있으며, 관련된 단락들은 전자 문서들로서(예를 들어, 개별 페이지 부분들로, 전체 문서로서, 또는 임의의 적절한 루트 그룹으로) 저장될 수 있다. 도 6b에 도시된 바와 같이, 이러한 방식으로 파싱되고 저장된 전자 잉크 데이터에 대응하는 예시적인 계층적 데이터 구조(610)는 루트 노드(612)를 포함할 수 있으며, 루트 노드(612)는 전체 전자 문서, 페이지, 또는 응용 프로그램에 의해 사용되는 바와 같이 또 다른 그룹에 대응할 수 있다. 각 루트 노드(612)는 전자 잉크 스트록들의 유사한 그룹들 또는 단락들에 대응하는 임의의 수의 노드들(614)을 포함할 수 있다. 단락 노드들(614)은 임의의 수의 개별 라인 노드들(616)을 포함할 수 있고, 개별 라인 노드들(616)은 임의의 수의 개별 잉크 단어 노드들(618)을 포함할 수 있으며, 개별 잉크 단어 노드들(618)은 또한 입력 전자 잉크 데이터의 개별 스트록들에 대응하는 임의의 수의 개별 스트록 노드들(620)을 포함할 수 있다. 선택적으로, 상술한 바와 같이, 스트록 데이터는 필요에 따라, 연관된 단어 노드의 "속성"으로서 저장될 수 있다. 여러 노드들(612, 614, 616, 618, 620)은, 공간적 방향 또는 포지셔닝(positioning) 데이터와 같은 노드 내에 포함된 다양한 개별 스트록들 또는 스트록들의 집합에 관한 임의의 적절한 데이터 및/또는 상술한 바와 같은 기타 데이터를 저장할 수 있다. Once the unclassified ink is sent to the classifier, layout analyzer, recognizer and / or another parsing system, at least a portion of the ink may be associated with each other and / or classified into various different types, and the data structure associated with the ink may be It may be changed to correspond to various types and associations classified. 6B shows an example data structure 610 for electronic ink classified with ink text. Using parsing techniques, including conventional parsers known and used in the art, input electronic ink strokes (e.g., pen-down events and subsequent pen-up events) electronic ink data collected between pen-up events or in several other ways can be parsed and stored in a hierarchical manner, and the individual ink strokes involved can be grouped together and stored as ink words, linearly The placed ink words can be sorted together and stored as ink lines, the associated ink lines can be sorted together and stored as ink paragraphs, and the related paragraphs can be stored as electronic documents (e.g. as individual page parts, as a whole). Document, or in any suitable root group). As shown in FIG. 6B, an exemplary hierarchical data structure 610 corresponding to electronic ink data parsed and stored in this manner may include a
본 발명으로부터 벗어나지 않는 범위 내에서, 입력 전자 잉크 스트록들에 대응하는 다른 데이터 타입들 및 데이터 구조 배치들도 가능하다. 예를 들어, 분류, 레이아웃 분석, 또는 인식기 기술은 입력 전자 잉크가 잉크 그림을 형성함을 판단할 수 있다. 도 3은 몇몇 개별 잉크 스트록들을 포함하는 예의 잉크 그림(304)을 도시한다. 도 6c 및 도 6d는 잉크 그림들에 관련하는 것으로 결정된 전자 잉크 데이터를 그룹화하고 저장하는데 사용될 수 있는 예시적인 계층적 데이터 구조들을 도시한다. 도 6c에 도시된 바와 같이, 데이터 구조(630)는 (상술한 바와 같이, 전체 전자 문서, 전자 페이지, 또는 몇가지 기타 데이터 그룹에 대응할 수 있는) 루트 노드(632)를 포함한다. 각 루트 노드(632)는 (예를 들어, 각 개별 그림이 예를 들어, 그림 폭, 그림 높이, 그림 위치, 바운딩 박스 크기 등에 관한 데이터를 저장하는 개별 노드를 갖도록) 임의의 수의 개별 잉크 그림 노드들(636)을 포함할 수 있으며, 각 잉크 그림 노드(636)는 (그 그림을 구성하는 개별 잉크 스트록들에 대응하는) 임의의 수의 개별 잉크 스트록 노드들(638)을 포함할 수 있다. 선택적으로, 잉크 스트록 데이터는 대응하는 잉크 그림 노드(또는 다른 노드)의 "속성"으로 저장될 수 있다. Other data types and data structure arrangements corresponding to input electronic ink strokes are possible without departing from the invention. For example, classification, layout analysis, or recognizer techniques may determine that the input electronic ink forms an ink picture. 3 shows an example ink drawing 304 that includes several individual ink strokes. 6C and 6D show exemplary hierarchical data structures that can be used to group and store electronic ink data determined to relate to ink pictures. As shown in FIG. 6C, the
도 6d는 하나 이상의 잉크 그림들을 포함하는 전자 문서들에 대한 대체가능한 데이터 구조(630a)를 도시한다. 본 예시에서, 전자 문서 또는 페이지 또는 다른 데이터 그룹(루트 노드 632a로 표시됨)은 도 6c에 관련하여 기재된 계층적 방식으로 함께 연관되고 저장되는 데이터를 갖는 전자 잉크 그림들의 하나 이상의 그룹(노드 634a로 표시됨)을 포함할 수 있다 (예를 들어, 전체 전자 문서(루트 노드 632a로 표시됨)는 몇몇 개별 페이지들(각각이 그룹 노드 634a로 표시됨)을 포함할 수 있고, 각 개별 페이지는 하나 이상의 개별 잉크 그림(각각이 잉크 그림 노드 636a로 표시됨)을 가질 수 있고, 각 개별 잉크 그림은 하나 이상의 개별 잉크 스트록(각각이 스트록 노드 638a로 표시되거나 잉크 그림 노드의 속성에 표시됨)을 포함할 수 있다). 그룹들 및 잉크 그림들은 모두 동일한 루트 노드 또는 임의의 그룹 노드의 자식들(children)이 될 수 있음을 이해해야 한다. 또한, 필요에 따라, 하나의 그룹 노드가 추가의 그룹 노드를 포함할 수도 있다. 물론, 본 발명에서 벗어나지 않는 범위 내에서, 전자 잉크 그림들을 저장하기 위한 또 다른 적절한 데이터 구조들이 사용될 수 있다. 6D shows a
그러나, 계층적 데이터 구조들은 입력 전자 잉크 데이터와 함께 사용하는 것으로 제한되는 것은 아니다. (예를 들어, 키보드로부터의) 입력 타이프라이팅된 텍스트는 또한 여러가지 그룹들로 연관되어 계층적 데이터 구조로 저장될 수 있다. 도 6e는 그러한 데이터 구조(640)의 일례를 도시한다. 이러한 데이터 구조(640)는 (예를 들어, 상술한 루트 노드들과 같은) 루트 노드(642)를 포함할 수 있다. 각 루트 노드(642)는 (텍스트의 단락들에 대응하는) 임의의 수의 텍스트 단락 노드들(644)을 포함할 수 있고, 각 단락 노드(644)는 임의의 수의 텍스트 라인 노드들(646)(또는 대안으로 텍스트 문장 노드들)을 포함할 수 있으며, 각 라인 노드(646)는 임의의 수의 개별 텍스트 단어 노드들(648)을 더 포함할 수 있다. 필요에 따라, 텍스트 단어들은 또한 본 발명으로부터 벗어나지 않는 범위 내에서 개별 텍스트 문자 노드들로 더 쪼개질 수 있으며, 개별 문자 특징 노드(예컨대, 각 문자의 기준선, 가는선, 어센더(ascender) 및 디센더(descender) 특징들에 관한 문자 특징 노드)로 더 쪼개질 수 있다. 여러가지 노드들은, 단락, 라인 또는 단어 공간적 위치, 콘텐트, 크기 등과 같은 텍스트에 관한 적절한 데이터, 페이지 마진; 마진 크기 또는 위치; 페이지 수 등에 관한 임의의 적절한 데이터를 저장할 수 있다. However, hierarchical data structures are not limited to use with input electronic ink data. Input typed text (eg, from a keyboard) can also be stored in a hierarchical data structure in association with various groups. 6E shows an example of such a
도 6a 내지 도 6e에 관련하여 상술한 여러가지 데이터 구조들은 전자 잉크 데이터만을 배타적으로 포함하거나 전자 타이프라이팅된 텍스트 데이터만을 배타적으로 포함하는 데이터 구조들을 도시한다. 파싱 기술은 본 발명으로부터 벗어나지 않는 범위 내에서, 이러한 단일의 데이터 구조 내의 서로 다른 데이터 타입들을 분석하고, 결합하고, 연관시키고, 그룹화하는데 사용될 수 있다. 도 6f에 도시된 예시적인 데이터 구조에서는, 전자 문서 또는 그 일부분(루트 노드(652)로 표시됨)이 하나 이상의 개별 단락(단락 노드(654)로 표시됨) 및 하나 이상의 개별 라인(라인 노드(656)로 표시됨)을 포함한다. 타이프라이팅된 텍스트(텍스트 단어 노드(658)로 표시됨) 및 전자 잉크 텍스트(잉크 단어 노드(660) 및 잉크 스트록 노드(662)로 표시됨) 양자가 모두 라인에 포함되는 것은 가능하다. 각 개별 단락, 라인 및 단어 노드(타이프라이팅된 텍스트 및 잉크 단어들 양자 모두)는 단락, 라인 및 단어의 콘텐트에 따라 적절한 독립 데이터를 포함할 것이다. 부가적으로 또는 대안으로, 개별 단어들은 본 발명으로부터 벗어나지 않는 잉크 문자들 및 타이프라이팅된 문자들 둘 모두를 더 포함할 수 있다. The various data structures described above with respect to FIGS. 6A-6E illustrate data structures that include exclusively electronic ink data only or exclusively include electronic typed text data. Parsing techniques can be used to analyze, combine, associate and group different data types within this single data structure without departing from the invention. In the example data structure shown in FIG. 6F, the electronic document or portion thereof (denoted as root node 652) is one or more individual paragraphs (denoted by paragraph node 654) and one or more individual lines (line node 656). Is indicated by). It is possible for both typed text (represented by text word node 658) and electronic ink text (represented by
다른 전자 데이터는 또한 본 발명에서 벗어나지 않지 않는 범위 내에서 (계층적 데이터 구조를 포함하는) 전자 문서의 데이터 구조에 포함될 수 있다. 예를 들어, 도 6g의 데이터 구조(664)에 도시된 바와 같이, (디지털 포토, 그래픽 정보 등과 같은) 이미지 데이터가 전자 문서에 대한 데이터 구조에 포함될 수 있다. 본 예시에 도시된 바와 같이, 데이터 구조(664)는 전자 문서 또는 그 일부분(루트 노드(666)로 표시됨)을 포함하고, 전자 문서 또는 그 일부분(루트 노드(666)로 표시됨)은 하나 이상의 데이터의 개별 그룹들(그룹 노드(668)로 표시됨)을 포함한다. 본 예시에서 각 데이터 그룹은 도 6e 및 도 6f에 관련하여 앞서 개괄적으로 설명한 바와 같이, 타이프라이팅된 텍스트(단락 노드(672), 라인 노드(674) 및 텍스트 단어 노드(676)로 표시됨)뿐만 아니라 전자 이미지(이미지 노드(670)로 표시됨)를 포함할 수 있다. 물론, 도 6g에 도시된 것과 같은 데이터 구조는 또한 (예를 들어, 도 6a 내지 도 6d에 도시된 데이터 구조와 같은) 전자 잉크 데이터 또는 본 발명에서 벗어나지 않는 범위 내에서 기타 희망하는 데이터 타입을 포함할 수 있다. 도 6h는 본 발명의 적어도 일부 예시들에 따라 사용될 수 있는 또 다른 잠재적 데이터 구조(680)의 일례를 도시한다. 더욱 구체적으로, 도 6h의 데이터 구조(680)는 하나 이상의 리스트(리스트 노드(684)로 표시됨)를 포함하는 전자 문서 또는 그 일부분(루트 노드(682)로 표시됨)에 대응한다. 전자 문서 내의 리스트는 임의의 수의 개별 리스트 항목들(리스트 항목 노드(686)로 표시됨)을 포함할 수 있으며, 각 리스트 항목은 매우 다양한 서로 다른 타입의 전자 정보를 포함할 수 있다. 예를 들어, 일부 리스트 항목들은 리스트 불릿(list bullet)을 선택적으로 포함할 수 있으며, 리스트 블릿은 타이프라이팅된 불릿 또는 전자 잉크 불릿으로 구성될 수 있다(하나 이상의 대응 잉크 스트록(690)을 포함하는 잉크 불릿 노드(688)는 도 6h의 예시에서 도시된다). 또한, 각 리스트 항목은 선택적으로 하나 이상의 전자 잉크 단락(노드 체인(692)로 표시됨), 하나 이상의 잉크 그림(노드 체인(694)으로 표시됨), 및/또는 하나 이상의 타이프라이팅된 단락(노드 체인(696)으로 표시됨)을 포함할 수 있다. 부가적으로(또는 대체 가능하게), 각 리스트 항목은 선택적으로 하나 이상의 이미지들(이미지 노드(698)로 표시됨) 및/또는 도 6d 및 도 6g와 관련하여 상술한 그룹들과 같은 하나 이상의 데이터 그룹(그룹 노드 체인(700)으로 표시됨)을 포함할 수 있다. 다양한 노드들 및/또는 노드 체인들(692, 694, 696, 698, 700)은 일반적으로 이러한 데이터 구조들의 서브세트 및/또는 그룹들뿐만 아니라 도 6a 내지 도 6g에 도시된 예시적인 데이터 구조들에 대응할 수 있으므로, 더 이상의 설명은 생략한다. 필요에 따라, 적어도 일부 예시에서는, 개별 리스트 항목 노드(686) 자체가 또한 도 6h에 도시된 것과 같은 데이터 구조를 갖는 리스트를 포함할 수 있다.Other electronic data can also be included in the data structure of an electronic document (including hierarchical data structures) without departing from the invention. For example, as shown in
도 6i는 본 발명의 적어도 일부 예시에서 사용될 수 있는 또 다른 예시적인 데이터 구조(710)를 도시한다. 이러한 예시적인 데이터 구조(710)는, 테이블로서 분석되어 함께 연관되고 그룹화되어 저장된 전자 데이터에 대응한다. 이 도시된 예시에서, 각 전자 문서 또는 그 일부분(루트 노드(712)로 표시됨)은 하나 이상의 테이블(테이블 노드(714)로 표시됨)을 포함할 수 있다. 본 예시에서, 테이블은 하나 이상의 정보 행(row)(행 노드(716)로 표시됨)로 구성될 수 있고, 모든 행은 하나 이상의 개별 셀(셀 노드(718)로 표시됨)로 구성될 수 있다. 개별 셀은 예를 들어, 상술한 여러 가지 서로 다른 데이터 구조들 중 임의의 구조를 포함하는 하나 이상의 데이터 구조를 포함할 수 있다. 도시된 예에서, 개별 테이블 셀은 임의의 수의 이미지들(이미지 노드(720)로 표시됨), 임의의 수의 타이프라이팅된 텍스트 단락들(노드 체인(722)으로 표시됨), 임의의 수의 그룹들(노드 체인(724)으로 표시됨), 임의의 수의 추가 테이블들(노드 체인(728)으로 표시됨) 및 임의의 수의 리스트들(노드 체인(730)으로 표시됨)을 잠재적으로 포함할 수 있는 것으로 도시된다. 물론, 본 발명으로부터 벗어나지 않는 범위 내에서, 상술한 여러 가지 특정 데이터 구조들 및/또는 예를 들어, 상술한 데이터 구조들의 조합들 및 서브세트들을 포함하여 임의의 기타 적절한 또는 원하는 데이터 구조들이 테이블에 포함될 수 있다. 6I illustrates another
임의의 적절한 또는 원하는 데이터가 앞서 기재된 여러가지 데이터의 타입들을 포함하는 여러가지 다른 노드들에 저장될 수 있다. 주석들에 관한 데이터를 처리하는 사용을 위해, 그 전자 문서 내의 노드의 공간적 위치, 방향 또는 위치에 관 한 데이터를 저장하기 위해 여러가지 노드들에 대한 본 발명의 적어도 몇가지 예들에 유용할 수 있으며, 선택적으로 이러한 공간적 정보는 전자 문서 데이터 구조 내의 다른 노드들에 관련하거나 또는 그와 링크한다. Any suitable or desired data may be stored at various other nodes, including the various types of data described above. For use in processing data relating to annotations, it may be useful in at least some examples of the invention for various nodes to store data about the spatial position, orientation, or position of a node in the electronic document, optional This spatial information in turn relates to or links with other nodes in the electronic document data structure.
또한, 본 발명으로부터 벗어나지 않는 범위 내에서, 다른 타입들의 파서들, 분류기들 및/또는 인식기 및 데이터 타입들이 사용될 수 있다. 예를 들어, 인식기들은, 본 발명으로부터 벗어나지 않는 범위 내에서, 전기 또는 전자 심볼들(예를 들어, 저항기, 전압원, 캐패시터 등); 음악 심볼들; 수학적 심볼들; 플로우차트 엘리먼트들; 파이 차트 엘리먼트들(pie chart elements) 등을 분석하고, 인식하고, 그룹화하고, 및/또는 연관시키기 위해 사용될 수 있다. In addition, other types of parsers, classifiers and / or recognizers and data types may be used without departing from the invention. For example, recognizers may include electrical or electronic symbols (eg, resistors, voltage sources, capacitors, etc.) without departing from the invention; Music symbols; Mathematical symbols; Flowchart elements; It can be used to analyze, recognize, group, and / or associate pie chart elements and the like.
도 6a 내지 도 6i에 도시된 데이터 구조들은 본 발명의 실시예들에 따라 사용될 수 있는 여러 가지 데이터 구조들의 예시들일 뿐이다. 본 기술분야의 통상의 지식을 가진 자들은 사용된 특정 데이터 구조들이 본 발명으로부터 벗어나지 않는 범이 내에서 다양하게 변형될 수 있음을 인식할 것이다. 예를 들어, 서로 다른 레이아웃 그룹들을 나타내는 서로 다른 노드들이 사용될 수 있거나, 부가적인 노드 타입들이 추가될 수 있거나, 본 발명으로부터 벗어나지 않는 범위 내에서 기술된 노드 타입들 중 일부가 생략될 수 있다(예를 들어, 테이블 데이터 구조 내에서, 행 노드들 대신에 열 노드들이 사용될 수 있다). 부가적으로, 상술한 내용은, 페이지 상에서 문자들이 좌에서 우로, 그리고 위에서 아래로 판독되는 언어 및 텍스트 표현에 사용되도록 최적화되어 있다. 본 발명으로부터 벗어나지 않는 범위 내에서, 다른 언어 및 문자 배열에 대응하여 사용하도록 설계된 데이터 구조들, 예를 들어, 우에서 좌로, 상에서 하로, 하에서 상으로, 또는 그 조합들로 판독 및/또는 기록된 언어들을 수용하기 위한 데이터 구조들이 사용될 수 있다. 부가적으로, 필요할 경우 (특히 아시아 언어들과 같은 몇 가지 언어들에 대해), 스트록들을 문자들로 적절하게 그룹화할 수 있으며, 이들을 다시 라인들로 그룹화하여, 상술한 바와 같이, "단어" 노드를 중간에 사용하지 않을 수 있다. 또 다른 대안으로, 라인 노드들의 사용은 생략될 수 있고, 단어 노드들이 단락들 및/또는 다른 원하는 그룹들으로 함께 그룹화될 수 있다. 특정 언어의 문자들을 수용하기 위한 데이터 구조의 이러한 변형들 및 기타 변경들이 본 발명으로부터 벗어나지 않는 범위 내에서 사용될 수 있다. The data structures shown in FIGS. 6A-6I are merely examples of various data structures that can be used in accordance with embodiments of the present invention. Those skilled in the art will recognize that the specific data structures used may be variously modified within the scope of the present invention. For example, different nodes representing different layout groups may be used, additional node types may be added, or some of the described node types may be omitted without departing from the invention (eg, For example, within a table data structure, column nodes may be used instead of row nodes). In addition, the foregoing is optimized for use in language and textual representation in which characters on a page are read from left to right and top to bottom. Read and / or written in data structures designed for use in correspondence with other languages and character arrangements, e.g., right to left, top to bottom, top to bottom, or combinations thereof, without departing from the invention. Data structures to accommodate languages can be used. In addition, if necessary (especially for some languages, such as Asian languages), the strokes can be grouped properly into characters, and they are grouped back into lines, as described above, to "word" nodes. May not be used in the middle. Alternatively, the use of line nodes can be omitted and word nodes can be grouped together into paragraphs and / or other desired groups. Such variations and other modifications of the data structure to accommodate the characters of a particular language may be used without departing from the present invention.
C. 주석들에 대한 본 발명의 실시예들의 응용C. Application of Embodiments of the Invention to Comments
상술한 바와 같이, 콘텍스트 노드들 및 계층적 데이터 구조들의 사용을 포함하는 본 발명의 실시예들은 전자 문서들에 "스마트한(smart)" 전자 잉크 주석들을 제공하기 위해 사용될 수 있다. 상술한 바와 같이, 전자 문서에 주석을 다는 것은, 펜입력식 컴퓨팅 시스템들을 바람직하고 유리하게 사용하는 방법 중 하나이다. 그러나, 특히 유용하고 효과적이기 위해서는, 펜입력식 컴퓨팅 시스템 상에서 문서들에 전자 잉크로 만들어진 주석들이, 바탕 문서 내의 여러 가지 엘리먼트들과 연관된 문자들이 어떤 이유(예를 들어, 여백 변화, 디스플레이 크기 변화, 폰트 변화, 정보의 추가, 정보의 삭제 등)로 변화하는 경우, 바탕 문서에서 주석을 단 엘리먼트들에 대한 변경에 기초하여 주석의 위치 및/또는 다른 특징들이 정확하게 변경될 수 있도록 주석은 충분히 유연해야 한다. 이는, 예를 들어 주석과 연관된 적어도 하나의 콘텍스트 노드를 바탕 문서와 연관된 하나 이상의 콘텍스트 노드에 링크함으로써 달성될 수 있다. 적어도 몇 가지 예들에서, 공간적 속성들, 위치(position), 및/또는 하나 이상의 문서 엘리먼트들의 위치(location)에 관한 데이터와 같은, 바탕 문서와 연관되고 바탕 문서와 관련하여 저장된 데이터 및/또는 특성들은 주석의 위치, 모양 및/또는 다른 특성들을 제어하는데 사용될 수 있다. As discussed above, embodiments of the present invention, including the use of context nodes and hierarchical data structures, can be used to provide "smart" electronic ink annotations to electronic documents. As noted above, annotating electronic documents is one of the preferred and advantageous methods of using pen-type computing systems. However, to be particularly useful and effective, annotations made with electronic ink on documents on pen-input computing systems, characters associated with various elements in a base document, for example, such as margin changes, display size changes, When changing fonts, adding information, deleting information, etc., the annotations must be flexible enough so that the position and / or other features of the annotations can be accurately changed based on changes to the annotated elements in the base document. . This may be accomplished, for example, by linking at least one context node associated with the annotation to one or more context nodes associated with the base document. In at least some examples, the data and / or characteristics associated with the base document and stored in relation to the base document, such as data relating to spatial attributes, position, and / or location of one or more document elements, It can be used to control the position, shape and / or other properties of the annotation.
도 7a 및 도 7b는 전자 잉크를 통해 전자 문서에 적용될 수 있는 주석의 일례를 도시한다. 도 7a에 도시된 바와 같이, 전자 문서(750)는 문장 "Today the sky is green"을 포함한다. 펜입력식 컴퓨팅 시스템의 사용자가 단어 "green"에 밑주을 긋기 위해 전자 잉크를 사용하여 문서(750)에 주석을 달았다 (밑줄 주석은 참조 번호 "752"로 도시되었다). 도 7b는 이러한 복합 전자 문서(750)에 대응하는 예시적인 계층적 데이터 구조(760)를 도시한다(전체 전자 문서(750)는 데이터 구조 내에서 루트 노드(762)로 표현된다). 일단 완벽히 파싱되면, 데이터 구조(760)는 전반적인 문서 구조를 보여주는 콘텍스트 노드들을 포함할 것이다. 더욱 구체적으로, 전자 문서(750)가 하나의 단락(단락 노드(764))을 포함하고, 그 단락은 라인(라인 노드(766))을 포함하고, 그 라인은 다섯 개의 단어(단어들 "Today", "the", "sky", "is" 및 "green" 각각에 대한 텍스트 단어 노드(768a 내지 768e))를 포함함을 나타내기 위해서, 전자 문서(750) 내의 타이프라이팅된 텍스트에 관한 정보는 분석되고 함께 연관될 것이다. 부가적으로, 파서는, 전자 문서(750) 내에서 주석(752)에 관련된 데이터의 존재를 발견할 것이며, 이 데이터를 전자 잉크 그림(잉크 그림 노드(770))로 분류할 것이다. 부가적으로, 바탕 문서(750)에서 타이프라이팅된 텍스트에 대한 잉크 그림 스트록(들)의 위치 및 존재 지점에 기초하여, 파서는 그 주석을 "밑줄" 주석으로 인식하여 분류할 것이며, 밑줄 노드(772)를 생성할 것이다. 부가적으로, 파서는, 하나 이상의 스트록 리프 노드(774)에 밑줄 주석의 실제 잉크 스트록(들)에 대응하는 모든 스트록 데이터를 저장할 것이다 (선택적으로, 스트록 데이터는 또 다른 적절한 노드 또는 밑줄 노드(772)의 속성으로서 저장될 수 있다). 7A and 7B show an example of annotation that can be applied to an electronic document through electronic ink. As shown in FIG. 7A, the
부가적으로, 개별 단어 "green"이 전자 문서(750)에 등장할 때마다 전자 잉크 밑줄 스트록(752)을 개별 단어 "green"과 함께 유지하기 위해서 (예를 들어, 그 단어가 어떤 이유로 이동하는 경우를 위해), 도 7b에 화살표(776)로 도시된 바와 같이, 밑줄 콘텍스트 노드(772)(예를 들어, 본 링크 예시에서, "소스" 콘텍스트 노드)가 단어 "green"에 대한 텍스트 단어 노드(768e)에 링크됨을 나타내도록 데이터가 본 예시의 데이터 구조(760)에 저장되며, 화살표(778)로 표시한 바와 같이 텍스트 단어 노드(768e)가 밑줄 노드(772)에 링크되었음을 나타내도록 데이터가 저장된다. 이러한 링크는 밑줄 노드(772)를 텍스트 단어 노드(768e)에 "고정(anchor)"시킨다(예를 들어, "코정" 타입 링크). 따라서, 어떤 이유로든, 텍스트 단어 콘텍스트 노드(768e)에 저장된 데이터가 전자 문서에서 단어 "green"의 위치가 변경되었음을 나타내는 경우, 링크들(776, 778)은, 가능하다면, 변경된 전자 문서상에서의 텍스트 단어 콘텍스트 노드(768e)의 공간적 위치 및/또는 존재 장소로 밑줄 주석의 렌더링을 이동시켜야 한다는 점을 응용 프로그램이 검지할 수 있도록 한다. 또 다른 예로서, 콘텍스트 노드(768e)에 저장된 "바운딩 박스" 데이터, 단어 폭 데이터, 또는 기타 데이터가, 어떤 이유로 인하여(예를 들어, 폰트 크기 변경, 문자들의 추가, 문자들의 삭제, 문자들의 변경 등에 기인하여) 단어의 크기 또는 위치가 변화되었음을 나타내는 경우, 응용 프로그램은, 가능하다면, (예컨대, 길이가 늘어났거나 줄어든) 렌더링된 밑줄의 크기를 수정하여 콘텍스트 노드(768e)로 표시된 텍스트 단어와 연관된 새로운 크기에 대응하도록 할 수 있다. 적용가능한 경우, 본 발명의 적어도 일부 예시들에 따른 시스템 및 방법은 주석의 스트록(들)을 쪼개서 하나 이상의 라인에 나타나도록 할 수 있으며, (예를 들어, 단어 추가, 하이픈 넣기(hyphenation) 등으로 인해) 바탕 문서가 변동되는 경우 주석을 단 문서 엘리먼트가 복수의 라인에 나타나도록 해야 한다. 또한, 본 발명으로부터 벗어나지 않는 범위 내에서, 노드들 간의 임의의 적절한 링크 배열 또는 링크를 나타내는 임의의 적절한 데이터가 사용될 수 있다. Additionally, each time an individual word "green" appears in the
도 8a 및 도 8b는 또 다른 예시적인 주석을 도시한다. 이 예시에서는, 도 8a에 도시된 바와 같이, 전자 문서(800)는 문장 "Today the sky is green"을 포함하고, 펜입력식 컴퓨팅 시스템의 사용자는 단어 "green"에 줄을 그어 삭제(스트라이크아웃 표시)하기 위해 전자 잉크를 사용하여 문서(800)에 주석을 달았다(스트라이크아웃(strike-out) 표시는 참조번호(802)로 도시됨). 도 8b는 완전히 파싱되어 복합 전자 문서(800)에 대응하는 예시적인 계층적 데이터 구조(810)를 도시한다 (도 8b의 많은 특정 콘텍스트 노드들이 도 7b에서의 콘텍스트 노드에 대응되므로, 도 8b에서는 도 7b에서와 동일한 참조 번호들이 사용되었으며, 중복되는 설명은 생략한다). 이 경우, 파서는 주석(802)과 관련된 전자 문서(800) 내의 데이터의 존재를 파악할 것이고, 이 데이터를 전자 잉크 그림(잉크 그림 노드(812))으로 분류할 것이다. 부가적으로, 문서(800)에서의 바탕 타이프라이팅된 텍스트의 콘텐트에 대한 잉크 그림 스트록(들)의 위치 및 존재 장소에 기초하여 (예를 들어, 스트라이크아웃 표시는 텍스트 단어를 수평으로 가로지른다), 파서는 주석을 "스트라이크아웃(strike-out)" 주석으로 인식하여 분류하고 스트라이크아웃 노드(814)를 생성할 것이다. 부가적으로, 파서는 스트라이크아웃 주석의 실제 잉크 스트록(들)에 대응하는 모든 스트록 데이터를 (또는 대안으로, 스트라이크아웃 노드(814) 또는 또다른 적절한 노드의 속성으로서) 하나 이상의 스트록 리프 노드들(816)에 저장할 것이다. 8A and 8B show another exemplary annotation. In this example, as shown in FIG. 8A, the
도 7a 및 도 7b과 관련하여 설명한 밑줄 주석의 경우와 마찬가지로, 개별 단어 "green"가 어떤 이유로 이동하는 경우, 스트라이크아웃 주석은 개별 단어 "green"과 함께 유지될 수 있다. 이는, 예를 들어, 도 8b에서 화살표(818)로 도시된 바와 같이, 스트라이크아웃 콘텍스트 노드(814)(본 예시에서 "소스" 콘텍스트 노드)가 단어 "green"에 대한 텍스트 단어 노드(768e)(본 예에서 "목적지" 콘텍스트 노드)에 링크됨을 나타내도록 데이터를 데이터 구조(810)에 저장함으로써, 또한 화살표(820)로 표시된 바와 같이 텍스트 단어 노드(768e)가 스트라이크아웃 노드(814)에 링크됨을 나타내도록 데이터를 데이터 구조에 저장함으로써 달성될 수 있다. 본 예시에서의 링크 타입은 스트라이크아웃 노드(814)를 텍스트 단어 노드(768e)에 고정하는 "수평으로 가로지르기(horizontally spanning)" 링크 타입이다. 따라서, 단어 "green"(또는 노드(768e)와 연관된 다른 단어(들))의 위치 및/또는 크기를 나타내는 텍스트 단어 콘텍스트 노드(768e)에 저장된 데이터가 어떤 이유로 문서(800)에서 변경되었다면, 링크들(818, 820)은, 가능하다면 스트라이크아웃의 렌더링을 조정하고 및/또는 (가능하다면) 변경된 전자 문서에서 콘텍스트 노드(768e)에 저장된 단어의 크기, 및/또는 공간적 위치, 존재 장소에 대한 크기를 조정해야함을 응용 프로그램이 검지할 수 있도록 할 것이다. 다시, 본 발명으로부터 벗어나지 않는 범위 내에서 노드들 간의 임의의 적절한 링크 배열 또는 링크를 나타내는 임의의 적절한 데이터가 사용될 수 있다. As in the case of the underline comment described in connection with FIGS. 7A and 7B, when the individual word "green" moves for some reason, the strikeout annotation may be retained with the individual word "green". This is illustrated, for example, by the strikeout context node 814 (in this example, the "source" context node), as shown by the
도 9a 및 도 9b는 또 다른 예시적인 주석의 타입을 도시하며, 주석들이 하나 이상의 텍스트 단어와 연관 또는 링크되는 것을 더 도시한다. 도 9a 및 도 9b에 도시된 예시에서, 전자 문서(900)는 문장 "Today the sky is green"을 포함하지만, 이 경우에는, 펜입력식 컴퓨팅 시스템의 사용자가 단어들 "is green"에 써클을 표시하기 위해 전자 잉크를 사용하여 문서(900)에 주석을 표시했다(동그라미 또는 "콘테이너" 타입의 주석은 도 9a에서 참조번호 902로 도시된다). 도 9b는 완전히 파싱되어 복합 전자 문서(900)에 대응하는 예시적인 계층적 데이터 구조(910)를 도시한다(도 9b의 많은 특정 콘텍스트 노드들은 도 7b에서의 콘텍스트 노드들에 대응하므로, 도 9b에서는 7b에 존재하는 것들과 동일한 참조 번호들이 사용되었으며, 이에 대한 중복되는 설명은 생략한다). 이 경우, 파서는 주석(902)과 관련된 전자 문서(900) 내의 데이터의 존재를 파악할 것이고, 이 데이터를 전자 잉크 그림(잉크 그림 노드(912))으로 분류할 것이다. 부가적으로, 문서(900) 내의 바탕 타이프라이팅된 텍스트의 콘텐트에 대한 잉크 그림 스트록(들)의 존재 장소 및 위치에 기초하여, 파서는 주석을 "콘테이너(container)" 주석으로 인식하여 분류하고 데이터 구조(910)에 콘테이너 노드(914)를 생성할 것이다. 부가적으로, 파서는 하나 이상의 스트록 리프 노드들(916)에 콘테이너 주석의 실제 잉크 스트록(들)에 대응하는 모든 스트록 데이터를(또는 대안으로, 잉크 콘테이너 노드 또는 또 다른 적절한 노드의 속성으로서) 저장할 것이다. 9A and 9B illustrate another exemplary type of annotation, further illustrating that the annotations are associated or linked with one or more text words. In the example shown in FIGS. 9A and 9B, the
도 7a 내지 도 8b과 관련하여 설명한 밑줄 및 스트라이크아웃 주석들의 경우와 마찬가지로, 단어들 "is green"이 어떤 이유로 이동하는 경우에도, 콘테이너 주석은 단어 "is green"와 함께 유지될 수 있다. 이는, 예를 들어, 도 9b에 화살표(918a)로 도시된 바와 같이, 잉크 콘테이너 콘텍스트 노드(914)(본 예에서 "소스" 콘텍스트 노드)가 단어들 "is green"에 대한 텍스트 단어 노드들(768d, 768e)(본 예에서 "목적지" 콘텍스트 노드) 각각에 링크됨을 나타내도록 데이터를 데이터 구조(910)에 저장함으로써 달성될 수 있다. 부가적으로, 도 9b에 화살표(920a, 920b)로 표시된 바와 같이, 텍스트 단어 노드들(768d, 768e)이 콘테이너 노드(914)에 링크됨을 나타내도록 데이터가 데이터 구조(910)에 저장할 수 있다. 이 링크는 "콘테인먼트(containment)" 타입의 링크이다. 따라서, 텍스트 단어 콘텍스트 노드들(768d, 768e)에 저장된 데이터가, 단어들 "is green"(또는 이러한 콘텍스트 노드들과 연관된 다른 단어(들))의 위치 및/또는 크기가 어떤 이유로 전자 문서(900)에서 변경되었음을 나타내는 경우, 링크들(918a, 918b, 920a, 920b)은, 가능하다면, 변경된 전자 문서에서 콘텍스트 노드들(768d, 768e)에 저장된 단어들의 크기, 공간적 위치, 및/또는 존재 장소에 대한 그 크기 및/또는 콘테이너 주석의 렌더링을 조정해야 함을 응용 프로그램이 검지할 수 있도록 할 것이다. 부가적으로, 사용자가 단어 "is"와 단어 "green" 사이에 단어들을 추가하거나 단어들 또는 문자들이 임의의 방식으로 제거 또는 변경되는 경우, 응용 프로그램은 이러한 변경들을 수용하기 위해 콘테이너 주석의 크기 및/또는 위치를 수정할 수 있다. 본 발명으로부터 벗어나지 않는 범위 내에서, 다른 링크 배치들 또는 링크를 나타내는 데이터가 사용될 수 있다.As with the underline and strikeout annotations described in connection with FIGS. 7A-8B, container annotations can be retained with the word "is green" even if the words "is green" move for some reason. This means, for example, that the ink container context node 914 (in this example a "source" context node) is the text word nodes for the words "is green" (as shown by
도 10a 및 도 10b는 일반적으로 사용되는 또 다른 타입의 주석, 특히 "여백 코멘트(margin comment)" 타입의 주석을 도시한다. 본 예시에서, 사용자는, 도 10a에 도시된 바와 같이, 문장 "Today the sky is green"을 포함하는 전자 문서(1000)에 대해 "it's not green!"을 기재하는 전자 잉크 여백 코멘트(1002)로 주석을 표시했다. 명백하게, 도 10b에 도시된 바와 같이, 이 예시에서는 텍스트가 (도 7a, 도 8a, 도 9a에서 하나의 라인으로 존재하는 것과는 달리) 전자 문서(1000)에서 두 개의 라인으로 존재하므로, 타이프라이팅된 텍스트와 연관된 데이터 구조(1010)는 변경되었다. 따라서, 데이터 구조(1010)는 두 개의 라인 노드(1012, 1014)를 가지며, 제1 라인 노드(1012)는 (단어들 "Today" 및 "the"와 연관된) 텍스트 단어 노드(768a, 768b)를 포함하고, 제2 라인 노드(1014)는 (단어들 "sky", "is" 및 "green"과 연관된) 텍스트 단어 노드(768c, 768d, 768e)를 포함한다. 10A and 10B show another type of comment that is commonly used, especially the comment of the "margin comment" type. In this example, the user is directed to an electronic
일단 복합 전자 문서(1000)가 완전히 파싱되면, 파서는 주석(1002)이 전자 잉크 텍스트를 포함하는 것으로 인식할 것이며, 이 주석을 (예를 들어, 문서(1000)의 여백의 위치에 기인하여) "여백 코멘트" 타입의 주석으로 분류할 것이다. 따라서, 파서는 여백 코멘트에 대해 적절한 콘텍스트 노드(1016)를 생성할 것이다. 이러한 여백 코멘트(1002)는 전자 잉크 텍스트만을 포함하므로, 파서는 전자 잉크의 계층적 구조와 연관된 단락 노드(1018), 두 개의 라인 노드(1020, 1022), 및 적절한 잉크 단어 노드들 (1024, 1026, 1028) 및 스트록 노드(1030, 1032, 1034)를 더 생성한다(상술한 바와 같이, 선택적으로 및 대안으로, 잉크 스트록 데이터는 잉크 단어 노드(들)의 속성들로서 저장될 수 있고, 및/또는 라인 노드들은 데이터 구조(1010)에서 생략될 수 있다). Once the composite
도 10a 및 도 10b의 예시에는 다른 링크 관계가 도시된다. 구체적으로, 이 예시에서는, 페이지 여백 및 바탕 문서의 콘텐트에 대한 여백 코멘트(1002)의 위치 및 방향에 기초하여, 파서는, 도 10b에 화살표(1036)로 도시된 바와 같이, 여백 코멘트(1002)와 연관된 단락 노드(1018)(본 예시에서 "소스" 콘텍스트 노드)가 타이프라이팅된 텍스트와 연관된 단락 노드(764)(본 예에서 "목적지" 콘텍스트 노드)에 링크됨을 나타내도록 데이터를 데이터 구조(1010)에 저장한다. 부가적으로, 파서는, 화살표(1038)로 도시된 바와 같이, 타이프라이팅된 텍스트와 연관된 단락 노드(764)가 여백 코멘트(1002)의 단락 노드(1018)에 의해 링크됨을 나타내도록 데이터를 데이터 구조(1010)에 저장할 것이다. 이는 잉크 단락이 텍스트 단락에 고정되는(anchored) "고정된" 타입의 링크 배치이다. 이러한 방식으로, 타이프라이팅된 단락이 전자 문서(1000) 내에서 이동할 때마다, 선택적으로, 추가적인 라인 및/또는 단어가 단락에 추가되는 경우, 및/또는 라인 및/또는 단어가 단락에서 제거되는 경우, 및/또는 기타 변경들이 단락 내 또는 전자 문서 (1000) 내에 가해지는 경우일지라도, 링크된 타이프라이팅된 단락 근방의 여백에 여백 코멘트(1002)가 남아 있도록 여백 코멘트(1002)를 이동시켜야 한다는 점을 응용 프로그램이 검지하는 것이 링크들(1036, 1038)에 의해 허용된다. 물론, 본 발명으로부터 벗어나지 않는 범위 내에서, 다른 링크 배치들 또는 그 링크들과 연관된 데이터가 저장될 수 있다. 예를 들어, 여백 코멘트 노드(1016)는 제1 텍스트 단어 노드(768a)와 같은 타이프라이팅된 단락의 하나 이상의 개별 텍스트 단어 노드에 링크될 수 있다. Another link relationship is shown in the example of FIGS. 10A and 10B. Specifically, in this example, based on the position and orientation of the
도 11a 및 도 11b는 본 발명의 적어도 일부 예시들에 따른 방법 및 시스템에 의해 인식가능한 주석의 보다 다소 복잡한 예시를 도시한다. 도시된 예에서, 전자 문서(1100)는 문구 "Today the sky is green"을 포함하지만, 이 경우에, 사용자는 서로 다른 주석 타입들의 조합을 사용하여 전자 문서(1100)에 주석을 표시했다. 구체적으로, 사용자는 단어 "green"을 둘러싸는 콘테이너 타입 주석(1102), 전자 잉크 단어 "Blue!"를 포함하는 여백 코멘트 타입 주석(1104) 및 콘테이너 타입 주석(1102)으로부터 마진 코멘트 주석(1104)을 포인트하는 커넥터 타입 주석(1106)(본 예시에서 화살표)을 도시하였다.11A and 11B show more or less complex illustrations of annotations recognizable by a method and system in accordance with at least some examples of the present invention. In the example shown, the
바탕 문서, 타이프라이팅된 문서 텍스트 및 문서의 여백에 대한 여러 주석 타입들의 상대적인 위치 및 공간적 방향으로 인해, 본 발명의 적어도 일부 예시들에 따른 파서 시스템은, 개괄적으로 상술한 바와 같이, 여러 주석 타입들, 그들의 콘텐트, 서로에 대한 관계 및 전자 문서 타이프라이팅된 텍스트에 대한 관계를 인식할 것이다. 파서에 의해 생성된 전자 문서(1100)에 대한 예시적인 계층적 데이터 구조(1110)가 도 11b에 도시된다. 타이프라이팅된 텍스트에 대한 계층적 구조은 도 7b에 도시된 바와 동일하기 때문에, 도 11b에서는 동일한 참조번호들이 사용되며 이에 대한 상세한 설명은 생략한다. 또한, 도 11b에 도시된 바와 같이, 잉크 콘테이너 타입 주석(1102)에 대한 노드 체인(1112)은 도 9b에 도시된 것과 유사하며, 여백 코멘트 타입 주석(1104)에 대한 노드 체인(1114)은 도 10b에 도시된 것과 유사하다. 따라서, 이러한 노드 체인들에 대한 상세한 설명은 생략한다. Due to the relative position and spatial orientation of the various document types relative to the base document, typed document text, and the margin of the document, the parser system according to at least some examples of the present invention, as outlined above, , Their content, their relationship to each other, and their electronic document typed text. An example
바탕 텍스트의 적절한 부분 및 공간적 위치와 주석들의 공간적 위치를 함께 유지하기 위해서, 주석 노드들 간의 여러 링크들 및 적절한 텍스트 노드를 갖는 여러 링크들이 파서에 의해 제공되어 데이터 구조(1110)에 저장된다. 도시된 예시에서, 도 11b에 화살표(1118)로 도시된 바와 같이, 잉크 콘테이너 노드(1116)(여기서, "소스" 콘텍스트 노드)는 자신이 포함하고 있는 단어의 텍스트 단어 노드(768e)에 링크된다. 유사하게, 도 11b에 화살표(1120)로 표시된 바와 같이, 텍스트 단어 노드(768e)가 잉크 콘테이너 노드(1116)에 링크됨을 나타내도록 데이터가 데이터 구조(1110)에 저장된다. 이것은 "콘테이너" 타입 링크 배열이다. In order to maintain the appropriate portion of the base text and the spatial position of the annotations together, several links between annotation nodes and several links with appropriate text nodes are provided by the parser and stored in the
상술한 바와 같이, 본 발명의 이러한 예시에 따른 파서는, 전자 문서(1100)가 잉크 커넥터에 대응하는 잉크 그림(1106)(즉, 본 예에서 콘테이너 주석(1102)과 여백 코멘트 주석(1104) 사이의 화살표)을 포함함을 인식한다. 이러한 커넥터 주석(1106)은, 잉크 그림(본 예시에서 잉크 그림 노드(1122)로 표시됨)으로서 데이터 구조(1110)에 저장되며, 잉크 그림은 주석 타입을 나타내는 노드(본 예시에서, 잉크 커넥터 노드(1124))를 포함하며, 주석 타입을 나타내는 노드는 커넥터를 구성하는 스트록 또는 스트록들을 (예를 들어, 스트록 노드(들)(1126), 또는 다른 적절한 노드 또는 잉크 커넥터 노드(1124)와 연관된 속성으로) 나타내는 데이터를 더 포함한다. 또한, 잉크 커넥터 노드(1124)(본 예에서 "목적지" 노드)가 잉크 커넥터 노드(1116)(본 예에서 "소스" 노드)로부터 포인트됨(pointed)을 나타내도록 정보가 데이터 구조(1110)에 저장된다. 이러한 링크("포인트 프롬(points from)" 타입의 링크)는 도 11b에서 화살표(1128)로 표시된다. 부가적으로, 데이터 구조(1110)는 잉크 커넥터 노드(1124)(본 예에서 "소스" 콘텍스트 노드)가 잉크 단어 노드(1132)(본 예에서 "목적지" 콘텍스트 노드)에 링크됨을 나타내도록 데이터를 더 포함한다. 이러한 링크("포인트 투" 타입의 링크)는 도 11b에 화살표(1134)로 표시된다. 대안으로, 잉크 커넥터 노드(1124)는, 본 발명으로부터 벗어나지 않는 범위 내에서, 잉크 라인 노드, 잉크 단락 노드, 또는 노드 체인(1114)의 여백 코멘트 노드 중 임의의 것으로 링크될 수 있다. 상술한 특정 링크들을 이용하여, 데이터 구조(1110)는 도 11a에 도시된 바와 같이 잉크 커넥터(1106)가 써클 그림(1102)으로부터 포인트되고(point from), 잉크 단어를 포인트함(point to)을 나타낸다. 이러한 여러 링크에 의해 응용 프로그램은 바탕 문서 및 여러 주석 엘리먼트들 간의 관계를 검출하도록 허용된다. 이어서, 가능할 경우, 응용 프로그램은 바탕 문서에서의 이동에 적절하게 대응하기 위해 주석 엘리먼트들을 이동시킬 수 있다. 본 발명으로부터 벗어나지 않는 범위 내에서, 임의의 적절한 링크 배열 또는 링크와 연관된 데이터가 사용될 수 있다. As mentioned above, the parser according to this example of the present invention is characterized in that the
도 12a 및 도 12b는 일반적으로 사용되는 또 다른 예시적인 주석 특징을 도시한다. 도 12a에 도시된 바와 같이, 이 예시에서 전자 문서(1200)는 문장 "Today the sky is green"을 포함하지만, 이 경우에는, 펜 입력식 컴퓨팅 시스템의 사용자가 문장의 첫 번째 단어 근처에 별(star) 또는 별표(asterisk)를 표시하기 위해 전자 잉크를 사용하여 문서(1200)에 주석을 표시했다(주석은 참조번호(1202)로 도시된다). 도 12b는, 일단 완전히 파싱된, 복합 전자 문서(1200)에 대응하는 예시적인 계층적 데이터 구조(1210)를 도시한다(도 12b의 많은 콘텍스트 노드들이 도 7b에서의 콘텍스트 노드들에 대응하므로, 도 12b에서는 도 7b에서와 동일한 참조번호들이 사용되며, 이에 대한 중복되는 설명은 생략한다). 이 경우에, 파서는 주석에 대한 전자 잉크 데이터의 존재를 인식할 것이며, 이러한 데이터를 잉크 그림(잉크 그림 노드(1212))으로서 분류할 것이다. 부가적으로, 바탕 문서(1200)의 콘텐트에 대한 주석(1202)의 잉크 스트록(들)의 위치 및 지점(예를 들어, 타이프라이팅된 텍스트의 라인과 나란함)뿐만 아니라 잉크 스트록 모양에 기초하여, 파서는 주석을 "별표", "불릿" 또는 고정 타입의 주석으로서 인식할 것이며, 별표 노드(1214)를 생성할 것이다. 부가적으로, 파서는 별표의 실제 잉크 스트록(들)에 대응하는 모든 스트록 데이터를 하나 이상의 스트록 리프 노드들(1216) 또는 (몇 가지 기타 노드 또는) 그 별표 노드의 속성으로서 저장할 것이다. 12A and 12B show another exemplary annotation feature that is generally used. As shown in FIG. 12A, the
이러한 예시에서는, 타이프라이팅된 텍스트가 어떤 이유로 이동하는 경우, 별표 타입의 주석(1202)은, 타이프라이팅된 텍스트의 전체 라인이 전자 문서(1200)에 나타날 때마다 그 라인과 함께 유지될 수 있다. 이는, 예를 들어, 도 12b에 화살표(1218)로 도시된 바와 같이 별표 콘텍스트 노드(1214)(본 예에서 "소스" 콘텍스트 노드)가 텍스트 라인 노드(766)("본 예에서 "목적지" 콘텍스트 노드)에 링크됨을 나타도록 데이터를 데이터 구조(1210) 내에 데이터를 저장함으로써, 또한 화살표(1220)로 표시된 바와 같이, 텍스트 라인 노드(766)가 별표 노드(1214)에 의해 링크됨을 나타내도록 데이터를 저장함으로써 달성될 수 있다. 따라서, 텍스트 라인 콘텍스트 노드(766)에 저장된 데이터가, 전자 문서(1200) 상에서 라인의 지점 또는 위치가 어떤 이유에서 변경되었음을 나타내는 경우, 가능하다면, 변경된 전자 문서에서의 콘텍스트 노드(766)와 연관된 데이터의 렌더링에 대응하는 지점 및/또는 공간적 위치로 별표의 렌더링을 조정해야 한다는 점을 응용 프로그램이 검출하는 것이 링크들(1218, 1220)에 의해 허용될 것이다. 대안으로, 필요에 따라, 파서는 본 발명으로부터 벗어나지 않는 범위 내에서 별표 노드(1214)(또는 별표 주석과 연관된 다른 적절한 노드)와 단락 노드(764) 또는 개별 단어 노드들 중 하나(예를 들어, 단어 노드(768a))를 묶을 수 있다. 또한, 필요에 따라, 잉크 그림 노드(1212)는 라인 노드(766)에 고정된 소스 노드(또는 본 예에서 타이프라이팅된 텍스트에 대응하는 다른 적절한 노드)가 될 수 있다. 본 발명으로부터 벗어나지 않는 범위 내에서, 적절한 링크 배치 또는 링크를 나타내는 데이터가 사용될 수 있다. In this example, if the typed text moves for some reason, an
도 13a 및 도 13b에서 링크된 주석의 "플로우차트" 타입이 도시된다. 본 예시에서, 전자 문서(1300)는 플로우차트를 포함하며, 플로우차트는 전체적으로 큰 전자 문서 내의 주석의 일부분으로서 선택적으로 포함될 수 있다. 도 13a에 도시된 바와 같이, 주석 또는 플로우차트는 제1 콘테이너에 의해 둘러싸인 또는 에워싸인 제1 잉크 엔트리(1302)(본 예에서 문자 "A") 및 제2 콘테이너 주석(1308)에 의해 둘러싸인 또는 에워싸인 제2 잉크 엔트리(1306)를 포함한다. 부가적으로, 커넥터 주석(1310)(본 예시에서 화살표)은 제1 콘테이너 주석(1304)으로부터 제2 콘테이너 주석(1308)으로 연장된다. 그러나, 문서 엘리먼트들 간의 관계들은 링크 이외의 대체 가능한 방식들로 표시될 수 있음을 이해해야 한다. 예를 들어, 이러한 관계들은, 예컨대 연관된 문서 엘리먼트들을 포함하는 콘테이너 노드들의 사용을 통해 데이터 트리 자체의 구조로 표시될 수 있다. The “flowchart” type of annotation linked in FIGS. 13A and 13B is shown. In this example, the
도 13b는, 일단 완전히 파싱되면 도 13a의 전자 문서(1300)의 플로우차트 주석과 연관될 수 있는 예시적인 데이터 구조(1320)를 도시한다. 이러한 예시적인 데이터 구조(1320)에서, 전자 문서(1300)의 모든 부분 또는 일부분에 대응할 수 있는 루트 노드(1322)가 부모 노드로서 플로우차트 타입의 주석 내의 노드들에 제공된다. 특정 주석 구조들에 관한 제1 콘텍스트 노드는 콘테이너(1304)에 대응하는 잉크 그림 노드(1324)이다. 잉크 그림 노드(1324)에는 잉크 콘테이너 노드(1326)가 자식 노드로서 제공되며, 잉크 콘테이너 주석(1304)과 연관된 특정 스트록(들)는 리프 노드(들)(1328)에 저장되거나, 잉크 콘테이너 노드(1326)(또는 다른 노드)에 속성들로서 저장된다. FIG. 13B shows an
도 13a와 관련하여 상술한 바와 같이, 주석은 문자 "A"(1302)에 대응하는 전자 잉크 텍스트를 더 포함한다. 상술한 다른 전자 잉크 텍스트와 공통으로, 잉크 텍스트와 연관된 전자 잉크는 계층적 데이터 구조(1320)에 단락 노드(1330)로 저장되며, 단락노드(1330)는 라인 노드(1332)를 포함하며, 라인 노드(1332)는 잉크 단어 노드(1334)를 포함하며, 잉크 노드 단어(1334)는 잉크 텍스트 주석 내의 개별 스트록들 또는 그 스트록 데이터를 포함하는 속성에 대응하는 하나 이상의 리프 노드들(1336)을 선택적으로 포함한다. 데이터 구조(1320)에 저장되는 정보는, 도 13b에 화살표(1338)로 도시되는 바와 같이, 콘테이너 주석(1304)의 잉크 콘테이너 노드(1326)("소스" 노드)가 문자 "A"의 단락 노드(1330)("목적지" 콘텍스트 노드)에 링크됨을 나타낸다. 대안으로, 필요에 따라, 잉크 단어 노드(1334) 또는 라인 노드(1332)는 목적지 노드로서 역할을 할 수 있다. 부가적으로, 데이터 구조(1320)에 저장된 정보는, 도 13b에 화살표(1340)로 표시된 바와 같이, 단락 노드(1330)가 잉크 콘테이너 노드(1326)에 의해 링크됨을 나타낸다. 본 예시에서는, 주석의 잉크 콘테이너(1308) 및 문자 "B"(1306)에 대한 데이터 구조와 잉크 콘테이너(1304) 및 문자 "A"(1302)에 대한 데이터 구조는, 동일한 일반 링크 구조를 포함하는 동일한 일반 구조를 공유하기 때문에, 문자 "B"(1306) 및 연관된 콘테이너(1308)에 대한 데이터 구조(1320)의 여러 노드는 문자 "A" 및 연관된 콘테이너와 동일한 참조번호들을 공유하지만, 문자 "b"는 도 13b에서의 잉크 콘테이너(1308) 및 잉크 단어(1306)에 대한 참조번호들을 따른다. 물론, 본 발명으로부터 벗어나지 않는 범위 내에서, 여러 계층적 배열 및 링크 구조 또는 링크 데이터는 앞서 구체적으로 설명한 것과는 다를 수 있다. As described above with respect to FIG. 13A, the annotation further includes electronic ink text corresponding to the letter “A” 1302. In common with the other electronic ink text described above, the electronic ink associated with the ink text is stored as a
주석은, 데이터 구조(1320)에서 잉크 그림 노드(1342)로 나타낸 커넥터 주석(1310)을 더 포함한다. 도 11b와 관련하여 상술한 바와 같이, 잉크 커넥터 주석을 나타내는 잉크 그림에 대한 데이터 구조는, 잉크 커넥터 노드(1344)를 더 포함할 수 있고, 잉크 커넥터 구조(1344)는 하나 이상의 속성들 또는 리프 노드(들)(1346)를 더 포함할 수 있고, 리프 노드(들)(1346)는 커넥터(1310)를 구성하는 특정 스트록(들)과 연관된 데이터를 포함한다. 본 예시의 주석 데이터 구조를 완성하기 위해, 잉크 커넥터 주석(1310)(소스 노드)과 연관된 데이터는 두 개의 콘테이너 주석들(1304, 1308)(목적지 노드들)과 연관된 데이터에 링크된다. 구체적으로, 도 13b의 예에 도시된 바와 같이, 잉크 콘테이너 노드(1326)가 잉크 커넥터 노드(1344)에 링크됨을 "포인트 프롬" 주석 타입으로서 나타내도록(화살표(1348)로 표시됨), 정보를데이터 구조(1320)에 저장된다. 부가적으로, 잉크 커넥터 노드(1344)가 잉크 콘테이너 노드(1326b)에 링크됨을 "포인트 투" 주석 타입으로서 나타도록(화살표(1352)로 표시됨), 정보를 데이터 구조(1320)에 저장된다. 이러한 방식으로, 링크들에 관해 저장된 데이터는, 도 13a에 도시된 바와 같이, 커넥터(1310)가 써클 콘테이너(1304)로부터 써클 콘테이너(1308)로 포인트함을 나타낸다. 따라서, 여러 링크들의 존재하는 것에 의해, 전자 문서(1300) 내의 주석의 일부분의 이동 시 주석의 다른 부분들이 따라가게 되므로, 전자 문서(1300)가 몇가지 방식으로 변경할지라도 주석을 원래대로 유지하는 것이 가능하다. 물론, 이러한 전반적인 구조는, 본 발명으로부터 벗어나지 않는 범위 내에서, 전술한 일부 바탕 문서 엘리먼트에 링크되어 있을 수 있다.The annotation further includes a
유사하게, 주석은, 커넥터에 의해, 예를 들어 "switch these!"와 같은 문자(written) 코멘트에 연결된 두 개의 엔클로저(encloser)를 포함할 수 있다. 두 개의 엔클로저 사이에 단어들이 삽입되는 경우와 같이, 주석의 일 부분이 이동하면 그 부분은 주석의 다른 부분과 관계없이 이동될 것이 요구된다. 전자 잉크 주석들을 나타내는 콘텍스트 노드들과 비-잉크(non-ink) 콘텐트를 나타내는 노드들 간의 링크들은, 주석의 조각들을 재위치시키고 위치지정 동작이 완료되면 다시 함께 묶기 위해 소프트웨어 애플리케이션에 의해 사용될 수 있다. Similarly, a comment may include two enclosures connected by a connector to a written comment such as, for example, "switch these!". If a part of a comment is moved, such as when words are inserted between two enclosures, that part is required to be moved independently of the other parts of the comment. Links between context nodes representing electronic ink annotations and nodes representing non-ink content can be used by a software application to reposition pieces of annotation and tie them back together when the positioning operation is complete. .
도 14a 및 도 14b는 플로우차트 타입의 주석 또는 잉크 구조를 갖는 전자 문서(1400)의 또 다른 예시를 도시한다. 이 예시에서, 문자 "A"와 "B" 간의 전자 잉크 커넥터(1408) 및 문자 "A"와 "C" 간의 전자 잉크 커넥터(1410)에 의해, 문자 "A"(1402)에 대한 전자 잉크 주석이 문자 "B"(1404) 및 문자 "C"(1406)에 대한 전자 잉크 주석에 각각 연결된다.14A and 14B show another example of an
도 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) 구조를 가지므로, 반복되는 기재는 생략한다. 물론, 본 발명으로부터 벗어나지 않는 범위 내에서 상술한 가능한 변형들을 포함하는 특정 데이터 구조들의 변형들이 사용될 수 있다.In FIG. 14B, an
이러한 예시적인 주석 데이터 구조를 완성하기 위해서, 잉크 커넥터 주석(1408)과 연관된 데이터는 연결한 두 개의 잉크 단어 주석(1402, 1404)과 연관된 데이터에 링크되고, 잉크 커넥터 주석(1410)과 연관된 데이터는 연결하고 있는 두 개의 잉크 단어 주석들(1402, 1406)과 연관된 데이터에 링크된다. 구체적으로, 도 14b의 예에 도시된 바와 같이, 잉크 그림 노드(1432a)("소스" 노드)가 잉크 단어 노드들(1428a, 1428b)를 포인트함("point to")을 나타내도록 정보가 데이터 구조(1420)에 저장된다(각각 화살표(1438, 1440)로 표시됨). 유사하게, 잉크 그림 노드(1432b)("소스" 노드)가 잉크 단어 노드들(1428a, 1428c)를 포인트함(point to)을 나타내도록 정보가 데이터 구조(1420)에 저장된다(화살표(1442, 1444)로 각각 표시됨). 잉크 단어 노드들(1428a, 1428b, 1428c)은 "목적지" 노드로서 기능한다. 여러 링크에 의해서, 전자 문서(1400)의 주석의 일부가 이동하면 주석의 다른 부분들이 따라올 수 있으므로, 전자 문서(1400)가 어떠한 방식으로 변경될지라도 주석은 온전한 상태 또는 링크된 상태로 유지될 수 있다. 또한, 주석은 본 발명으로부터 벗어나지 않는 범위 내에서, 타이프라이팅된 텍스트, 그림, 이미지 등과 같은 전자 문서 내의 하나 이상의 다른 엘리먼트들과 링크될 수 있다. To complete this example annotation data structure, the data associated with the
도 15a 내지 도 15c는 전자 문서(1500)의 예시들, 및 복수의 행과 열을 갖는 테이블의 형태로 전자 잉크 주석을 포함하는 예시적인 데이터 구조들을 도시한다. 구체적으로, 도 15a의 예시에 도시된 바와 같이, 전자 문서(1500)는 두 개의 행 및 두 개의 열을 갖는 테이블(1502)(전체 4개의 셀로 구성됨)을 포함하고, 테이블의 각 셀은 전자 잉크 경계들로 구성되며 전자 잉크 텍스트 입력을 포함한다. 15A-15C show examples of
도 15b에는, 도 15a에 도시된 전자 잉크 테이블(1502)에 대한 파싱 완료 후의 예시적인 데이터 구조(1510)가 도시된다. 이 예시에서, 데이터 구조(1510)는 전자 문서(1500)의 전체 또는 일부에 대응할 수 있는 루트 노드(1512)를 포함한다. 루트 노드(1512) 아래에는, 테이블에 관한 관련 데이터가 테이블 노드(1514)에 저장된다. 이것은 예를 들어, 테이블 크기, 테이블 위치, 행의 수, 열의 수, 바운딩 박스 크기 등을 나타내는 데이터를 포함할 수 있다. 테이블 노드(1514) 아래에는, 분리된 행 노드들이 테이블의 각 행에 제공된다(본 예시에서는, 도 15b에 도시된 바와 같이 두 개의 행 노드(1516, 1518)가 제공된다). 이러한 각각의 예시적인 데이터 구조의 행 노드는 하나 이상의 셀 노드를 더 포함한다(도시된 예에서, 행 노드(1516)는 두 개의 셀 노드(1520, 1522)를 포함하고, 행 노드(1518)는 두 개의 셀 노드(1524, 1526)를 포함한다). 본 예시에서의 각 셀은 전자 잉크 텍스트 데이터를 포함하기 때문에, 본 예시에서의 계층적 데이터 구조(1510)의 나머지 부분은 상술한 친숙한 단락 노드, 라인 노드, 잉크 단어 노드 및 스트록 노드(들)를 갖는다. 물론, 테이블 셀은, 본 발명으로부터 벗어나지 않는 범위 내에서, 예를 들어, 타이프라이팅된 텍스트 데이터 및/또는 도 6i와 관련하여 상술한 여러 데이터 타입을 포함하는 전자 잉크 데이터에 부가하여, 및/또는 이를 대신하여 하나 이상의 기타 데이터 타입을 포함할 수 있다. 또 다른 대안으로서, 행 노드들(1516, 1518) 대신에, 데이터 구조는 열 노드를 포함할 수 있으며, 열 노드는, 예를 들어 도 15b에 도시된 바와 같은, 셀 노드, 단락 노드 등을 포함할 수 있다. 실제 테이블을 구성하는 잉크 스트록은, 예를 들어, 테이블 노드(1514)의 일 부분으로서(예를 들어, 그 노드와 연관된 속성들로서), 및/또는 (그 아래에 저장된 연관된 스트록들과 함께) 테이블 노드(1514)에 의존하는 잉크 그림 노드로서 저장되거나, 및/또는 데이터 구조(1510) 내의 임의의 다른 적절한 위치에 저장될 수 있다.15B shows an
도 15c에는, 테이블(1502)을 포함하는 전자 문서(1500)에 대한 대안의 예시적인 데이터 구조(1530)가 도시된다. 이 예시에서 루트 노드(1512), 테이블 노드(1514), 행 노드들(1516, 1518) 및 셀 노드들(1520, 1522, 1524, 1526)은 도 15b에 도시된 것과 동일하다. 다만, 도 15b에서는 전자 잉크 텍스트 데이터가 여러 셀 노드들(1520, 1522, 1524, 1526) 아래에 자식 노드들로서 포함되지만, 도 15c에서는 전자 잉크 텍스트 데이터의 단락 노드(1528a, 1528b, 1528c, 1528d)(또는 임의의 다른 적절한 또는 원하는 데이터 구조)가, 도 15c에 화살표(1530a, 1530b, 1530c, 1530d)로 도시된 바와 같이, 각각 셀 노드(1520, 1522, 1524, 1526)에 링크된다. 본 예시에서 셀 노드들은, 포함된 잉크 단어들에 대한 콘테이너 타입 "소스" 노드들로서 역할할 수 있으며, 잉크 단락, 라인 또는 단어 노드들은 "목적지" 콘텍스트 노드들로서 역할한다. 여러 링크들에 의해, 전자 문서(1500)에서 테이블 주석의 일부가 이동하면 주석의 다른 부분들이 따라갈 수 있으며, 그리하여 전자 문서(1500)가 몇몇 방식으로 변경될지라도 테이블 주석은 본래대로 또는 링크된 채로 유지될 있다. 테이블은 또한 바탕 전자 문서에 기초하여 존재하는 일부 다른 노드들에 링크될 수 있다. 다시, 대안으로서, 행 노드들(1516, 1518)은 본 발명으로부터 벗어나지 않는 범위 내에서, 여러 셀 노드를 포함하는 열 노드들로 대체될 수 있다. 또한, 실제 테이블을 구성하는 잉크 스트록들은, 본 발명으로부터 벗어나지 않는 범위 내에서, 임의의 위치, 예를 들어, 테이블 노드(1514)의 일부로서(예를 들어, 그 노드와 연관된 속성들로서) 및/또는 테이블 노드(1514)에 의존하는 잉크 그림 노드로서(그 아래에 저장된 연관된 스트록들로) 저장될 수 있거나, 및/또는 데이터 구조(1510) 내의 임의의 다른 적절한 위치에 저장될 수 있다.In FIG. 15C, an alternative
물론, 상술한 여러 가지 예시적인 주석 타입들과 관련된 다양한 도형들은, 주석 내에 포함될 수 있는 정보, 주석의 사용 및 가능한 주석 타입의 가능한 예시들일 뿐이다. 본 기술분야의 통상의 지식을 가진 자라면 많은 변형들 및 변경들이 본 발명으로부터 벗어나지 않는 범위 내에서 행해질 수 있음을 인식할 것이다. 예를 들어, 주석들은, 본 발명으로부터 벗어나지 않는 범위 내에서, (전자 잉크 텍스트, 그림, 이미지, 타이프라이팅된 텍스트 및 이미지 등과 같은) 서로 다른 많은 데이터 타입들을, 서로 다른 많은 조합들 및 교환들로 포함할 수 있다. Of course, the various figures associated with the various exemplary annotation types described above are merely examples of information that may be included in the annotation, the use of the annotation, and possible annotation types. Those skilled in the art will recognize that many variations and modifications can be made without departing from the invention. For example, annotations may be substituted for many different data types (such as electronic ink text, pictures, images, typed text and images, etc.), in many different combinations and exchanges, without departing from the invention. It may include.
부가적으로, 상술한 여러가지 데이터 구조들과 관련하여 여러가지 링크 스킴들을 설명한다. 이러한 링크 스킴들 또는 기술들은 여러 데이터 노드들이 함께 링크될 수 있도록 하는 방식의 예시일 뿐이다. 본 발명으로부터 벗어나지 않는 범위 내에서 링크와 연관된 데이터 또는 임의의 적절한 링크 배열이 저장될 수 있다. 예를 들어, 각각의 노드를 ("세계적 단일 식별자(globally unique identifier)", 즉 GUID와 같은) 개별 식별자로 나타내고, GUID 쌍들(또는 그 이상)을 이용하여 그 링킹을 나타내는 것이 가능할 수 있다. 또 다른 대안으로서, 상기 몇 가지 예들과 관련하여 설명한 이중 링크 배치 대신에, 단일의 링크가 링크 노드들에 사용될 수 있다. 또 다른 가능한 대안으로서, 필요하거나 원한다면, 노드가 자기 자신으로 링크될 수 있다(예를 들어, 소스 노드 및 목적지 노드가 같은 노드에 있는 셀프-링킹(self-linking)). 본 기술 분야의 통상의 지식을 가진 자들은, 본 발명으로부터 벗어나지 않는 범위 내에서, 여러 가지 데이터 세트들을 서로와 연관시키거나 링크시키는 임의의 적절한 방식이 사용될 수 있음을 인식할 것이다. In addition, various linking schemes are described with respect to the various data structures described above. These link schemes or techniques are merely examples of how to allow several data nodes to be linked together. Any associated link arrangement or data associated with the link may be stored without departing from the invention. For example, it may be possible to represent each node as an individual identifier (such as a “globally unique identifier”, ie, a GUID), and to indicate its linking using GUID pairs (or more). As another alternative, instead of the dual link arrangement described in connection with some examples above, a single link may be used for the link nodes. As another possible alternative, the nodes can be linked to themselves if needed or desired (eg, self-linking where the source and destination nodes are in the same node). Those skilled in the art will recognize that any suitable manner of associating or linking various data sets with each other may be used without departing from the invention.
<잉크의 분석><Analysis of Ink>
지금부터 본 발명의 예시들에 따르는 전자 문서 내의 전자 잉크를 분석하기 위한 여러가지 예시적인 기술들을 설명한다. 특히, 도 16a 내지 도 16e는 본 발명의 각종 실시예들에 따라 문서를 분석하는 단계들을 보여주는 순서도를 도시한다. 이어서, 도 17 내지 도 26은 분석 처리 동안 사용되는 서로 다른 컴포넌트들 간의 관계를 도시한다. DETAILED DESCRIPTION Various exemplary techniques for analyzing electronic ink in an electronic document in accordance with examples of the present invention are now described. In particular, FIGS. 16A-16E illustrate a flow chart showing steps of analyzing a document in accordance with various embodiments of the present invention. 17-26 then show the relationships between the different components used during the analysis process.
도 17를 참조하면, 이 도면은 소프트웨어 애플리케이션(1701)을 도시한다. 소프트웨어 애플리케이션(1701)은 타이프라이팅된 문자들 또는 이미지들과 같은 전자 잉크 데이터(1705) 및 비-잉크 데이터(1707) 양자를 모두 포함할 수 있는 문서(1703)를 유지한다. 앞서 상세히 설명한 바와 같이, 전자 잉크 데이터(1705)와 비-잉크 데이터(1707)의 속성들은 트리와 같은 계층적 데이터 구조로 표현될 수 있다. 전자 잉크의 분석을 시작하기 위해, 단계 1601에서, 소프트웨어 애플리케이션(1701)은 도 17에서 분석 콘텍스트 오브젝트(1709)로 식별되는 데이터 구조를 생성한다. Referring to FIG. 17, this figure shows a software application 1701. Software application 1701 maintains document 1703, which may include both electronic ink data 1705 and
도 18은 분석 콘텍스트 오브젝트(1709)에 포함될 수 있는 타입의 예시적인 트리(1801)를 도시한다. 트리(1801)는 루트 노드(1803) 및 단락 노드(1805)를 포함한다. 단락 노드(1805)는 예를 들어, 앞선 분석 처리에서 먼저 식별되었을 수 있는 전자 잉크 텍스트의 단락에 대응한다. 단락 노드(1805)는, 전자 잉크 텍스트의 단락에서의 두 개의 라인을 나타내는 두 개의 라인 노드(1807, 1809)에 연결된다. 라인 노드(1807)는 차례로 두 개의 단어 노드(1811, 1813)와 연관된다. 각 단어 노드(1811, 1813)는, 라인 노드(1807)가 나타내는 전자 잉크 텍스트의 라인 내의 단어에 대응한다. 단어 노드(1811)는 잉크 스트록 데이터(1815) 및 잉크 스트록 데이터(1817)를 포함한다. 그러므로, 스트록 데이터(1815, 1817)는 단어 노드(1811)로 표시된 단어를 구성하는 텍스트 전자 잉크 스트록들에 대응한다. 유사하게, 단어 노드(1813)는, 단어 노드(1813)로 표시된 단어를 구성하는 텍스트 전자 잉크 스트록들에 대응하는 잉크 스트록 데이터(1819) 및 잉크 스트록 데이터(1821)를 포함한다. 트리(1801)는 또한 루트 노드(1803)에만 연관된 스트록 데이터(1823 내지 1827)를 포함한다. 이러한 잉크 데이터(1823 내지 1827)는 또 다른 잉크 스트록 또는 다른 문서 엘리먼트와 연관되거나 미분류 새로운 잉크 스트록들을 표시한다. 18 shows an
그러므로, 스트록들을 개별 스트록 노드들에 저장하는 것을 대신하여, 여러 노드들은, 노드와 연관된 스트록들에 대응하는 데이터를 저장하는 연관된 "스트록들" 속성을 가질 수 있다. 예를 들어, 리스트 항목 내에 (a)미분류 콘텍스트 노드가, 분석을 필요로하는 하나 이상의 스트록을 갖는 하나 이상의 "스트록" 속성을 포함할 수 있고, (b) 잉크 단어 노드가, 잉크 단어를 구성하는 하나 이상의 스트록을 포함하는 하나 이상의 "스트록" 속성을 포함할 수 있으며; (c) 그림 노드가, 그림을 구성하는 하나 이상의 스트록을 포함하는 하나 이상의 "스트록" 속성을 포함할 수 있으며, (d) 불릿 노드가 불릿을 구성하는 하나 이상의 스트록을 포함하는 하나 이상의 "스트록" 속성을 포함할 수 있다. 물론, 본 발명의 대안의 구현들로서, 단어 노드 또는 그림 노드와 잉크 스트록들을 연관시키는 것을 대시하여, 개별 스트록 노드들은 데이터 트리에서 예를 들어, 전자의 개별 스트록을 표시하도록 사용될 수 있다. Therefore, instead of storing the strokes in separate stroke nodes, the various nodes may have an associated "strokes" attribute that stores data corresponding to the strokes associated with the node. For example, within a list item (a) an unclassified context node may include one or more "stroke" attributes with one or more strokes requiring analysis, and (b) the ink word node constitutes an ink word. May include one or more "stroke" attributes that include one or more strokes; (c) the picture node may include one or more "strokes" attributes that include one or more strokes that make up the picture, and (d) one or more "strokes" that the bullet node includes one or more strokes that make up the bullet. It can contain attributes. Of course, as alternative implementations of the present invention, in association with the word node or picture node and the ink strokes, the individual stroke nodes can be used to represent, for example, the individual strokes of the former in the data tree.
도 18에 도시된 트리(1801)는, 이미 단어, 라인 및 단락으로 조직된 잉크 스트록들을 포함하지만, 트리(1801)는, 또 다른 잉크 스트록 또는 문서 엘리먼트와 연관되지 않았거나 분류되지 않은 새로운 잉크 스트록만을 포함할 수 있음을 이해해야 한다. 예를 들어, 사용자가 처음으로 문서(1703)에 전자 잉크를 입력하는 경우, 이러한 처음의 잉크 스트록은 분석되지 않았을 것이다. 트리(1801)는 대표 예일 뿐이며, 본 발명의 각종 실시예들을 이해하는데 용이하도록 매우 간략화된 것임을 또한 이해해야 한다. 예를 들어, 통상적으로 라인 노드는 복수의 단어 노드와 연관될 것이며, 각 단어 노드는 몇 개의 잉크 스트록에 대한 스트록 데이터를 포함할 수 있다. 또한, 트리(1801)는 잉크-관련(ink-related) 노드만을 포함하지만 분석 콘텍스트 오브젝트(1709)는, 앞서 상세하게 설명한 바와 같이, 이미지 및 타이프라이팅된 텍스트와 같은 비-잉크 문서 엘리먼트들을 나타내는 노드들을 포함할 수 있음을 알아야 한다. The
도 17로 돌아가서, 본 발명의 몇 가지 예시로서, 소프트웨어 애플리케이션(1701)은 자기 자신의 분석 콘텍스트 오브젝트(1709)를 생성하고 유지할 것이다. 이러한 소프트웨어 애플리케이션들(1701)을 위하여, 소프트웨어 애플리케이션(1701)은 간단히 분석 오브젝트(1709)에 대한 참조를 제공할 수 있다. 그러나, 이러한 소프트웨어 애플리케이션들(1701)을 위하여, 소프트웨어 애플리케이션(1701)은 분석 오브젝트를 생성하여 포퓰레이트하고(populate) 유지하는데 필요한 메커니즘들을 포함해야 한다. 그러나, 일부 소프트웨어 개발자들은 이러한 메커니즘들에 그 애플리케이션(1701)을 제공하는 문제점을 제기하고 싶지는 않을 것이다. Returning to FIG. 17, as some examples of the present invention, the software application 1701 will create and maintain its own analysis context object 1709. For these software applications 1701, the software application 1701 may simply provide a reference to the analysis object 1709. However, for these software applications 1701, the software application 1701 must include the mechanisms needed to create, populate, and maintain an analysis object. However, some software developers will not want to raise the problem of providing the application 1701 to these mechanisms.
따라서, 그러나, 본 발명의 다른 예들로서, 소프트웨어 애플리케이션(1701)은 분석 콘텍스트 오브젝트(1709)를 생성하기 위해 또 다른 오브젝트를 인스턴스화(instantiate)할 수 있다. 예를 들어, 소프트웨어 애플리케이션(1701)은 분석 콘텍스트 오브젝트(1709)를 생성 및/또는 유지하기 위하여 잉크 분석 도구 또는 다른 오브젝트를 사용할 수 있다. 예를 들어, 소프트웨어 애플리케이션(1701)은 미분석 잉크 데이터를 잉크 분석 도구에 제공하거나 식별할 수 있다. 소프트웨어 애플리케이션(1701)으로부터의 명령들에 의존하여, 잉크 분석 도구는 소프트웨어 애플리케이션(1701)에 의해 식별된 미분석 잉크를 포함하는 문서의 특정 영역(또는 영역들)만을, 또는 전체 문서(1703)를 나타내는 분석 콘텍스트 오브젝트(1709)를 생성할 수 있다. 몇가지 소프트웨어 애플리케이션들(1701)에 있어서, 소프트웨어 애플리케이션(1701)은, 그 후, 자체적으로, 또는 잉크 분석 도구나 또 다른 오브젝트에 의해 제공되는 서비스를 이용하여, 분석 콘텍스트 오브젝트(1709)를 유지하고 업데이트할 수 있다. 또 다른 소프트웨어 애플리케이션들(1701)에서는, 소프트웨어 애플리케이션(1701)이 분석 문서 오브젝트(1709)를 유지하지 않을 수 있으며, 그 대신 잉크 분석 도구 또는 다른 오브젝트로 하여금 필요할 때 새로운 분석 문서 오브젝트(1709)를 생성하도록 할 수 있다. Thus, however, as other examples of the present invention, the software application 1701 may instantiate another object to create the analysis context object 1709. For example, software application 1701 may use an ink analysis tool or other object to create and / or maintain analysis context object 1709. For example, software application 1701 may provide or identify unanalyzed ink data to an ink analysis tool. Depending on the instructions from the software application 1701, the ink analysis tool may only scan the specific document (or regions) of the document containing the unanalyzed ink identified by the software application 1701, or the entire document 1703. An representing analysis context object 1709 may be generated. In some software applications 1701, the software application 1701 may then maintain and update the analysis context object 1709 on its own or using a service provided by an ink analysis tool or another object. can do. In still other software applications 1701, the software application 1701 may not hold the analysis document object 1709, but instead create a new analysis document object 1709 when needed by an ink analysis tool or other object. You can do that.
통상적으로, 분석 콘텍스트 오브젝트(1709)는 전체 문서(1703)에 대한 문서 엘리먼트들에 관한 정보를 포함할 것이다. 그러나, 본 발명의 몇 가지 예시에서는, 분석 콘텍스트 오브젝트(1709)는 문서(1703)의 일부에서만의 문서 엘리먼트들에 대한 정보를 포함할 수 있음을 알아야 한다. 즉, 분석 콘텍스트 오브젝트(1709)는, 새로운 또는 "더티(dirty)" 잉크 또는 다른 데이터를 포함하는 문서의 공간적 영역 내의 문서 엘리먼트만을 나타낼 수 있다. 전자 잉크를 포함하는 문서 내의 영역에서의 모든 문서 엘리먼트들이 이미 분석된 경우, 이러한 이미 분석된 문서 엘리먼트들은 분석 콘텍스트 오브젝트(1709)에 포함되지 않을 수 있다. 또 다른 대안으로서, 응용 프로그램은, 전체 전자 문서(1703)에 관련되는 데이터의 각 페이지 또는 다른 서브세트에 대한 분리된 분석 콘텍스트 오브젝트(1709)를 유지할 수 있다. Typically, analysis context object 1709 will contain information about document elements for the entire document 1703. However, in some examples of the invention, it should be appreciated that the analysis context object 1709 may include information about document elements only in part of the document 1703. In other words, analysis context object 1709 may represent only document elements within the spatial area of the document that contain new or “dirty” ink or other data. If all document elements in the area within the document containing the electronic ink have already been analyzed, these already analyzed document elements may not be included in the analysis context object 1709. As another alternative, the application may maintain a separate analysis context object 1709 for each page or other subset of data related to the entire electronic document 1703.
일단 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709)를 생성했으면, 단계 1603에서, 잉크 분석 도구(1901)는 도 19에 도시된 바와 같이 분석 콘텍스트 오브젝트(1709)의 적어도 일부를 카피한다. 더욱 구체적으로, 분석 콘텍스트 오브젝트(1709)가 상술한 바와 같이 새로운 잉크 및/또는 다른 데이터를 포함하는 영역들로 한정되지 않는 경우에는, 소프트웨어 애플리케이션(1701)이 새로운 잉크 및/또는 분석되어야 하는 다른 데이터를 포함하는 문서(1703)의 영역들을 지정할 것이다. 이어서 소프트웨어 애플리케이션(1701)은, 잉크 분석 도구(1901)를 호출하여(invoke) 문서(1703)의 지정된 영역에 대응하는 분석 콘텍스트 오브젝트(1709)의 부분을 카피하도록 한다. (물론, 이미 분석 콘텍스트 오브젝트(1709)가 새로운 잉크를 포함하는 영역들을 기술하는 것으로 한정된 경우, 잉크 분석 도구(1901)는 전체 분석 콘텍스트 오브젝트(1709)를 카피할 수 있다.) Once the software application 1701 has created the analysis context object 1709, at step 1603, the
응용 프로그램(1701)은, 앞서 분석되지 않았던 잉크가 어떤 잉크인지는 알 것이지만, 새로운 잉크에 영향을 미치는 부분이 전자 문서(1703)의 어느 부분(들)(예를 들어, 전자 문서 내의 바탕 데이터, 앞서 분석된 잉크 등)인지, (그러므로, 잉크 분석 도구(1901)에 제공할 부분이 어느 부분(들)인지)는 알 수 없다. 그러므로, 본 발명의 적어도 몇가지 예들에서, 응용 프로그램(1701)은, 큰 섹션들이 전자 문서(1703)의 분석 콘텍스트 오브젝트(1709)를 통해 잉크 분석 도구(1901)에 이용가능하도록 만들 것이다. 응용 프로그램(1701)은, 분석 콘텍스트 오브젝트(1709)를 통해 응용 프로그램(1701)에서 실제로 요구하는 정보를 결정하는 것을 잉크 분석 도구(1901)에게 맡긴다. The application 1701 will know which ink is the ink that has not been analyzed previously, but the portion that affects the new ink is which portion (s) of the electronic document 1703 (e.g., background data in the electronic document, Ink (analyzed, etc.) analyzed above, and therefore (which part (s) are portions to be provided to the ink analysis tool 1901). Therefore, in at least some examples of the invention, the application 1701 will make large sections available to the
새로운 데이터를 분석하기 위한 호출에 응답하여, 잉크 분석 도구(1901)는, 필요한 경우, 소프트웨어 애플리케이션(1701)에 의해 지정된 영역 내의 기타 데이터 및/또는 새로운 잉크를 분석하는데 필요한, 분석 콘텍스트 오브젝트(1709)으로부터의 정보를 획득하기 위해, 분석 콘텍스트 오브젝트(1709)로 여러 가지의 콜백을 행한다. 예를 들어, 잉크 분석 도구(1901)는, 새로운 잉크 및/또는 다른 데이터 뿐만 아니라, 이미 분석된 지정된 영역 내의 다른 데이터 및/또는 잉크에 관한 정보에 대한 분석 콘텍스트 오브젝트(1709)에 관하여 질의하거나, 또는 그 지정된 영역 내의 비-잉크 문서 엘리먼트들에 관한 정보에 대한 분석 콘텍스트 오브젝트(1709)에 관하여 질의할 수 있다. "지정된 영역"은, 본 발명의 적어도 몇 가지 예들에서, 분석될 기타 데이터 또는 새로운 잉크를 포함하는 영역에서의, 및/또는 그 영역의 부근에서의 공간적 영역의 데이터에 대응할 수 있다. In response to a call to analyze new data,
미리 분석된 잉크 및 비-잉크 문서 엘리먼트들 양자 모두는, 특히 분석될 새로이 입력된 데이터 부근에 위치한 엘리먼트들은, 미분석 잉크 또는 기타 데이터의 분석을 개선시키는 콘텍스트를 제공할 수 있다. 잉크 분석 도구(1901)가 분석 콘텍스트 오브젝트(1709)로부터 원하는 정보를 획득하므로, 잉크 분석 도구(1901)는 획득된 정보로 문서 독립 분석 콘텍스트 오브젝트(1903)를 생성한다. 그러므로, 문서 독립 분석 콘텍스트 오브젝트(1903)는, 분석 콘텍스트 오브젝트(1709)에 포함된 정보의 서브세트를 포함하지만, 이것은 문서(1703)와 독립적이다. 상술한 공간적 추상화(abstraction) 메소드에 기초하여 질의에서 이러한 "콜백(call back)" 기술을 사용하는 것에 의해, 잉크 분석 도구(1901)가 필요한 데이터를, 심지어 큰 문서들에 대해서도, 효율적으로 획득하고 분석하는 것이 가능해진다. 그러나, 애플리케이션(1701)은, 요구되는 경우, 콘텐트를 분석 도구에 노출시키지 않음으로써 문서 독립 분석 콘텍스트 오브젝트(1903)의 콘텐트를 간단히 통제할 수 있음을 유의해야 한다. Both pre-analyzed ink and non-ink document elements, especially those located near the newly input data to be analyzed, can provide a context for improving the analysis of unanalyzed ink or other data. Since the
또한, 잉크 분석 도구(1901)가 문서 독립 분석 콘텍스트 오브젝트(1903)를 생성하는 동안 소프트웨어 애플리케이션(1701)은 분석 콘텍스트 오브젝트(1709)를 변경해서는 안 된다는 점에 (그리고, 응용 프로그램 내의 다른 스레드(thread) 및/또는 다른 프로그램이 이 기간 동안 분석 콘텍스트 오브젝트(1709)를 변경하는 것은 허용될 수 없음에) 유의해야 한다. 즉, 소프트웨어 애플리케이션(1701)은 이 기간 동안 새로운 데이터를 문서(1703)에 입력해서는 안 되며, 다른 스레드들 및/또는 응용 프로그램들에게도 이는 허용되지 않는다. 그러나, 문서 독립 분석 콘텍스트 오브젝트(1903)를 생성하는 처리는 비교적 빠르며, 이는 통상적으로 소프트웨어 애플리케이션(1701)의 동작에 상당한 영향을 미치지는 않을 것이다. 그러나, 필요에 따라, 문서(1703)에 데이터를 입력한 결과들은 캐쉬(cach)되어 문서 독립 분석 콘텍스트 오브젝트(1903)가 생성된 후에 시스템에 입력될 수 있다. Also, while the
일단 문서 독립 분석 콘텍스트 오브젝트(1903)가 생성되면, 미분석 잉크 및/또는 다른 데이터에 대한 모든 후속적인 분석 작업은 분석 콘텍스트 오브젝트(1709)보다는 문서 독립 분석 콘텍스트 오브젝트(1903)에 대해 수행될 수 있으며, 그에 따라 소프트웨어 애플리케이션(1701)은 일반 동작을, 미분석 잉크 및/또는 다른 데이터의 분석에 의해 지연되거나 중단되는 일 없이, 계속 수행하는 것이 가능하다. 소프트웨어 애플리케이션(1701)은, 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 미분석 잉크의 분석에 간섭하는 일 없이, 새로운 전자 잉크 데이터(1705)를 문서(1703)에 입력할 수 있다. Once the document independent analysis context object 1903 is created, all subsequent analysis operations on the unanalyzed ink and / or other data may be performed on the document independent analysis context object 1903 rather than on the analysis context object 1709. Thus, the software application 1701 may continue to perform normal operations without being delayed or interrupted by the analysis of unanalyzed ink and / or other data. The software application 1701 can input new electronic ink data 1705 into the document 1703 without interfering with the analysis of the unanalyzed ink in the document independent analysis context object 1903.
따라서, 문서 독립 분석 콘텍스트 오브젝트(1903)가 생성된 후, 단계 1605에서는 잉크 분석 도구(1901)가 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 잉크를 분석하기 위해 분리된 분석 스레드를 생성한다. 따라서, 단계 1607에서, 소프트웨어 애플리케이션(1701)은 주요 처리 스레드의 제어를 재개할 수 있으며, 일반 동작을 계속 수행할 수 있다. 이어서, 단계 1609에서, 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 오브젝트(1903)를, 분석을 위한 제1 분석 처리에 제공한다. 예를 들어, 도 20에 도시된 바와 같이, 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 오브젝트(1903)를 분석 스레드를 사용하여 파싱하기 위해 파싱 처리(2001)에 전달할 수 있다. 파싱 처리는, 본 발명으로부터 벗어나지 않는 범위 내에서, 하나 이상의 분류 처리(예컨대, 잉크 및/또는 다른 데이터를, 예를 들어, 잉크 텍스트, 잉크 그림, 테이블, 차트, 그래픽, 이미지, 음악, 수학, (저항, 캐패시터 등을 갖는 전기회로도와 같은) 특별한 기호들을 포함한 그림 등과 같은 다양한 서로 다른 다른 타입으로 분류하기 위한 처리)를 포함할 수 있다. 본 발명의 몇가지 예시들에서, 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 오브젝트(1903)의 카피를 만들 수 있음을 유의해야 한다. 이하에 보다 상세하게 설명하는 바와 같이, 문서 독립 분석 콘텍스트 오브젝트(1903)의 원본(original form)의 카피는 문서(1703)의 현재 상태를 이용하여 그 분석 처리의 분석 결과들을 조정하기 위해 사용될 수 있다. Thus, after the document independent analysis context object 1903 is created, in step 1605 the
제1 분석 처리가 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 잉크 및/또는 다른 데이터를 분석한 후, 제1 분석 처리는 분석 결과를 잉크 분석 도구(1901)로 리턴하며, 이는 차례로 분석 결과를 단계 1611에서 소프트웨어 애플리케이션(1701)에게 알린다. 예를 들어, 도 21에 도시된 바와 같이, 제1 분석 처리가 파싱 처리(2001)인 경우, 파싱 처리는 파싱 결과들(2101)을 잉크 분석 도구(1901)로 리턴하며, 이어서 (예를 들어, 이벤트를 자극함(firing)으로써) 분석 결과들(2101)에 대한 참조를 소프트웨어 애플리케이션(1701)으로 전달할 수 있다. After the first analysis process analyzes the ink and / or other data in the document independent analysis context object 1903, the first analysis process returns the analysis results to the
이하에 보다 상세하게 설명될 것처럼, 본 발명의 몇 가지 예시들에서, 분석 결과들(2101)은, 원래 분석 처리에 제공되었던 문서 독립 분석 콘텍스트 오브젝트(1903)일 수도 있으나, 제1 분석 처리에 의해 생성된 새로운 정보(예를 들어, 본 예에서 파싱 결과들)를 포함하도록 변경될 수도 있다. 그러나, 본 발명의 또 다른 예들에서, 분석 결과들(2101)은 문서 독립 분석 콘텍스트 오브젝트(1903)의 수정된 카피일 수 있다. 제1 분석 처리에 의해 생성된 새로운 정보를 문서 독립 분석 콘텍스트 오브젝트(1903)의 카피에 포함시킴으로써, 원래의 문서 독립 분석 콘텍스트 오브젝트(1903)는 예를 들어, 조정자(reconciler)에 의해 사용되도록, 및/또는 상술한 다른 분석 처리에서 사용하기 위해 보존될 수 있다. As will be described in more detail below, in some examples of the invention, the analysis results 2101 may be a document independent analysis context object 1903 that was originally provided for the analysis process, but by the first analysis process. It may be changed to include the generated new information (eg parsing results in this example). However, in still other examples of the invention, analysis results 2101 may be a modified copy of document independent analysis context object 1903. By including the new information generated by the first analysis process in a copy of the document independent analysis context object 1903, the original document independent analysis context object 1903 can be used, for example, by a reconciler, and And / or reserved for use in other analytical processing described above.
도 22는, 파싱 처리(예컨대, 파싱 처리(2001))가 파싱 동작에 의해 생성된 레이아웃 변경들을 보여주기 위해 데이터 트리(1801)를 어떻게 변형시킬 수 있는지에 관한 예시를 도시한다. 이 도면에 도시된 바와 같이, 파싱 처리(2001)는 스트록 데이터(1823)가 나타내는 미분석 잉크 스트록이 단어 노드(1813)가 나타내는 단어의 일부인 것으로 판단하였다. 따라서, 파싱 처리는 루트 노드(1803)와 그 스트록 데이터(1823)의 연관을 해제하고, 대신에 단어 노드(1813)와 연관시킨다. 22 shows an example of how the parsing process (eg, parsing process 2001) may transform the
파싱 처리는, 또한 미분류 스트록 데이터(1825, 1827)가 나타내는 잉크 스트록들이, 앞서 식별되지 않은 라인 노드(1809)가 나타내는 라인 내의 새로운 단어의 일부분인 것으로 판단하였다. 따라서, 파싱 처리(2001)는 새로운 단어 노드(2201)를 생성하고, 라인 노드(1809)와 단어 노드(2201)를 연관시킨다. 이어서 파싱 처리(2001)는 새로운 단어 노드(2201)과 스트록 데이터(1825, 1827)를 연관시킨다. 따라서, 파싱 결과들(2101)은, 앞서 분석되지 않은 미분석 잉크 스트록들과 파싱 처리(2001)에 의해 식별된 다른 잉크 스트록들(또는 다른 문서 엘리먼트들) 간의 관계들을 설명한다. 또한, 파싱 처리(2001)에 의해 결정된 관계 변경들을 보여주는 것에 부가하여, 파싱 결과들(2101)은 또한 파싱 처리들(2101)에 의해 결정되는 분류 정보를 포함할 수 있다. 예를 들어, 대응하는 잉크 스트록을 그림 잉크 스트록보다는 텍스트 잉크 스트록으로 분류하도록 잉크 스트록 데이터(1823~1827)의 각 인스턴스가 변경될 수 있다. 본 발명의 적어도 몇가지 예시들에서, 필요한 경우, 파싱 결과들(2101)은 문서 독립 분석 콘텍스트 오브젝트(1903) 내에 표시될 수 있다. The parsing process also determined that the ink strokes represented by the
상술한 바와 같이, 제1 분석 처리가 문서 독립 분석 콘텍스트 오브젝트(1903)를 분석하는 동안, 소프트웨어 애플리케이션(1701)은 새로운 잉크 데이터(1705) 및 새로운 비-잉크 데이터(1707) 양자를 모두 포함하는 새로운 데이터를 문서(1703)에 입력할 수 있다. 따라서, 제1 분석 처리의 결과들은 문서(1703)의 현재 상태에 더 이상 적용가능하지 않을 수 있다. 예를 들어, 파싱 처리는 잉크 스트록이 단어와 연관되는 것으로 결정할 수 있지만, 사용자는 문서(1703)로부터 잉크 스트록을 (예를 들어, 연관된 단어 전부 또는 그 이상과 함께) 전부 삭제할 수 있다. 따라서, 단계 1613에서 분석 결과들(2101)은 문서(1703)의 현재 상태로 조정되어야 한다. 예시적인 조정 처리가 도 23에 개괄적으로 도시되며, 이는 이하에 보다 상세하게 설명될 것이다. As described above, while the first analysis process analyzes the document independent analysis context object 1903, the software application 1701 may include new ink data 1705 and new
본 발명의 몇가지 예들로서, 소프트웨어 애플리케이션(1701)은 분석 결과들(2101)을 문서(1703)의 현재 상태로 수동으로 조정할 수 있다. 즉, 소프트웨어 애플리케이션(1701)은 분석 결과들(2101)을 면밀히 살펴서 그 결과들이 현재 문서(1703) 내의 문서 엘리먼트들에 관련되었는지를 판단할 수 있다. 그러나, 본 발명의 다른 예들에서, 잉크 분석 도구(1901)는 분석 결과들(2101)을 현재 분석 콘텍스트 오브젝트(1709)(즉, 문서(1703)의 현재 상태를 반영하는 분석 콘텍스트 오브젝트(1709))로 조정하기 위한 조정 기능을 제공할 수 있다. 이하에 보다 상세하게 설명하는 것처럼, 본 발명의 여러 실시예들의 조정 기능에 의해 제1 분석 처리로부터의 분석 결과들(2101)과 문서(1703)의 현재 상태에 대한 분석 콘텍스트 오브젝트(1709) 간의 대립(conflict) 또는 "충돌(collision)"이 식별될 것이다. 이어서 잉크 분석 도구(1901)는 단계 1615에서 분석 결과들에 기초하여 분석 콘텍스트 오브젝트(1709)를 업데이트하고, 단계 1617에서 분석 콘텍스트 오브젝트(1709)의 조정된 분석 결과들로부터 새로운 문서 독립 분석 콘텍스트 오브젝트(1903)를 생성할 것이다. As some examples of the invention, the software application 1701 may manually adjust the analysis results 2101 to the current state of the document 1703. That is, the software application 1701 can look closely at the analysis results 2101 to determine whether the results are related to document elements in the current document 1703. However, in other examples of the invention, the
잉크 분석 도구(1901)가 분석 결과들(2101)을 현재 분석 콘텍스트 오브젝트(1709)로 조정하는 동안, 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709)를 변경하는 것은 허용되지 않음에 (그리고 분석 콘텍스트 오브젝트(1709)가 응용 프로그램 및/또는 임의의 다른 응용 프로그램 내의 다른 스레드들에 의해 변경되도록 허용해서는 안된다는 점에) 유의해야 한다. 즉, 소프트웨어 애플리케이션(1701)은 조정이 완료될 때까지 새로운 데이터를 문서(1703)에 입력해서는 안되며, 및/또는 다른 스레드들 및/또는 응용 프로그램이 새로운 데이터를 문서(1703)에 입력하는 것을 허용해서도 안 된다. 문서 독립 분석 콘텍스트 오브젝트(1903)를 최초로 생성하는 처리와 같이, 조정 처리는 비교적 빠르며, 통상적으로 소프트웨어 애플리케이션(1701)의 동작에 상당한 영향을 미치지는 않을 것이다. 그러나, 필요에 따라, 시도된 사용자 입력은 캐쉬되어 조정 처리가 완료된 후에 입력될 수 있다. While the
잉크 분석 도구(1901)가 분석 결과들(2101)을 문서(1703)의 현재 상태에 대한 분석 콘텍스트 오브젝트(1709)로 조정한 후, 잉크 분석 도구(19901)는 선택적으로 조정된 분석 결과들을 또 다른 분석을 위한 제2 분석 처리에 제공할 수 있다. 예를 들어, 도 24에 도시된 바와 같이, 잉크 분석 도구(1901)는 조정된 파싱 결과들(2401)을 인식을 위한(예를 들어, 텍스트, 음악, 수학적 정보 또는 다른 특정 데이터 타입들의 핸드라이팅 인식을 위한) 잉크 인식 처리(2003)에 제공할 수 있다. 특히, 단계 1619에서 잉크 분석 도구(1901)는 제2 분석 처리를 수행하기 위한 분리된 분석 스레드를 다시 생성할 것이다. 잉크 분석 도구(1901)가 제2 분석 처리를 실행하기 위한 이러한 분리 스레드를 생성하기 때문에, 소프트웨어 애플리케이션(1701)은 단계 1621에서 일반 동작을 재개할 수 있으며, 심지어 새로운 전자 잉크 데이터(1705)를 포함하는 새로운 입력 데이터를 수용할 수도 있다. After the
다음으로, 단계 1623에서, 잉크 분석 도구(1901)는 제1 분석 처리로부터 제2 분석 처리로 조정된 결과들(2401)을 제공한다. 일단 제2 분석 처리가 시작되면, 애플리케이션(1701)은 새로운 미분석 잉크에 대해 제1 분석 처리의 또 다른 실행을 시작할 수 있다. 따라서, 다수의 분석 처리가 동시에 실행될 수 있으며, 그리하여 제1 분석 처리의 결과들에 대해 제2 분석 처리가 수행되는 동안, 애플리케이션(1701)은 분석 결과들의 다음 세트를 준비하기 위해 제1 분석 처리를 재시작할 수 있다. Next, at step 1623, the
유리하게, 분석 처리들을 병렬적으로 실행하는 것은 소프트웨어 애플리케이션(1701)의 동작을 개선시킬 수 있다. 예를 들어, 파싱 분석 처리는 통상적으로 인식 분석 처리에 비해 빠르며, 인식 분석 결과들을 사용하는 일 없이 정확한 선택 동작 및 공간-삽입(space-insertion) 동작을 구현하기 위해 파싱 분석 결과들이 사용될 수 있다. 따라서, 다른 분석 처리들이 병렬적으로 실행될 수 있으므로, 문서(1703)에 추가된 새로운 잉크는, 선택되거나 또는 공간이 그 안에 정확하게 삽입되기 전에, 오래된 잉크 데이터에 대해 인식 분석 처리가 완료되는 것을 기다릴 필요가 없다. 또한, 본 발명의 각종 실시예들은, 유지 보수성(maintainability)을 향상시키고 및 두 그룹에 대한 개발 처리를 간소화하면서, 파서 및 인식기 알고리즘 개발자들및 애플리케이션 개발자들을 멀티스레딩 문제들로부터 해방시키도록 비동기적 잉크 분석을 실현하며, 애플리케이션에 대한 변경 없이 분석 처리들 간의 상호작용에 대한 변경을 허용한다. Advantageously, executing the analysis processes in parallel can improve the operation of the software application 1701. For example, the parsing analysis process is typically faster than the recognition analysis process, and the parsing analysis results may be used to implement an accurate selection operation and a space-insertion operation without using the recognition analysis results. Thus, because other analysis processes can be executed in parallel, the new ink added to the document 1703 needs to wait for the recognition analysis process to be completed for the old ink data before it is selected or the space is correctly inserted therein. There is no. In addition, various embodiments of the present invention provide asynchronous ink to free parser and recognizer algorithm developers and application developers from multithreading problems, while improving maintainability and simplifying the development process for both groups. It realizes the analysis and allows for changes in the interactions between the analysis processes without changing the application.
상술한 바와 같이, 잉크 분석 도구(1901)는, 분석 결과들(2101)의 관련 부분들을 포함하도록 업데이트된 후의 새로운 문서 독립 분석 콘텍스트 오브젝트(1903)를 분석 문서 오브젝트(1703)로부터 생성함으로써 조정된 분석 결과들을 제공할 수 있다. 그러나, 본 발명의 다른 예들에서, 잉크 분석 도구(1901)는 문서(1703)의 현재 상태를 반영하기 위해 원래의 문서 독립 분석 콘텍스트 오브젝트(1903)를 분석 결과들(2101)로 간단히 업데이트할 수 있다. 또한, 잉크 분석 도구(1901)는, 간단하게, 분석될 관련 잉크 데이터를 제2 분석 처리에 더 제공할 수 있다. As described above, the
그러므로, 본 발명의 각종 실시예들은, 후속 분석 처리를 실행하기 전에, 문서(1703)의 현재 상태로 앞선 분석 처리의 결과들을 조정한다. 그러나, 이러한 중간 조정 단계는 본 발명의 몇 가지 예시들에서 생략될 수 있음을 이해해야 한다. 특히, 본 발명의 몇 가지 예시들에서, 앞선 분석 처리의 결과들은, 그 결과들을 문서(1703)의 현재 상태로 조정하지 않고, 후속 분석 처리에 바로 제공될 수 있다. 예를 들어, 잉크 분석기 처리가 잉크 레이아웃 처리로부터 분리되어 제공된다면, 핸드라이팅된 텍스트로 분류된 잉크는 중간 조정 단계 없이 잉크 레이아웃 분석기 처리에 제공될 수 있다. Therefore, various embodiments of the present invention adjust the results of the preceding analysis process to the current state of the document 1703 before executing the subsequent analysis process. However, it should be understood that this intermediate adjustment step may be omitted in some examples of the invention. In particular, in some examples of the present invention, the results of the foregoing analytical processing may be provided directly to subsequent analytical processing, without adjusting the results to the current state of document 1703. For example, if the ink analyzer process is provided separately from the ink layout process, ink classified as handwritten text may be provided to the ink layout analyzer process without an intermediate adjustment step.
어느 배열에서든, 제2 분석 처리(2003)가 제1 분석 처리로부터의 조정된 결과들(2401)의 분석을 완료한 후에, 제2 분석 처리(2003)는 도 25에 도시된 바와 같이 그 결과들(2501)을 잉크 분석 도구(1901)로 리턴한다. 이어서 잉크 분석 도구(1901)는 단계 1625에서 소프트웨어 애플리케이션(1701)에 제2 분석의 결과들(2501)을 알린다. In any arrangement, after the second analysis process 2003 has completed the analysis of the adjusted results 2401 from the first analysis process, the second analysis process 2003 may display the results as shown in FIG. 25. 2501 is returned to the
상술한 바와 같이, 제2 분석 처리가 제1 분석 처리의 조정된 결과들(2401)을 분석하는 동안, 소프트웨어 애플리케이션(1701)은 새로운 전자 잉크 데이터(1705)를 포함하는 새로운 데이터를 문서(1703)에 입력할 수 있다. 그러므로, 제2 분석 처리 결과들(2501)은 문서(1703)의 현재 상태에 더 이상 적용될 수 없다. 따라서, 제2 분석 처리(2003)의 결과들(2501)은 또한 단계 1627에서 문서(1703)의 현재 상태로 조정되어야 한다. 예시적인 조정 처리가 도 26에 개괄적으로 도시되며, 이는 이하에서 보다 상세하게 기재될 것이다. As described above, while the second analysis process analyzes the adjusted results 2401 of the first analysis process, the software application 1701 may write new data including the new electronic ink data 1705 in the document 1703. You can type in Therefore, the second analysis processing results 2501 can no longer be applied to the current state of the document 1703. Thus, the results 2501 of the second analysis process 2003 should also be adjusted to the current state of the document 1703 at step 1627. An exemplary adjustment process is shown schematically in FIG. 26, which will be described in more detail below.
다시, 본 발명의 몇가지 예들로서, 소프트웨어 애플리케이션(1701)은 제2 분석 결과들(2501)을 문서(1703)의 현재 상태로 수동으로 조정할 수 있다. 대안으로, 본 발명의 다른 예들로서, 잉크 분석 도구(1901)는 분석 결과들(2101)을 현재 분석 콘텍스트 오브젝트(1709)로 조정하는 조정 기능을 제공할 수 있다. 이러한 조정 기능은 제2 분석 처리로부터의 분석 결과들(2501)과 문서(1703)의 현재 상태에 대한 분석 콘텍스트 오브젝트(1709) 간의 대립 또는 "충돌"을 식별할 것이며, 이어서 잉크 분석 도구(1901)는 단계 1629에서 분석 결과들에 기초하여 분석 콘텍스트 오브젝트(1709)를 업데이트할 것이다. 이어서 이 처리는 분서 처리들이 실행되는 동안 새로운 잉크 입력 또는 잉크를 분석하는데 필요한 만큼 반복될 수 있다. Again, as some examples of the invention, the software application 1701 may manually adjust the second analysis results 2501 to the current state of the document 1703. Alternatively, as other examples of the present invention, the
상술한 바로부터, 본 발명의 각종 실시예들에 따른 잉크 분석 기술들에 의해 전자 잉크가 소프트웨어 애플리케이션(1701)으로부터 비동기적으로 분석되는 것이 가능하며, 소프트웨어 애플리케이션(1701)은 분석 처리 동안 새로운 전자 잉크를 포함하는 입력 데이터를 계속해서 받아들이는 것이 허용된다. 상술한 설명에서는 두 개의 분석 처리만을 기재하였으나, 임의의 수의 분석 처리가 병렬적으로 동시에 실행될 수 있음을 알아야 한다. 예를 들어, 본 발명의 여러 가지 구현들은 제1 파싱 처리, 제2 파싱 처리 및 인식 처리를 이용할 수 있다. 이러한 방식으로, 일단 각각의 분석 처리가 완료되면, 그 결과들은 다음 분석 처리에 전달될 수 있으며, 제1 분석 처리는 다시 새롭게 입력된 잉크에 동시에 병렬적으로 실행될 수 있다. From the foregoing, it is possible for the electronic ink to be analyzed asynchronously from the software application 1701 by ink analysis techniques in accordance with various embodiments of the present invention, wherein the software application 1701 is a new electronic ink during the analysis process. It is allowed to continue to accept input data that includes. Although only the two analytical processes are described in the above description, it should be understood that any number of analytical processes can be executed simultaneously in parallel. For example, various implementations of the invention may utilize first parsing processing, second parsing processing, and recognition processing. In this way, once each analysis process is completed, the results can be transferred to the next analysis process, and the first analysis process can again be executed simultaneously and in parallel with the newly input ink.
또한, 본 발명의 각종 실시예들에서, 하나 이상의 분석 처리가 순차적으로 실행될 수 있다. 예를 들어, 몇가지 소프트웨어 애플리케이션들로서, 사용자는, 잉크 스트록 또는 스트록들의 조합에 대하여 (영어(English) 또는 일어(Japanese)와 같은) 특정 언어를 지정할 수 있다. 이어서 이러한 언어 지정은 분석 콘텍스트 오브젝트(1709) 및 문서 독립 분석 콘텍스트 오브젝트(1903)에 포함될 수 있다. 언어 지정에 기초하여, 잉크 분석 도구(1901)는 제1 언어로 지정된 전자 잉크를 그 제1 언어에 맞는(tailored) 인식 처리로 라우팅하고, 후속하여 제2 언어로 지정된 전자 잉크를 제2 언어에 맞는 다른 인식 처리로 라우팅할 수 있다. 이러한 동일한 방식으로, 기타 특정 타입들로 분류 및/또는 지정된 입력 데이터가, 음악용 인식기들, 전기 기호들, 수학 기호들, 플로우차트 모양들, 그래픽 모양들 등과 같은 기타 특정 인식기들로 보내질 수 있다.In addition, in various embodiments of the present invention, one or more analytical processing may be performed sequentially. For example, with some software applications, a user can specify a particular language (such as English or Japanese) for ink strokes or combinations of strokes. This language specification may then be included in the analysis context object 1709 and document independent analysis context object 1903. Based on the language designation, the
아울러, 분석 처리들은 소프트웨어 애플리케이션(1701)의 일부일 필요는 없으므로, 임의의 희망하는 분석 처리가 소프트웨어 애플리케이션(1701)에서 전자 잉크를 분석하는데 사용될 수 있다. 예를 들어, 소프트웨어 애플리케이션 개발자는, 소프트웨어 애플리케이션(1701)에 대해 예상되는 전자 잉크 입력을 분석하는데 특히 적절한 파싱 처리 또는 인식 처리를 개발하여 사용할 수 있다. In addition, the analysis processes need not be part of the software application 1701, so any desired analysis process can be used to analyze the electronic ink in the software application 1701. For example, a software application developer may develop and use a parsing process or recognition process that is particularly suitable for analyzing the electronic ink input expected for the software application 1701.
이러한 기술들의 또다른 변형들이 본 발명의 여러 구현에 의해 사용될 수 있다. 예를 들어, 몇몇 상황에서, 소프트웨어 애플리케이션(1701)이 문서(1703) 내의 여러가지 문서 엘리먼트들 간의 관계를 반영하는 내부 문서 트리를 유지하는 것은 바람직하지 않을 수 있다. 대신, 소프트웨어 애플리케이션(1701)은 전자 잉크 입력에 관한 간단한 상태 정보를 이용하는 것만을 목적으로 할 수 있다. 이러한 소프트웨어 애플리케이션들(1701)에서, 소프트웨어 애플리케이션(1701)은 전체 문서(1703)의 현재 상태를 반영하는 분석 콘텍스트 오브젝트(1709)를 생성하는 것을 생략할 수 있다. 오히려, 소프트웨어 애플리케이션(1701)은, 소프트웨어 애플리케이션(1701)이 분석하기를 희망하였던 특정 잉크 입력에 관한 정보를 단지 포함하기만 하는 특정-목적의 분석 콘텍스트 오브젝트(1709)를 생성할 수 있다. 특정-목적의 분석 콘텍스트 오브젝트(1709)를 사용하는 것에 의해, 소프트웨어 애플리케이션(1701)은, 문서 내의 잉크를 분석하기 위해 원하는 분석 처리들을 사용할 수 있으면서도, 문서(1703)의 상태에 대응하는 내부 데이터 구조를 유지하는 것의 복잡함을 피할 수 있다. Still other variations of these techniques can be used by various implementations of the invention. For example, in some situations, it may be undesirable for the software application 1701 to maintain an internal document tree that reflects relationships between various document elements in the document 1703. Instead, the software application 1701 may be solely for using simple state information regarding the electronic ink input. In such software applications 1701, the software application 1701 may omit generating the analysis context object 1709 that reflects the current state of the entire document 1703. Rather, software application 1701 can generate a particular-purpose analysis context object 1709 that only includes information about the particular ink input that the software application 1701 desired to analyze. By using the specific-purpose analysis context object 1709, the software application 1701 can use the desired analysis processes to analyze the ink in the document, while the internal data structure corresponds to the state of the document 1703. The complexity of maintaining is avoided.
또한, 상술한 설명에서는 전자 잉크의 비동기성 분석에 대해 설명하였으나, 본 발명의 여러 실시예들은 잉크 분석 도구(1901)가 잉크를 동기적으로 분석하는 것도 허용함을 알아야 한다. 예를 들어, 본 발명의 몇 가지 구현들은, 소프트웨어 애플리케이션(1701)이 전자 잉크의 즉각적이고 동기적인 분석을 수행하도록 잉크 분석 도구(1901)에게 명령하는 것을 허용한다. 또한, 동기적인 분석은, 전체 문서(1703) 또는 단지 문서(1703)의 특정 영역 내의 잉크에 대한 것일 수 있다.In addition, although the above description has described asynchronous analysis of electronic ink, it should be understood that various embodiments of the present invention also allow the
<잉크 분석 도구>Ink Analysis Tool
앞서 논의된 바와 같이, 잉크 분석 도구(1901)는 전자 잉크의 처리를 용이하게 하기 위해 여러가지 기능들을 수행한다. 예를 들어, 본 발명의 여러가지 구현들에 따르면, 잉크 분석 도구(1901)는 분석될 잉크 데이터를 갖는 문서(1703) 내의 하나 이상의 영역을 지정하는 소프트웨어 애플리케이션(1701)으로부터의 정보를 수신하고, 그 영역들에 관한 정보를 획득하기 위해 소프트웨어 애플리케이션(1701)에 대해 질의하고, 이어서 정보에 기초하여 문서 독립 분석 콘텍스트 오브젝트(1903)를 구성한다. 또한, 잉크 분석 도구(1901)는 분석을 위한 하나 이상의 분석 처리들에 문서 독립 분석 콘텍스트 오브젝트(1903)를 제공하고, 이어서 분석 처리의 결과들을 문서(1703)의 현재 상태로 조정한다. 다양한 처리들이, 본원 발명으로부터 벗어나지 않는 범위 내에서, (상술한 바와 같이) 분리된 스레드들을 사용하여, 스레드 풀(thread pool)을 통해서, 클러스트에서의 분리된 머신들을 통해서, 또는 분리된 처리들로서, 또는 임의의 다른 적절한 방식 또는 원하는 방식으로 수행될 수 있다.As discussed above, the
본 발명의 다른 예들에 따르면, 잉크 분석 도구(1901)를 구현하고 이러한 기능들을 수행하기 위해 여러 소프트웨어 오브젝트들 및 도구들이 사용될 수 있다. 그러나, 본 발명의 몇 가지 예시들에서, 잉크 분석 도구(1901)는 응용 프로그래밍 인터페이스(API)로서 구현될 수 있다. 특히, 본 발명의 몇 가지 예시들에 따르면, 잉크 분석 도구(1901)는, 문서(1703) 내의 잉크를 분석하는데 필요한 경우 소프트웨어 애플리케이션(1701)에 의해 호출될 수 있는 소프트웨어 오브젝트 루틴들과 관련 정보의 그룹으로서 구현될 수 있다.According to other examples of the invention, various software objects and tools may be used to implement the
본 기술분야의 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 응용 프로그래밍 인터페이스는 소프트웨어 오브젝트들에 관한 "클래스들(classes)" 또는 카테고리들로 조직될 수 있다. "오브젝트"는 저장가능한 상태 값들 및 실행가능한 동작들의 콜렉션(collection)이다. 특히, 오브젝트는, 오브젝트와 연관되거나 그 오브젝트에 의해 검색될 수 있는, "필드들(fields)" 및 "속성들(properties)"로 지칭되는 서로 다른 타입들의 상태 값들을 유지할 수 있다. 외부의 소프트웨어 애플리케이션 또는 또다른 소프트웨어 오브젝트에 있어서, 이러한 속성들은 판독 전용(read only)(용어 "{get;}"의 사용에 의해 식별됨), 기록 전용(write only)(용어 "{set;}"의 사용자에 의해 식별됨), 또는 판독가능 및 기록가능 두 가지 모두("{get; set}"으로 식별됨)일 수 있다. 오브젝트는, 종종 소프트웨어 애플리케이션 또는 또 다른 오브젝트의 요청 또는 "호출"에서, 태스크들 또는 "메소드들"을 실행할 수 있다. 그러므로, 애플리케이션 프로그래밍 인터페이스는, 요청시 특정 태스크들을 수행하거나 또는 특정 정보를 제공하도록 또 다른 소프트웨어 애플리케이션이 명령할 수 있는 여러가지 오브젝트들을 포함할 수 있다. As will be appreciated by one of ordinary skill in the art, an application programming interface may be organized into "classes" or categories of software objects. An "object" is a collection of storeable state values and executable actions. In particular, an object may maintain different types of state values, referred to as "fields" and "properties," that may be associated with or retrieved by the object. In an external software application or another software object, these attributes are read only (identified by the use of the term "{get;}"), write only (term "{set;} "Identified by the user of", or both readable and writable (identified as "{get; set}"). An object can often execute tasks or "methods" in a request or "call" of a software application or another object. Therefore, the application programming interface may include various objects that another software application can instruct to perform specific tasks or provide specific information on request.
본 발명의 여러 실시예들은, 소프트웨어 애플리케이션(1701)이 원하는 분석 처리를 완료하는데 필요한 최소량의 정보만을 제공할 것을 요구하도록 구현될 수 있음을 알아야 한다. 이러한 이유로, 이하에 상세하게 설명하는 몇 가지 속성들이 단지 판독 전용(즉 "{get;}") 또는 기록 전용(즉, "{set;}") 속성들로서 설명될 수 있으나, 본 발명의 여러가지 대안의 구현들에서는 판독가능 및 기록가능 두 가지 모두가 될 수 있다. 예를 들어, 전자 잉크를 분석하기 위해 분석 처리에 의해 사용될 "힌트들"을 정의하는 속성은, 소프트웨어 애플리케이션(1701)이 힌트들을 사용하는 것으로 의도되어서는 안 되는 상황들에서는 판독 전용 속성으로서 식별될 수 있다. 이는 잉크 분석기에 의해 생성된 오브젝트가 적어도 이러한 속성을 판독하도록 허용하고, 이러한 속성의 값이 널(null)인 디폴트(default) 값임(즉, 소프트웨어 애플리케이션(1701)이 어떠한 "힌트들"도 원하지 않음)을 결정한다. 그러나, 소프트웨어 애플리케이션(1701)이 잉크 분석을 위해 힌트들을 사용하기를 원할 경우, 소프트웨어 애플리케이션(1701)이 원하는 힌트들을 지정하기 위해 이러한 속성의 값을 널 값으로부터 변경하는 것을 허용하기 위해 이러한 속성은 판독가능과 기록가능 두 가지 모두가 될 것이다. It should be appreciated that various embodiments of the present invention may be implemented that require the software application 1701 to provide only the minimum amount of information needed to complete the desired analysis process. For this reason, some of the attributes described in detail below may be described as only read-only (i.e., "{get;}") or write-only (i.e., "{set;}") attributes, but various alternatives of the invention Implementations may be both readable and writable. For example, an attribute that defines "hints" to be used by the analysis process to analyze the electronic ink may be identified as a read-only attribute in situations where the software application 1701 should not be intended to use the hints. Can be. This allows objects created by the ink analyzer to read at least these attributes, and the values of these attributes are default values that are null (ie, the software application 1701 does not want any "hints"). Is determined. However, if the software application 1701 wants to use the hints for ink analysis, this attribute is read to allow the software application 1701 to change the value of this attribute from the null value to specify the desired hints. It will be both possible and recordable.
본 발명의 여러 실시예들에 따르면, 잉크 분석 도구(1901)의 구현을 구체화하는 API(이후 잉크 분석 API로서 언급됨)는 두 개의 코어 클래스를 포함할 수 있다. 그 첫 번째 클래스는 "Analysis Context" 클래스로 지칭될 것이며, 두 번째 클래스는 "Ink Analyzer" 클래스이다. "Analysis Context" 클래스의 컴포넌트들은 분석 콘텍스트 오브젝트(1709)를 생성하는데 사용된다. 따라서, 소프트웨어 애플리케이션(1701)이 자신의 분석 콘텍스트 오브젝트(1701)를 생성하고 유지하는 본 발명의 여러가지 구현들에서, 이 클래스의 하나 이상의 컴포넌트는 잉크 분석 도구로부터 생략될 수 있다. 대신, 이러한 컴포넌트들 중 하나 이상이 소프트웨어 애플리케이션(1701) 자체에 의해 구현될 수 있다. According to various embodiments of the present invention, an API that embodies the implementation of ink analysis tool 1901 (hereinafter referred to as ink analysis API) may include two core classes. The first class will be referred to as the "Analysis Context" class, and the second class is the "Ink Analyzer" class. Components of the "Analysis Context" class are used to create the analysis context object 1709. Thus, in various implementations of the invention in which the software application 1701 creates and maintains its analysis context object 1701, one or more components of this class may be omitted from the ink analysis tool. Instead, one or more of these components may be implemented by the software application 1701 itself.
이어서 "Ink Analyzer" 클래스의 컴포넌트들은, 분석 처리에 문서 독립 분석 콘텍스트 오브젝트(1903)를 제공하는 오브젝트를 생성하고 이용하기 위해 사용될 수 있으며, 분석 결과들이 생성된 시점을 결정하고 분석 결과들을 문서(1703)의 현재 상태로 조정하기 위해 사용될 수 있다. 이하에서는 본 발명의 여러 실시예에 따른 잉크 분석 API에 포함될 수 있는 이러한 클래스들 및 기타 클래스가 상세히 설명된다. The components of the class "Ink Analyzer" can then be used to create and use an object that provides the document independent analysis context object 1903 to the analysis process, determining when the analysis results were generated and documenting the analysis results 1703. Can be used to adjust the current state of Hereinafter, these and other classes that can be included in the ink analysis API according to various embodiments of the present invention are described in detail.
우선 분석 콘텍스트 클래스로 돌아가서, 이러한 클래스는 분석 콘텍스트 오브젝트(1703)을 생성하도록 호스트 애플리케이션(1701)에 의해 구현되며, 이는 소프트웨어 애플리케이션(1701)의 내부 문서 트리에서 프록시 뷰(proxy view)로서 역할을 수행한다. 대안으로, 상술 바와 같이, 애플리케이션이 자신의 분석 콘텍스트 오브젝트를 구현하는 경우, 이러한 클래스 내의 하나 이상의 구성요소는 잉크 분석 도구(1901)로부터 생략될 수 있다. 상술한 바와 같이, 분석 콘텍스트 오브젝트(1703)는 모든 미분석 잉크 데이터를 포함하고, 분석 콘텍스트 오브젝트(1703)는 어떤 미분석 잉크 데이터가 분석되어야 하는지를 식별하기 위해 사용된다. 분석 콘텍스트 오브젝트(1703)는 또한 이미 분석된 잉크에 대한 정보를 포함한다. 이러한 이미 분석된 잉크는 현재 미분석 잉크가 어떻게 분석되어야 하는지를 결정하기 위해 사용될 수 있으며, 스스로가 미분석 잉크를 분석하는 중에 변경될 수 있다. 또한, 분석 콘텐트 오브젝트(1703)는 문서(1703)의 비-잉크 콘텐트에 대한 정보를 포함하고, 이는 잉크를 비-잉크 콘텐트에 대한 주석들로 적절히 분류하기 위해 사용된다. Returning to the analysis context class first, this class is implemented by the host application 1701 to create the analysis context object 1703, which acts as a proxy view in the internal document tree of the software application 1701. do. Alternatively, as described above, when an application implements its own analysis context object, one or more components in this class may be omitted from the
본 발명의 여러 실시예들에 따르면, 분석 콘텍스트 클래스는, 소프트웨어 애플리케이션(1701)에 의해 호출되면 분석 콘텍스트 오브젝트(1709)를 생성하는 생성자(constructor)를 포함한다. 이 클래스는 또한 "Dirty Region {get;}"으로 명명되는 속성을 포함하는 분석 콘텍스트 오브젝트(1709)에 대한 여러 속성들을 포함할 수 있다. 더티 영역 속성은 미분석 잉크 데이터를 포함하는 문서의 부분(그리고 분석 콘텍스트 오브젝트(1709)의 부분)을 정의한다. 본 발명의 여러 실시예들로서, 더티 영역은 해체 영역(disjoint area)을 정의할 수 있다. 더티 영역은 분석영역(AnalysisRegion)으로 특정되고, 이는 이하에 보다 자세히 기재될 것이지만, 간단히 문서 내의 직사각 영역들의 콜렉션일 수 있다. 더티 영역이 비어있는(empty) 경우, 분석은 발생하지 않을 것이다. 이러한 클래스는 "Margins {get;}"으로 명명되는 분석 콘텍스트 오브젝트에 대한 속성을 더 포함하고, 이는 고려된 여백들인, 문서(1703) 내의 페이지의 영역들을 선언한다. 예를 들어, 레이아웃을 분석하고 전자 잉크의 분류를 결정하는 분석 처리는, 비-잉크 콘텐트인 전자 잉크(예를 들어, 여백 상의 잉크)의 분류의 결정을 돕기 위해 이러한 속성을 사용할 수 있다.According to various embodiments of the invention, the analysis context class includes a constructor that, when called by the software application 1701, creates an analysis context object 1709. This class may also include various attributes for the analysis context object 1709 that include an attribute named "Dirty Region {get;}". The dirty area attribute defines the portion of the document (and portion of the analysis context object 1709) that contains the unresolved ink data. In various embodiments of the present invention, the dirty area may define a disjoint area. The dirty region is specified as an AnalysisRegion, which will be described in more detail below, but may simply be a collection of rectangular regions within a document. If the dirty area is empty, no analysis will occur. This class further includes an attribute for the analysis context object named "Margins {get;}", which declares areas of the page in document 1703, which are considered margins. For example, an analytical process that analyzes the layout and determines the classification of the electronic ink can use these attributes to help determine the classification of electronic ink (eg, ink on a margin) that is non-ink content.
또한, 분석 콘텍스트 클래스는 "Rootnode {get;}"로 명명되는 속성을 포함할 수 있고, 이는 분석 콘텍스트 오브젝트(1709)에서 최상의 콘텍스트 노드 또는 루트 콘텍스트 노드를 식별한다. 상술한 바와 같이, 이러한 루트 노드는 주어진 분석 콘텍스트 오브젝트(1709)에 대한 모든 다른 콘텍스트 노드들을 자식 콘텍스트 노드들로서 포함한다. 본 발명의 여러 실시예들로서, 루트 콘텍스트 노드는 콘텍스트 노드 타입 "Root"가 되어야 함을 알아야 한다. 애플리케이션(1701)이 자신의 분석 콘텍스트 오브젝트(1709)를 구현하는 본 발명의 예시들에서, 분석 콘텍스트 오브젝트(1709)는 루트 콘텍스트 노드의 형제들(siblings)과 같은 다른 콘텍스트 노드들을 가질 수 있으나, 잉크 분석기 클래스의 컴포넌트들은 루트 콘텍스트 노드에 의해 포함된 콘텍스트 노드들을 고려하는 것으로 제한될 수 있음을 또한 알아야 한다. In addition, the analysis context class may include an attribute named "Rootnode {get;}", which identifies the best context node or root context node in the analysis context object 1709. As mentioned above, this root node includes all other context nodes for a given analysis context object 1709 as child context nodes. It should be noted that as various embodiments of the present invention, the root context node should be of context node type "Root". In the examples of the invention in which the application 1701 implements its own analysis context object 1709, the analysis context object 1709 may have other context nodes, such as siblings of the root context node, but with ink It should also be noted that the components of the resolver class may be limited to considering the context nodes included by the root context node.
분석 콘텍스트 클래스는 속성 "Analysis Hints {get;}"을 추가적으로 포함할 수 있으며, 이는 소프트웨어 애플리케이션(1701)에 의해 설정된 분석 힌트 오브젝트들의 어레이를 리턴한다. 이하에 보다 상세하게 논의되는 바와 같이, 분석 힌트 오브젝트들은 분석 처리를 도울 수 있는 임의의 정보 타입을 포함할 수 있다. 이러한 정보는 예를 들어, 가이드 또는 단어 리스트를 팩토이드(factoids)로서 포함할 수 있다. 이는 또한 분석을 위해 사용될 언어를 설정하는 정보를 포함하거나, 리스트, 테이블, 모양, 플로우차트, 커넥터, 콘테이너 등으로서 잉크를 식별하는 것과 같은 파싱 처리에 임의의 종류의 안내(guidance)를 제공하거나 또는 미분석 잉크를 핸드라이팅된 텍스트로서만 또는 그림으로서만 지정하는 정보를 포함할 수 있다. The analysis context class may further include the attribute "Analysis Hints {get;}", which returns an array of analysis hint objects set by the software application 1701. As discussed in more detail below, analysis hint objects may include any type of information that may aid in the analysis process. Such information may include, for example, guides or word lists as factoids. It may also contain information that sets the language to be used for analysis, or provide any kind of guidance for parsing processes such as identifying ink as a list, table, shape, flowchart, connector, container, or the like. It may include information specifying the unanalyzed ink only as handwritten text or only as a picture.
이러한 속성들에 부가하여, 분석 콘텍스트 클래스는 또한 예를 들어, 분석 콘텍스트 오브젝트(1709)가 태스크를 수행하도록 소프트웨어 애플리케이션(1701)에 의해 호출될 수 있는 여러 메소드들을 포함할 수 있다. 예를 들어, 분석 콘텍스트 클래스는 "FindNode (Guid id)"로 명명되는 메소드를 포함할 수 있다. 분석 콘텍스트 오브젝트(1709)의 각 노드는 전체적으로 유일한 식별자(globally unique identifier(즉, GUID)를 가지며, 이러한 메소드는 분석 콘텍스트 오브젝트(1709) 내의 어디엔가에서의 호출로 특정된 노드에 위치할 것이다. 이러한 메소드는 시간이 중요한(time critical) 많은 동작들로부터 호출될 수 있으므로, 이러한 룩업 메소드는 가능한 한 효율적으로 구현되어야 한다. In addition to these attributes, the analysis context class may also include several methods that can be called by the software application 1701, for example, for the analysis context object 1709 to perform a task. For example, the analysis context class may include a method named "FindNode (Guid id)". Each node of the analytics context object 1709 has a globally unique identifier (ie, a GUID), and this method will be located at the node specified by the call somewhere within the analytics context object 1709. Since the method can be called from many time critical operations, this lookup method should be implemented as efficiently as possible.
분석 콘텍스트 클래스와 마찬가지로, 잉크 분석기 클래스는 또한 소프트웨어 애플리케이션(1701)이 클래스의 인스턴스(즉, 잉크 분석기 오브젝트)를 생성하는 것을 허용하는 퍼블릭 생성자(public constructor)를 다양한 속성에 따라 정의한다. 예를 들어, 이는, 분석 처리의 결과들이 리턴되는 처리 스레드를 정의하는, "User Interface Context {get; set;}"으로 명명되는 속성을 포함할 수 있다. 이러한 속성은 그 결과들이 또다른 오브젝트에 동기화되는 것을 허용한다. 예를 들어, 이것이 주요 형태로 설정될 경우, 파서 결과들은 애플리케이션 메인 스레드에 파이어링(fired)될 것이다. 또한, 이는, 분석 처리에 사용될 수 있는 여러 가지 기준들을 특정하는 속성 "AnalysisOptions AnalysisOptions {get; set'}"을 포함할 수 있다. 이러한 기준들은 예를 들어, 텍스트 인식을 가능하게 하는 것, 테이블의 사용을 가능하게 하는 것, 리스트의 사용을 가능하게 하는 것, 주석의 사용을 가능하게 하는 것, 커넥터 및 콘테이너의 사용을 가능하게 하는 것을 포함할 수 있다. Like the analysis context class, the ink analyzer class also defines a public constructor according to various properties that allows the software application 1701 to create an instance of the class (ie, ink analyzer object). For example, it may include an attribute named "User Interface Context {get; set;}" which defines a processing thread in which the results of the analysis process are returned. This property allows the results to be synchronized to another object. For example, if this is set to its main form, parser results will be fired to the application main thread. It may also include an attribute "AnalysisOptions AnalysisOptions {get; set '}" specifying various criteria that can be used in the analysis process. These criteria may, for example, enable text recognition, enable the use of tables, enable the use of lists, enable the use of annotations, enable the use of connectors and containers. It may include doing.
잉크 분석기 클래스는 여러 메소드들을 포함할 것이다. 예를 들어, 이러한 클래스는 "AnalysisRegion Analyze ()"로 명명되는 메소드를 포함할 수 있다. 이러한 메소드는 동기 분석 처리를 시작한다. 문서 엘리먼트 데이터는 이러한 메소드로 전달되는데, 이는 문서(1703)의 현재 상태를 설명하고 문서(1703) 내의 어떤 잉크가 분석될 필요가 있는지를 표현한다. 본 발명의 몇몇 구현들에서, 문서 엘리먼트 데이터는 상술한 바와 같이, 분석 콘텍스트 오브젝트(1709)(즉, AnalysisRegion Analyze(Analysis Context))로서 제공될 수 있다. 대안으로, 개별 잉크 스트록들은, 스트록들(즉, AnalysisRegion Analyze(Strokes))에 대한 참조를 사용하거나, 분석 메소드로 전달되는 속성 없이 잉크 분석기 오브젝트(예를 들어, InkAnalyzer.Strokes {get; set})의 속성으로서 참조되어, 분석 처리로 전달될 수 있다.The ink analyzer class will contain several methods. For example, such a class might contain a method named "AnalysisRegion Analyze ()". These methods start the synchronous analysis process. The document element data is passed to this method, which describes the current state of the document 1703 and represents which ink in the document 1703 needs to be analyzed. In some implementations of the invention, document element data can be provided as an analysis context object 1709 (ie, AnalysisRegion Analyze (Analysis Context)), as described above. Alternatively, individual ink strokes may use references to strokes (ie, AnalysisRegion Analyze (Strokes)) or ink analyzer objects (eg, InkAnalyzer.Strokes {get; set}) without attributes passed to the analysis method. It can be referred to as an attribute of and passed to the analysis process.
일단 분석 처리가 완료되면, 이 메소드는 분석 처리의 결과들을 포함하도록 변경된 문서 독립 분석 콘텍스트 오브젝트에 대한 참조를 리턴할 것이다. 메소드는 또한 결과들이 계산된 문서 내의 영역을 기술하는 분석영역(AnalysisRegion) 값(이하에서 자세히 설명됨)을 리턴한다. Once the analysis process is complete, this method will return a reference to the document independent analysis context object that has changed to include the results of the analysis process. The method also returns an AnalysisRegion value (described in detail below) that describes the area within the document from which the results were calculated.
잉크 분석기 클래스는 또한 "AnalysisRegion Analyze(AnalsisContext, waitRegion)"으로 표시되는 메소드를 포함할 수 있다. 이 메소드는, 상술한 동기적인 Analysis Region Analyze () 메소드와 동일하지만, 특정 waitRegion 영역에서 결과들이 필요한 경우 분석되는 잉크를 단지 갖는다. 특히, 이 방법에 대한 호출은 문서(1703)에 대한 분석 콘텍스트 오브젝트(1709)와, 분석 처리가 동기적으로 분석해야 하는 분석 콘텍스트 오브젝트(1709)의 영역("waitRegion"으로 언급됨)을 식별할 것이다. 본 발명의 여러 실시예들에서, 분석 콘텍스트 오브젝트(1709)의 모든 다른 영역들은, 분석 처리가 waitRegion의 분석을 완료하기 위해 그 영역들 내의 콘텐트를 분석할 필요가 없다면, 무시될 것이다. 상술한 바와 같이, 이러한 메소드로 전달된 분석 콘텍스트 오브젝트(1709)는 분석을 필요로 하는 문서(1703)의 영역들을 기술하는 "DirtyRegion"으로 지칭되는 속성을 포함한다. 특정 waitRegion을 명시함으로써, 소프트웨어 애플리케이션(1701)은, 문서(1703) 내의 모든 잉크 데이터가 분석되도록 하는 것보다, 관심 있는 하나의 특정 영역에 대한 분석 결과들을 보다 신속하게 획득할 수 있다. The ink analyzer class may also include a method labeled "AnalysisRegion Analyze (AnalsisContext, waitRegion)". This method is identical to the synchronous Analysis Region Analyze () method described above, but only has the ink analyzed when results are needed in a particular waitRegion region. In particular, a call to this method will identify the analysis context object 1709 for the document 1703 and the area of the analysis context object 1709 (referred to as "waitRegion") that the analysis process should analyze synchronously. will be. In various embodiments of the present invention, all other areas of the analysis context object 1709 will be ignored if the analysis process does not need to analyze the content in those areas to complete the analysis of waitRegion. As mentioned above, the analysis context object 1709 passed to this method includes an attribute called "DirtyRegion" that describes the areas of the document 1703 that require analysis. By specifying a particular waitRegion, the software application 1701 can obtain analysis results for one particular area of interest more quickly than having all ink data in the document 1703 analyzed.
이러한 분석 메소드들 중 어느 것이 호출될 때, 모든 이용가능한 분석 처리가 실행될 것이다. 또한, 이러한 분석 메소드들은 동기적 호출들이기 때문에, 조정 처리를 그 종료시에 실행할 필요가 없으며, 완료한다 해도 이벤트 파이어를 실행하지 않을 것이다. When any of these analysis methods are called, all available analysis processing will be executed. Also, since these analysis methods are synchronous invocations, the reconciliation process does not need to be executed at its end and will not execute the event fire upon completion.
잉크 분석기 클래스는 또한 "BackgroundAnalyze(AnalysisContext)"로 표시되는 메소드를 포함한다. 이 메소드는 특정된 분석 동작을 개시하지만, 별도의 배경(background) 분석 스레드에 대해서도 진행한다. 그러므로, 이 메소드는, 실제의 분석 동작이 배경(background)에서 완료되면 거의 즉시 메인 처리 스레드로 제어를 리턴할 것이다. 특히, 이 메소드는 분석 처리가 성공적으로 개시되었으면 "참(true)"의 값을 리턴할 것이다. 다시, 메소드로 전달된 분석 콘텍스트 (AnalysisContext) 값은, 문서(1703)에 대한 분석 콘텍스트 오브젝트(1709)를 식별하고, 문서(1703) 내의 어떤 잉크가 분석될 필요가 있는지를 나타낸다. 일단 배경 스레드에 대한 분석 동작이 완료되면, 소프트웨어 애플리케이션(1701)이 결과들에 액세스하는 것을 허용하기 위해 결과(Results) 이벤트가 제기된다. 그 이벤트는 결과들과 조정 메소드를 포함하는데, 조정 메소드는 결과들이 리턴될 때 문서(1703)의 현재 상태에 대한 분석 콘텍스트 오브젝트(1709)로 결과들을 다시 통합시키기 위해 사용된다. The ink analyzer class also includes a method labeled "BackgroundAnalyze (AnalysisContext)". This method initiates the specified analysis operation, but also proceeds to a separate background analysis thread. Therefore, this method will return control to the main processing thread almost immediately after the actual analysis operation is completed in the background. In particular, this method will return a value of "true" if the analysis process has been initiated successfully. Again, the AnalysisContext value passed to the method identifies the analysis context object 1709 for the document 1703 and indicates which ink in the document 1703 needs to be analyzed. Once the analysis operation on the background thread is completed, a Results event is raised to allow the software application 1701 to access the results. The event includes results and an adjustment method, which is used to integrate the results back into the analysis context object 1709 for the current state of the document 1703 when the results are returned.
이러한 3개의 분석 메소드들 각각은 차례대로, 이하에서 상세하게 논의되는 바와 같이, "Analysis Region(분석 영역)" 클래스에서의 메소드 "Clone(클론)"을 차례로 호출함을 알아야 한다. "Clone(클론)" 메소드를 사용하여, 이러한 분석 메소드들은 분석 결과들을 보여주기 위해 분석 처리에 의해 후속하여 변경되는 독립 문서 분석 콘텍스트 오브젝트를 생성한다. It should be noted that each of these three analysis methods in turn calls the method "Clone" in the "Analysis Region" class, as discussed in detail below. Using the "Clone" method, these analysis methods create an independent document analysis context object that is subsequently changed by the analysis process to show the analysis results.
잉크 분석기 클래스는, 또한 배경 분석 (분석 콘텍스트) (BackgroundAnalyze(AnalysisContext)) 메소드를 호출함으로써 발생되는 결과 이벤트를 수신한 후에 소프트웨어 애플리케이션(1701)이 호출하는 "Reconcile(AnalysisContext current, AnalysisResultsEventArgs resultArgs)"로 표시되는 메소드를 포함할 수 있다. 조정 메소드는 문서 독립 분석 콘텍스트 오브젝트에 포함되는 분석 결과들을, 소프트웨어 애플리케이션(1701)에 의해 유지되는 분석 콘텍스트 오브젝트(1709)의 현재 버전과 비교한다. 이 메소드는 분석 콘텍스트 오브젝트(1709)의 현재 버전에서 제거되거나 추가될 필요가 있는 노드들을 식별하고, 존재하는 노드의 속성들인, 인식 결과들, 위치, 노드와 연관된 잉크 스트록들 또는 분석 동작의 결과들과 연관된 임의의 다른 데이터 중 임의의 것이 변경되었는지를 식별한다. 이 메소드는 또한 이러한 식별된 변경들을 분석 콘텍스트 오브젝트(1709)의 현재 버전에 기록한다. 이 메소드는 라인 콘텍스트 노드 상의 단어 콘텍스트 노드들의 순서와 같은 콘텍스트 노드 순서에 민감하다. The ink analyzer class is also marked with "Reconcile (AnalysisContext current, AnalysisResultsEventArgs resultArgs)" which is called by the software application 1701 after receiving the result event generated by calling the BackgroundAnalyze (AnalysisContext) method. It can contain a method. The adjustment method compares the analysis results included in the document independent analysis context object with the current version of the analysis context object 1709 maintained by the software application 1701. This method identifies nodes that need to be removed or added to the current version of analysis context object 1709, and recognizes results, location, ink strokes associated with the node or the results of the analysis operation, which are attributes of the existing node. Identify any of any other data associated with the. This method also writes these identified changes to the current version of the analysis context object 1709. This method is sensitive to context node order, such as the order of word context nodes on a line context node.
분석 결과들(즉, 속성 AnalysisResultsEventArgs의 값)은, 퍼블릭 결과 구조(public results structure) 및 프라이빗 결과 구조(private results structure)를 포함하기 때문에, 이 메소드로 다시 전달된다. 퍼블릭 구조는 리턴되므로 소프트웨어 애플리케이션(1701)이 조정 단계에서 발생하게 되는 변경들을 미리 볼 수 있다. 프라이빗 구조는 소프트웨어 애플리케이션(1701)이 조정 처리 전에 분석 결과들 중 임의의 것이 변경되는 것을 방지하기 위해 포함된다. The analysis results (ie, the value of the attribute AnalysisResultsEventArgs) are passed back to this method because they include the public results structure and the private results structure. The public structure is returned so that the software application 1701 can preview the changes that occur in the adjustment phase. The private structure is included to prevent the software application 1701 from changing any of the analysis results before the adjustment process.
잉크 분석기 클래스는 또한 "Recognizers RecognizersPriority()" 및 "SetHighestPriorityRecognizer(recognizer)"로 표시된 메소드들을 포함할 수 있다. 잉크가 인식될 필요가 있는 경우, 언어들 및 능력들에 기초하여 적절한 인식기가 사용될 것이다. 따라서, Recognizers RecognizerPriority() 메소드는 잉크 분석기 오브젝트에 의해 평가될 순서로 인식 처리들을 리턴한다. 그 순서는 인식 처리들이 이용가능한지에 의존하여 시스템마다 결정되지만, 잉크 분석기 오브젝트상의 SetHighestPriorityRecognizer(recognizer)를 호출함으로써 소프트웨어 애플리케이션(1701)에 대해 오버라이드될 수 있다. 잉크 분석기는 적절한 인식기가 발견될 때까지 이러한 순서 리스트를 열거할 것이다. SetHighestPriorityRecognizer(recognizer) 메소드는 인식 처리의 우선순위를 제기한다. 특정 인식 처리의 우선순위를 제기함으로써, 인식 처리는, 현재 인식 동작의 요구되는 언어 및 능력들에 부합할 경우 사용될 것이다. 본질적으로, 그 SetHighestPriorityRecognizer(recognizer)는 지정된 인식 처리를 인식기우선순위(RecognizersPriority) 메소드에 의해 리턴되는 리스트의 최상부(top)에 푸시한다.The ink analyzer class may also include methods labeled "Recognizers RecognizersPriority ()" and "SetHighestPriorityRecognizer (recognizer)". If the ink needs to be recognized, an appropriate recognizer will be used based on the languages and capabilities. Thus, the Recognizers RecognizerPriority () method returns recognition processes in the order in which they will be evaluated by the ink analyzer object. The order is determined per system depending on whether recognition processes are available, but can be overridden for software application 1701 by calling SetHighestPriorityRecognizer (recognizer) on the ink analyzer object. The ink analyzer will list this ordering list until a suitable recognizer is found. The SetHighestPriorityRecognizer (recognizer) method raises the priority of the recognition process. By raising the priority of a particular recognition process, the recognition process will be used if it meets the required language and capabilities of the current recognition operation. In essence, the SetHighestPriorityRecognizer (recognizer) pushes the specified recognition process to the top of the list returned by the RecognizersPriority method.
잉크 분석기 클래스는, 또한 분석 콘텍스트 오브젝트를 파라미터로서 사용할 수 있는, "AnalysisRegion Abort()"로 표시되는 메소드를 포함한다. 이 메소드는 전경(foreground) 또는 배경(background) 분석 동작이 일찍 종결되도록 허용한다. 이러한 메소드는 중단 전에 분석되던 영역을 기술하는 분석 영역을 리턴한다. 그러므로, 소프트웨어 애플리케이션(1701)이 추후에 분석 동작을 계속할 작정이면, 이 영역이 문서(1703)의 현재 상태에 대한 분석 콘텍스트 오브젝트(1709)의 더티영역(DirtyRegion)으로 병합될 수 있다. 또한, 잉크 분석기 클래스는, 실제로 빈번하게 잉크 분석기 오브젝트에 파이어링하는 "AnalysisResultsEventHandler"로 표시되는 이벤트를 포함할 수 있다. 특히, 이러한 이벤트는, 적어도 5 초마다 한번씩, 분석 처리들 사이에 파이어링할 수 있다. 이 이벤트는 진행중인 비동기성 분석 처리(또는 처리들)의 상태에 관한 업데이트를 애플리케이션(1701)에 제공하는데 사용될 수 있다.The ink analyzer class also includes a method represented by "AnalysisRegion Abort ()", which can take an analysis context object as a parameter. This method allows the foreground or background analysis to terminate early. These methods return an analysis region that describes the region that was analyzed before the break. Therefore, if the software application 1701 intends to continue the analysis operation later, this area may be merged into the dirty region DirtyRegion of the analysis context object 1709 for the current state of the document 1703. In addition, the ink analyzer class may include an event represented by "AnalysisResultsEventHandler" which actually fires the ink analyzer object frequently. In particular, such an event may fire between analysis processes, at least once every 5 seconds. This event can be used to provide an application 1701 with an update regarding the status of an ongoing asynchronous analysis process (or processes).
잉크 분석 API는 또한 분석 콘텍스트 클래스 및 잉크 분석기 클래스에 추가하여 클래스들을 포함할 수 있다. 예를 들어, 본 발명의 각종 실시예들에 따른 ㅇ잉크 분석 API는 콘텍스트 노드 클래스를 포함할 수 있다. 이러한 클래스는 "ContextNodeType Type {get;}"으로 표시된 속성과 같은, 문서 독립 분석 콘텍스트 오브젝트 및 분석 콘텍스트 노드(1709)를 구성하는 콘텍스트 노드들에 관한 다양한 컨포넌트들을 포함할 수 있다. 본 기술분야의 통상의 지식을 가진 자가 이해할 수 있는 바와 같이, 각 콘텍스트 노드는 타입을 가지며, 각 타입이 고수해야 하는 특정한 규칙들의 세트가 있다. 이는, 예를 들어, 자식 콘텍스트 노드들의 어떤 타입들이 허용되는지, 그리고 스트록들이 콘텍스트 노드에 바로 연관될 수 있는지 아니면 그 자식 콘텍스트 노드들을 통해서만 연관되는지와 같은 규칙들을 포함한다. The ink analysis API may also include classes in addition to the analysis context class and the ink analyzer class. For example, the ink analysis API according to various embodiments of the present invention may include a context node class. This class may include various components related to the document independent analysis context object and the context nodes that make up the analysis context node 1709, such as the attribute denoted as "ContextNodeType Type {get;}". As will be understood by one of ordinary skill in the art, each context node has a type, and there is a specific set of rules that each type must adhere to. This includes, for example, rules such as what types of child context nodes are allowed and whether the strokes can be directly associated with the context node or only through the child context nodes.
콘텍스트 노드들의 가능한 타입들은 콘텍스트 노드 타입(ContextNodeTypes) 열거로 정의될 수 있으며 예를 들어, 다음의 타입들: 비-텍스트 데이터(non-text data)를 주석하는 잉크 데이터를 나타내는 잉크 주석 노드; 그림을 형성하는 잉크 데이터를 나타내는 잉크 그림 노드; 단어를 형성하는 잉크 데이터를 나타내는 잉크 단어 노드, 하나 이상의 잉크 워드 노드들을 포함하는 라인 노드 및/또는 텍스트의 라인을 형성하는 단어들에 대한 텍스트 워드 노드들; 리스트 내에 예상되는 단락, 이미지 등의 노드들을 포함할 수 있는 리스트 항목 노드; 및 리스트 내에 엔트리를 각각 기재하는 하나 이상의 리스트 항목 노드들을 포함하는 리스트 노드를 포함할 수 있다. 노드 타입들은 또한 비-잉크 그림 이미지를 나타내는 비 잉크 그림 노드; 콘텍스트노드 타입 열거의 다른 값들에 의해 커버되지 않는 데이터를 나타내는 오브젝트 노드; 단락을 형성하는 라인들에 대응하는 하나 이상의 라인 노드들을 포함하는 단락 노드; 픽쳐 미이지를 나타내는 그림 또는 이미지 노드; 분석 콘텍스트 오브젝트에서 최상의 노드로서 역할을 하는 루트 노드; 테이블을 구성하는 항목들을 나타내는 노드들을 포함하는 테이블 노드; 텍스트 박스를 나타내는 텍스트 상자 노드; 텍스트 워드 노드; 및 아직 미분류 잉크 데이터에 대응하는 미분류 잉크(UnclassifiedInk) 노드를 포함할 수 있다. 그 노드 타입들은 또한 다른 노드들의 그룹들에 대한 그룹 노드, 불릿 항목들에 대한 잉크 불릿(InkBullet) 노드, 테이블의 행에 제시된 문서 엘리먼트들에 대한 행(Row) 노드, 및 테이블의 셀에 제시된 문서 엘리먼트들에 대한 셀 노드를 포함할 수 있다. Possible types of context nodes may be defined with a ContextNodeTypes enumeration, for example the following types: ink annotation node representing ink data annotating non-text data; An ink picture node representing ink data forming a picture; An ink word node representing ink data forming a word, a line node comprising one or more ink word nodes, and / or text word nodes for words forming a line of text; A list item node, which may include nodes, such as expected paragraphs, images, in the list; And a list node comprising one or more list item nodes each listing an entry in the list. Node types may also include non-ink picture nodes representing non-ink picture images; An object node representing data not covered by other values of the context node type enumeration; A shorting node comprising one or more line nodes corresponding to the lines forming the shorting; A picture or image node representing a picture image; A root node that serves as the best node in the analysis context object; A table node including nodes representing items constituting the table; A text box node representing a text box; Text word node; And an Unclassified Ink node that still corresponds to unclassified ink data. The node types may also be group nodes for groups of other nodes, ink bullet nodes for bullet items, row nodes for document elements presented in rows of the table, and documents presented in cells of the table. It may include cell nodes for elements.
콘텍스트 노드(Context Node) 클래스는 또한 현재 콘텍스트 노드에 대한 세계적 단일 식별자인, "GUID Id {get;}"으로 명명된 속성을 포함할 수 있다. 임의의 원하는 콘텍스트 노드로의 액세스를 허용하기 위해서, 단일 분석 콘텍스트 오브젝트 내의 각각의 콘텍스트 노드가 항상 단일 식별자를 가져야 한다. 이러한 클래스는 또한 관련 콘텍스트 노드가 실제로 위치된 문서 공간 내의 위치를 식별하는, "AnalysisRegion Location {get;}"으로 명명된 속성을 포함할 수 있다. 앞서 언급된 바와 같이, 분석 영역(AnalysisRegion)이 하나 이상의 가능한 해체 사각형 구조들을 함께 그룹화하는 이차원 구조이다. 이러한 클래스는 또한 이는 관련 콘텍스트 노드와 연관된 잉크 스트록들을 식별하는, "StrokeCollection Strokes {get;}"으로 명명된 속성을 포함할 수 있다. 본 발명의 각종 실시예들로서, (단어, 그림, 및 불릿 노드들과 같은) 단지 리프 콘텍스트 노드들이 스트록들을 갖기 위해 잉크 분석 API에 의해 허용된다. 소프트웨어 애플리케이션(1701)은 모든 조상(ancestor) 콘텍스트 노드들에 의해 리프 노드 레벨로 스트록들을 참조하기 위해 이러한 속성들을 사용할 수 있다(예를 들어, 루트 노드는 모든 스트록들에 대한 스트록 참조를 관련 분석 콘텍스트 오브젝트 내에 포함할 것이다). The Context Node class may also include an attribute named "GUID Id {get;}", which is the global single identifier for the current context node. To allow access to any desired context node, each context node within a single analysis context object must always have a single identifier. This class may also contain an attribute named "AnalysisRegion Location {get;}" that identifies the location in the document space where the relevant context node is actually located. As mentioned above, the AnalysisRegion is a two-dimensional structure that groups together one or more possible disassembly rectangle structures. This class may also include an attribute named "StrokeCollection Strokes {get;}", which identifies ink strokes associated with the associated context node. In various embodiments of the present invention, only leaf context nodes (such as words, pictures, and bullet nodes) are allowed by the ink analysis API to have strokes. Software application 1701 may use these attributes to refer to the strokes at the leaf node level by all ancestor context nodes (e.g., the root node may refer to a stroke reference for all strokes in the associated analysis context). Will be included in the object).
또한, 이러한 클래스는 관련 콘텍스트 노드를 포함하는 부모 콘텍스트 노드를 식별하는, "ContextNode ParentNode {get;}"으로 명명된 속성을 포함할 수 있다. 본 발명의 각종 실시예들로서, 콘텍스트 노드들은 루트(Root) 콘텍스트 노드가 분석 콘텍스트 오브젝트의 정적인 수인, 부모 콘텍스트 노드로부터 의존하기 위해 항상 생성된다. 이 클래스는 또한 관련 콘텍스트 노드의 직접 자식인 모든 콘텍스트 노드를 식별하는 속성 "ContextNode[]SubNodes {get;}"를 포함할 수 있다. 즉, 이러한 속성은 분석 콘텍스트 오브젝트에서 한 레벨 아래의 자식 콘텍스트 노드들을 단지 식별할 것이다. 예를 들어, 이러한 단락 콘텍스트 노드에 대한 속성의 값은 단락 노드에 의해 포함되는 라인 콘텍스트 노드들만을 단지 식별할 것이며, 라인 콘텍스트 노드의 자식인 단어 콘텍스트 노드들은 식별하지 않을 것이다. In addition, this class may include an attribute named "ContextNode ParentNode {get;}" that identifies the parent context node that contains the associated context node. In various embodiments of the present invention, context nodes are always created for the root context node to rely from the parent context node, which is a static number of analysis context objects. This class may also contain an attribute "ContextNode [] SubNodes {get;}" that identifies all context nodes that are direct children of the associated context node. That is, this attribute will only identify child context nodes one level down in the analysis context object. For example, the value of the attribute for such a paragraph context node will only identify the line context nodes included by the paragraph node and not the word context nodes that are children of the line context node.
이러한 클래스는 또한 인식 결과가 하나 이상의 텍스트의 라인을 하나 이상의 언어로 표현할 수 있기 때문에, 관련 인식 분석 처리 또는 처리들에 의해 계산된 인식 결과들을 제공하는, "RecognitionResult RecognitionResult {get;}"으로 표시되는 속성을 포함할 수 있다. 인식 결과는, 인식 분석 처리에 의해 설정되고 인식 결과 오브젝트을 생성하는데 사용되는 인식 결과 속성(이하에 보다 상세하게 기재됨)이 데이터의 복제를 피하기 위해 콘텍스트 노드 트리의 하나의 레벨로만 설정될 수 있을지라도, 문서 독립 분석 콘텍스트 오브젝트 내의 모든 콘텍스트 노드가 이용가능하다. 노드는, 그와 연관된 인식 데이터를 갖지 않을 경우, 그 서브노드들 모두의 인식 결과를 합병하거나 그 부모로부터 인식 결과를 추출할 것이다. 이러한 클래스는 또한 인식 결과 값의 지속적인 형태인, "Stream RecognitionData {get; set;}"으로 표시되는 속성을 포함할 수 있다. 다시, 인식 분석 처리는 관련 콘텍스트 노드로 설정된 스트림 인식데이터 값을 생성한다. 이어서 이러한 값에 기초하여 인식 결과 오브젝트가 구성된다. This class is also represented as "RecognitionResult RecognitionResult {get;}", which provides recognition results calculated by the relevant recognition analysis process or processes, since the recognition result can represent one or more lines of text in one or more languages. It can contain attributes. The recognition result is set by the recognition analysis process and although the recognition result attribute (described in more detail below) used to generate the recognition result object may be set to only one level of the context node tree to avoid duplication of data. In turn, all context nodes within the document independent analysis context object are available. If a node does not have recognition data associated with it, it will either merge the recognition results of all its subnodes or extract the recognition results from its parent. This class may also contain an attribute denoted as "Stream RecognitionData {get; set;}", which is a persistent form of recognition result value. Again, the recognition analysis process generates a stream recognition data value set to the relevant context node. The recognition result object is then constructed based on these values.
콘텍스트 노드 클래스는 콘텍스트 링크 오브젝트들의 어레이를 제공하는, "ContextLink[] Links {get;}"으로 표시되는 속성을 더 포함할 수 있다. 콘텍스트 링크 오브젝트는 두 개의 콘텍스트 노드들 간의 대체가능한 관계를 설명한다. 콘텍스트 노드들은 통상적으로 다른 콘텍스트 노드들과 부-자 관계를 갖는 반면, 콘텍스트 링크는 콘텍스트 노드들 간의 대안의 관계를 허용한다. 예를 들어, 콘텍스트 링크가 두 개의 콘텍스트 노드들 간의 연결, 또 다른 콘텍스트 노드에 하나의 콘텍스트 노드의 고정(anchoring), 또 다른 콘텍스트 노드에 의한 하나의 콘텍스트 노드의 억제, 또는 소프트웨어 애플리케이션(1701)에 의해 정의된 원하는 링크 타입을 허용할 수 있다. 콘텍스트 링크는, 이하에 보다 상세하게 논의되는 링크 추가 메소드를 호출함으로써 이러한 어레이에 추가될 수 있다. 유사하게, 콘텍스트 링크는 이하에 보다 상세하게 논의된 링크 삭제 메소드를 호출함으로써 이러한 어레이로부터 제거될 수 있다. The context node class may further include an attribute denoted as "ContextLink [] Links {get;}", which provides an array of context link objects. The context link object describes the replaceable relationship between two context nodes. Context nodes typically have a sub-child relationship with other context nodes, while context links allow for an alternative relationship between context nodes. For example, a context link may be a connection between two context nodes, anchoring one context node to another context node, suppressing one context node by another context node, or to a software application 1701. It can allow the desired link type defined by Contextual links can be added to this array by calling the add link method, which is discussed in more detail below. Similarly, contextual links can be removed from this array by invoking the link delete method discussed in more detail below.
또한, 이러한 클래스는 속성들 "IsContainer {get;}" 및 "IsInkLeaf {get;}"을 포함할 수 있다. 속성 IsContainer {get;}은 관련 콘텍스트 노드가 리프 콘텍스트 노드가 아닌 경우(즉, 관련 콘텍스트 노드가 자식 콘텍스트 노드들을 포함하고 그리하여 콘테이너 콘텍스트 노드로 고려되면), "참" 값을 갖고, 그렇지 않으면 "거짓(false)" 값을 갖는다. IsInkLeaf {get;} 속성은 현재 콘텍스트 노드가 콘테이너 콘텍스트 노드가 아닌 경우 "참" 값을 갖고, 그렇지 않으면 "거짓" 값을 갖는다. 즉, 현재 콘텍스트 노드가 임의의 자식 콘텍스트 노드들을 포함하지 않는다면, 리프 콘텍스트 노드로 고려된다. 본 발명의 여러 실시예들로서, 잉크 리프 콘텍스트 노드는 스트록 데이터에 대한 참조들을 포함하는 것으로 기대되나, 콘테이너 콘텍스트 노드들은 이러한 제한을 갖는 것은 아니다. 콘테이너 콘텍스트 노드들은 소프트웨어 애플리케이션(1701)에 의해 지정되는 바와 같은 스트록 데이터를 참조하거나 참조하지 않을 수 있다. In addition, this class may include attributes "IsContainer {get;}" and "IsInkLeaf {get;}". The property IsContainer {get;} has a value of "true" if the related context node is not a leaf context node (ie, if the related context node contains child context nodes and thus is considered a container context node), otherwise it is "false". (false) "value. The IsInkLeaf {get;} attribute has a value of "true" if the current context node is not a container context node, otherwise it has a value of "false". In other words, if the current context node does not contain any child context nodes, it is considered a leaf context node. In various embodiments of the present invention, an ink leaf context node is expected to contain references to stroke data, but container context nodes do not have this limitation. Container context nodes may or may not refer to the stroke data as specified by software application 1701.
콘텍스트 노드 클래스는 또한 속성 "Rect RotatedBoundingBox {get; set;}"을 포함할 수 있다. 이러한 속성의 값은 레이아웃 및 분류 분석 처리에 의해 계산된다. 관련 콘텍스트 노드와 연관된 잉크 데이터가 비스듬히 기재되는 경우, 그 콘텍스트 노드에 대한 바운드들은 여전히 수평 정렬될 것이다. 그러나, 회전된 바운딩 상자(RotatedBoundingBox) 속성의 값은 관련 콘텍스트 노드와 연관된 잉크 데이터가 기재된 각도로 정렬될 것이다. 또한, 이러한 클래스는, 관련 콘텍스트 노드의 값들을 변경하는 것이 허용되는지를 잉크 분석기에 알리는 속성 "ReClassifiable {get;}"을 포함할 수 있다. The context node class may also include the attribute "Rect RotatedBoundingBox {get; set;}". The value of this attribute is calculated by the layout and classification analysis process. If ink data associated with an associated context node is written at an angle, the bounds for that context node will still be horizontally aligned. However, the value of the RotatedBoundingBox attribute will be aligned at the angle at which the ink data associated with the associated context node is described. This class may also include an attribute "ReClassifiable {get;}" that informs the ink analyzer whether it is allowed to change the values of the associated context node.
이러한 속성들에 부가하여, 콘텍스트 노드 클래스는 또한 여러 메소드를 포함할 수 있다. 예를 들어, 이러한 클래스는 "ContextNode CreateSubNode(ContextNodeType type)"으로 표시되는 메소드를 포함한다. 이러한 메소드는 특정 타입의 자식 콘텍스트 노드의 생성을 허용한다. 본 발명의 여러 실시예들로서, 이러한 메소드는 단지 관련 콘텍스트 노드의 유효한 자식 타입들이 생성되도록 허용할 수 있으며, 그리하여 기형의 데이터 구조들이 생성되는 것이 방지된다. 예를 들어, 이 메소드는 단지 라인 콘텍스트 노드가 잉크 단어 및 텍스트 단어 콘텍스트 노드를 생성하도록 허용할 수 있다. 이 클래스는 또한 참조되는 자식 콘텍스트 노드를 관련 분석 콘텍스트 오브젝트로부터 삭제하는, "void DeleteSubNode(ContextNode node)"로 표시되는 메소드를 포함할 수 있다. 그러나, 본 발명의 여러 실시예들에서, 참조된 콘텍스트 노드가 스트록들 또는 자식 콘텍스트 노드들을 포함하는 경우, 이러한 메소드는 실패해야 한다는 점을 알아야 한다. 또한, 참조 콘텍스트 노드가 관련 콘텍스트 노드의 직접적인 자식이 아닌 경우, 이 메소드는 실패한다. 소프트웨어 애플리케이션(1701)이 자신의 분석 콘텍스트 오브젝트(1709)을 구현하고 차례로 이 메소드를 이용할 경우, 분석 콘텍스트 오브젝트(1709)에서의 기형의 데이터 구조를 방지하기 위하여, 비어있지 않은(non-empty) 콘텍스트 노드들 또는 관련 콘텍스트 노드의 직접적인 자식들이 아닌 콘텍스트 노드들은 삭제되지 않아야 함을 알아야 한다. In addition to these attributes, the context node class may also include several methods. For example, this class includes a method that is labeled "ContextNode CreateSubNode (ContextNodeType type)". These methods allow the creation of child context nodes of a particular type. In various embodiments of the present invention, this method may only allow valid child types of the associated context node to be created, thereby preventing malformed data structures from being created. For example, this method may only allow line context nodes to generate ink words and text word context nodes. This class may also include a method labeled "void DeleteSubNode (ContextNode node)", which deletes the referenced child context node from the associated analysis context object. However, it should be noted that in various embodiments of the present invention, if the referenced context node includes strokes or child context nodes, this method should fail. Also, if the reference context node is not a direct child of the associated context node, this method fails. When the software application 1701 implements its own analysis context object 1709 and in turn uses this method, a non-empty context to prevent malformed data structures in the analysis context object 1709. Note that context nodes that are not direct children of nodes or related context nodes should not be deleted.
또한, 이러한 클래스는 그 특정 영역 내에 위치된 콘텍스트 노드의 어레이를 리턴하는, 메소드 "ContextNode[] HitTestSubNodes(AnalysisRegion region)"를 포함할 수 있다. 그러나, 모든 자손들(descendants)이 아닌, 이러한 엘리먼트의 직접적인 자식 노드들만이 리턴됨을 알아야 한다. 그 영역은 앞서 언급된 바와 같이, 하나 이상의 직사각형들의 콜렉션일 수 있는, 분석 영역 오브젝트에 의해 정의된다. 본 발명의 각종 실시예들에 따라서, 콘텍스트 노드의 위치의 임의의 부분이 특정 영역을 가로지를(intersect) 경우, 콘텍스트 노드는 어레이로 리턴될 것이다. 이 메소드는, 예를 들어, 문서 독립 분석 콘텍스트 오브젝트를 생성하여 그 분석 결과들을 문서(1703)의 현재 상태에 대응하는 분석 콘텍스트 오브젝트로 조정하기 위해 사용된다. 그러므로, 이 메소드는 빈번하게 호출되며, 잉크 분석기 오브젝트에 의한 고속의 반복되는 액세스에 대해 최적화되어야 한다. This class may also include the method "ContextNode [] HitTestSubNodes (AnalysisRegion region)", which returns an array of context nodes located within that particular region. However, it should be noted that only the immediate child nodes of this element are returned, not all descendants. The area is defined by the analysis area object, which may be a collection of one or more rectangles, as mentioned above. According to various embodiments of the present invention, if any portion of the location of the context node intersects a particular area, the context node will be returned to the array. This method is used, for example, to create a document independent analysis context object and adjust its analysis results to an analysis context object corresponding to the current state of document 1703. Therefore, this method is frequently called and should be optimized for fast, repeated access by the ink analyzer object.
콘텍스트 노드 클래스는 또한 "MoveStroke(Stroke stroke, ContextNode destination)"으로 표시되는 메소드를 포함한다. 이 메소드는 하나의 리프 콘텍스트 노드로부터 또 다른 노드로 스트록의 연관성(association)을 이동시킨다. 본 발명의 여러 실시예들로서, 이 메소드는 리프 콘텍스트 노드들 사이에서만 사용된다. 이는 또한 형제 콘텍스트 노드들에 대한 관련 콘텍스트 노드의 순서를 다시 하는(reorder), "MoveSubNodeToPosition(int OldIndex, int NewIndex)"로 표시되는 메소드를 포함할 수 있다. 예를 들어, 문서(1703)가 한 라인 상에 3개의 단어들, 예를 들어 단어 1, 단어 2, 단어 3을 갖는다면, 그들의 순서는 부모 콘텍스트 노드로부터 리턴되는 서브노드들의 어레이에 의해 암시(imply)된다. 이 메소드는 그들의 순서가 변경되도록 허용하여, 관련 콘텍스트 노드와 관련하여, 단어 1에 대한 콘텍스트 노드를 위치 1로부터 위치 3으로 이동시킴으로써 단어 1이 라인 상의 마지막 단어가 되도록 특정된다. The context node class also includes a method labeled "MoveStroke (Stroke stroke, ContextNode destination)". This method moves the association of a stroke from one leaf context node to another. In various embodiments of the present invention, this method is used only between leaf context nodes. It may also include a method labeled "MoveSubNodeToPosition (int OldIndex, int NewIndex)", which reorders the relevant context nodes for sibling context nodes. For example, if document 1703 has three words on a line, for
또한, 이러한 클래스는 현재 콘텍스트 노드에 새로운 콘텍스트 링크 오브젝트를 추가하는, "AddLink(ContextLink link)"로 표시되는 메소드를 포함할 수 있다. 본 발명의 여러 실시예들로서, 콘텍스트 링크 오브젝트는, 관련 콘텍스트 노드에 연관된 콘텍스트 링크들의 어레이에 성공적으로 추가되는 콘텍스트 링크의 순서대로 관련 콘텍스트 노드에 대한 참조를 포함해야 한다. 이는 또한 "DeleteLink(ContextLink link)"로 표시되는 메소드를 포함할 수 있다. 이 메소드는 관련 콘텍스트 노드에 대한 콘텍스트 링크들의 어레이로부터 특정 콘텍스트 링크 오브젝트를 삭제하거나 제거한다. 본 발명의 여러 실시예들로서, 이 메소드는, 콘텍스트 링크가, 관련 콘텍스트 노드와 연관되는 콘텍스트 링크들의 어레이에 존재하지 않는 경우에도, 항상 호출을 성공적으로 완료한다. In addition, this class may include a method labeled "AddLink (ContextLink link)", which adds a new context link object to the current context node. In various embodiments of the present invention, the context link object should include a reference to the relevant context node in the order of the context link successfully added to the array of context links associated with the relevant context node. It may also include a method labeled "DeleteLink (ContextLink link)". This method deletes or removes a specific context link object from the array of context links for the relevant context node. In various embodiments of the present invention, this method always successfully completes the call even when the context link is not present in the array of context links associated with the associated context node.
잉크 분석 API는 또한 분석 힌트 클래스를 포함한다. 상술한 많은 클래스들에서, 분석 힌트 클래스는 분석 힌트 오브젝트를 비어있는 상태로 초기화하는, "AnalysisHint()"로 표시되는 생성자를 포함한다. 이러한 클래스는 또한 "AnalysisRegion Location {get;}"로 표시되는 속성을 포함하는 많은 속성들을 포함할 수 있다. 이러한 속성은 분석 힌트가 적용가능한 문서(1703)(분석 영역으로서) 내에 위치를 지정한다. 예를 들어, 문서(1703)가 페이지 상부에 타이틀 부분을 갖는 자유 형식의 노트(note)라면, 애플리케이션(1701)은 잉크의 수평 라인이 그 영역 내에 존재할 것이 예상됨을 특정하기 위해 타이틀 영역에 대한 분석 힌트를 설정할 수 있다. 분석 힌트는 분석 처리의 정확성을 증가시키는데 도움을 줄 것이다.The ink analysis API also includes an analysis hint class. In many of the classes described above, the analysis hint class includes a constructor, denoted "AnalysisHint ()", which initializes the analysis hint object to an empty state. This class can also contain many properties, including the property labeled "AnalysisRegion Location {get;}". This attribute specifies a location within document 1703 (as an analysis area) to which an analysis hint is applicable. For example, if the document 1703 is a free form note with a title portion at the top of the page, the application 1701 analyzes the title area to specify that horizontal lines of ink are expected to be within that area. You can set a hint. Analysis hints will help to increase the accuracy of the analysis process.
이 클래스는 또한 분석 힌트가 적용가능한 문서(1703) 내의 위치에 대하여 사용되기위한 특정 "팩토이드(factoid)"를 특정하는, "string Factoid {get; set;}"로 명명되는 속성을 포함할 수 있다. 본 기술분야에서 통상의 지식을 가진 자들에게 알려진 바와 같이, 팩토이드들은, 잉크 데이터의 예상되는 사용(예를 들어, 규칙적인 텍스트, 숫자, 우편번호, 파일명 및 웹 URL)에 관해 인식 처리에 힌트들을 제공한다. 이 클래스는 "RecognizerGuide Guide "{get; set;}" 및 "OverrideLanguageId {get; set;}로 명명되는 속성들을 포함할 수 있다. RecognizerGuide Guide {get; set;} 속성은 분석 힌트가 적용가능한 문서(1703) 내의 위치에 인가될 기록 가이드를 명시한다. 예를 들어, 가이드를 기록하는 것은, 사용자가 라인들 또는 문자들을 기록하는 인식기 분석 처리를 사용자에게 특정하고 알림으로써 인식기 분석 처리의 정확성을 개선하는데 도움을 준다. OverrideLanguageId {get; set;} 속성은 분석 힌트가 적용가능한 문서(1703)에 그에 대한 언어 힌트를 특정한다. 언어 힌트를 설정하는 것은 잉크 분석기 오브젝트가 콘텍스트 노드 상에 명시된 언어 대신에 특정된 언어를 사용하도록 한다. This class will also contain an attribute named "string Factoid {get; set;}" that specifies a particular "factoid" to be used for the location in the document 1703 where analysis hints are applicable. Can be. As is known to those of ordinary skill in the art, factoroids are involved in the recognition process regarding the expected use of ink data (e.g., regular text, numbers, zip codes, filenames and web URLs). Provide hints. This class is called the "RecognizerGuide Guide" {get; set;} "and" OverrideLanguageId {get; It can contain attributes named set;}. Recognizer Guide Guide {get; set;} attribute specifies a recording guide to be applied at a location in the document 1703 where analysis hints are applicable. For example, recording the guide helps the user to improve the accuracy of the recognizer analysis process by specifying and notifying the user of a recognizer analysis process that records lines or characters. OverrideLanguageId {get; set;} attribute specifies a language hint for the document 1703 to which the analysis hint is applicable. Setting a language hint causes the ink analyzer object to use the specified language instead of the language specified on the context node.
이러한 클래스는 또한 인식되어야 할 잉크의 라인에 앞에 기록되거나 타이핑된 텍스트를 명시하는, "PrefixText {get; set;}"으로 명명되는 속성을 포함할 수 있다. 또한, 이 클래스는 인식 처리가 분석 힌트가 적용가능한 문서(1703) 내의 위치에 관련해야 하는 특정 타입의 모드들을 명시하는, "RecognitionModes RecognitionFlags {get; set;}"으로 표시되는 속성을 포함한다. 또한, 이 클래스는 인식되어야 할 링크의 라인 앞에 기록되거나 타이핑된 텍스트를 명시하는, "SuffixText {get; set;}"으로 명명되는 속성, 및 인식 분석 처리에 의해 사용되어야 하는 단어들의 특정 세트를 특정하는, "WordList WordList {get; set;}으로 명명되는 속성을 포함할 수 있다. 사용자가 실제로 기록되는 입력 데이터를 갖기 전, 예상되는 인식 결과들이 알려진 경우에는, 예컨대 의학 형식(medical form) 내부에 기록될 것으로 예상되는 의학 용어들의 리스트와 같은, 단어 리스트가 사용될 수 있다. This class may also include an attribute named "PrefixText {get; set;}", which specifies the text written or typed earlier in the line of ink to be recognized. This class also includes an attribute denoted as "RecognitionModes RecognitionFlags {get; set;}", which specifies the specific types of modes that the recognition process should relate to a location in the document 1703 where analysis hints are applicable. This class also specifies an attribute named "SuffixText {get; set;}" that specifies text written or typed before the line of the link to be recognized, and a specific set of words that should be used by the recognition analysis process. It may include an attribute named "WordList WordList {get; set;}. If the expected recognition results are known before the user has the input data actually recorded, for example, inside a medical form. A word list can be used, such as a list of medical terms expected to be recorded.
또한, 이 클래스는 "WordMode {get; set;}"으로 명명되는 속성을 포함할 수 있다. 이 값이 "참"라면, 분석 처리는 전체 분석 영역에 대해 단일의 단어를 리턴하기 위해 그 자체를 바이어스할 것이다. 또한, "참"이면, 분석 처리가 관련 힌트에서 설정된 임의의 팩토이드 또는 단어 리스트(wordlist)로 그 결과를 한정하도록 강제하는, "Coerce {get; set;}"으로 명명되는 속성을 포함할 수 있다. 이 클래스는 또한 "AllowPartialDictionaryTerms {get; set;}"으로 명명되는 속성을 포함할 수 있다. 이 속성 값이 "참"이면, 인식 분석 처리는 부분적인 단어들을 인식 사전으로부터 리턴하도록 허용될 것이다.This class may also contain an attribute named "WordMode {get; set;}". If this value is "true", the analysis process will bias itself to return a single word for the entire analysis area. Also, if "true", it will contain an attribute named "Coerce {get; set;}", which will force the analysis process to limit the result to any factoroid or wordlist set in the relevant hint. Can be. This class may also contain an attribute named "AllowPartialDictionaryTerms {get; set;}". If this attribute value is "true", the recognition analysis process will be allowed to return partial words from the recognition dictionary.
본 발명의 각종 실시예들에 따라서, 잉크 쿤석 API는 분석 영역 클래스를 더 포함할 수 있다. 이러한 클래스가 예를 들어, 분석 영역 오브젝트를 구성하기 위한 다수의 생성자를 포함할 수 있다. 예를 들어, 어떤 영역을 갖는 분석 영역 오브젝트를 구성하기 위한 제1 생성자, 2차원 직사각형에 대한 파라미터들에 기초하여 분석 영역 오브젝트를 구성하는 제2 생성자, 및 공간 좌표에 기초하여 분석 영역 오브젝트를 구성하는 제3 생성자를 포함할 수 있다. 예를 들어, 디폴트 생성자가 비어있는 영역을 생성할 수 있다. 이 클래스는 또한 많은 속성들을 포함할 수 있다. 예를 들어, 이 클래스는 분석 영역에 대한 바운딩 직사각형을 수신하는, "Rectangle Bounds {get;}"으로 명명되는 속성, 관련 분석 영역 오브젝트가 비어있는 내부를 갖는지의 여부를 나타내는, "IsEmpty {get;}"으로 명명되는 속성, 및 그 관련 분석 영역이 무한(infinite)으로 설정되었는지 아닌지의 여부를 나타내는, "IsInfinite {get;}"으로 명명되는 속성을 포함할 수 있다. According to various embodiments of the present invention, the ink Kungseok API may further comprise an analysis region class. Such a class may include, for example, a number of constructors for constructing an analysis domain object. For example, a first constructor for constructing an analysis region object having an area, a second constructor for constructing an analysis region object based on parameters for a two-dimensional rectangle, and constructing an analysis region object based on spatial coordinates It may include a third constructor. For example, the default constructor can create an empty area. This class can also contain many attributes. For example, this class may contain an attribute named "Rectangle Bounds {get;}" that receives a bounding rectangle for the analysis region, and an "IsEmpty {get; } ", And an attribute named" IsInfinite {get;} ", indicating whether or not the associated analysis region is set to infinite.
이 클래스는 또한 관련 분석 영역 오브젝트를 복제하는, "AnalysisRegion Clone()"으로 명명되는 메소드와 같은 다수의 메소드들을 포함한다. 이 클래스는 또한 특정된 분석 영역 오브젝트(기타 영역으로 지칭됨)가 관련 분석 영역 오브젝트와 동일한지 여부를 테스트하는, "Equals(AnalysisRegion otherRegion)"으로 명명되는 메소드를 포함할 수 있다. 이 메소드는 특정된 분석 영역 오브젝트의 내부가 관련 분석 영역 오브젝트의 내부와 동일하다면, "참"의 값을 리턴하고, 그렇지 않으면 "거짓"의 값을 리턴한다. This class also contains a number of methods, such as the method named "AnalysisRegion Clone ()", which duplicates the associated analysis region object. This class may also include a method named "Equals (AnalysisRegion otherRegion)", which tests whether a specified analysis region object (referred to as other region) is equal to the related analysis region object. This method returns a value of "true" if the interior of the specified analysis area object is the same as the interior of the associated analysis area object; otherwise it returns a value of "false".
이 클래스는 특정된 분석 영역에 대해 관련 분석 영역 오브젝트를 잘라내는(crop down) 메소드 "Intersect(AnalysisRegion regionToIntersect)"를 더 포함할 수 있다. 그러므로, 결과적인 분석 영역 오브젝트는 특정된 분석 영역에 중복했거나 가로질렀던 영역들만을 포함할 것이다. 이러한 클래스는 또한 특정된 직사각형에 대해 관련 분석 영역 오브젝트을 잘라내는(crop down), "Intersect(Rectangle rectangle)"로 명명되는 메소드를 포함할 수 있다. 다시, 결과적인 분석 영역 오브젝트는 특정된 직사각형에 중복했거나 가로질렀던 영역들만을 포함할 것이다. 이는 또한 관련 분석 영역 오브젝트를 비어있는 내부로 초기화하는, "MakeEmpty()"로 명명되는 메소드 및 관련 분석 영역에 의해 무한정 점유되는 영역을 설정하는 "MakeInfinite()"로 명명되는 메소드를 포함할 수 있다. 이는 분석 영역 오브젝트를 관련 분석 영역 오브젝트에 결합하거나 추가하도록 지정하는, "Union(AnalysisRegion regionToUnion)"으로 명명되는 메소드 및 특정된 직사각형을 관련 분석 영역 오브젝트에 결합하는, "Union(Rectangle rectangle)"로 명명되는 메소드와 같은, 상이하게 정의된 영역들을 결합하거나 분리하기 위한 여러가지 메소드들을 더 포함할 수 있다. 이 메소드에서, 직사각형은 관련 분석 영역 오브젝트에 대한 좌표 공간에 의해 지정될 수 있다. 물론, 이 클래스는 영역들을 결합하거나 그 영역들에 대한 임의의 원하는 정의에 기초하여 또 다른 영역으로부터 하나의 영역을 추출하기 위한 다수의 서로 다른 메소드들을 포함할 수 있다. This class may further include a method "Intersect (AnalysisRegion regionToIntersect)" that crops the associated analysis region object for the specified analysis region. Therefore, the resulting analysis region object will contain only regions that overlapped or traversed the specified analysis region. This class may also include a method named "Intersect (Rectangle rectangle)" that crops the associated analysis region object for a specified rectangle. Again, the resulting analysis region object will only contain regions that overlapped or traversed the specified rectangle. It may also include a method named "MakeEmpty ()", which initializes the relevant analysis area object to an empty interior, and a method called "MakeInfinite ()", which sets an area that is infinitely occupied by the related analysis area. . This is called a method called "Union (AnalysisRegion regionToUnion)", which specifies to join or add an Analysis Area object to the associated Analysis Area object, and "Union (Rectangle rectangle)", which binds the specified rectangle to the associated Analysis Area object. The method may further include various methods for combining or separating differently defined areas, such as being a method. In this method, the rectangle can be specified by the coordinate space for the associated analysis region object. Of course, this class may include a number of different methods for combining regions or extracting one region from another based on any desired definition of the regions.
잉크 분석 API는 또한 인식 결과 클래스를 가질 수 있다. 상술한 많은 클래스에서, 인식 결과 클래스는 하나 이상의 생성자를 포함할 수 있다. 예를 들어, 이러한 클래스는 주어진 인식 격자(lattice)로부터 인식 결과 오브젝트를 구성하는, "RecognitionResult(Stream lattice)"로 명명되는 생성자를 포함할 수 있다. 본 발명의 여러 실시예들에서, 인식 격자는 인식 처리로부터의 결과들의 시리얼화된 형태(serialized form)이다. 이 메소드는, 예를 들어, 관련 인식 결과 오브젝트의 구성에 사용되도록 인식 격자를 바이트(byte) 어레이로 지정할 수 있다. 이는 또한 주어진 콘텍스트 노드로부터 인식 결과 오브젝트를 구성하는, "RecognitionResult(ContextNode node)"으로 명명되는 생성자를 포함할 수 있다. 이는 또한 지정된 텍스트 값으로부터 인식 결과 오브젝트를 구성하는, "RecognitionResult(string Text, int StrokeCount)"으로 명명되는 생성자를 포함할 수 있으며, 이는 차례로 지정된 수의 스트록들에 연관되고, 인식 처리가 실제의 핸드라이팅된 잉크 데이터에 대응하는 대안의 인식 값을 제공하지 않은 경우 수정을 위해 사용될 수 있다. 또한, 이 클래스는 두 개의 기존의 인식 결과 오브젝트를 함께 합병함으로써 인식 결과 오브젝트를 구성하는, "RecognitionResult(RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)"로 명명되는 생성자를 포함할 수 있다. The ink analysis API may also have a recognition result class. In many of the classes described above, the recognition result class may include one or more constructors. For example, such a class may include a constructor named "RecognitionResult (Stream lattice)", which constructs a recognition result object from a given recognition lattice. In various embodiments of the present invention, the recognition grid is a serialized form of results from the recognition process. This method may, for example, specify a recognition grid as a byte array to be used in the construction of the associated recognition result object. It may also include a constructor named "RecognitionResult (ContextNode node)", which constructs a recognition result object from a given context node. It can also include a constructor named "RecognitionResult (string Text, int StrokeCount)", which constructs a recognition result object from the specified text value, which in turn is associated with a specified number of strokes, and the recognition process is the actual hand. It may be used for correction if no alternative recognition value corresponding to the written ink data is provided. This class can also contain a constructor named "RecognitionResult (RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)", which constructs a recognition result object by merging two existing recognition result objects together.
인식 결과는 또한 단일의 잉크 오브젝트에 포함된 스트록들의 콜렉션을 나타내는 스트록 인덱스들의 어레이를 제공하는, "StrokeCollection StrokeCollection {get;}"으로 명명되는 속성, 및 인식 결과의 최상의 대안을 제공하는, "RecognitionAlternate TopAlternate {get;}"으로 명명되는 속성과 같은 하나 이상의 속성들을 포함할 수 있다. 이 클래스는 또한 인식 분석 처리로부터의 현재 결과의 최상의 대안의 선정에 대한 신뢰성 레벨(예를 들어, 강력, 중간, 또는 열악)을 제공하는, "RecognitionConfidence RecognitionConfidence {get;}"으로 명명되는 속성 및 인식 분석 처리로부터의 분석 결과들의 최상의 결과 스트링을 리턴하는, "string TopString {get;}"으로 명명되는 속성을 포함할 수 있다. RecognitionAlternate TopAlternate, an attribute named "StrokeCollection StrokeCollection {get;}", which provides an array of stroke indices representing a collection of strokes contained in a single ink object, and the best alternative to recognition results. It may contain one or more attributes, such as an attribute named {get;} ". This class also recognizes an attribute and recognition named "RecognitionConfidence RecognitionConfidence {get;}", which provides a level of confidence (eg, strong, medium, or poor) for the selection of the best alternative of the current result from the recognition analysis process. It may include an attribute named "string TopString {get;}", which returns the best result string of analysis results from the analysis process.
인식 결과 클래스는 또한 인식 분석 처리로부터의 분석 결과들의 최고의 결과 스트링 내에서의 선정으로부터 대안들의 콜렉션을 특정하는, "public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, selectionLength, maximumAlternates)"로 명명되는 메소드와 같은 많은 메소드들을 포함할 수 있으며, 각각의 대안은 하나의 잉크 세그먼트에만 대응된다. 이 메소드를 위한 입력 파라미터들은 예를 들어, 대안들의 콜렉션이 리턴되는 텍스트 선택의 시작을 지정하는 값, 대안들의 콜렉션이 리턴되는 텍스트 선택의 길이를 지정하는 값 및 리턴하기 위해 최대수의 대안들을 지정하는 값을 포함할 수 있다. 이어서 이 메소드는 인식 결과의 최고의 결과 스트링 내에서의 선정으로부터 대안들의 인식 대안 콜렉션(RecognitionAlternateCollection) 콜렉션을 리턴할 수 있다. The recognition result class also includes many methods, such as a method named "public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, selectionLength, maximumAlternates)" that specifies a collection of alternatives from the selection in the best result string of analysis results from the recognition analysis process. Each alternative corresponds to only one ink segment. The input parameters for this method specify, for example, a value specifying the start of the text selection in which the collection of alternatives is returned, a value specifying the length of the text selection in which the collection of alternatives is returned, and a maximum number of alternatives to return. It may contain a value. This method may then return a RecognitionAlternateCollection collection of alternatives from the selection within the best result string of the recognition result.
인식 결과 클래스는 "RecognitionResults Merge(RecognitionResults left, string separator, RecognitionResults right)"로 명명되는 메소드를 더 포함할 수 있다. 이 메소드는, 편평한 격자(flat lattice)가 되는 단일의 스트링으로부터 새로운 인식 결과 오브젝트를 생성하거나, 기존 인식 결과 오브젝트의 시작 및 종료에 단일의 스트링을 추가하거나, 두 개의 기존의 인식 결과 오브젝트들 사이에 단일의 스트링을 연결시키기 위해 사용될 수 있다. 이 클래스는 또한 알려진 대안으로 변경되도록 그 인식 결과를 지정하는, "ModifyTopAlternate(RecognitionAlternate alternate)"로 명명되는 메소드를 포함할 수 있다. 본 발명의 몇 가지 실시예들에서, 디폴트로서, 인식 분석 처리의 결과들 중 최고의 결과 스트링은 최상위 대안(top alternate)에 대응한다. 그러나, 이 메소드는 최상위 대안 이외의 대안들이 인식 분석 처리의 결과들에 사용됨을 특정하기 위해 사용될 수 있다. 새로운 최상의 대안이 이전과 다른 분할(segmentation)이 되는 경우, 수정 최상위 대안 메소드는 변경들을 반영하기 위해 콘텍스트 노드들을 자동으로 업데이트할 것이다. The recognition result class may further include a method named "RecognitionResults Merge (RecognitionResults left, string separator, RecognitionResults right)". This method creates a new recognition result object from a single string that becomes a flat lattice, adds a single string to the beginning and end of an existing recognition result object, or between two existing recognition result objects. Can be used to concatenate single strings. This class may also include a method named "ModifyTopAlternate (RecognitionAlternate alternate)", which specifies the recognition result to be changed to a known alternative. In some embodiments of the present invention, by default, the highest result string of the results of the recognition analysis process corresponds to the top alternate. However, this method can be used to specify that alternatives other than the top most alternative are used in the results of the recognition analysis process. If the new best alternative has a different segment than before, the modify top alternative method will automatically update the context nodes to reflect the changes.
인식 결과를 변경하는데 사용될 수 있는 대안들을 검색하기 위해서, 이 메소드는 이하에 상세하게 논의되는 GetAlternatesFromSelection 메소드를 호출함을 유의해야 한다. 이 클래스는 또한 관련 RecognitionResults 오브젝트를 인식 격자의 형태로 지속적으로 유지하는, "Stream Save()"로 명명되는 메소드를 가질 수 있다. 인식 격자는 인식 처리로부터의 결과들을 표현하는데 사용되기 위한 시리즈화된 포맷이다.Note that this method calls the GetAlternatesFromSelection method, discussed in detail below, to retrieve alternatives that can be used to change the recognition result. This class can also have a method named "Stream Save ()", which persists the associated RecognitionResults object in the form of a recognition grid. The recognition grid is a seriesed format for use in representing the results from the recognition process.
잉크 분석 API는 또한 열거된 타입의 분석 옵션들(Analysis Options)을 가질 수 있다. 이러한 타입은 잉크 데이터가 분석 처리에 이용가능한 모든 옵션들을 인에이블하는, "const AnalysisOptions Default"로 명명되는 필드와 같은, 분석 처리에 의해 어떻게 분석될 것인지를 지정하는 하나 이상의 필드들을 포함할 수 있다. 예를 들어, 이 필드는 텍스트 인식, 테이블의 사용, 리스트의 사용, 주석의 사용, 커넥터 및 콘테이너의 사용 및 중간 결과들의 사용을 가능하게 할 수 있다. 이 타입은 또한 주석들의 검출을 인에이블 및 디세이블 할 수 있는, "const AnalysisOptions EnableAnnotations"로 명명되는 필드, 커넥터 및 콘테이너의 검출을 인에이블 및 디세이블 하는, "const AnalysisOptions EnableConnectorsAndContainers"로 명명되는 필드, 및 서로 다른 순차적인 분석 처리들(예컨대, 파싱 처리 및 후속하는 인지 처리)의 사용 사이에 소프트웨어 애플리케이션(1701)으로 분석 결과들의 리턴하는 것을 인에이블 및 디스에이블하는, "const AnalysisOptions EnableIntermediateResults"로 명명되는 필드를 포함할 수 있다. 이 타입은 또한 리스트의 검출을 인에이블 및 디스에이블하는 "const AnalysisOptions EnableLists"로 명명되는 필드 및 테이블의 검출을 인에이블 및 디스에이블하는 "const AnalysisOptions EnableTables"로 명명되는 필드를 가질 수 있다. 이 열거된 타입은 텍스트 인식 분석 처리를 인에이블 및 디스에이블하는, "const AnalysisOptions EnableTables"로 명명되는 필드를 더 포함할 수 있다. 그러나, 추가적인 분석 처리들(또는 동일한 분석 처리의 다른 버전들)이 이용가능할 경우, 이러한 타입은 따라서 부가적인 분석 옵션들을 포함할 수 있음을 알아야 한다. The ink analysis API may also have analysis options of the type listed. This type may include one or more fields that specify how ink data will be analyzed by the analysis process, such as a field named "const AnalysisOptions Default", which enables all options available for the analysis process. For example, this field may enable text recognition, use of tables, use of lists, use of comments, use of connectors and containers, and use of intermediate results. This type also enables the field named "const AnalysisOptions EnableAnnotations", which can enable and disable the detection of annotations, the field named "const AnalysisOptions EnableConnectorsAndContainers", which enables and disables the detection of connectors and containers, And enabling and disabling the return of analysis results to the software application 1701 between the use of different sequential analysis processes (eg, parsing process and subsequent cognitive processing), named "const AnalysisOptions EnableIntermediateResults". May contain fields. This type may also have a field named "const AnalysisOptions EnableLists" that enables and disables detection of lists and a field named "const AnalysisOptions EnableTables" that enables and disables detection of tables. This enumerated type may further include a field named "const AnalysisOptions EnableTables", which enables and disables text recognition analysis processing. However, it should be appreciated that if additional analysis processes (or other versions of the same analysis process) are available, this type may thus include additional analysis options.
또한, 잉크 분석 API는 AnalysisResultsEventArgs 클래스를 포함할 수 있다. 이 클래스는 분석 결과들을 포함하고, 분석 결과 (AnalysisResult) 이벤트가 제기될 경우 소프트웨어 애플리케이션(1701)으로 리턴되는 데이터 구조를 생성하는, "public AnalysisResultsEventArgs()"로 명명되는 생성자를 가질 수 있다. 이 클래스는 분석 처리를 수행하는 잉크 분석기(InkAnalyze)를 식별하는, "InkAnalyzer InkAnalyzer {get;}"으로 명명되는 속성을 포함할 수 있다. The ink analysis API may also include an AnalysisResultsEventArgs class. This class may have a constructor named "public AnalysisResultsEventArgs ()" that contains the results of the analysis and creates a data structure that is returned to the software application 1701 when an AnalysisResult event is raised. This class may include an attribute named "InkAnalyzer InkAnalyzer {get;}", which identifies an ink analyzer (InkAnalyze) that performs an analysis process.
그 API는 또한 기하학적 라인을 나타내는 "Line" 오브젝트의 사용을 인식하는 몇가지 타입의 운영체제가 유용할 수 있는 라인(Line) 클래스를 가질 수 있다. 이 클래스는 "public Line(Point beginPoint, Point endPoint)"로 명명되는 생성자와 같은, Line 오브젝트을 생성하는 생성자를 포함할 수 있다. 이 클래스는 또한 라인 오브젝트의 시작점을 나타내는, "public Point BeginPoint {get; set;}"로 명명되는 속성, 및 라인 오브젝트의 종료점을 나타내는, "public Point EndPoint {get; set;}"로 명명되는 속성과 같은 여러 속성들을 포함할 수 있다. The API may also have a Line class, which may be useful to several types of operating systems that recognize the use of "Line" objects that represent geometric lines. This class can contain a constructor that creates a Line object, such as a constructor named "public Line (Point beginPoint, Point endPoint)". This class also contains an attribute named "public Point BeginPoint {get; set;}", which indicates the starting point of the line object, and an attribute named "public Point EndPoint {get; set;}", which indicates the ending point of the line object. It can contain multiple attributes, such as
이러한 클래스들에 부가하여, 잉크 분석 API는 또한 인식 대안(Recognition Alternate) 클래스를 포함할 수 있다. 이 클래스는, 인식기의 사전과 비교되는 잉크의 세그먼트들에 대한 가능한 단어 매치를 나타내는 엘리먼트들을 포함할 수 있다. 예를 들어, 이러한 클래스는 단일 라인 상에 존재하는 인식 대안(RecognitionAlternate) 오브젝트의 어센더 라인(ascender line)을 제공하는(라인이 두 지점들로 표현됨), "Line Ascender {get;}"로 명명되는 속성, 단일 라인 상에 존재하는 인식 대안 오브젝트의 기준선(Baseline)을 제공하는, "public Line Baseline {get;}"으로 명명되는 속성, 단일 라인 상에 존재하는 인식 대안 오브젝트의 디센더 라인(descender line)을 제공하는, "Line Descender {get;}"으로 명명되는 속성을 포함할 수 있다. 이 클래스는 또한 현재 인식 대안 오브젝트에 대한 인지 결과(RecognitionResults)를 제공하는, "RecognitionResult Extract {get;}"로 명명되는 속성을 포함할 수 있다. 이 속성은 예를 들어, 단어에 대한 인식 결과 오브젝트를, 그 단어를 포함하는 라인에 대한 인식 결과 오브젝트로부터 추출하기 위해 사용될 수 있다. In addition to these classes, the ink analysis API may also include a Recognition Alternate class. This class may include elements that represent possible word matches for segments of the ink compared to the dictionary of the recognizer. For example, this class is named "Line Ascender {get;}", which provides an ascender line of RecognitionAlternate objects that exist on a single line (the line is represented by two points). Attribute named "public Line Baseline {get;}", which provides a baseline of a recognition alternative object present on a single line, a descender line of a recognition alternative object present on a single line. line), which may contain an attribute named "Line Descender {get;}". This class may also contain an attribute named "RecognitionResult Extract {get;}", which provides RecognitionResults for the current recognition alternative object. This attribute can be used, for example, to extract a recognition result object for a word from the recognition result object for the line containing the word.
이는 또한 단일 라인 상에 존재하는 인식 대안 오브젝트에 대한 중심선(midline)을 제공하는, "Line Midline {get;}"으로 명명되는 속성, 잉크 오브젝트에 포함된 스트록들의 콜렉션을 제공하는(즉, 이는 인식 결과(RecognitionResult)에 연관된 스트록들을 나타내는 스트록 콜렉션(StrokeCollection)을 제공함), "StrokeCollection Strokes {get;}"으로 명명되는 속성 및 인식 결과(RecognitionResult)와 연관된 스트록들을 나타내는 하나 이상의 잉크 오브젝트들에 포함되는 스트록들의 콜렉션을 제공하는, "StrokeCollection[] StrokesArray {get;}"으로 명명되는 속성을 포함할 수 있다. 이 클래스는 또한 제스처 또는 인식 대안 오브젝트 인식시에 인식 분석 처리에 의해 결정되는 신뢰도 레벨(예를 들어, 강력, 중간 또는 열악)을 제공하는, "RecognitionConfidence RecognitionConfidence {get;}"로 명명되는 속성을 포함할 수 있다. 비선형 노드들(non-line nodes)에 대해, 관련 콘텍스트 노드들의 자식들의 최하위 인식 신뢰도(RecognitionConfidence)가 리턴될 것이다. 이는 또한 대안의 결과 스트링을 특정하는 "string RecognizedString {get;}"으로 명명되는 속성을 포함할 수 있다. 따라서, 단어 콘텍스트 노드보다 상위의 임의의 콘텍스트 노드에 대해, 그 결과들 스트링은 이 메소드에 의해 함께 연관(concatenate)된다. 예를 들어, 라인 노드는 모든 자식 노드들 또는 단어 노드의 결과들을 차례로 포함하는 결과 스트링을 포함할 것이다. 이어서, 단락 노드는 모든 그 자식 노드들 또는 라인 노드들의 결과들을 포함하는 결과 스트링을 포함할 것이다. It also provides a property named "Line Midline {get;}", which provides a midline for recognition alternative objects that exist on a single line, that is, a collection of strokes contained in the ink object (ie, it is recognized Provide a StrokeCollection representing the strokes associated with the result (RecognitionResult), a attribute named "StrokeCollection Strokes {get;}", and a stroke contained in one or more ink objects representing the strokes associated with the RecognitionResult. It may contain an attribute named "StrokeCollection [] StrokesArray {get;}", which provides a collection of fields. This class also contains an attribute named "RecognitionConfidence RecognitionConfidence {get;}", which provides a confidence level (e.g., strong, medium or poor) determined by the recognition analysis process upon gesture or recognition alternative object recognition. can do. For non-line nodes, the lowest recognition confidence of the children of the relevant context nodes will be returned. It may also include an attribute named "string RecognizedString {get;}" that specifies an alternative result string. Thus, for any context node above the word context node, the results strings are concatenated together by this method. For example, a line node would contain a result string that in turn contains the results of all child nodes or word nodes. The paragraph node will then contain a result string that contains the results of all its child nodes or line nodes.
인식 대안(Recognition Alternate) 클래스는 또한 예를 들어, 알려진 텍스트 범위에 대응하는 각각의 잉크 오브젝트로부터 스트록 콜렉션(StrokeCollection)을 특정하는 "StrokeCollection[] GetStrokeArrayFromTextRange(int selectionstart, int selectionlength)"로 명명되는 메소드를 포함하는 하나 이상의 메소드를 포함할 수 있다. 이 클래스는 또한, 스트록들의 알려진 입력 콜렉션을 포함하고 인식기가 대안들을 제공할 수 있는 가장 작은 스트록들의 콜렉션을 지정하는, "StrokeCollection[] GetStrokesFromStrokesArrayRanges(StrokeCollection[] strokesArray)"로 명명되는 메소드를 포함할 수 있다. 특히, 스트록들은, 콜렉션에 대한 스트록 인덱스들의 어레이를 각각 포함하는 잉크 오브젝트의 어레이에 의해 리턴된다. 이 메소드에 의해 리턴되는 잉크 스트록들의 콜렉션은, 입력 콜렉션에 매칭될 수 있거나, 모든 입력 스트록들을 포함하는 최소의 인식 결과의 일부에만 입력 콜렉션이 매칭되는 경우에는 더 클 수 있음을 알아야 한다. 이 클래스는 스트록들의 알려진 입력 콜렉션을 포함하고, 인식기가 대안들을 제공할 수 있는 최소의 스트록들의 콜렉션을 지정하는, "StrokeCollection GetStrokesFromStrokesRanges(StrokeCollection strokes)"로 명명되는 메소드 및 공지된 텍스트 범위에 대응하는 스트록 콜렉션(StrokeCollection)을 특정하는 "StrokeCollection GetStrokesFromTextRanges(int selectionstart, int selectionlength)"로 명명되는 메소드를 더 포함할 수 있다. The Recognition Alternate class also uses a method named "StrokeCollection [] GetStrokeArrayFromTextRange (int selectionstart, int selectionlength)" that specifies, for example, a StrokeCollection from each ink object corresponding to a known text range. You can include one or more methods to include. This class may also contain a method named "StrokeCollection [] GetStrokesFromStrokesArrayRanges (StrokeCollection [] strokesArray)" that contains a known input collection of strokes and specifies the smallest collection of strokes that the recognizer can provide alternatives to. have. In particular, the strokes are returned by an array of ink objects that each include an array of stroke indices for the collection. It should be noted that the collection of ink strokes returned by this method may be matched to the input collection or larger if the input collection matches only a portion of the minimal recognition result that includes all the input strokes. This class contains a known input collection of strokes and a stroke corresponding to a known text range and method named "StrokeCollection GetStrokesFromStrokesRanges (StrokeCollection strokes)", which specifies the minimum collection of strokes that the recognizer can provide alternatives to. The method may further include a method named "StrokeCollection GetStrokesFromTextRanges (int selectionstart, int selectionlength)" for specifying a collection (StrokeCollection).
이 클래스는, 인식기가 알려진 스트록들의 세트를 포함하는 대안을 리턴할 수 있는 최소 범위의 인식된 텍스트를 특정하는, "void GetTextRangeFromStrokes(ref int selectionstart, ref int selectionend, StrokeCollection strokes)"로 명명되는 메소드 및 인식기가 알려진 스트록들의 세트를 포함하는 대안을 리턴할 수 있는 최소 범위의 인식된 텍스트를 지정하는, "void GetTextRangeFromStrokesArray(ref int selectionstart, ref int selectionend, StrokeCollection[] strokesarray)"로 명명되는 메소드를 더 포함할 수 있다. 이는, "RecognitionAlternateCollection SplitWithConstantPropertyValue(GUID propertyType)"으로 명명되는 메소드를 가질 수 있으며, 이 메소드는, 이 메소드가 호출되는 대안의 분할(division)인 대안들의 콜렉션을 리턴한다. 콜렉션 내의 각각의 대안은 메소드로 전달되는 속성에 대해 동일한 속성 값을 갖는 인접하는 인식 세그먼트들을 포함한다. 예를 들어, 이 메소드는 인식 결과 내의 신뢰성 레벨 경계들(강력, 중간 또는 열악), 라인 경계들 또는 세그먼트 경계들로 원래의 대안을 분할하는 대안들을 획득하기 위해 사용될 수 있다. 이는 대안의 인식기 신뢰도와 같은 그 대안의 공지된 속성의 값을 지정하는, "byte[] GetPropertyValve(GUID propertyType)"으로 명명되는 메소드를 더 포함한다. 그러나, 모든 인식 분석 처리들이 모든 속성 타입들에 대한 값을 제공하는 것은 아니다. 그러므로, 이 메소드는 관련 인식 분석 처리에 의해 지원되는 타입들에 대한 데이터를 제공한다. This class contains a method named "void GetTextRangeFromStrokes (ref int selectionstart, ref int selectionend, StrokeCollection strokes)" that specifies the minimum range of recognized text from which the recognizer can return an alternative containing a set of known strokes. It further includes a method named "void GetTextRangeFromStrokesArray (ref int selectionstart, ref int selectionend, StrokeCollection [] strokesarray)", which specifies the minimum range of recognized text from which the recognizer can return an alternative containing a set of known strokes. can do. It may have a method named "RecognitionAlternateCollection SplitWithConstantPropertyValue (GUID propertyType)", which returns a collection of alternatives that is the division of the alternative in which this method is called. Each alternative in the collection includes adjacent recognition segments that have the same attribute value for the attribute passed to the method. For example, this method can be used to obtain alternatives for dividing the original alternative into confidence level boundaries (strong, medium or poor), line boundaries or segment boundaries in the recognition result. It further includes a method named “byte [] GetPropertyValve (GUID propertyType)” that specifies the value of that alternative known property, such as the alternative recognizer reliability. However, not all perceptual analysis processes provide values for all attribute types. Therefore, this method provides data for the types supported by the relevant recognition analysis process.
잉크 분석 API는 또한 인식 대안 콜렉션 (Recognition Alternate Collection) 클래스를 포함할 수 있다. 상술한 많은 클래스들과 같이, 이 클래스는 인식 대안 콜렉션(RecognitionAlternateCollection) 오브젝트를 생성하기 위한 "RecognitionAlternateCollection()"으로 명명되는 생성자를 포함할 수 있다. 이러한 클래스는 또한 많은 오브젝트들 또는 대안의 인식 값들의 콜렉션에 포함되는 콜렉션들을 제공하는, "Count {get;}"으로 명명되는 속성, 대안의 인식 값들의 콜렉션으로의 액세스가 소프트웨어 애플리케이션(1701)(즉, "스레드 안전(thread safe)")과 동기화되는지 여부를 나타내는 값을 제공하는, "IsSynchronized {get;}"으로 명명되는 속성, 및 대안의 인식 값들의 콜렉션으로의 액세스를 동기화하기 위해 사용될 수 있는 오브젝트를 제공하는, "SyncRoot {get;}"으로 명명되는 속성과 같은, 많은 속성들을 포함할 수 있다. The ink analysis API may also include a Recognition Alternate Collection class. Like many of the classes described above, this class may include a constructor named "RecognitionAlternateCollection ()" for creating a RecognitionAlternateCollection object. This class also provides access to a collection of alternative recognition values, an attribute named "Count {get;}", which provides collections included in the collection of many objects or alternative recognition values. Namely, an attribute named "IsSynchronized {get;}", which provides a value indicating whether it is synchronized with "thread safe", and can be used to synchronize access to a collection of alternative recognition values. It can contain many attributes, such as an attribute named "SyncRoot {get;}", which provides an object.
이 클래스는 또한 지정된 목적지 어레이 인덱스에서 시작하는 특정 1차원 어레이에 대안의 인식 값들의 현재 콜렉션의 모든 엘리먼트들을 카피하는, "virtual void CopyTo(Array array, int index)"로 명명되는 메소드, 및 각 생성이 대안의 인식 값들의 콜렉션 내의 각 RecognitionAlternate(인식 대안)를 통해 열거하는 것을 호출자(callers)가 사용가능하게 하는 IEnumerable의 표준 구현인, "IEnumerable IEnumerableGetEnumerator()"로 명명되는 메소드와 같은 하나 이상의 메소드를 포함할 수 있다. 이 클래스는 또한, 인식 대안 값들의 콜렉션 내에 모든 오브젝트들을 포함하는 RecognitionAlternateCollectionEnumerator(인식 대안 콜렉션 열거자)를 리턴하는 "RecognitionAlternateCollectionEnumerator GetEnumerator()"로 명명되는 메소드를 포함할 수 있다. 이 메소드는, 예를 들어, 인식 대안 값들의 콜렉션에서 각 오브젝트를 검색하는데 사용될 수 있다. This class also creates a method named "virtual void CopyTo (Array array, int index)", which copies all the elements of the current collection of alternative recognition values into a particular one-dimensional array starting at the specified destination array index, and each generation One or more methods, such as a method named "IEnumerable IEnumerableGetEnumerator ()", a standard implementation of IEnumerable that allows callers to enumerate through each RecognitionAlternate in the collection of recognition values of this alternative. It may include. This class may also include a method named "RecognitionAlternateCollectionEnumerator GetEnumerator ()" that returns a RecognitionAlternateCollectionEnumerator that contains all the objects in the collection of recognition alternative values. This method can be used to retrieve each object, for example, from a collection of recognition alternative values.
잉크 분석 API는 추가적으로 Recognition Confidence (인식 신뢰도) 열거 및 Recognition Mode (인식 모드) 열거를 포함할 수 있으며, 각각은 인식 분석 처리에 관한 하나 이상의 필드들을 포함할 수 있다. 예를 들어, Recognition Confidence 클래스는, 인식 분석 처리가 대안의 인식 값들이 제공된 리스트에 정확한 결과가 있음을 확신함을 나타내는 "Intermediate"로 명명되는 필드, 인식 분석이 대안의 인식 값들이 제공된 리스트에 그러한 결과가 있음을 확신하지 못함을 나타내는 "Poor"로 명명된 필드, 및 인식 분석 처리가 대안의 인식 값들의 최상의 대안은 정확함을 확신함을 나타내는 "Strong"으로 명명되는 필드와 같은 다수의 필드들을 포함할 수 있다. The ink analysis API may additionally include Recognition Confidence enumeration and Recognition Mode enumeration, each of which may include one or more fields related to recognition analysis processing. For example, the Recognition Confidence class may include a field named "Intermediate" that indicates that the recognition analysis process is confident that the list provided with alternative recognition values is the correct result, and that the recognition analysis is present in a list provided with alternative recognition values. Includes a number of fields, such as a field named "Poor" indicating that there is no assurance that there is a result, and a field named "Strong" indicating that the recognition analysis process is convinced that the best alternative of alternative recognition values is correct. can do.
마찬가지로, 인식 모드(Recognition Mode) 클래스는 인식 분석 처리가 전자 잉크 데이터를 어떻게 해석하며, 그리하여 인식 결과 스트링을 어떻게 결정하는지를 명시하는 필드들을 포함할 수 있다. 예를 들어, 이 클래스는 인식 분석 처리가 콘텍스트에 대해 특정된 팩토이드에 기초하여 인식 결과를 지배함(coerce)을 명시하는, "Coerce"로 명명되는 필드, 및 인식 분석 처리가 단일 라인으로서 전자 잉크 데이터를 취급하는 것을 특정하는 "Line"으로 명명된 필드를 포함할 수 있다. 이 클래스는 또한 인식 분석 처리가 어떠한 인식 모드도 적용하지 않음을 특정하는, "None"으로 명명되는 필드, 및 인식 분석 처리가 전자 잉크 데이터를 단일의 단어 또는 문자를 형성하는 것으로 취급함을 명시하는, "Segment"로 명명되는 필드를 포함할 수 있다. 또한 이 클래스는 다수의 분할(segmentation)을 디스에이블하는, "TopInkBreaksOnly"로 명명되는 필드를 포함할 수 있다. Similarly, the Recognition Mode class may include fields that specify how the recognition analysis process interprets the electronic ink data and thus how to determine the recognition result string. For example, this class is a field named "Coerce" that specifies that the recognition analysis process governs the recognition result based on the factoroid specified for the context, and that the recognition analysis process is a single line. It may include a field named "Line" that specifies handling of electronic ink data. This class also specifies that the field named "None" specifies that the recognition analysis process does not apply any recognition mode, and that the recognition analysis process treats the electronic ink data as forming a single word or character. , May contain a field named "Segment". This class may also contain a field named "TopInkBreaksOnly", which disables multiple segments.
또한, 잉크 분석 API는 두 개의 콘텍스트 노드들이 어떻게 함께 링크될 수 있는지를 정의하는, 콘텍스트 링크 (Context Link) 클래스를 포함할 수 있다. 콘텍스트 링크(ContextLink) 오브젝트 자체는 두 개의 콘텍스트 노드들, 그 링크의 방향 및 링크의 타입을 나타낸다. 이 클래스는, 또 다른 콘텍스트 노드로부터 링크되어 있는 소스 콘텍스트 노드를 지정하는, "ContextNode SourceNode {get;}"으로 명명되는 속성, 소스와 목적지 콘텍스트 노드들 사이에 존재하는 링크 관계의 타입을 특정하는, "ContextLinkType LinkType {get;}"으로 명명된 속성, 및 주문형 링크(custom link)가 사용되고 있음을 명시하는, "CustomLinkType {get;}"으로 명명되는 속성을 포함할 수 있다. 이 상황은, API가 인식할 수 있는 범위를 넘어서는 애플리케이션 특정 링크들을 나타내기 위해 잉크 분석기 API의 링킹 시스템을 사용할 것을 애플리케이션이 결정하는 경우에 발생할 것이다. The ink analysis API may also include a context link class, which defines how two context nodes can be linked together. The contextlink object itself represents two context nodes, the direction of the link and the type of the link. This class specifies an attribute named "ContextNode SourceNode {get;}" that specifies a source context node that is linked from another context node, and specifies the type of link relationship that exists between the source and destination context nodes. An attribute named "ContextLinkType LinkType {get;}", and an attribute named "CustomLinkType {get;}", which specifies that a custom link is being used. This situation will occur if the application decides to use the ink analyzer API's linking system to represent application specific links beyond what the API can recognize.
이 클래스는 또한 또다른 콘텍스트 노드로부터 링크되는 목적지 콘텍스트 노드를 명시하는, "ContextNode DestinationNode {get'}"으로 명명되는 속성을 포함한다. 이 클래스에 이용가능한 두 개의 생성자가 있을 수 있으며, 이는 존재하는 소스와 목적지 콘텍스트 노드들 간의 관계를 생성한다. This class also contains an attribute named "ContextNode DestinationNode {get '}", which specifies a destination context node that is linked from another context node. There can be two constructors available to this class, which create a relationship between the existing source and destination context nodes.
이 클래스는 또한 두 개의 콘텍스트 노드들에 의해 공유되는 관계의 타입을 정의하는, "ContextLinkType enum"으로 명명되는 열거를 포함할 수 있다. 이러한 여러 가지 링크 타입들은 예를 들어, 하나의 노드가 다른 노드에 고정(anchored)됨을 기술하는 "AnchorsTo" 타입을 포함할 수 있다. 두 가지 노드들 모두는 파싱 상황에 기초하여 적절하게 소스 노드(SourceNode) 또는 목적지 노드(DestinationNode) 속성을 사용할 수 있다. 링크 타입들은 또한 하나의 노드가 다른 노드를 포함함을 기술하는, 타입 "Contains"을 포함할 수 있다. 이러한 관계에서, 콘테이너 노드(container)는 SourceNode로서 참조될 수 있는 반면, 콘테이니(containee) 노드는 목적지 노드(DestinationNode)로서 참조될 수 있다. 링크 타입들은 하나의 노드가 또 다른 노드를 포인팅함을 기술하는, "PointTo" 타입을 더 포함할 수 있다. 이러한 관계에 대해, 포인팅하는 노드는 소스 노드(SourceNode)로서 지칭될 수 있는 반면, 포인팅되는 노드는 DestinationNode로서 지칭될 수 있다. 또한, 링크 타입들은 하나의 노드가 다른 노드로부터 포인팅됨을 기술하는, "PointsForm" 타입을 가질 수 있다. 이러한 관계에서, 다른 노드로부터 포인팅하는 노드는 소스 노드(SourceNode)로서 지칭될 수 있는 반면, 다른 노드로부터 포인팅되는 노드는 목적지 노드(DestinationNode)로서 지칭될 수 있다. This class may also contain an enumeration named "ContextLinkType enum", which defines the type of relationship shared by the two context nodes. These various link types may include, for example, an "AnchorsTo" type that states that one node is anchored to another node. Both nodes may use the Source Node or DestinationNode attributes as appropriate based on the parsing situation. Link types may also include type "Contains", describing that one node includes another node. In this relationship, a container node may be referred to as a SourceNode, while a container node may be referred to as a DestinationNode. The link types may further include a "PointTo" type, describing that one node points to another node. For this relationship, the pointing node may be referred to as a source node, while the pointing node may be referred to as a DestinationNode. In addition, link types may have a "PointsForm" type, describing that one node is pointed from another node. In this relationship, a node pointing from another node may be referred to as a source node, while a node pointing from another node may be referred to as a destination node.
링크 타입들은 추가적으로 하나의 노드가 또 다른 노드의 길이를 수평으로 실행함(run)을 기술하는, "SpansHorizontally" 타입, 및 하나의 노드가 또다른 노드의 길이를 수직으로 실행함을 기술하는, "SpansVertically" 타입을 포함할 수 있다. 이러한 타입들에 대해, 보통 마지막에 기록되는 다른 노드를 커버하는(스트라이크아웃, 언더라인, 여백 표시 바) 노드는 소스 노드(SourceNode)로서 언급될 수 있는 반면, 가로질러지는(spanned) 노드는 목적지 노드(DestinationNode)로서 언급될 수 있다. 링크 타입들은 또한 주문형 링크 타입이 사용되었음을 기술하는, "Custom" 타입을 포함할 수 있다. 이 값이 사용되는 경우, 콘텍스트 링크(ContextLink) 오브젝트에 대한 "CustomLinkType" 속성은 이 링크의 목적에 관 보다 상세하게 제공할 수 있다. The link types additionally describe the type "SpansHorizontally", which describes one node running the length of another node horizontally, and that one node executes the length of another node vertically, " May contain type SpansVertically. For these types, a node that normally covers the other node that is written last (strikeout, underline, margin bar) may be referred to as the SourceNode, while the spanned node is the destination. It may be referred to as a DestinationNode. Link types may also include a "Custom" type, which describes that a custom link type was used. If this value is used, the "CustomLinkType" attribute for the ContextLink object can provide more detail about the purpose of this link.
따라서, 잉크 분석기 API는 문서 내의 전자 잉크를 비동기적으로 분석하기 위한 여러 기능들 및 서비스들을 제공하며, 이어서 상술한 바와 같이 분석 처리의 결과들을 문서의 현재 상태로 조정한다. 또한, 앞서 기재된 여러 클래스들은, Microsoft Windows 운영 환경, Microsoft COM 운영 환경, Unix 또는 Linux 운영 환경, 또는 임의의 다른 적절한 컴퓨터 운영 환경과 같은 여러가지 운영 체제들 및 운영 환경들에 적용될 수 있음을 이해해야 한다. 게다가, 본 발명의 여러가지 구현들에 따른 응용 프로그래밍 인터페이스가 앞서 기재된 하나 이상의 클래스 구성요소들을 생략할 수 있거나, 또는 원하는 서비스 또는 기능성을 제공하기 위해 부가적인 구성요소들을 포함할 수 있음을 이해해야 한다. Thus, the ink analyzer API provides several functions and services for asynchronously analyzing electronic ink in a document, and then adjusts the results of the analysis process to the current state of the document as described above. In addition, it should be understood that the various classes described above may apply to various operating systems and operating environments, such as the Microsoft Windows operating environment, the Microsoft COM operating environment, the Unix or Linux operating environment, or any other suitable computer operating environment. In addition, it should be understood that an application programming interface in accordance with various implementations of the invention may omit one or more of the class components described above, or may include additional components to provide a desired service or functionality.
<조정><Adjust>
상술한 바와 같이, 본 발명의 여러 실시예들은, 문서(1703) 내의 미분석 전자 잉크가 배경 분석 처리에 의해 분석되는 동안, 소프트웨어 애플리케이션(1701)이 계속해서 동작하는 것을 허용한다. 따라서, 소프트웨어 애플리케이션(1701)은, 분석 처리의 결과들과 충돌할 문서(1703)를 다수의 방식으로 변경할 수 있다. 예를 들어, 소프트웨어 애플리케이션(1701)은 문서(1703)로 새로운 전자 잉크 데이터(1705)를 입력할 수 있거나, 또는 기존의 전자 잉크 데이터(1705)를 문서(1703)로부터 삭제할 수 있다. 또한, 소프트웨어 애플리케이션(1701)은 기존의 전자 잉크 데이터(1705)의 위치를 이동시키거나 기존의 전자 잉크 데이터(1705)의 속성들을 변경함으로써 기존의 전자 잉크 데이터(1705)를 편집할 수 있다. 또한, 소프트웨어 애플리케이션(1701)은 기존의 전자 잉크 데이터(1705)에 영향을 미치는 방식으로 비-잉크 문서 엘리먼트들(1707)을 추가, 삭제 또는 변경할 수 있다. 예를 들어, 소프트웨어 애플리케이션(1701)은 전자 잉크 데이터(1705)에 주석으로 표시된 타이프라이팅된 텍스트를 삭제할 수 있다. As described above, various embodiments of the present invention allow the software application 1701 to continue to operate while the unanalyzed electronic ink in the document 1703 is analyzed by the background analysis process. Thus, the software application 1701 can change the document 1703 in a number of ways that would conflict with the results of the analysis process. For example, software application 1701 may enter new electronic ink data 1705 into document 1703, or delete existing electronic ink data 1705 from document 1703. In addition, the software application 1701 may edit the existing electronic ink data 1705 by moving the location of the existing electronic ink data 1705 or changing the attributes of the existing electronic ink data 1705. In addition, software application 1701 can add, delete, or change
소프트웨어 애플리케이션(1701)은 분석 처리에 의한 변경을 금지하기 위해, 기존의 전자 잉크 데이터(1705)를 추가적으로 "고정(pin)"할 수 있다. 예를 들어, 사용자가 잉크 스트록들의 그룹에 대한 레이아웃 또는 분류를 수동으로 지정하면, 소프트웨어 애플리케이션(1701)은, 파싱 처리에 의해 생성된 결과와 상관없이, 잉크 스트록들이 그 분류로 남아있는 것으로, 또는 특정 레이아웃 내에 남아있는 것으로 지정할 수 있다. 유사하게, 사용자는, 인식 처리에 의해 생성된 결과들과 무관하게, 잉크 스트록들의 그룹에 대한 특정 인식 결과를 지정할 수 있다. The software application 1701 may further "pin" the existing electronic ink data 1705 to prohibit changes by the analysis process. For example, if a user manually specifies a layout or classification for a group of ink strokes, the software application 1701 may indicate that the ink strokes remain in that classification, regardless of the results generated by the parsing process, or You can specify that it remains within a specific layout. Similarly, a user can specify a particular recognition result for a group of ink strokes, regardless of the results produced by the recognition process.
여러가지 타입들의 고정(pinning)이 본 발명의 서로 다른 구현들에 따라 사용될 수 있다. 예를 들어, 잉크 분석 도구(1901)는 소프트웨어 애플리케이션(1701)이 잉크를 "단단히(hard)" 고정하도록 허용할 수 있다. 이러한 배치에서는, 어떠한 잉크 스트록들도 고정된 노드 아래의 임의의 리프 노드들에 추가될 수 없으며, 어떠한 스트록들도 고정된 노드 아래의 임의의 리프 노드들로부터 제거될 수 없으며, 자식 노드들의 어떠한 추가 또는 삭제도 허용되지 않으며, 고정된 노드 아래의 임의의 노드들의 어떠한 리-페어런팅(re-parenting)도 허용되지 않는다. 대안으로 또는 부가적으로, 잉크 분석 도구(1901)는 늦은(late) 스트록들과의 "단단한" 고정을 허용할 수 있으며, 이는 늦은 스트록들이 지정된 조건들 하에서 추가되는 것을 허용하고, 스트록들이 고정된 노드 아래의 임의의 리프 노드들로부터 제거되는 것으로부터 금지하고, 자식 노드들의 추가 또는 제거를 금지하고, 고정된 노드 아래의 임의의 노드들의 리-페어런팅을 금지한다. 또한, 잉크 분석 도구(1901)는 소프트웨어 애플리케이션(1701)이 잉크를 대안으로 또는 부가적으로 "부드럽게(soft)" 고정하도록 허용할 수 있다. 이러한 배치로서, 어떠한 스트록들도 고정된 노드 아래의 임의의 리프 노드들로부터 제거될 수 없으며, 스트록들의 추가하도록 허용하기 위해 지정된 규칙들이 있으며(이는 늦은 스트록들에 대해 내부에 추가되도록 허용한다), 자식 노드들의 재그룹화, 추가 및 제거가 허용된다. 고정은 제거될 수 있으며, 일단 고정이 제거되면, 이전에 고정된 노드들 및 그들의 자식들은 "더티"로 고려될 수 있거나 재분석이 필요하게 됨을 알아야 한다. Various types of pinning can be used according to different implementations of the invention. For example, the
또한, 본 발명의 여러 실시예들에 따른 잉크 처리는 앞서 상세하게 논의된 바와 같이, 다수의 분석 처리들을 이용할 수 있다. 따라서, 제2의 다음 분석 처리가 실행중인 동안, 이전의 분석 처리의 결과들이 전자 잉크 데이터(1705)를 변경할 수 있다. 따라서, 분석 처리의 결과들이 문서(1703)의 현재 상태로 조정되어야 하므로, 문서(1703)의 현재 상태에 대해 유효한 결과들만이 분석 콘텍스트 오브젝트(1709)에 적용된다. 즉, 현재 분석 콘텍스트 오브젝트(1709)(및, 몇가지 경우에 그 분석 처리의 결과들)는 분석 처리의 결과들과 문서(1703)의 현재 상태 간의 불일치들(discrepancies) 또는 "충돌들"을 제외시키기 위해서 변경된다. In addition, ink processing according to various embodiments of the present invention may utilize multiple analysis processes, as discussed in detail above. Thus, while the second next analysis process is being executed, the results of the previous analysis process can change the electronic ink data 1705. Thus, since the results of the analysis process must be adjusted to the current state of the document 1703, only results valid for the current state of the document 1703 are applied to the analysis context object 1709. That is, the current analysis context object 1709 (and in some cases the results of the analysis process) excludes discrepancies or “collisions” between the results of the analysis process and the current state of the document 1703. To be changed.
조정 처리의 결과들이 유효하도록 하기 위해서, 문서(1703)의 상태가 조정 처리동안 변경되어서는 안됨을 유의해야 한다. 따라서, 조정 처리는, 소프트웨어 애플리케이션(1701)이 실행되는 1차 스레드를 사용하여 수행될 수 있고, 조정 처리를 실행하는 것은 소프트웨어 애플리케이션(1701)의 동작을 일시적으로 중지시킬 수 있다. 대안으로, 문서(1703)의 상태가 조정 처리 동안 변경되지 않음을 보장하기 위해, 데이터 구조 잠김(locking)과 같은 다른 기술들이 사용될 수 있다. 따라서, 사용자가 소프트웨어 애플리케이션(1701)의 성능에 만족하지 못하게 되는 것을 방지하기 위해, 조정 처리를 가능한 한 신속하게 수행하는 것이 바람직하다. 조정 처리의 또 다른 고려는, 분리된 배경 분석 스레드에서 실행되는 분석 처리의 성능에 대한 효과이다. 현재 분석 콘텍스트 오브젝트(1709)(즉, 문서(1703)의 현재 상태를 반영하는 분석 콘텍스트 오브젝트(1709))와 분석 결과들 간의 불일치가 지나치게 넓게 정의되면, 대량의 전자 잉크가 불필요하게 재분석될 것이다. 물론, 조정 중 문서의 보존성(integrity)을 보호하는 또 다른 방식들이 본 발명으로부터 벗어나지 않는 범위 내에서 사용될 수 있다. Note that, in order for the results of the adjustment process to be valid, the state of the document 1703 should not be changed during the adjustment process. Thus, the adjustment process may be performed using the primary thread on which the software application 1701 is executed, and executing the adjustment process may temporarily stop the operation of the software application 1701. Alternatively, other techniques, such as data structure locking, may be used to ensure that the state of the document 1703 does not change during the reconciliation process. Therefore, in order to prevent the user from becoming unsatisfied with the performance of the software application 1701, it is preferable to perform the adjustment process as quickly as possible. Another consideration of the reconciliation process is the effect on the performance of the analysis process executed in a separate background analysis thread. If a discrepancy between the current analysis context object 1709 (ie, the analysis context object 1709 reflecting the current state of the document 1703) and the analysis results is defined too broadly, a large amount of electronic ink will be unnecessarily reanalyzed. Of course, other ways of protecting the integrity of the document during adjustment can be used without departing from the present invention.
본 발명의 여러 실시예들로서, 분석 처리 및 조정 처리는 조정 처리의 효율성(efficiency) 및 편리성을 개선하기 위해 하나 이상의 다음 컨벤션(convention)들에 집착할 수 있다. 우선, 분석 처리는 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 문서 엘리먼트에 대한 노드들을 가능한 한 많이 재사용할 수 있다. 즉, 충돌들이 문서 엘리먼트들에 대한 새로운 비관련 노드들을 생성에 의해 회피되어서는 안된다. 또한, 조정 처리는 소프트웨어 애플리케이션(1701)에 의해 지정된 "고정(pinning)"을 존중해야 한다. 분석 처리는 통상적으로 소프트웨어 애플리케이션(1701)에 의한 고정(pinning) 지정들을 준수할 것이지만, 소프트웨어 애플리케이션(1701)은 분석 처리가 실행되는 동안 전자 잉크 데이터(1705)를 고정할 수 있다. 또한, 조정 처리는 어떠한 비어있는 노드들도 조정 처리가 완료된 후에 현재 분석 콘텍스트 오브젝트(1709)에 남아있지 않음을 보장해야 한다. 그러나, 하나 이상의 이러한 컨벤션들이 본 발명의 대안의 구현에 따라 생략되거나 준수되지 않을 수 있음을 이해해야 한다. 예를 들어, 본 발명의 몇 가지 구현은 분석 오브젝트(1709)가 비어있는 노드들을 포함하는 것을 허용할 수 있다. In various embodiments of the present invention, analytical processing and coordination processing may cling to one or more of the following conventions to improve the efficiency and convenience of coordination processing. First, the analysis process can reuse as many nodes as possible for document elements in the document independent analysis context object 1903. In other words, conflicts should not be avoided by creating new unrelated nodes for document elements. Also, the adjustment process must respect the "pinning" specified by the software application 1701. The analysis process will typically conform to pinning specifications by the software application 1701, but the software application 1701 can freeze the electronic ink data 1705 while the analysis process is running. In addition, the reconciliation process must ensure that no empty nodes remain in the current analysis context object 1709 after the reconciliation process is completed. However, it should be understood that one or more of these conventions may be omitted or not obeyed according to alternative implementations of the invention. For example, some implementations of the invention may allow the analysis object 1709 to include empty nodes.
이러한 컨벤션들에 부가하여, 조정 처리는 통상적으로 분석 콘텍스트 오브젝트(1709)에 의해 명기된 인터페이스 규칙들에 따라야 한다. 예를 들어, 본 발명의 몇가지 구현들에서, 분석 콘텍스트(1709)는, 어떠한 자식 노드도 갖지 않는 경우, 문서 엘리먼트에 대한 노드가 삭제되는 것을 허용하지 않을 수 있다. In addition to these conventions, the coordination process should typically follow the interface rules specified by the analysis context object 1709. For example, in some implementations of the invention, the analysis context 1709 may not allow a node for a document element to be deleted if it has no child nodes.
앞서 언급된 바와 같이, 분석 처리가 개시된 후에 행해진 분석 콘텍스트 오브젝트(1709)에 대한 변경과 몇가지 형태로 대립하는 문서 독립 분석 콘텍스트 오브젝트(1903)에 대한 변경이 분석 처리에 의해 행해진 경우, 충돌이 발생한다. 충돌은 두 가지 타입, 즉 필수적(mandatory) 충돌 및 임의적(discretionary) 충돌로 나눠질 수 있다. As mentioned above, a conflict occurs when a change to the document independent analysis context object 1903 which in some form opposes a change to the analysis context object 1709 made after the analysis process has been initiated. . Collisions can be divided into two types: mandatory and discretionary collisions.
필수적 충돌은, 분석 처리에 의해 문서 독립 분석 콘텍스트 오브젝트(1903)에 대해 행해진 변경을, 문서(1703)의 현재 상태에 대한 분석 콘텍스트 오브젝트(1709)에 적용하는 것이 불가능한 경우에 발생한다. 예를 들어, 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709)에서 노드를 "고정(pin)" 또는 고정(fix)하고, 분석 처리가 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 대응하는 노드를 변경하는 경우, 필수적인 충돌이 발생한다. 또한 분석 처리가 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 노드에 대해 임의의 종류의 변경을 행하였으나 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709)로부터 대응하는 노드를 삭제한 경우, 및 분석 처리가 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 대응하는 노드를 삭제하였을 때 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709) 내의 노드에 대해 스트록들 또는 자식 노드들을 추가한 경우에 필수적인 충돌이 발생할 것이다. 또한, 필수적인 충돌은, 분석 처리가 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 대응하는 노드에 대한 링크를 재정리(reorder)하거나 생성한 때 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709) 내의 노드를 삭제하는 경우에 발생할 것이다. A mandatory conflict occurs when it is impossible to apply a change made to the document independent analysis context object 1903 by the analysis process to the analysis context object 1709 for the current state of the document 1703. For example, software application 1701 "pins" or fixes a node in analysis context object 1709, and the analysis process changes the corresponding node in document independent analysis context object 1903. In this case, an essential conflict occurs. In addition, when the analysis process has made any kind of change to the node in the document independent analysis context object 1903, but the software application 1701 deletes the corresponding node from the analysis context object 1709, and the analysis processing is a document. An essential conflict will occur if the software application 1701 adds strokes or child nodes to a node in the analysis context object 1709 when deleting the corresponding node in the independent analysis context object 1903. In addition, an essential conflict is that the software application 1701 deletes a node in the analysis context object 1709 when the analysis process reorders or creates a link to the corresponding node in the document independent analysis context object 1903. Will happen if.
소프트웨어 애플리케이션(1701)이 분석 처리에 의해 문서 독립 분석 콘텍스트 오브젝트(1903)에서 변경된 값과 관련된 분석 콘텍스트 오브젝트(1709)에서의 값을 변경하는 경우, 임의적인 충돌이 발생하지만, 분석 콘텍스트 오브젝트(1709)에 대한 인터페이스의 고유의 제약들, 고정 제약들 및 엘리먼트 재사용 제약들은 분석 콘텍스트 오브젝트(1709)에 대해 분석 처리에 의해 이루어진 변경의 애플리케이션을 허용할 수 있다. 임의적 충돌은 분석 콘텍스트 오브젝트(1709)에 대한 변경으로서 적용되거나 또는 회피될 수 있다. 또한, 조정 처리는 몇 가지 타입의 임의적 충돌들을 모두 함께 간단히 무시할 수 있다. If the software application 1701 changes the value in the analysis context object 1709 associated with the value changed in the document independent analysis context object 1903 by the analysis process, an arbitrary conflict occurs, but the analysis context object 1709 Constraints, fixed constraints, and element reuse constraints inherent in the interface to may allow application of changes made by the analysis process to the analysis context object 1709. Arbitrary conflicts can be applied or avoided as a change to the analysis context object 1709. Also, the coordination process can simply ignore all types of arbitrary collisions together.
임의적인 충돌의 한가지 그래픽 예시는, 분석 콘텍스트 오브젝트(1709) 및 문서 독립 분석 콘텍스트 오브젝트(1903) 양자 모두의 원래의 노드가 잉크 스트록들 A 및 B에 대한 자식 노드들 A 및 B를 갖는 경우 발생한다. 소프트웨어 애플리케이션(1701)은 분석 콘텍스트 오브젝트(1709) 내에 잉크 스트록 C에 대한 제3 자식 C 노드를 추가할 수 있는 반면, 분석 처리는 문서 독립 분석 콘텍스트 오브젝트(1903)에 대해 잉크 스트록 D에 대한 제3 자식 노드 D를 추가한다. 본 발명의 여러 실시예들에서, 조정 처리는 분석 결과들에 기초하여 분석 콘텍스트 오브젝트(1709) 내의 부모 노드에 자식 노드 D를 추가할 수 있다. 그러나, 분석 콘텍스트 오브젝트(1709) 내의 부모 노드에 대한 이러한 변경이 금지되지 않은 동안, 부모 노드의 특성들이 소프트웨어 애플리케이션(1701)에 의해 희망하지 않을 수 있는 방식으로 변경된다. 예를 들어, 부모 노드와 연관된 잉크는 후속하여 분석되는 것으로 고려될 수 있으며, 잉크 스트록들의 그룹에 대한 잉크 C의 효과를 고려하기 위해 재분석되지 않을 수 있다. 또한, 이제 부모 노드에 대한 인식 결과들은, 잘못된 자식 노드들 또는 스트록들을 참조할 수 있으며, 이는 결코 다시 정정되지 않을 수 있다. One graphical example of an arbitrary collision occurs when the original node of both the analysis context object 1709 and the document independent analysis context object 1903 has child nodes A and B for ink strokes A and B. . Software application 1701 may add a third child C node for ink stroke C within analysis context object 1709, while the analysis process may add a third for ink stroke D to document independent analysis context object 1903. Add child node D. In various embodiments of the present invention, the coordination process may add the child node D to the parent node in the analysis context object 1709 based on the analysis results. However, while this change to the parent node in the analysis context object 1709 is not prohibited, the properties of the parent node are changed in a way that may not be desired by the software application 1701. For example, the ink associated with the parent node may be considered to be subsequently analyzed and may not be reanalyzed to account for the effect of ink C on the group of ink strokes. Also, recognition results for the parent node can now refer to erroneous child nodes or strokes, which can never be corrected again.
따라서, 본 발명의 각종 실시예들은, 분석 처리의 결과들에 기초하여 분석 콘텍스트 오브젝트(1709)를 업데이트하는 경우, 임의적인 충돌에 대한 변경들을 적용하지 않을 것이다. 이러한 기준이 임의적인 충돌들에 기초하여 변경들을 식별하고 차단하기 위해 추가적인 처리를 요구할 수 있지만, 이러한 기준은 비교적 구현하기 쉬우며 유지하기 간단하다. 물론, 본 발명의 또 다른 예시들은 다른 기준에 따라서 임의적인 충돌들에 대응하는 변경들을 구현할 수 있다. 특히, 이러한 대안의 예들은 분석 콘텍스트 오브젝트(1709)에서 영구적인 논리적 불일치 관계들을 생성하지 않는 임의적인 충돌들로부터의 변경들을 구현할 수 있다. Thus, various embodiments of the present invention will not apply changes to arbitrary conflicts when updating the analysis context object 1709 based on the results of the analysis process. Although this criterion may require additional processing to identify and block changes based on arbitrary conflicts, this criterion is relatively easy to implement and simple to maintain. Of course, still other examples of the invention may implement changes corresponding to arbitrary conflicts in accordance with other criteria. In particular, examples of such an alternative may implement changes from arbitrary conflicts that do not create permanent logical inconsistencies in the analysis context object 1709.
하나의 충돌이 또다른 충돌을 생성할 수 있다는 점에서 그 충돌들은 전이적 효과(transitive effect)를 가질 수 있음을 유의해야 한다. 예를 들어, 분석 처리가 라인에 대한 노드 L을 생성하고 이어서 노드 L의 자식 노드로서 단어에 대한 노드 W를 생성할 수 있다. 임의의 종류의 충돌에 기인하여 노드 L의 생성이 분석 콘텍스트 오브젝트(1709)에 적용되지 않았다면, 노드 W의 생성은 필수적 충돌이 될 것이다. Note that collisions can have a transitive effect in that one collision can create another collision. For example, the analysis process may generate node L for the line and then generate node W for the word as a child node of node L. If the creation of node L was not applied to the analysis context object 1709 due to any kind of collision, then the creation of node W would be an essential conflict.
본 발명의 여러 실시예들이 분석 처리의 결과들을 문서(1703)의 현재 상태로 조정하기 위해 로그-기반의 접근법을 이용할 수 있다. 이러한 로그-기반의 접근법에서, 문서 독립 분석 콘텍스트 오브젝트(1903)는 분석 처리에 의해 행해진 문서 독립 분석 콘텍스트 오브젝트(1903)에 대한 변경들의 로그를 포함한다. 로그는 예를 들어, 변화 기록들의 리스트의 형태일 수 있다. 이어서 각 변경은 (예를 들어, 문서 독립 분석 콘텍스트 오브젝트(1903)를 변경하기 위해 호출되었던 메소드를 식별함으로써) 행해진 변경의 타입, (예를 들어, 메소드가 호출된 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 노드를 식별함으로써) 변경이 행해진 문서 엘리먼트, 및 메소드 호출을 위한 논쟁(arguments)을 재생성하는데 요구되는 임의의 정보를 포함할 수 있다. 유리하게, 문서 독립 분석 콘텍스트 오브젝트(1903)는 잉크 분석 도구(1901) 및 분석 처리들에 의해 구현되기 때문에, (희망하는 경우, 로그가 대안으로 애플리케이션(1701)에 노출될 수 있는 경우에도) 변경 로그는 소프트웨어 애플리케이션(1701)에 보이지 않을 수 있다. Various embodiments of the present invention may use a log-based approach to adjust the results of analytical processing to the current state of document 1703. In this log-based approach, document independent analysis context object 1903 includes a log of changes to document independent analysis context object 1903 made by an analysis process. The log may be in the form of a list of change records, for example. Each change is then made by the type of change that was made (e.g., by identifying the method that was called to change the document independent analysis context object 1903), (e.g., the document independent analysis context object 1903 from which the method was invoked). By identifying a node within the document element), and any information required to recreate arguments for method invocation. Advantageously, the document independent analysis context object 1903 is implemented by the
변경 로그 접근법을 이용한 조정 처리를 실행하기 위해서, 잉크 분석 도구(1901)는 변경들의 발생 시간 순서대로 각각의 변경 기록을 조사한다. 즉, 잉크 분석 도구(1901)는 도 27에 도시된 처리를 구현할 수 있다. 우선, 단계 2701에서, 잉크 분석 도구(1901)는 변경을 적용하도록 요구되는 현재 분석 콘텍스트 오브젝트(1709) 내의 대응하는 노드들을 액세스하려고 시도한다. 이 검색 단계는, 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709)로부터 하나 이상의 필요한 노드들을 삭제한 경우, 실패할 수 있으며, 따라서 필수적 충돌로 이어질 수 있다. In order to execute the adjustment process using the change log approach, the
다음으로, 단계 2703에서, 잉크 분석 도구(1901)는 변경이 필수적 충돌을 생성하는지 아니면 임의적 충돌을 생성하는지를 결정한다. 이러한 결정을 하기 위한 절차는 이하에 보다 상세하게 설명될 것이다. 단계 2705에서, 잉크 분석 도구(1901)는, 조정 처리에 대한 기준에 의해 금지된 임의적인 충돌이나 필수적인 충돌을 생성하는 경우, 변경을 행하거나 아니면 변경을 금지한다. 예를 들어, 변경이 조정 처리에 대한 기준에 의해 금지되는 임의적 충돌이나 필수적 충돌을 생성할 경우, 잉크 분석 도구(1901)는 변경이 행해진 문서(1703)의 대응하는 영역을 나타내는 분석 콘텍스트 오브젝트(1709) 내의 노드들에 대해 변경들을 차단할 수 있다. 다른 한편 변경이 적용되면, 잉크 분석 도구(1901)는 분석 콘텍스트 오브젝트(1709) 내의 필수적인 노드들에 대해 원하는 변경을 행하기 위해 적절한 메소드를 호출할 수 있다. Next, at step 2703, the
분석 처리가 분석 콘텍스트 오브젝트(1709)에 새로운 엘리먼트 노드를 추가하지만 이어서 스트록 노드들을 새로운 노드로 이동시키는 것에 실패한다면, 분석 처리는 또한 스트록 노드들이 새로운 노드들로 성공적으로 이동되었음을 가정하고 엘리먼트 노드를 삭제하려고 하지 않을 것이다. 그러므로, 현재 분석 콘텍스트 오브젝트(1709) 내의 비어있는 노드에 대응하는 문서 독립 분석 콘텍스트 오브젝트(1903) 내에 엘리먼트 노드가 있을 것이다. 따라서, 일단 분석 콘텍스트 오브젝트(1709)에 대한 모든 변경들이 처리되기만 하면, 단계 2707에서, 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 노드들에 대응하는 분석 콘텍스트 오브젝트(1709) 내의 임의의 "비어있는" 노드들을 삭제하기 위해 그 문서 독립 분석 콘텍스트 오브젝트을 리뷰한다. 이러한 비어있는 노드 삭제 단계는 선택적인 것이며, 본 발명으로부터 벗어나지 않고 생략될 수 있다. If the analysis process adds a new element node to the analysis context object 1709 but subsequently fails to move the stroke nodes to the new node, the analysis process also assumes that the stroke nodes have been successfully moved to the new nodes and deletes the element node. I will not try. Therefore, there will be an element node in document independent analysis context object 1903 corresponding to an empty node in current analysis context object 1709. Thus, once all changes to the analysis context object 1709 have been processed, in step 2707, the
문서 독립 분석 콘텍스트 오브젝트(1903)가 임의의 비어있는 노드들을 포함해서는 안되며, 조정 처리는 비어있는 노드들이 문서 독립 분석 콘텍스트 오브젝트(1903) 내에 생성되는 것을 방지해야 함을 유의해야 한다. 이 단계는, 예외적으로, 비어있을지라도 분석 콘텍스트 오브젝트(1709)의 루트 노드를 삭제하려고 시도하지 않을 것임을 또한 알아야 한다. 마지막으로, 단계 2709에서, 잉크분석 도구(1901)는 소프트웨어 애플리케이션(1701)에 대해 문서 독립 분석 콘텍스트 오브젝트(1903)과 현재의 분석 콘텍스트 오브젝트(1709)의 분석 결과들 간의 임의의 충돌을 식별할 것이므로, 소프트웨어 애플리케이션(1701)은 다음의 분석 처리에서의 충돌들에 의해 영향을 받는 문서(1703)의 영역들을 포함할 수 있다. It should be noted that the document independent analysis context object 1903 should not include any empty nodes, and the adjustment process should prevent empty nodes from being created in the document independent analysis context object 1903. It should also be appreciated that this step, except in the absence of empty, will not attempt to delete the root node of the analysis context object 1709. Finally, at step 2709, the
이제 상기 단계 2703 내의 충돌들의 검출로 돌아가서, 일단 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 변경들에 대응하는 분석 콘텍스트 오브젝트(1709) 내의 모든 노드들이 액세스되면, 분석 콘텍스트 오브젝트(1709) 내의 각 노드에 대한 모든 다른 가능한 필수적 충돌들이 정적으로 검출될 수 있다(또는 대안으로, 필수적인 충돌의 부재가 각각의 노드에 대해 검출될 수 있다). 특히, 필수적인 충돌들은, 분석 콘텍스트 오브젝트(1709)에 대한 인터페이스에 의해 지정된 규칙들에 기초하여 검출될 수 있다. Returning to the detection of conflicts in step 2703 now, once all nodes in analysis context object 1709 corresponding to changes in document independent analysis context object 1903 have been accessed, for each node in analysis context object 1709 All other possible mandatory collisions can be detected statically (or alternatively, the absence of mandatory collisions can be detected for each node). In particular, necessary conflicts can be detected based on rules specified by the interface to analysis context object 1709.
그러나, 이러한 변경들은, 분석 콘텍스트 오브젝트(1709)의 인터페이스에 의해 강제되지 않지만, 대신에 두 가지 경우의 변경들이 모두 분석 콘텍스트 오브젝트(1709) 내의 동일한 노드에 영향을 미친 경우 분석 처리에 의해 행해진 변경들보다 우호적인, 소프트웨어 애플리케이션(1701)에 의해 행해진 변경들에 대한 재량에 의한 선택에 기초하므로, 임의적인 충돌들은 문서(1703)에 관한 추가적인 상태 정보 없이는 식별될 수 없다. 대신에, 이러한 충돌들은, 분석 콘텍스트 오브젝트(1709) 내의 노드들이 소프트웨어 애플리케이션(1701)에 의해 변경되었음을 결정하기 위해 현재 분석 콘텍스트 오브젝트(1709)를 문서 독립 분석 콘텍스트 오브젝트(1903)의 최초 버전과 비교함으로써, 검출될 수 있다. However, these changes are not enforced by the interface of the analysis context object 1709, but instead the changes made by the analysis process when both cases affect the same node in the analysis context object 1709. Since more favorable, based on discretionary selection of changes made by the software application 1701, arbitrary conflicts cannot be identified without additional status information about the document 1703. Instead, such conflicts are determined by comparing the current analysis context object 1709 with the original version of the document independent analysis context object 1903 to determine that the nodes within the analysis context object 1709 have been modified by the software application 1701. , Can be detected.
예를 들어, 조정 기준은 소프트웨어 애플리케이션(1701)에 의한 부모 노드로의 자식 스트록 노드의 추가 또는 삭제를 부모 노드에 대한 임의적인 충돌인 것으로 정의할 수 있다. 그러한 변경이 발생하는지를 결정하기 위해, 잉크 분석 도구(1901)는 현재 분석 콘텍스트 오브젝트(1709) 내의 노드에 의존하는 자식 스트록 노드들을 리뷰하고, 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전 내의 대응 노드에 의존하는 자식 스트록 노드들과 그들의 수 및 Guid(또는 다른 유일 식별자)를 비교할 수 있다. 자식 스트록 노드들이 이러한 실시예들(및 임의의 다른 원하는 실시예들)에 매칭한다면, 잉크 분석 도구(1901)는 분석 처리들에 의해 행해진 변경들을 분석 콘텍스트 오브젝트(1709) 내의 부모 노드에 적용할 수 있다. For example, the coordination criteria may define the addition or deletion of child stroke nodes to the parent node by the software application 1701 as being an arbitrary conflict against the parent node. To determine if such a change occurs, the
이러한 예에 계속하여, 로그 엔트리 내의 다음 변경은, 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 부모 노드에 종속하도록 이동되는 또다른 스트록 노드로 이루어 질 수 있다. 이러한 변경들로부터 어떠한 필수적 충돌도 없으면, 잉크 분석 도구(1901)는 분석 콘텍스트 오브젝트(1709)에 대응하는 변경을 행하도록 허용된다. 그러나, 잉크 분석 도구(1901)가 임의적 충돌이 존재하는지를 결정하기 위해 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전을 점검하는 경우, 현재 분석 콘텍스트 오브젝트(1709) 내의 부모 노드가 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전 내의 부모 노드보다 하나 이상의 의존성 스트록 노드를 더 갖는 것으로 결론 내릴 것이며, 따라서 이는 필수적 충돌이 존재하는 것으로 잘못된 결정을 할 것이다(즉, 행해진 변경들에 기초하여 충돌이 존재하는 것으로 결정할 것이다). Continuing with this example, the next change in the log entry may be made with another stroke node that is moved to depend on the parent node in the document independent analysis context object 1903. If there are no necessary conflicts from these changes, the
따라서, 로그-기반의 조정 처리는 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전과 현재의 분석 콘텍스트 오브젝트(1709) 간의 비교로부터 조정에 의해 행해진 이전의 변경들을 배제해야 한다. 본 발명의 여러 실시예들에서, 이러한 배제(exclusion)는, 임의의 리스트 엔트리들을 조사하고 충돌된 노드들의 리스트를 유지하기 전에, 현재 분석 콘텍스트 오브젝트(1709) 내의 모든 노드들을 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전 내의 그들에 대응하는 노드들과 비교함으로써 행해질 수 있다.Thus, the log-based reconciliation process must exclude previous changes made by the reconciliation from the comparison between the original version of the document independent analysis context object 1903 and the current analysis context object 1709. In various embodiments of the present invention, this exclusion may include all nodes in the current analysis context object 1709 prior to examining any list entries and maintaining a list of conflicting nodes. By comparing with nodes corresponding to them in the original version of 1903.
대안으로 또는 부가적으로, 본 발명의 여러 실시예들은, 문서 독립 분석 콘텍스트 오브젝트의 엘리먼트들에 대응하는 현재 분석 콘텍스트 오브젝트(1709)의 엘리컨트들의 캐쉬(cache)를, 대응하는 엘리먼트들이 검색될 때마다 사용되는 분석 결과들로 유지할 수 있다. 예비적인 전달은 없으나, 대응하는 엘리먼트가 임의적 충돌들이 없는 것으로 처음으로 결정된 때 캐쉬가 포퓰레이팅(populate)된다. 선택적으로, 캐쉬는 결과적으로 어떠한 엘리먼트들이 임의적 충돌들을 가졌는지를 기록할 수 있다. 이러한 접근법은 변경 로그가 짧은 경우 임의적인-충돌-발견-전달(discretionary-collision-finding-pass) 접근법보다 더 나은 성능을 갖지만, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903)는 많은 노드들을 포함하는 경우 더 나쁜 성능을 가질 수도 있다. 이는 또한 다른 접근법보다 더 복잡하지는 않다. Alternatively or additionally, various embodiments of the present invention provide a cache of elements of the current analysis context object 1709 that correspond to the elements of the document independent analysis context object when the corresponding elements are retrieved. You can keep the analysis results used every time. There is no preliminary delivery, but the cache is populated when the corresponding element is first determined to be free of arbitrary collisions. Optionally, the cache may record which elements have arbitrary collisions as a result. This approach has better performance than the discretionary-collision-finding-pass approach when the change log is short, but the document independent analysis context object 1903 with analysis results includes many nodes. If you do, you may have worse performance. It is also not more complicated than other approaches.
또한, 캐쉬 내의 엘리먼트들의 부모 콘텍스트 노드들이 캐쉬되어야 함을 알아야 한다. 특히, 자식 콘텍스트 노드에 대한 변경은 그의 부모 콘텍스트 노드의 속성들에 대한 변경으로 고려될 것이다. 따라서, 또한 이 시점에서 소프트웨어 애플리케이션(1701)에 의해 행해진 변경들에 대하여, 캐쉬 내에 저장된 콘텍스트 노드의 부모 콘텍스트 노드는 평가될 필요가 있다. 캐쉬 내의 각 콘텍스트 노드에 대한 부모 노드들의 캐싱(caching)은, 루트 노드가 전달될 때까지 또는 변경들이 검출될 때까지, 그 트리 끝까지(예를 들어, 부모 노드에서 조부모(grandparent) 노드 내지 증조부모(great-grandparent) 노드까지) 반복될 필요가 있다. 그러나, 많은 상황에서, 트리는 통상적으로 매우 깊어지지 않을 것이므로, 이러한 반복은 단지 소수의 노드들에 대해서만 행해진다. It should also be noted that the parent context nodes of the elements in the cache should be cached. In particular, a change to a child context node will be considered a change to the attributes of its parent context node. Thus, also for changes made by the software application 1701 at this point, the parent context node of the context node stored in the cache needs to be evaluated. Caching of the parent nodes for each context node in the cache is performed until the root node is delivered or until changes are detected, up to the end of the tree (e.g., from grandparent to grandparent to grandparent). (great-grandparent) nodes need to be repeated. However, in many situations, the tree will typically not be very deep, so this iteration is only done for a few nodes.
또한 본 발명의 다양한 예시들에서, 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전은 임의적 충돌들을 검출하는 목적으로만 사용된다. 임의적 충돌들의 검출이 본 발명의 예들에서 필수적이지 않다면, 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전 및 대응하는 엘리먼트 캐쉬는 모두 제거될 수 있다. 이러한 "로그-기반의" 접근법은, 어떠한 변경들이 분석 처리에 의해 행해졌는지를 결정하는데 보다 적은 검색을 요구하고 문서 독립 분석 콘텍스트(1903)에 대한 동작들이 개별적으로 처리되기 때문에, 이하에 기재되는 "비교-기반의(comparison-based)" 접근법보다는 유지하기 용이할 수 있으며, 그러므로, 새로운 타입의 동작을 추가하는 것이 다른 동작들에 쉽게 영향을 미치지 않는다. Also in various examples of the invention, the original version of the document independent analysis context object 1903 is used only for the purpose of detecting arbitrary conflicts. If detection of arbitrary conflicts is not essential in the examples of the present invention, both the original version of the document independent analysis context object 1903 and the corresponding element cache may be removed. This "log-based" approach requires less searching to determine what changes have been made by the analysis process and because the operations on the document independent analysis context 1903 are handled separately, the " It may be easier to maintain than a "comparison-based" approach, so adding a new type of operation does not easily affect other operations.
분석 결과들을 문서(1703)의 현재 상태로 조정하기 위한 "로그-기반의" 기술 대신에, 본 발명의 각종 실시예들이 조정을 위한 "비교-기반의" 접근법을 이용할 수 있다. 비교-기반의 접근법의 주요 구별되는 특징은 문서 독립 분석 콘텍스트 오브젝트(1903)에 대해 행해진 변경들의 어떠한 로그도 유지되지 않는다는 것이며, 그래서 이러한 기술은, 분석 결과들을 포함하는 문서 독립 분석 콘텍스트 오브젝트를 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전과 비교하는 것에 의하는 것 외에 분석 처리가 무엇을 했는지에 대한 정보를 수집하지 않는다. 그러므로, 이러한 접근법에서는, 임의적 충돌들에 대한 임의의 판단과는 무관하게, 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전이 항상 요구된다. Instead of a "log-based" technique for adjusting analysis results to the current state of document 1703, various embodiments of the present invention may use a "comparison-based" approach for adjustment. The main distinguishing feature of the comparison-based approach is that no log of changes made to the document independent analysis context object 1903 is maintained, so this technique allows document independent analysis context objects containing analysis results to be document independent. It does not collect information about what the analysis process did, except by comparing it with the original version of the analysis context object 1903. Therefore, in this approach, the original version of the document independent analysis context object 1903 is always required, regardless of any judgment on arbitrary conflicts.
이러한 접근법을 사용하여, 잉크 분석 도구(1901)는 우선 스트록 맵을 구축한다. 즉, 문서 독립 분석 콘텍스트 오브젝트(1903)의 최초 버전 내의 모든 잉크 리프 노드에 대해, 현재 분석 콘텍스트 오브젝트(1709) 내의 대응하는 노드가 있는 경우, 리프 노드는 해시 테이블(hash table)(또는 다른 적절한 데이터 구조)에 추가된다. 따라서, 해시 테이블은 문서 독립 분석 콘텍스트 오브젝트(1903)의 최초 버전 내의 스트록 GUID들(또는 다른 단일 노드 식별자들)을 현재 분석 콘텍스트 오브젝트(1709) 내의 리프 노드 참조들로 매핑한다. Using this approach, the
다음으로, 잉크 분석 도구(1901)는 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 오브젝트(1709)에서 변경하는 모든 노드들을 식별한다. 이는 상술한 임의적 충돌들을 결정하기 위한 기술들을 사용하여 행해진다. 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전 내의 각 노드에 대해, 현재 분석 콘텍스트 오브젝트(1709) 내에 대응하는 노드가 있고 그것이 몇 가지 중요한 방식으로 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전 내의 노드와 상이하다면, 잉크 분석 도구(1901)는 이 노드가 그 애플리케이션에 의해 변경되었으며 잠재적 충돌인 것으로 결정한다. 그러한 노드들에 대한 참조들은, 분석 콘텍스트 오브젝트(1709)에 추가되어서는 안 되는 분석 결과 노드들에 대응하는 제1 리스트 (이후 resultsNodesNotToAdd 리스트로서 언급됨) 및 임의적 충돌들을 생성하는 노드들의 제2 리스트에 저장된다. Next, the
문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전 내의 각 노드에 대해, 잉크 분석 도구(1901)는 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903) 및 현재 분석 콘텍스트 오브젝트(1709)에서의 대응하는 노드들을 찾는다. 분석 콘텍스트 오브젝트(1709) 내의 각 노드에 대해, 잉크 분석 도구(1901)는 소프트웨어 애플리케이션(1701)이 그 노드를 삭제했는지를 결정한다. 그러한 노드들은 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전에는 존재하지만, 분석 콘텍스트 오브젝트(1709)에는 어떠한 대응 노드도 없다. 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 대응하는 노드는, 존재할 경우, resultsNodesNotToAdd 리스트에 추가된다. For each node in the original version of the document independent analysis context object 1903, the
다음으로, 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 오브젝트(1903)로부터 노드를 삭제했는지 결정한다. 이것은, 분석 콘텍스트 오브젝트(1709) 내에 대응하는 노드가 있고 그것이 변경되지 않았지만 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903) 내에 대응하는 노드가 없을 때, 검출된다. 분석 처리에 의해 삭제된 노드들이 삭제된 노드들의 리스트에 저장된다. 그러한 노드는 현재 분석 콘텍스트 오브젝트(1709)에 추가되지 않지만, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903) 내에 어떠한 대응하는 노드도 없기 때문에 그 resultsNodesNotToAdd 리스트에서 없어지지 않는다. Next, the
소프트웨어 애플리케이션(1701)이 노드를 삭제하거나 변경하지 않았고, 분석 처리가 노드를 삭제하지 않은 경우, 잉크 분석 도구(1901)는 분석 처리가 노드를 변경했는지를 결정할 수 있다. 소프트웨어 애플리케이션(1701)에 의해 행해진 변경들을 검출하기 위해 사용하기 위한 상술한 바와 동일한 기술들이 분석 처리에 의해 행해진 변경들을 검출하는데에도 사용될 수 있다. 분석 처리에 의해 변경된 노드들은 resultsNodesNotToAdd 리스트에 추가되며, 변경들은 분석 콘텍스트 오브젝트(1709) 내의 노드들을 적절한 방법으로 호출함으로써 전파된다. 소프트웨어 애플리케이션(1701)과 분석 처리 어느 것에 의해서도 노드가 변경되거나 삭제되지 않았으면, 그 노드에는 아무것도 발생하지 않은 것이고, 노드는 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903)에 존재하며 분석 콘텍스트 오브젝트(1709)에 추가되지 않기 때문에, 잉크 분석 도구(1901)는 그 노드를 resultsNodesNotToAdd 리스트에 추가한다. If the software application 1701 did not delete or change the node, and the analysis process did not delete the node, the
다음으로, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903) 내의 각 노드에 대해, 노드가 resultsNodesNotToAdd 리스트에 없으면, 잉크 분석 도구(1901)는, 분석 콘텍스트 오브젝트(1709) 내에 대응하는 노드를 생성함으로써 분석 처리에 의한 노드에 대한 임의의 변경들을 전파할 수 있다. 분석 결과들 내의 노드들의 탐색(traversal)은 하향식(top-down) 전위(pre-order) 탐색을 이용하여 수행될 수 있으므로, 부모 노드들은 자식 노드들에 앞서 생성되는 것을 보증된다. Next, for each node in document independent analysis context object 1903 with analysis results, if the node is not in the resultsNodesNotToAdd list,
분석 콘텍스트 오브젝트(1709) 내의 새로운 리프 노드를 생성한 경우, 분석 결과들에 포함된 노드와 연관된 어떠한 잉크 스트록들도 분석 콘텍스트 오브젝트(1709) 내의 다른 노드들로부터 새로운 노드들로 또한 이동될 수 있다. 이어서 상술한 스트록 맵은 스트록들을 이동시키기 위한 소스 엘리먼트들을 식별하기 위해 사용될 수 있다. (필수적 충돌을 생성하는) 소스 엘리먼트가 존재하지 않는 경우, 또는 소스 엘리먼트가 상술한 임의적 충돌 리스트에 포함되는 경우, 잉크 스트록들은 이동되지 않는다. 분석 콘텍스트 오브젝트(1709)에 불필요한 호출들을 저장하기 위하여, 이러한 잉크 분석 도구(1901)는 적어도 하나의 비-충돌(non-colliding) 스트록 소스 노드가 없는 경우, 자식 콘텍스트 노드를 생성하기 위해 메소드를 호출하는 것을 피할 수 있다. 동일한 스트록 소스 점검은 또한 비-잉크 리프 노드들에서 수행되므로, 적어도 하나의 라인의 구성요소 단어들이 예를 들어, 적어도 하나의 성공적으로 이동된 스트록을 포함하지 않을 경우에는, 라인에 대한 노드가 생성되지 않는다. When creating a new leaf node in the analysis context object 1709, any ink strokes associated with the node included in the analysis results may also be moved from other nodes in the analysis context object 1709 to the new nodes. The stroke map described above can then be used to identify source elements for moving the strokes. If there is no source element (creating a mandatory collision), or if the source element is included in the arbitrary collision list described above, the ink strokes are not moved. To store unnecessary calls to analysis context object 1709, this
이어서, 인식 격자와 같은 새롭게 생성된 노드에는 다른 정보가 또한 적용된다. 일시적인 논리적 불일치성을 초래하는 적용된(즉, 차단되지 않은(non-blocked)) 임의적 충돌을 생성하면서 임의의 스트록들이 이동할 수 없는 경우에도 인식 격자는 적용된다. 그러나, 실패한 스트록 이동들이, 변경들이 차단된 문서의 영역에 대응하는 분석 콘텍스트 오브젝트(1709)의 일부분의 지정에 반영된 후에는, 소프트웨어 애플리케이션(1701)이 차단된 영역을 재분석하도록 통지받기 때문에, 그 불일치성은 일시적이다. Subsequently, other information is also applied to the newly created node, such as the recognition grid. The recognition grid applies even when arbitrary strokes cannot move while creating an applied (i.e. non-blocked) random collision resulting in temporary logical inconsistency. However, because the failed stroke movements are reflected in the designation of the portion of the analysis context object 1709 that corresponds to the area of the document in which changes have been blocked, the inconsistency because the software application 1701 is notified to reanalyze the blocked area. Is temporary.
분석 콘텍스트 오브젝트(1709)로부터 삭제될 각 노드에 대해, 잉크 분석 도구(1901) 리스트는 분석 콘텍스트(1709)에 대한 모든 다른 편집들 및 추가들이 수행된 노드가 실제로 삭제될 수 있는지를 확인하기 위해 점검한다. 삭제되어야 하고 모든 자식 노드들 및 스트록들이 실제로 비어있는 노드들은 분석 콘텍스트 오브젝트(1709)로부터 삭제된다. 일단 그러한 노드가 삭제되면, 모든 조상 노드들(루트 노드까지 그러나 루트 노드는 포함하지 않음)은 다른 남아있는 자식들을 갖는 조상을 만날 때까지 연속적으로 삭제된다. For each node to be deleted from the analysis context object 1709, the
마지막으로, 잉크 분석 도구(1901)는, 분석 처리에 의한 분석 콘텍스트 오브젝트(1709)에 대한 변경들을 검출하고 전파하기 위하여, 분석 콘텍스트 오브젝트(1709)와 분석 결과들을 갖는 문서 독립 분석 콘텍스트 오브젝트(1903)간의 순서를 정하는 노드의 전체적인 비교를 행한다. 그러나, 이러한 비교는 문서 독립 분석 콘텍스트 오브젝트(1903)의 원래 버전을 무시하므로, 소프트웨어 애플리케이션(1701)에 의해 정해진 순서에 대한 변경들을 검출하는 위한 방법이 없다는 것을 알아야 한다. 다음으로, 분석 콘텍스트 오브젝트(1709) 내의 대응하는 노드를 갖는 분석 결과들 내의 각 콘테이너 노드에 대해, 콘테이너 노드들의 자식들의 순서가 비교된다. 두 가지 콘테이너 노드가 모두 정확하게 동일한 자식들 세트를 갖는다면, 분석 결과들의 순서는, 노드가 분석 결과들의 자식 노드와 동일한 GUID(또는 다른 식별자 타입)를 갖지 않는 분석 콘텍스트 오브젝트(1709) 내의 콘테이너의 리스트 내의 동일한 위치에서 발견될 때까지 분석 결과들 내의 콘테이너의 자식들을 통해 루프를 도는 것(looping)에 의해, 분석 콘텍스트 오브젝트(1709)에 전파된다. 그러한 미스매치가 발견되는 경우, 대응하는 노드는 분석 콘텍스트 오브젝트(1709) 내의 자식 리스트의 더욱 아래에서 또한 발견되어야 한다. 이어서 잉크 분석 도구(1901)는 노드에 대한 분석 콘텍스트 오브젝트(1709) 내의 자식 리스트의 나머지를 검색하고, 분석 콘텍스트(1709) 내의 노드에 대한 명령을 수정하기 위해 자식 노드를 이동시키기 위한 메소드를 호출한다. 잉크 분석 도구(1901)는 이어서 분석 결과들 내의 노드들을 통해 계속해서 루프를 돈다. Finally, the
물론, 분석 리스트나 소프트웨어 애플리케이션(1701)은 어떠한 리스트에서나 삭제되거나 삽입된 노드를 가질 수 있으므로, 동일한 리스트들에 대한 가정은 참을 유지하지 않는다. "자식 리스트 매퍼(child list mapper)" 오브젝트는, 공통으로 유지되는 엘리먼트들을 포함하기만 하는 "잘려진(pruned)" 리스트들을 제시함으로써, 참을 유지하는 가정을 시뮬레이션하기(simulate) 위해 사용된다. 상술한 절차는 매핑된 자식 리스트들 상에서 실행되고, 이동들은 리스트 매퍼 오브젝트에 의한 실제 인덱스들 및 호출들로 번역된다(translated). Of course, the analysis list or software application 1701 may have nodes deleted or inserted in any list, so the assumptions about the same lists do not hold true. A "child list mapper" object is used to simulate the assumption of keeping true by presenting "pruned" lists that only contain elements that are kept in common. The above procedure is executed on the mapped child lists, and moves are translated into actual indices and calls by the list mapper object.
그러므로, 상술한 본 발명의 여러 실시예들에 따른 조정 기술들은 분석 처리가 개시된 후 문서의 내용들이 변경된 경우에도 분석 처리의 결과들이 문서 내의 현재 문서 엘리먼트들에 적용되는 것을 허용한다. 그러므로, 이러한 조정 기술들은 문서 내의 전자 잉크가 문서를 호스팅하는 소프트웨어 애플리케이션의 동작과 비동기적으로 분석되도록 허용한다. 또한, 이러한 조정 기술들은 기존의 독점 록킹 또는 다른 동기화 전략들로 멀티스레딩된 소프트웨어 애플리케이션들을 포함하는, 여러가지 서로 다른 소프트웨어 애플리케이션들에 의해 이용될 수 있다. Therefore, the adjustment techniques according to the various embodiments of the present invention described above allow the results of the analysis process to be applied to the current document elements in the document even if the contents of the document are changed after the analysis process is started. Therefore, these adjustment techniques allow the electronic ink in the document to be analyzed asynchronously with the operation of the software application hosting the document. Such coordination techniques may also be used by a variety of different software applications, including software applications multithreaded with existing proprietary locking or other synchronization strategies.
<이벤트 구동 시스템><Event Drive System>
상술한 바와 같이, 본 발명의 여러 실시예들은 문서 독립 분석 콘텍스트 오브젝트를 카피함으로써 문서 상태의 "스냅사진"(snapshot)을 생성하며, 이어서 문서를 호스팅하는 소프트웨어 애플리케이션이 동작을 계속하면서, 문서 독립 분석 콘텍스트 오브젝트를 비동기적으로 분석한다. 대안으로, 본 발명의 여러 실시예들은, 비동기적 잉크 분석에 대한 문서 독립 분석 콘텍스트 오브젝트의 사용에 선행될 수 있다. 대신에, 이러한 본 발명의 예시들은 문서에 대한 모든 잉크 및 의미론 데이터를 저장하기 위한 봉인된(sealed) 컴포넌트를 사용할 수 있다. 특히, 본 발명의 이러한 예시들은 문서: 스트록들을 추가, 삭제 또는 변경하는 것과 같은 잉크 이벤트들; 및 스트록들을 단어들로 그룹화하거나, 의미론 노드들을 추가하거나, 텍스트 인식 결과들을 스트록들에 연관시키는 것과 같은 구조 이벤트들에 대해 행해질 수 있는 두가지 타입의 변경들을 인식한다. 모든 이벤트는 외부 청취자에게 그 이벤트를 완벽하게 기재하는데 필요한 모든 데이터를 포함한다. 예를 들어, "스트록 추가" 이벤트는 모든 스트록 데이터를 포함할 것이다. 이러한 "풍부한" 이벤트들로서, 청취자는, 이벤트들을 수신된 순서로 적용함으로써 잉크 오브젝트의 정확한 복제본을 유지할 수 있다.As noted above, various embodiments of the present invention create a "snapshot" of the document state by copying a document independent analysis context object, followed by a document independent analysis while the software application hosting the document continues to operate. Parse context objects asynchronously. Alternatively, various embodiments of the present invention may precede the use of a document independent analysis context object for asynchronous ink analysis. Instead, these examples of the invention may use a sealed component for storing all the ink and semantic data for the document. In particular, these examples of the present invention may include documents: ink events such as adding, deleting or changing strokes; And two types of changes that can be made to structural events such as grouping strokes into words, adding semantic nodes, or associating text recognition results to strokes. Every event contains all the data necessary to completely describe the event to an external listener. For example, the "Add Stroke" event will contain all the stroke data. As such "rich" events, the listener can maintain an accurate copy of the ink object by applying the events in the order received.
도 28은 본 발명의 여러 실시예들에 따르는, 이러한 배치가 사용될 수 있는방법의 한가지 예시를 도시한다. 이 도면에 도시된 바와 같이, 애플리케이션(2801)은 잉크 분석 도구(2803)를 이용한다. 잉크 분석 도구(2803)는 애플리케이션(2801)에 대해 잉크 데이터 및 (예를 들어, 트리 구조와 같은) 문서 구조(2807)를 유지한다. 애플리케이션은 또한 이벤트 큐(event queue)(2809), 파서 처리(2811) 및 인식 처리(2817)를 이용한다. 파서 처리(2811)는 잉크 데이터(2805)의 클론(clone) 및 문서 구조(2807)의 클론(2815)을 유지한다. 유사하게, 인식 처리(2817)는 잉크 데이터(2805)의 클론(2819) 및 문서 구조(2807)의 클론(2821)을 유지한다. Figure 28 shows one example of how this arrangement may be used, in accordance with various embodiments of the present invention. As shown in this figure, the
애플리케이션은, 잉크 데이터를 생성하는 경우 메소드(2823)를 통하여 잉크 분석 도구(2803)에 잉크 데이터를 제공한다. 이에 응답하여, 잉크 분석 도구(2803)는, 잉크 데이터에서의 변경에 대응하는 이벤트를 생성하고, 모든 이벤트에 태그를 추가하고, 특정 태그들을 갖는 이벤트들을 리슨하는(listen) 컴포넌트들로 희망하는 분석 처리 또는 처리들을 정의한다. 예를 들어, 잉크에 대한 모든 사용자 변경은 태그 "UserChange"로 표시될 수 있고, 이 태그를 갖는 이벤트(2825)는 변경에 응답하여 동기적으로 이벤트 큐(2809)로 보내진다. 추후 어떤 시점에서, 파서 처리(2811) 및 인식 처리(2817)는 이벤트 큐(2809)로부터 태그된 이벤트를 검색할 것이다. The application provides the ink data to the ink analysis tool 2803 through the
이어서 제1 분석 처리(예를 들어, 파싱 처리(2811))는 잉크 분석 도구(2803)에 의해 발행된 모든 이벤트들을 리슨하고, 태그 "UserChange"를 갖는 것들에 응답할 것이다. 이어서 제1 분석 처리는 잉크 데이터(2813) 및 문서 구조(2815)의 내부 카피에 그 이벤트로 지정된 변경들을 적용하고, 그 이벤트에 기재된 데이터를 분석하고, 이어서 그 변경들에 의해 생성된 이벤트들(2827)을 생성하고 태그 "Parser1Change"로 태그할 것이다. 이러한 이벤트들(2827)은 이벤트 큐(2809)로 돌아가 잉크 분석 도구(2803)에 의해 릴레이될(relayed) 것이다. 이어서 제2 분석 처리(예를 들어, 핸드라이팅 인식 처리(2817))는, "Parser1Change" 태그로 태그된 이벤트들을 리슨(listen)할 것이다. 응답으로, 이는 이벤트에 의해 지정된 변화들을 잉크 데이터(2819) 및 문서 구조(2821)의 내부 카피에 적용하고, 응답으로 이벤트들에 기술된 데이터를 분석할 것이다. 이어서 제2 분석기는 태그 "HandwritingRecognitionChange"를 갖는 분석 결과들로 이벤트(2829)를 생성하고 태그할 것이다. 잉크 분석 도구(2803)는, 파서 처리(2811) 및 인식 처리(2817)로부터 이벤트들을 수신할 때, 문서 구조(2807)에서의 변경을 나타내기 위해 이벤트들(2831)을 애플리케이션(2801)으로 보낸다. The first analysis process (eg, parsing process 2811) will then listen for all events issued by the ink analysis tool 2803 and respond to those with the tag "UserChange". The first analysis process then applies the changes specified in the event to an internal copy of the ink data 2813 and the
본 발명의 이러한 실시예들은 또한 하나 이상의 이벤트를 갖는 이벤트들에 따름으로써 각각의 분석 처리를 지원하고, 내부 처리에 기초하여 다른 태그들을 갖는 변경들로부터 그 이벤트들을 태그할 수 있다. 따라서, 본 발명의 이러한 대안의 구현들이 또한 그 문서를 호스팅하는 소프트웨어 애플리케이션의 동작으로부터 비동기적인 문서 내에서의 전자 잉크의 분석을 고려할 수 있다. These embodiments of the present invention may also support each analysis process by following events with one or more events, and tag those events from changes with other tags based on internal processing. Thus, these alternative implementations of the present invention may also consider the analysis of electronic ink in a document asynchronously from the operation of the software application hosting the document.
<결론>Conclusion
본 발명이 현재 본 발명을 수행하는 바람직한 모드들을 포함하는 특정 예들에 대해 기재되었지만, 본 기술 분야의 숙련자들은 첨부 청구항들에 설명된 바와 같이 본 발명의 정신 및 범위 내에 있는 앞서 기재된 시스템들 및 기술들의 다양한 변경들 및 교환들이 있음을 이해할 것이다.Although the present invention has been described with respect to specific examples which now include the preferred modes of carrying out the invention, those skilled in the art will appreciate that systems and techniques described above that fall within the spirit and scope of the invention as set forth in the appended claims. It will be understood that there are various changes and exchanges.
Claims (65)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020047009261A KR101045444B1 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020047009261A KR101045444B1 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060114048A KR20060114048A (en) | 2006-11-06 |
KR101045444B1 true KR101045444B1 (en) | 2011-06-30 |
Family
ID=37651861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020047009261A KR101045444B1 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101045444B1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559897A (en) | 1994-01-21 | 1996-09-24 | Lucent Technologies Inc. | Methods and systems for performing handwriting recognition from raw graphical image data |
-
2003
- 2003-08-21 KR KR1020047009261A patent/KR101045444B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559897A (en) | 1994-01-21 | 1996-09-24 | Lucent Technologies Inc. | Methods and systems for performing handwriting recognition from raw graphical image data |
Also Published As
Publication number | Publication date |
---|---|
KR20060114048A (en) | 2006-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100989011B1 (en) | Electronic ink processing | |
AU2003262759B2 (en) | Electronic ink processing | |
US7502812B2 (en) | Electronic ink processing | |
AU2003262757B2 (en) | Electronic ink processing | |
US7283670B2 (en) | Electronic ink processing | |
KR101046101B1 (en) | How to adjust the first data structure to the second data structure | |
EP1678661B1 (en) | Electronic ink processing | |
KR101045444B1 (en) | Electronic ink processing | |
JP5162622B2 (en) | Electronic ink processing | |
KR20070010094A (en) | Electronic ink processing | |
AU2003259957A1 (en) | Electronic ink processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20140516 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20150515 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20160517 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20170522 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20180529 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20190530 Year of fee payment: 9 |