KR20070010094A - Electronic ink processing - Google Patents

Electronic ink processing Download PDF

Info

Publication number
KR20070010094A
KR20070010094A KR1020047010387A KR20047010387A KR20070010094A KR 20070010094 A KR20070010094 A KR 20070010094A KR 1020047010387 A KR1020047010387 A KR 1020047010387A KR 20047010387 A KR20047010387 A KR 20047010387A KR 20070010094 A KR20070010094 A KR 20070010094A
Authority
KR
South Korea
Prior art keywords
analysis
ink
node
document
data
Prior art date
Application number
KR1020047010387A
Other languages
Korean (ko)
Inventor
리차드 던칸
보딘 드리세빅
헨리 스탄토
재미에 웨이킴
사쉬 래그허패씨
티모씨 에이치. 카네펠
졸탄 스질라자이
마이클 실맨
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Priority to KR1020047010387A priority Critical patent/KR20070010094A/en
Publication of KR20070010094A publication Critical patent/KR20070010094A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/768Arrangements for image or video recognition or understanding using pattern recognition or machine learning using context analysis, e.g. recognition aided by known co-occurring patterns

Abstract

A method of analyzing electronic ink (Fig. 5, 502), in which document data for a document containing electronic ink content is received from a software application running on a first processing thread. The first processing thread is employed to provide the document data (Fig. 5, 500) to an electronic ink analysis process for analyzing on a second processing thread. Control of the first processing thread is then returned to the software application. After the results of the analysis are received, the results are reconciled with the current document data for the document. ® KIPO & WIPO 2007

Description

전자 잉크 프로세싱{ELECTRONIC INK PROCESSING}Electronic ink processing {ELECTRONIC INK PROCESSING}

본 발명은 전자 잉크의 처리에 관한 것이다. 특히 본 발명의 각종 실시예들은 전자 잉크의 레이아웃 분석, 분류, 및 인식을 포함하는 전자 잉크의 분석에 적용가능하다. 본 발명의 부가적인 실시예들은 예를 들어, 전자 잉크 문서에 풍부하고 다루기 쉬운 주석들을 제공할 시, 레이아웃 분석되고, 분류되고, 인식된 전자 잉크의 사용에 관한 것이다. The present invention relates to the treatment of electronic ink. 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 relate to the use of layout analyzed, classified and recognized electronic ink, for example in providing rich and manageable annotations in an electronic ink document.

사회에서 컴퓨터의 역할이 증대됨에 따라, 컴퓨터에 데이터를 입력하기 위한 여러가지 다른 기술들이 개발되어 왔다. 데이터를 입력하기 위한 한가지 두드러지게 유용한 기술은 핸드라이팅(handwriting)에 의한 것이다. "전자 잉크"를 생성하기 위해 디지타이저 상에 스타일러스(stylus) 또는 다른 물체로 씀으로써, 컴퓨터 사용자가 키보드와 연관된 부피 및 불편함을 덜 수 있다. 핸드라이팅 입력은 예를 들어, 진료하는 의사들, 건축 부지의 건축가들, 소포를 배달하는 배달부들, 창고를 돌아다니는 창고 일꾼들, 및 키보드의 사용이 힘들거나 불편한 임의의 상황에 사용될 수 있다. 핸드라이팅 입력은 많은 상황에 키보드보다 편리하지만, 전자 잉크로 쓰여진 텍스트는 통상적으로 대부분의 소프트웨어 애플리케이션에 의해 직접적으로 다루어질 수 없다. 대신에, 전자 잉크로 쓰여진 텍스트는 ASCII 문자들과 같은 핸 드라이팅의 또다른 형태로 변환하기 위해 분석되어야 한다. 이러한 분석은 핸드라이팅 인식 처리를 포함하고, 이는 전자 잉크의 단어를 구성하는 개개의 전자 잉크 스트록들 간의 여러 관계들에 기초하여 문자들을 인식한다. As the role of computers in society increases, several different techniques for entering data into computers have been developed. One notably useful technique for entering data is by handwriting. By writing with a stylus or other object on the digitizer to produce "electronic ink", computer users can lessen the volume and inconvenience associated with the keyboard. Handwriting input can be used, for example, in the attending physicians, the architects of the building site, the deliverers delivering the parcel, the warehouse workers walking around the warehouse, and any situation where the use of the keyboard is difficult or inconvenient. Handwriting input is more convenient than a keyboard in many situations, but text written in electronic ink cannot typically be handled directly by most software applications. Instead, text written in electronic ink must be analyzed to convert it to another form of handwriting, such as ASCII characters. This analysis involves handwriting recognition processing, which recognizes characters based on the various relationships between the individual electronic ink strokes that make up a word of electronic ink.

핸드라이팅 인식 알고리즘들은 최근 몇년동안 엄청나게 개선되었지만, 전자 잉크가 비스듬히 쓰여질 경우 정확성이 떨어질 수 있다. 마찬가지로, 두개의 단어가 함께 가까이 쓰여진 경우와 같은, 잉크 스트록들의 분리된 그룹들이 쉽게 구별될 수 없는 경우, 많은 인식 알고리즘들이 전자 잉크를 정확하게 인식할 수 없다. 몇몇 인식 알고리즘들은 또한 사실상 전자 잉크가 그림(drawing)으로 의도된 경우 전자 잉크를 텍스트로 잘못 인식할 수 있다. 예를 들어, 사용자가 타이프라이팅된(typewritten) 텍스트의 일부에 언더라인(underline) 표시하고, 하이라이트(highlight) 표시하고, 써클(circle) 또는 크로스(cross) 표시한 전자 잉크 스트록을 씀으로써 타이프라이팅된 텍스트를 주석할 수 있다. 이어서 핸드라이팅 인식 알고리즘은 이러한 주석 스트록들을 대시(-), 숫자 0 또는 문자 "O"로서 잘못 인식할 수 있다. Handwriting recognition algorithms have been greatly improved in recent years, but can be less accurate if the electronic ink is written at an angle. Likewise, if separate groups of ink strokes cannot be easily distinguished, such as when two words are written together close together, many recognition algorithms cannot correctly recognize the electronic ink. Some recognition algorithms may also misrecognize electronic ink as text, in fact when electronic ink is intended for drawing. For example, the user may type by typing an underline, highlight, or circle or cross-marked electronic ink stroke on a portion of the typewritten text. Commented text. The handwriting recognition algorithm may then mistakenly recognize these annotation strokes as a dash, a zero, or the letter "O".

많은 인식 알고리즘들의 정확성은 핸드라이팅 인식 알고리즘을 이용하기 전에 전자 잉크를 "파싱(parsing)"함으로써(예를 들어, 전자 잉크의 레이아웃을 분석함으로써 및/또는 전자 잉크를 "분류"함으로써) 상당히 개선될 수 있다. 분류 처리가 통상적으로 그림의 부분인지(즉, 그림 잉크 스트록인지), 그렇지 않으면, 핸드라이팅된 텍스트의 부분인지(즉, 텍스트 잉크 스트록인지)의 여부를 통상적으로 전자 잉크 스트록이 결정한다. 다른 스트록 타입을 식별하기 위한 분류 알고리즘 들이 또한 가능하다. 레이아웃 분석 처리는 통상적으로 단어들, 라인들 및 단락들과 같은 의미있는 조합으로 전자 잉크 스트록을 그룹화한다. 그러므로, 레이아웃 분석 및 분류 처리들은 전자 잉크의 콜렉션 내의 어느 스트록들이 하나의 단어에 속하는지, 전자 잉크의 어느 단어들이 전자 잉크로 쓰여진 텍스트의 하나의 라인과 연관되는지, 그리고 전자 잉크로 쓰여진 텍스트의 어느 라인들이 단락과 연관되는지를 식별하는데 사용될 수 있다. 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. The electronic ink stroke typically determines whether the classification process is typically part of a picture (ie, picture ink stroke), otherwise it is 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 the lines are associated with a short.

잉크를 분석하고 분류하는 레이아웃이 전자 잉크의 인식을 엄청나게 개선시킬 수는 있지만, 많은 소프트웨어 애플리케이션 개발자들은 전자 잉크를 인식하기 전에 이러한 활동들의 중요성을 알지 못하고 있다. 최근까지, 레이아웃 및 분류 알고리즘들은 현존하는 소프트웨어 애플리케이션들을 사용하는데 쉽게 이용할 수 없었다. 예를 들어, 전자 잉크를 저장하고, 디스플레이하고, 다루기 위해 Microsoft? 윈도우즈 저널 소프트웨어 애플리케이션이 구비된 Microsoft? 윈도우즈 XP 태블릿 PC 에디션 버전 2002 운영 체제가 통상적으로 판매되었다. 최근까지는 Microsoft? 윈도우즈 저널 소프트웨어 애플리케이션이 내부 파서(internal parser)를 이용했지만, 이 파서는 운영 체제에 의해 실행되는 다른 소프트웨어 애플리케이션들에 액세스할 수 없었다. Although the layout of analyzing and classifying inks can greatly improve the perception of electronic ink, many software application developers are unaware of the importance of these activities before recognizing electronic ink. Until recently, layout and classification algorithms were not readily available to use existing software applications. For example, to store, display, and manipulate electronic ink, Microsoft? Microsoft with Windows Journal software application? The Windows XP Tablet PC Edition version 2002 operating system was commonly sold. Until recently, Microsoft? Although the Windows Journal software application used an internal parser, it could not access other software applications run by the operating system.

이제는 윈도우즈 저널 소프트웨어 애플리케이션으로부터의 파싱 처리가 다른 소프트웨어 애플리케이션들과 별도로 액세스가능하지만, 이러한 파서의 사용은 잘 알려지지 않았으며, 이러한 파서는 사용자가 핸드라이팅 입력을 입력하기를 원하는 많은 소프트웨어 애플리케이션들과 쉽게 사용될 수 있다. 게다가, 특히 소프트웨 어 애플리케이션 개발자가 (그 자체가 어려우며 시간-소모적인 처리일 수 있는) 원하는 소프트웨어 애플리케이션을 사용하기 위해 파서를 생성할지라도, 파싱 처리의 실행은 매우 시간-소모적일 수 있다. 예를 들어, 비교적 빠른 마이크로프로세서를 사용하여 전자 잉크의 단지 몇몇 스트록들만을 파싱하는 것도 수초 또는 심지어 수분이 걸릴 수 있다. 파싱 처리가 완료될 때까지 소프트웨어 애플리케이션이 동작을 정지해야 한다면, 그 소프트웨어 애플리케이션은 대부분의 사용자들이 실용적으로 사용하기에는 너무 느리게 될 것이다. Although parsing processing from Windows Journal software applications is now accessible separately from other software applications, the use of such parsers is not well known, and such parsers are easily used with many software applications where the user wants to enter handwriting input. Can be. Moreover, even if the software application developer creates a parser 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.

따라서, 여러가지 소프트웨어 애플리케이션들에 의해 사용될 수 있는 전자 잉크 처리 기술들이 예를 들어 전자 잉크의 레이아웃을 분석하고, 전자 잉크를 분류 및/또는 인식할 필요가 있다. 또한, 전자 잉크를 처리할 수 있는 전자 잉크 처리 기술들이 필요하지만, 그 기술들을 이용한 소프트웨어 애플리케이션이 그 잉크 처리의 결과들을 무효로 하지 않고 새로운 전자 잉크 입력을 수용하도록 허용할 필요도 있다. Accordingly, electronic ink processing techniques that can be used by various software applications, for example, need to analyze the layout of the electronic ink and classify and / or recognize the electronic ink. In addition, there is a need for electronic ink processing techniques capable of processing electronic ink, but there is also a need to allow software applications using these technologies to accept new electronic ink input without invalidating the results of the ink processing.

간단한 발명의 개요Brief overview 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 respect to the operation of the software implementing the techniques, so that the electronic ink can be processed without stopping or significantly delaying the operation of the software application. The software application can continue to accept new electronic ink input even while the previous electronic ink input is being processed.

본 발명의 각종 실시예들로서, 파일 또는 문서의 엘리먼트들이 서로에 대한 그들의 공간적인 위치에 기초하여 설명될 수 있다. 예를 들어, 전자 잉크 스트록 및 타이프라이팅된 텍스트 양자 모두는 동일한 공간 좌표계에 의해 설명될 수 있다. 문서의 엘리먼트들을 설명하기 위해 공간 정보를 사용하면, 그 문서를 관리하는 소프트웨어 애플리케이션은 그 문서 엘리먼트들 간의 관계를 설명하는 데이터 구조를 유지할 수 있다. 특히, 그 소프트웨어 애플리케이션은 여러가지 문서 엘리먼트들의 클래스를 설명하고, 그 여러가지 문서 엘리먼트들 간의 조합들을 정의하는 데이터 구조를 유지할 수 있다. 이러한 조합들은 예를 들어, 전자 잉크 스트록 데이터 또는 그 조합들을 전자 문서 내의 다른 엘리먼트들(단어들, 라인들, 단락들, 그림들, 테이블 셀들 등과 같은)에 링크시키는데 사용되는 정보로서 정의될 수 있다. As various embodiments of the present invention, elements of 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 combinations between the various document elements. Such combinations may be defined, for example, as information used to link electronic ink stroke data or combinations thereof to other elements (such as words, lines, paragraphs, drawings, table cells, etc.) in an electronic document. .

공간적 위치에 기초하여 파일 또는 문서 데이터 구조 내의 문서 엘리먼트들을 기재함으로써, 여러가지 파일 타입들에 대한 문서 엘리먼트들은 그 문서 엘리먼트들을 식별하고 조작하기 위해 보통의 기술들을 사용할 수 있다. 특히, 여러가지 소프트웨어 애플리케이션들이 그들의 공간적 위치에 기초하여 문서 내에 문서 엘리먼트들을 기재하고, 보통의 전자 잉크 분석 방법들을 사용하기 위해 이러한 공간적 위치 참조를 이용할 수 있다. 또한, 분석을 위한 문서의 특정 영역을 지정함으로써, 각각의 소프트웨어 애플리케이션은 분석 처리를 문서 내의 단지 원하는 엘리먼트들만으로 제한할 수 있다. By describing document elements in a file or document data structure based on spatial location, document elements for various file types can use common techniques to identify and manipulate those document elements. In particular, various software applications can describe document elements in a document based on their spatial location and use this spatial location reference to use common electronic ink analysis methods. In addition, by designating a specific area 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 to 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 its related portions) to the ink analysis tool, which copies some or all of the data structure for analysis (and independently of the document data structure of the application). Activate a copy of the data). 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 being performed. In addition to receiving a new electronic ink, any “other data” includes content such as an application, for example, size, location or existing ink, text, images, graphics, tables, flowcharts, diagrams, and the like. Data to make; Data to add additional text, images, graphics, tables, flowcharts, diagrams, and the like; It may be received by data that deletes existing text, images, graphics, tables, flowcharts, diagrams, and the like. 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 be executed asynchronously from the operation of a software application using the ink analysis process. This asynchronous operation allows the user to continue using software applications that are not delayed by the analysis process. In addition, this allows multiple analysis processes to be executed simultaneously.

분석 결과들을 수신하는 것에 응답하여, 그 잉크 분석 도구는 그 소프트웨어 애플리케이션으로부터 (분석 처리들이 수행되는 동안 입력된 새로운 및/또는 변경된 데이터를 포함할 수 있는) 전자 문서의 데이터 구조의 현재 버전을 획득하고, 데이터 구조의 현재 버전의 분석 결과를 조정한다. 데이터 구조의 현재 버전의 분석 결과들을 조정함으로써, 본 발명의 각종 실시예들이 소프트웨어 애플리케이션에 의해 사용되고 있는 데이터를 비동시적으로 액세스하기 위해, "록킹(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 (which may include new and / or changed data entered while the analysis processes are performed) from the software application. Adjust the analysis results of the current version of the data structure. By adjusting the analysis results of the current version of the data structure, various embodiments of the present invention can avoid more complex techniques, such as "locking", to asynchronously access the data being used by the software application. Instead, the reconciliation can be called by any software application without having to prepare for complex internal locking.

데이터 구조의 현재 버전의 분석 결과들을 조정한 후에, 그 잉크 분석 도구는 핸드라이팅 인식 처리와 같은 또다른 분석 처리에 그 조정된 분석 결과들의 카피를 제공할 수 있다. 다시, 그 소프트웨어 애플리케이션은 제2 잉크 분석 처리(들)가 수행되고 있는 동안, 새로운 전자 잉크 입력 및/또는 다른 데이터를 수신하는 단계를 포함하는 일반적인 동작을 다시 시작할 수 있다. 그 원하는 제2 분석 처리들 모두가 완료된 후에, 그 제2 분석 처리의 결과들은 잉크 분석 도구로 리턴된다. 이어서 그 잉크 분석 도구는 (새롭고 및/또는 변경된 데이터를 다시 포함할 수 있는) 소프트웨어 애플리케이션으로부터 데이터 구조의 현재 버전을 획득하고, 데이터 구조의 현재 버전의 제2 분석 결과들을 조정한다. 이어서 그 잉크 분석 도구는 제2 분석 처리의 조정된 결과들을 사용하여 데이터 구조를 업데이트한다. 물 론, 임의의 수의 잉크 분석 절차들 및/또는 단계들이 본 발명으로부터 벗어나지 않고 사용될 수 있다. After adjusting the analysis results of 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 of the desired second analysis processes are completed, the results of the second analysis process are returned to the ink analysis tool. The ink analysis tool then obtains the current version of the data structure from the software application (which may include new and / or changed data again) and adjusts the second analysis results of the current version of the data structure. The ink analysis tool then updates the data structure using 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.

앞서 기재된 여러가지 잉크 분석 처리들 및 전자 문서의 다른 특징들에 전자 잉크 데이터를 관련시키거나 링크시키는 공간적 정보의 사용이 전자 문서 내에 풍부하고, 다루기 쉽고, 평이한 잉크 주석들을 제공하는데 사용될 수 있다. 예를 들어, 본 발명의 실시예들은 기초의 문서 엘리먼트들이 주석되도록 된 변화들에 기초하여 엄청나게 이동하고 및/또는 그렇지 않으면 변화하는 전자 잉크 주석들을 제공하는데 사용될 수 있다. 사용자들은 통상적으로 예를 들어, 그들은 단어들을 써클(circle) 표시하거나, 언더라인(underline) 표시하거나, 하이라이트(highlight) 표시하거나, 또는 스트라이크아웃(strikeout) 표시할 수 있고; 마진(margin)에 표시할 수 있고; 화살표 또는 다른 포인터(pointer)로 마진에 위치된 주석들로 그릴 수 있는 등의 많은 다른 방식으로 문서들을 주석한다. 게다가, 사용자들은 예를 들어, 텍스트, 스프레드시트(spreadsheet), 그림, 슬라이드쇼, 테이블, 차트, 그래프, 플로우차트 등을 포함하는 매우 다양한 다른 문서 타입으로 주석할 수 있다. The use of spatial information to associate or link electronic ink data with the various ink analysis processes and other features of the electronic document described above can be used to provide rich, easy to handle, plain ink annotations within an electronic document. For example, embodiments of the present invention can be used to provide electronic ink annotations that move enormously and / or otherwise change based on changes the underlying document elements are intended to be annotated. Users typically can, for example, circle, underline, highlight, or strikeout the words; Can be indicated in margin; Annotate documents in many different ways, such as drawing with annotations placed in margins with arrows or other pointers. In addition, users can annotate with a wide variety of different document types, including, for example, text, spreadsheets, drawings, slideshows, tables, charts, graphs, flowcharts, and the like.

전자 잉크 주석들을 전자 문서로 순조롭게 통합하는 것은 기초의 전자 문서가 어떤 이유로 변화될 때 주석들이 적절하게 동작할 것을 요구한다. 예를 들어, 사용자가 전자 문서 내의 단어를 (주석으로서) 써클 표시하고 이어서 그 단어 이전에 문서 내의 어딘가에 텍스트를 추가하는 경우, 그 써클 표시한 단어를 이동시키는 원인이 될 수 있다. 이 경우, 그 써클 주석은 그 단어를 이동시키고 정지시켜 야 한다. 또다른 예로서, 사용자가 그 써클 표시한 단어로부터 문자들을 추가하거나 제거하거나, 그렇지 않고 임의의 방식으로 그 크기를 변화시킨다면, 그 써클 표시한 주석은 그 단어의 새로운 크기를 수용하기 위해 확장 또는 수축해야 한다. 바람직하게, 기초의 전자 문서가 서로에 대한 엘리먼트들(단락, 그림, 열 등)의 위치들을 역류하거나(reflow) 및/또는 어떤 이유로 그 페이지를 업데이트하는 경우, 그 전자 잉크 주석들 또한 그 기초의 텍스트 또는 다른 정보에 대해 위치를 바꾸거나 적절하게 위치된다. 그 주석들이 기초의 전자 문서 텍스트에 대해 이러한 방식으로 동작하지 않는다면, 주석 후에 생생한 전자 문서들을 편집하거나 공유하는데 비실용적이게 되고, 출력용지(parer printout)가 주석하기에 가장 용이하고 가장 유용한 방식이 되어야 할 것이다. Smooth integration of electronic ink annotations into an electronic document requires the annotations to work properly when the underlying electronic document is changed for some reason. For example, if a user marks a word in an electronic document (as a comment) and then adds text somewhere in the document before that word, it may cause the circle marked word to move. In this case, the circle comment should move and stop the word. As another example, if a user adds or removes characters from the circle-marked word, or otherwise changes its size in any way, the circle-marked comment must expand or contract to accommodate the new size of the word. do. Preferably, if the underlying electronic document reflows the positions of elements (paragraphs, drawings, columns, etc.) with respect to each other and / or updates the page for some reason, the electronic ink annotations also have Reposition or appropriately position for text or other information. If the annotations do not work this way on the underlying electronic document text, then it becomes impractical to edit or share the vivid electronic documents after the annotation, and the parer printout should be the easiest and most useful way to annotate. will be.

어떻게 주석을 적절하게 변화시킬 지를 결정하는 것은 주석 및 전자 문서에 관한 여러가지 인자들에 의존할 것이다. 예를 들어, 역류(reflow) 상황시 주석을 적절하게 변화시키는 것은 예를 들어, (a) 전자 잉크를 주석으로서 식별하고; (b) 전자 잉크 주석의 타입을 식별하고; (c) 기초의 전자 문서 내의 특정 엘리먼트에 대한 전자 잉크의 관계를 식별하는, 컴퓨팅 시스템(파서)의 능력에 의존할 수 있다. 이러한 정보 타입의 일부 또는 모두를 사용자에게 질의하는 것이 가능할 수 있지만, 그러한 시스템들은 용지에 주석하는 것보다 훨씬더 성가신 사용자 경험을 낳게 된다. 따라서, 본 발명의 각종 실시예들에 따라서, 상기 정보는: (1) 전자 잉크 자체와, (2) 전자 잉크에 대한 문서 내의 여러가지 엘리먼트들의 공간적 위치를 포함하는 기초의 문서의 콘텐트로부터 추론될 수 있다. Determining how to properly change annotations will depend on various factors regarding annotations and electronic documents. For example, appropriately changing tin in a reflow situation may include, for example, (a) identifying the electronic ink as tin; (b) identify the type of electronic ink tin; (c) may rely on the computing system's (parser's) ability to identify the relationship of the electronic ink to a particular element in the underlying electronic document. It may be possible to query the user for some or all of these types of information, but such systems result in a much more cumbersome user experience than annotating on paper. Thus, according to various embodiments of the present invention, the information can be deduced from the content of the underlying document, including (1) the electronic ink itself and (2) the spatial location of the various elements within the document relative to the electronic ink. have.

잉크 주석들의 의미의 결정이 복잡하고 어려울 수 있기 때문에, 사용자가 주석하기를 원하는 문서의 각각의 응용 프로그램이 주석 식별 로직을 개별적으로 구현할 것으로 기대하는 것은 매우 비현실적이다. 따라서, 각각의 응용 프로그램이 쉽게 구성할 수 있는 이러한 주석 기능에 원조하기 위한 재사용가능 컴포넌트(component)를 제공하는 것이 바람직하다. 예를 들어, 펜입력식 컴퓨팅 시스템(pen-based computing system)의 운영 체제가 전자 잉크의 콜렉션 및 렌더링을 위한 컴포넌트를 제공하기 때문에, 잉크를 채우면 아주 쉽게 작동할 수 있는 잉크 주석들의 의미(meaning)("주석 파서(annotation parser)"라고도 언급됨)를 결정하는 컴포넌트를 운영 체제가 제공하는 것이 바람직할 것이다. Since the determination of the meaning of ink annotations can be complex and difficult, it is very impractical to expect each application of a document that a user wishes to annotate to implement annotation identification logic separately. Therefore, it is desirable to provide a reusable component to assist in this annotation function that each application can easily configure. For example, because the operating system of a pen-based computing system provides components for the collection and rendering of electronic ink, the meaning of ink annotations that can work very easily when filled with ink It would be desirable for the operating system to provide a component that determines (also referred to as an "annotation parser").

그러나, 기초의 전자 문서의 콘텐트를 식별하는 것은 "스마트한(smart)" 주석 능력을 제공하는 경우 실질적인 어려움들을 제기한다. 예를 들어, 여러가지 다른 응용 프로그램들은 문서들을 저장하고, 관리하고, 역류하는 매우 다른 방식들을 갖는다. 본 발명은 전자 문서들의 여러가지 다른 타입들과 가능한 잉크 주석들의 관계를 결정할 수 있는 재사용가능 주석 파서를 제공한다. 특히, 본 발명의 일부 실시예에 따르면, 메커니즘에 파싱되고 있는 잉크에 관한 관련 정보(예를 들어, 잉크 주석에 "콘텍스트"를 제공하기 위해 잉크 주석에 대응하는 공간적 영역 내의 전자 문서에 관한 정보)를 제공하기 위해 응용 프로그램으로 콜백(call back)하는 주석 파서가 제공된다. 그 메커니즘은 임의의 문서-기반의 애플리케이션으로 통합하도록 실천하기에 충분히 용이하며, (페이지 등과 같은 부분들에서 처리될 수 있는) 매우 큰 문서들을 작업하기에 충분히 효율적이다. However, identifying the content of the underlying electronic document poses substantial difficulties when providing "smart" annotation capabilities. For example, many different applications have very different ways of storing, managing, and reflowing documents. The present invention provides a reusable annotation parser that can determine the relationship between various different types of electronic documents and possible ink annotations. In particular, according to some embodiments of the present invention, relevant information about an ink being parsed into a mechanism (eg, information about an electronic document in a spatial area corresponding to the ink annotation to provide an "context" to the ink annotation). An annotation parser is provided that calls back to the application to provide. The mechanism is easy enough to practice to integrate into any document-based application and is efficient enough to work with very large documents (which can be processed in parts such as pages).

그러므로, 본 발명의 각종 실시예들에 따른 잉크 처리 기술들은 여러가지 소프트웨어 애플리케이션들이 잉크 분석 도구를 통해 전자 잉크에 대한 다수의 처리들을 수행하도록 허용한다. 게다가, 이러한 기술들을 이용한 소프트웨어 애플리케이션은 분석 처리들의 결과들을 반드시 무효화하지 않고도 새로운 전자 잉크 입력을 수신하는 단계를 포함하는 분석 처리 동안 통상의 동작을 계속할 수 있다.Therefore, ink processing techniques in accordance with various embodiments of the present invention allow various software applications to perform multiple processes for electronic ink through an ink analysis tool. In addition, a software application using these techniques can continue normal operation during an analysis process that includes receiving a new electronic ink input without necessarily invalidating the results of the analysis processes.

본 발명의 상기 및 다른 목적들, 특징들 및 이점들은 첨부 도면들에 관련하여 설명되는 다음의 상세한 설명으로부터 쉽게 명백해지고 완전히 이해될 것이다. The above 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 present 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 delivery 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 of a current state of a document. FIG.

도 28은 본 발명의 또다른 예들에 따라 전자 잉크를 비동시적으로 분석하기 위한 장치를 도시한 도면. FIG. 28 illustrates an apparatus for asynchronous analysis of 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, otherwise specified or resolved from the description, the terms having the meanings provided below:

"렌더(Render)" 또는 "렌더링된(Rendered)" 또는 "렌더링한(Rendering)" - 어떻게 정보가 지연될 것인지, 스크린 상에 프린트되는지 아니면 몇가지 다른 방법 으로 출력되는지를 결정하는 처리."Render" or "Rendered" or "Rendering"-The process of determining how information is to be delayed, printed on the screen, or output in some other way.

"컴퓨터 판독가능 매체(Computer-Readable Medium)" - 컴퓨터 시스템 상에서 사용자에 의해 액세스될 수 있는 임의의 사용가능한 매체. 제한은 아니지만 예로서, "컴퓨터 판독가능 매체"는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. "컴퓨터 저장 매체"는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 비휘발성, 분리형 및 비분리형 매체를 포함한다. "컴퓨터 저장 매체"는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 다른 메모리 기술; CD-ROM, DVD(digital versatile disk) 또는 다른 광 저장 디바이스; 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 디바이스; 또는 원하는 정보를 저장하는데 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 제한되지는 않는다. "통신 매체"는 통상적으로 컴퓨터 판독가능 명령들, 데이터 구조, 프로그램 모듈 또는 반송파(carrier wave)와 같은 변조된 데이터 신호 내의 다른 데이터 또는 다른 전달 매체를 구체화하고, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 그 신호 내의 정보를 인코딩하는 것과 같은 방식으로 설정되거나 변화된 하나 이상의 특징들을 갖는 신호를 의미한다. 제한은 아니지만 예로서, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기의 임의의 조합들 또한 "컴퓨터 판독가능 매체"의 범위 내에 포함되어야 한다. "Computer-Readable Medium"-any available medium that can be accessed by a user on a computer system. By way of example, and not limitation, “computer readable media” may include computer storage media and communication media. "Computer storage media" includes non-volatile, 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, and not limitation, communication media includes wired media such as wired networks or direct-wired connections 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 file type) may include information about the spatial location of the element in the document. Therefore, both the electronic ink stroke and the typed text can be described by the same spatial coordinate system for the document and / or by spatial or other relationships with other elements in the document. In addition, related elements within a document can be identified simply by identifying the spatial area of the document containing the elements and / or by linking the elements.

여러가지 문서 엘리먼트들 간의 이러한 공간적 관계를 사용함으로써, 소프트웨어 애플리케이션이 문서 엘리먼트들 간의 다른 관계들을 설명하는 데이터 구조를 생성하고 유지할 수 있다. 예를 들어, 소프트웨어 애플리케이션은 문서 내의 여러가지 엘리먼트들에 대한 클래스를 정의하는 데이터 트리와 같은 데이터 구조를 유지할 수 있다. 그러므로, 데이터 구조 내의 노드가 핸드라이팅된 단어 또는 하나 이상의 잉크 스트록을 포함하는 그림에 대응할 수 있고, 그 노드에 저장된 데이터는 또한 페이지 상에 단어의 위치를 표시할 수 있다. 임의의 다른 적절한 데이터 또는 종래의 데이터가 통상적으로 잉크 스트록에 관해 저장되고 및/또는 전자 잉크 단어가 또한 단어 노드에 저장될 수 있다. By using this spatial relationship between various document elements, a software application can create and maintain a data structure that describes the different 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. Therefore, a node in the data structure may correspond to a handwritten word or picture containing one or more ink strokes, and the data stored at that node may also indicate the location of the word on the page. Any other suitable or conventional data is typically stored with respect to the ink stroke and / or electronic ink words may also be stored at the word node.

이러한 타입의 데이터 구조는 또한 (개별적인 잉크 스트록 또는 타이프라이팅된 텍스트 문자들과 같은) 문서 엘리먼트들을 단어, 단어의 라인, 문장, 단락 등과 같은 의미있는 그룹들에 연관시킬 수 있다. 그러므로, 소프트웨어 애플리케이 션이 핸드라이팅된 전자 잉크의 단락을 설명하는 문서 트리 구조를 유지한다면, 그 데이터 구조의 리프(leaf) 노드들은 전자 잉크의 개별적인 스트록들에 관한 데이터를 포함할 수 있고, 하나 이상의 스트록들이 그 단락 내의 단어들(예를 들어, 파서 및/또는 인식기에 의해 결정된 단어들)에 대응하는 단어 노드들로서 그 데이터 구조 내에 함께 연관될 수 있다. 이어서 그 트리 구조는 그 단락 내의 라인들에 대응하는 라인 노드들과 그 단어 노드들을 연관시킬 수 있다. 각각의 라인 노드는 또한 그 단락에 대응하는 노드와 연관될 수 있다. 또한, 소프트웨어 애플리케이션은 전자 잉크 스트록 및/또는 전자 잉크의 몇가지 다른 그룹에 대응하는 노드를 이미지와 같은 비-잉크 문서 엘리먼트; 잉크 그림; 타이프라이팅된 문자, 단어, 라인, 단락; 등에 대응하는 또다른 노드와 연관시키는 트리 또는 다른 데이터 구조를 유지할 수 있다. 그러므로, 이러한 데이터 구조들은 핸드라이팅된 텍스트를 형성하는 전자 잉크 스트록들을 비-잉크 문서 엘리먼트들을 주석하는 전자 잉크 스트록들로부터 구별하기 위해, 및/또는 전자 잉크 스트록들을 다른 문서 엘리먼트들에 링크시키기 위해, 연관된 전자 잉크 스트록들 간의 관계들을 정의하는데 사용될 수 있다. This type of data structure can also associate document elements (such as individual ink strokes or typed text characters) to meaningful groups such as words, lines of words, sentences, paragraphs, and the like. Thus, 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 relating to individual strokes of the electronic ink, The strokes may be associated together in the data structure as word nodes corresponding to words in the paragraph (eg, words determined by the parser and / or recognizer). The tree structure may then associate the word nodes with the line nodes corresponding to the lines in the paragraph. Each line node may also be associated with a node corresponding to that paragraph. The software application may also include non-ink document elements, such as images, for nodes corresponding to electronic ink strokes and / or several other groups of electronic ink; Ink painting; Typed characters, words, lines, paragraphs; It can maintain a tree or other data structure that associates with another node that corresponds to the same. Therefore, such data structures may be used to distinguish electronic ink strokes forming handwritten text from electronic ink strokes annotating non-ink document elements, and / or to link electronic ink strokes to other document elements. It can be used to define the relationships between associated electronic ink strokes.

아래에 상세하게 논의될 바와 같이, 이러한 데이터 구조들은 문서 내의 전자 잉크를 분석하기 위해 본 발명의 각종 실시예들에 따른 잉크 분석 도구로 사용될 수 있다. 본 발명의 각종 실시예들에 따라서, 소프트웨어 애플리케이션은 우선 그 문서에 대한 데이터 구조를 생성함으로써 문서 내의 전자 잉크의 분석을 획득할 수 있다. 그 데이터 구조는 (임의의 경우) 이미 분석된 문서 엘리먼트들 간의 관계를 설명하며, 그러므로 임의의 새로운 전자 잉크가 분석될 콘텍스트를 제공한다. 이러한 데이터 구조 꼬는 "분석 콘텍스트 대상"은 또한 미분석 임의의 새로운 전자 잉크를 포함한다. 즉, 그 분석 콘텍스트 대상은 또한 다른 문서 엘리먼트들과의 관계가 아직 설정되지 않은 전자 잉크를 포함한다. 본 발명의 몇가지 예들에서, 그 소프트웨어 애플리케이션은 그 자신에 대한 분석 콘텍스트 대상을 생성한다. 그러나, 본 발명의 다른 예들로서, 그 소프트웨어 애플리케이션은 분석 콘텍스트 대상을 생성하기 위해 잉크 분석 도구 또는 또다른 도구를 이용한다. As will be discussed in detail below, these data structures can be used as an ink analysis tool in accordance with various embodiments of the present invention for analyzing 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 that document. The data structure describes (if any) the relationship between document elements that have already been analyzed, and thus provides the context in which any new electronic ink will be analyzed. This data structure twisted "analysis context object" also includes any new electronic ink that is unanalyzed. That is, the analysis context object also includes an electronic ink that has not yet been established with other document elements. In some examples of the invention, the software application creates an analysis context object for itself. However, as other examples of the present invention, the 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 creates the analysis context object), the ink analysis tool is informed about at least a portion of the analysis context object containing the unanalyzed electronic ink. Make a copy of, or retrieve that information. By making a copy of the information about the desired portion of the analysis context object or retrieving the information, the ink analysis tool can be analyzed next without changing the analysis context object maintained by the software application. That is, the copy is independent of the actual electronic document used in the software application and can therefore be referred to below as the "document independent" analysis context.

일단 그 잉크 분석 도구가 문서 독립 분석 콘텍스트 대상을 생성하기만 하면, 그 잉크 분석 도구는 문서 독립 분석 콘텍스트 대상을 하나 이상의 분석 처리들에 제공한다. 예를 들어, 핸드라이팅 인식이 문서 내의 미분석 전자 잉크에서 수행된다면, 그 잉크 분석 도구는 (필요하거나 요구된다면) 잉크를 텍스트 및 그림 스트록들로 분류하고 이어서 미분석 전자 잉크 텍스트 스트록들을 잉크 레이아웃에 기초한 연관된 그룹들로 그룹화하기 위한 분류 단계 및/또는 레이아웃 분석 처리들에 문서 독립 분석 콘텍스트 대상에 제공할 수 있다. 그 분류 단계 및/또는 레이아웃 분석 처리들이 문서 독립 분석 콘텍스트 대상을 분석할 동안, 그 소프트웨어 애플리케이션은 규칙적인 동작을 계속할 수 있다. 특히, 그 소프트웨어 애플리케이션은 새로운 전자 잉크 입력 및/또는 그 응용 프로그램에 의해 계속된 전자 문서 내의 임의의 다른 데이터를 계속해서 수신할 수 있다. Once the ink analysis tool creates 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 unresolved electronic ink in a document, the ink analysis tool may classify the ink into text and picture strokes (if necessary or required) and then map the unresolved electronic ink text strokes to the ink layout. The document independent analysis context object may be provided with a classification step and / or layout analysis processes for grouping into related groups based on that. While the classification step and / or layout analysis processes analyze the document independent analysis context object, the software application may continue to operate regularly. 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 (which may in particular include classification and layout analysis processes as described above) returns to a modified version of the document independent analysis context object that previously shows new relationships for unanalyzed electronic ink. Because the software application is free to accept any other data about the document during new electronic ink input and / or pre-written parsing operations, the current version of the analysis context target for the document (ie, the version maintained by the application) is 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 adjust the parsing results with 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 to the current version of the analysis context object, the software application can return back to regular operation, thus continuing to receive new electronic ink input and / or any other data about the document. Can be. On the other hand, the recognition process analyzes the adjusted data (or alternatively its parsing results) from the current analysis context object. After the recognition process completes the analysis of the adjusted data (or parsing results), the recognition results are returned to the ink analysis tool. 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. do. The ink analysis tool then adjusts the results from the recognition process to 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, computer 100 includes a system bus 130 that couples processing system 110, system memory 120, and various system elements, including system memory 120, to processing unit 110. Include. The system bus 130 can be any of several types of bus structures including a memory bus or a memory controller, a peripheral bus, and a local bus using any of the various bus architectures. System memory 120 may include read only memory (ROM) 140 and random access memory (RAM) 150.

기본 입/출력 시스템(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 to transfer information between elements in computer 100, such as stored in ROM 140 during startup. Computer 100 also includes a hard disk drive 170 for reading from and writing to a hard disk (not shown), and a magnet for reading from and writing to a removable magnetic disk 190. Disk drive 180 and optical disk drive 191 for reading from and writing to removable optical disk 192, such as a CD ROM or other optical media. The hard disk drive 170, the magnetic disk drive 180, and the optical disk drive 191 are connected to the system bus 130 by the hard disk drive interface 192, the magnetic disk drive interface 193, and the optical disk drive interface 194. Respectively). Such drives and their associated computer readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for the personal computer 100. Computer readable media capable of storing computer-accessible data such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read-only memories (ROMs), and the like. Those skilled in the art will understand that other types of can be used in the exemplary operating environment.

하드디스크 드라이브(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 hard disk drive 170, magnetic disk 190, ROM 140, or RAM 150 include operating system 195, one or more applications 196, other program modules ( 197 and program data 198. A user may enter commands and information into the computer 100 through input devices such as keyboard 101 and pointing device 102 (such as a mouse). Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 110 via a serial port interface 106 connected to the system bus 130, but they are also connected to other ports such as parallel ports, game ports, or universal serial buses (USB). Can be connected by interfaces. In addition, these devices may be coupled directly to the system bus 130 via a suitable interface (not shown).

모니터(107) 또는 다른 타입의 디스플레이 디바이스는 또한 비디오 어댑터(108)와 같은 인터페이스를 통해 시스템 버스(130)에 접속될 수 있다. 모니터(107)에 부가하여, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터와 같은 다른 주변 출력 디바이스(도시되지 않음)를 포함한다. 일례로, 수서 입력(freehand input)을 디지털로 캡쳐하기 위해 펜 디지타이저(pen digitizer)(165) 및 수반된 펜 또는 스타일러스(166)가 제공된다. 펜 디지타이저(165)와 직렬 포트 인터페이스(106) 간의 접속이 도 1에 도시되었을지라도, 실제로 그 펜 디지타이저(165)는 처리 유닛(110)에 직접적으로 결합될 수 있으며, 또는 본 기술분야에 공지되어 있는 바와 같이 병렬 포트 또는 또다른 인터페이스 및 시스템 버스(130)와 같은 임의의 적절한 방법으로 처리 유닛(110)에 결합될 수 있다. 더구나, 디지타이저(165)가 도 1에서 모니터(107)로부터 분리된 것으로 도시되어 있을지라도, 디지타이저(165)의 사용가능 입력 영역은 모니터(107)의 디스플레이 영역과 동일한 영역이 될 수 있다. 또한, 디지타이저(165)는 모니터(107)에 통합될 수 있으며, 아니면 겹치는 분리 디바이스로서 존재할 수 있으며, 그렇지 않으면 모니터(107)에 부가된다. The monitor 107 or other type of display device may also be connected to the system bus 130 via an interface such as the video adapter 108. In addition to the monitor 107, a personal computer typically includes other peripheral output devices (not shown) such as speakers and printers. In one example, a pen digitizer 165 and accompanying pen or stylus 166 are provided to digitally capture freehand input. Although the connection between the pen digitizer 165 and the serial port interface 106 is shown in FIG. 1, the pen digitizer 165 may in fact be directly coupled to the processing unit 110, or known in the art. As can be coupled to the processing unit 110 in any suitable manner, such as a parallel port or another interface and system bus 130. Moreover, although digitizer 165 is shown as separate from monitor 107 in FIG. 1, the usable input area of digitizer 165 may be the same area as the display area of monitor 107. Digitizer 165 may also be integrated into monitor 107, or may exist as an overlapping discrete device, or otherwise added to monitor 107.

컴퓨터(100)는 원격 컴퓨터(109)와 같은 하나 이상의 원격 컴퓨터들로의 논리적 접속들을 사용하는 네트워크 환경에서 동작할 수 있다. 그 원격 컴퓨터(109)는 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device) 또는 다른 통상의 네트워크 노드가 될 수 있으며, 간단성을 위해 단지 메모리 저장 디바이스(111)만이 도 1에 도시되었을지라도, 이는 통상적으로 컴퓨터(100)에 대한 앞서 기재된 많은 또는 모든 엘리먼트들을 포함한다. 도 1에 도시된 논리적 접속들은 근거리 네트워크(LAN)(112) 및 광역 네트워크(WAN)(113)를 포함한다. 그러한 네트워킹 환경은 유선 및 무선 접속들 둘 모두를 사용하는 사무실, 대규모 광 컴퓨터 네트워크, 인트라넷 및 인터넷에 평범한 것이다. Computer 100 may operate in a network environment using logical connections to one or more remote computers, such as remote computer 109. The remote computer 109 can be a server, router, network PC, peer device or other conventional network node, although for simplicity only the memory storage device 111 is shown in FIG. This typically includes many or all of the elements described above for the computer 100. The logical connections shown in FIG. 1 include a local area network (LAN) 112 and a wide area network (WAN) 113. Such networking environments are commonplace in offices, large optical computer networks, intranets and the Internet using both wired and wireless connections.

LAN 네트워킹 환경에서 사용되는 경우, 그 컴퓨터(100)는 네트워크 인터페이 스 또는 어댑터(114)를 통해 근거리 네트워크(112)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 그 퍼스널 컴퓨터(100)는 통상적으로 인터넷과 같은 광역 네트워크(113)를 통해 통신 링크를 설정하기 위한 모뎀(115) 또는 다른 수단을 포함한다. 컴퓨터(100) 내부 또는 외부에 있을 수 있는 그 모뎀(115)은 직렬 포트 인터페이스(106)를 통해 시스템 버스(130)에 접속될 수 있다. 네트워크 환경에서, 퍼스널 컴퓨터(100) 또는 그 부분들에 대해 도시된 프로그램 모듈들은 원격 메모리 저장 디바이스에 저장될 수 있다. When used in a LAN networking environment, the computer 100 is connected to the local area network 112 via a network interface or adapter 114. When used in a WAN networking environment, the personal computer 100 typically includes a modem 115 or other means for establishing a communication link over a wide area network 113, such as the Internet. The modem 115, which may be inside or outside the computer 100, may be connected to the system bus 130 via the serial port interface 106. In a networked environment, program modules depicted for the personal computer 100 or portions thereof may be stored in the remote memory storage device.

도시된 네트워크 접속들은 예들이며, 컴퓨터들간의 통신 링크를 설정하기 위한 다른 기술들이 사용될 수 있음을 이해해야 한다. 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 the computers can be used. It is assumed that any of a number of well known protocols exist, such as TCP / IP, Ethernet, FTP, HTTP, UDP, etc., and the system is user-server to allow the user to retrieve web pages from a web-based server. Can be operated in a configuration. Any of a variety of conventional web browsers can be used to display and manipulate 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 personal computer system 201 includes a large display surface 202 on which a plurality of windows 203 are displayed, for example a digitizing flat panel display such as a liquid crystal display (LCD) screen. Using the stylus 204, the user can select, highlight, and record on the digitizing display area. Examples of suitable digitizing display panels include electromagnetic pen digitizers such as Mutoh Co. (now known as FinePoint Innovations Co.) or pen digitizers available from Wacom Technology Co. Other types of pen digitizers may also be used, such as optical digitizers and touch-sensitive digitizers. The pen-input computing system 201 uses gestures using the stylus 204 to perform conventional application tasks such as manipulating data, entering text, creating, editing, and modifying spreadsheets, word processing programs, and the like. Interpret (gesture)

스타일러스(204)는 그 성능을 개선시키기 위해 버튼들 또는 다른 특징들이 구비될 수 있다. 일례로, 스타일러스(204)는 "연필(pencil)" 또는 "펜"으로 구현될 수 있고, 한쪽 끝은 기록 부분을 구성하고 다른 끝은 디스플레이를 위해 움직일 때, 지워져야할 디스플레이 상의 전자 잉크 부분들을 표시하는 "지우개" 부분을 구성한다. 마우스, 트랙볼, 키보드 등과 같은 입력 디바이스들의 다른 부분들이 또한 사용될 수 있다. 부가적으로, 사용자 자신의 손가락이 접촉식 또는 근접식(proximity-sensitive) 디스플레이 상에 디스플레이된 이미지의 부분들을 선 택하거나 표시하는데 사용될 수 있다. 결과적으로, 본 명세서에 사용된 용어 "사용자 입력 디바이스"는 넓은 정의를 갖는 것으로 의도되며, 잘 알려진 입력 디바이스들의 많은 변동까지 포함한다. The stylus 204 may be equipped with buttons or other features to improve its performance. In one example, the stylus 204 may be embodied as a "pencil" or "pen", with one end constituting the recording portion and the other end moving for the display, where the electronic ink portions on the display to be erased. Make up the "Eraser" part to display. Other portions of input devices such as a mouse, trackball, keyboard, etc. can also be used. In addition, the user's own finger may be used to select or display portions of the image displayed on a contact or proximity-sensitive display. As a result, the term "user input device" as used herein is intended to have a broad definition and encompasses many variations of well known input devices.

다양한 예들에서, 그 시스템은 응용 프로그램이 잉크를 캡쳐하고, 조작하고, 저장하는데 사용할 수 있는 잉크 플랫폼(ink platform)을 COM(구성요소 대상 모델) 서비스의 세트로서 제공한다. 그 잉크 플랫폼은 또한 확장성 마크업 랭귀지(XML)와 같은 랭귀지를 포함하는 마크업 랭귀지를 포함할 수 있다. 또한, 그 시스템은 DCOM을 또다른 구현으로 사용할 수 있다. 또한, 마이크로소프트 코포레이션(Microsoft Corporation)으로부터의 Win32 프로그래밍 모델 및 Net 프로그래밍 모델을 포함하는 구현들이 사용될 수 있다. 이러한 플랫폼들은 상업적으로 이용가능하며 본 기술분야에 공지되어 있다. In various examples, the system provides an ink platform as a set of COM (Component Target Model) services that an application can use to capture, manipulate, and store ink. The ink platform may also include a markup language that includes a language, 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; A personal digital assistant (PDA); A pocket personal computer; Mobile and cellular telephones, pagers, and other communication devices; With a 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 by another device Other types of pen-input computing systems, such as digitizers that can process the collected electronic ink (eg, conventional desktop computers that can process the collected electronic ink by a tablet PC) and / or electronic It may be used in other devices that accept data as ink 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.

<공간적 문서 보기 추상화>Spatial Document Viewing Abstraction

앞서 기재된 바와 같이, 본 발명의 일부 실시예들은 일반적으로 전자 문서들 내의 전자 잉크를 사용하여 보다 풍부하고 보다 다기능의 주석들을 제공하기 위한 시스템 및 방법에 관한 것이다. 다음은 본 발명의 각종 실시예들 및 예들을 보다 상세하게 기재한다. As described 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 generally illustrates the operation of a system and method in accordance with at least some examples of the present invention. In particular, as shown in FIG. 3, a user can interact with electronic document 300 (document “A” in FIG. 3) in several ways, for example, by adding electronic ink to electronic document 300. . In the illustrated example, the electronic document 300 includes electronic or typed text 302 (" Sample Text " in the illustrated example) and ink drawing 304 (home in the illustrated example). Of course, the electronic document 300, such as electronic text, electronic ink (picture or text), images, graphs, tables, charts, other graphics or electronic information and / or combinations thereof, does not deviate from any data or information in the present invention. It may include. For the purposes of this example, its first electronic document 300 (also referred to herein as a “reference document” or “reference portion”) includes electronic typed text 302 and electronic ink picture 304. As the user reviews document A 300 in this example, she decides to include electronic ink annotation within document 300. In particular, in the illustrated example, the annotation includes a circle 306 of margin 308 of the portion of the electronic text 302.

이 예에서, 사용자가 주석을 입력한 후에, 그 응용 프로그램은 새로 입력된 전자 잉크 데이터의 파서(310)를 호출하고 파싱을 요청할 것이다(앞서 언급된 바와 같이, "파싱"은 예를 들어, 다른 분석 처리들뿐만 아니라 여러가지 잉크 타입들(예를 들어, 그림, 텍스트, 플로우차트, 음악 등)로의 전자 잉크의 분류 및/또는 (예를 들어, 잉크 스트록들 간의 공간적 및 위치적 관계들을 확인하고 그들을 적절한 그룹들로 그룹화하는) 잉크 레이아웃 분석을 포함할 수 있다). 특히, 응용 프로그램은 그 입력된 전자 잉크 데이터를 미분류 잉크 데이터로서 파서(310)로 보낼 것이다. 이는 도 3에 입력 화살표(312)로 도시된다. In this example, after the user enters the annotation, the application will call the parser 310 of the newly entered electronic ink data and request parsing (as mentioned earlier, "parsing" is for example another In addition to analytical processes, the classification and / or classification of electronic ink into various ink types (e.g., pictures, text, flowcharts, music, etc.) and / or (e.g., spatial and positional relationships between ink strokes and Ink layout analysis, grouping into appropriate groups). In particular, the application program will send the input electronic ink data to the parser 310 as unclassified ink data. This is illustrated by input arrow 312 in FIG.

선택적으로, 그 응용 프로그램은 기초의 전자 문서(300)에 관한 몇몇 또는 모든 데이터를 파서(310)로 동시에 보낼 수 있다. 이러한 데이터는 예를 들어, 전자 텍스트(302), 그림(304) 등의 위치들과 같은 문서(300) 내의 정보의 공간적 레이아웃에 관한 데이터를 포함할 수 있다. 부가적으로, 그 응용 프로그램은 그 문 서 내의 데이터의 계층적 구조를 나타내는 데이터를 보낼 수 있으며, 이하에ㅐ 보다 상세하게 기재된다. 다른 대안으로서, 또한 이하에 보다 상세하게 기재되는 바와 같이, 파서(310)는 새로운 미분류 잉크에 연관된 공간적 영역 내의 전자 문서(300)에 관한 정보처럼 전자 문서(300)에 관한 임의의 데이터(이 경우, 공간적으로 주석(306) 가까이 위치된 타이프라이팅된 텍스트 및 정보를 나타내는 데이터)를 요청하는 응용 프로그램으로 콜백(call back)할 수 있다. 파서(310)에 입력된 이러한 데이터는 도 3에 입력 화살표(314)로 도시된다. 물론, 미분류 잉크 및 미리 분석된 데이터 양자 모두는 본 발명으로부터 벗어나지 않고 그 파서에 동시에 보내질 수 있으며, 및/또는 그 파서에 사용가능하게 된다. Optionally, the application program may simultaneously send some or all data about the underlying electronic document 300 to the parser 310. Such data may include, for example, data regarding the spatial layout of information within document 300, such as locations of electronic text 302, picture 304, and the like. In addition, the application can send data representing the hierarchical structure of the data in the document, as described in more detail below. As another alternative, and also described in more detail below, parser 310 may store any data about electronic document 300 (in this case, such as information about electronic document 300 in a spatial area associated with a new unclassified ink). Call back to an application that requests spatially typed text and data representing information). This data input to parser 310 is shown by input arrow 314 in FIG. 3. Of course, both unclassified ink and pre-analyzed data can be sent to the parser simultaneously and / or made available to the parser without departing from the present invention.

그 파서(310)는 그 입력된 전자 문서 데이터(314) 및 입력된 미분류 잉크 데이터(312)를 취하고, 새로운 전자 잉크 데이터를 잉크 타입으로 분류하기 위해 그 정보를 사용한다. 그 잉크는 본 발명으로부터 벗어나지 않는 여러가지 다른 잉크 타입들로 분류될 수 있으며, 여러가지 예들의 가능한 잉크 타입들이 이하에 보다 상세하게 기재된다. 기초의 문서(300)에 포함된 입력 잉크(306) 및 정보(302)에 기초한 본 예에 대해서, 본 발명의 이러한 예에 따른 파서(310)는 입력 잉크(306)을 주석 또는 보다 특히 특정의 타이프라이팅된 텍스트를 포함하는 콘테이너 주석(예를 들어 써클)에 대응하는 잉크 그림으로서 결정하고 분류할 수 있다. 물론, 중요표시 주석들, "~로 강조" 주석들, "~로부터 강조" 주석들, (예를 들어, ~로 강조 또는 ~로부터 강조가 없는 앵커 주석들, 수평 범위(horizontal span), 수직 범위(vertical span) 등과 같은 다른 주석 타입들은 또한 가능하며, 여러가지 예들 이 이하에 보다 상세하게 설명될 수 있다. The parser 310 takes the inputted electronic document data 314 and inputted unclassified ink data 312 and uses that information to classify new electronic ink data into ink types. The ink can be classified into various other ink types without departing from the present invention, and various examples of possible ink types are described in more detail below. For this example based on the input ink 306 and the information 302 included in the underlying document 300, the parser 310 according to this example of the present invention may annotate or more particularly specify the input ink 306. It can be determined and classified as an ink picture corresponding to a container annotation (e.g., a circle) containing typed text. Of course, keynote annotations, "highlight as" comments, "highlight from" comments, (e.g. anchor comments without or highlights from, horizontal span, vertical range) Other annotation types such as (vertical span) are also possible, and various examples can be described in more detail below.

일단 파싱되면, 그 주석(306)과 연관된 데이터는 전자 문서(300)와 연관된 "문서 트리"의 계층적 데이터 구조(또는 임의의 다른 적절한 또는 원하는 데이터 구조)로 통합될 수 있으며, 그 데이터 구조(또는 응용 프로그램에 의해 유지된 현존하는 데이터 구조를 변경하기 위한 명령들)는 도 3에 화살표(316)로 도시된 바와 같이 그 응용 프로그램에 리턴될 수 있다. 원하면, 다른 데이터가 또한 본 발명으로부터 벗어나지 않고 파서(310)에서 응용 프로그램으로 리턴될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 포함된 파서(310)의 동작이 하나 이상의 인식기 모듈들, 구성요소들 및/또는 프로그램들에 호출한다면, (핸드라이팅 인식기 또는 다른 인식기와 같은) 인식 분석 처리의 결과와 연관된 데이터가 응용 프로그램으로 리턴될 수 있다. Once parsed, the data associated with the annotation 306 can be incorporated into a hierarchical data structure (or any other suitable or desired data structure) of the "document tree" associated with the electronic document 300, and the data structure ( Or instructions for changing an existing data structure maintained by the application program may be returned to the application program as shown by arrow 316 in FIG. 3. If desired, other data may also be returned to the application program at parser 310 without departing from the present invention. For example, as shown in FIG. 3, if the operation of the included parser 310 calls one or more recognizer modules, components, and / or programs, recognition (such as a handwriting recognizer or other recognizer). Data associated with the results of the analysis process can be returned to the application.

도 4는 이 발명의 몇가지 예들에 사용된 여러가지 특징들의 구현(400)의 예를 도시한다. 도시된 바와 같이, (도 3으로부터의 문서 A와 같은) 전자 문서가 네이터 구조 또는 문서 모델(402)의 응용 프로그램(400a)에 의해 생성되고, 저장되고 및/또는 유지된다. 이러한 데이터 구조(402)는 본 발명으로부터 벗어나지 않는 계층적 데이터 구조 또는 임의의 다른 원하는 또는 적절한 데이터 구조가 될 수 있다. 응용 프로그램(400a)은 "분석 콘텍스트" 대상(404)을 포함하고, 이는 미러 카피, 선택적인 카피, 또는 데이터 구조(402)에 관한 다른 관련 정보를 포함한다(예를 들어, 분석 콘텍스트 대상(404)은 원시 문서 모드 구조(native document mode structure)의 질의들로 번역된 분석 콘텍스트 구조(404)에 질의하는 "트랜스레이 션" 층이 될 수 있으며 - 이러한 방식으로, 본 발명의 실시예들에 따른 파싱 기술은 여러가지 다른 원시 응용 프로그램들로 사용하기 위해 번역될 수 있다). "플랫폼"(400b) 또는 이러한 예의 구현(400)의 운영 체제측은 "잉크 분석기" 방법(406)을 포함하고, 이는 응용 프로그램(400a)에 의해 호출된다. 그 응용 프로그램(400a)는 잉크 분석기 방법(406)을 포함하고, 이는 분석 콘텍스트 대상(404)을 참조하여 그것으로 통과시킨다. 그 잉크 분석기 방법(406)은 파서(408)(또한 본 예에서 플랫폼(400b)의 부분)를 호출할 것이며, 이는 상기 포괄적으로 기재된 바와 같이 입력 데이터의 레이아웃을 분류하고 분석한다. 본 발명에 따른 예의 구현 동작은 이하에 <잉크의 분석> 섹션에서 보다 상세하게 기재된다. 일단 파서(408)가 분석 및 처리를 완료하기만 하면, 그 플랫폼(400b)은 도 4에 화살표(410)로 포괄적으로 도시된 바와 같이, 문서 모델(402) 및/또는 분석 콘텍스트 대상(404)이 파서 처리 및 결과들에 기초하여 그 데이터 구조를 재건할 수 있도록 그 응용 프로그램(400a)으로 데이터를 리턴할 수 있다. 4 shows an example of an implementation 400 of various features used in some examples of this invention. As shown, an electronic document (such as document A from FIG. 3) is created, stored, and / or maintained by the application 400a of the neuter structure or document model 402. This data structure 402 may be a hierarchical data structure or any other desired or suitable data structure without departing from the present invention. Application 400a includes an "analysis context" object 404, which includes a mirror copy, an optional copy, or other relevant information about the data structure 402 (eg, analysis context object 404). ) May be a "translation" layer that queries the analysis context structure 404 translated into queries of a native document mode structure-in this way, according to embodiments of the present invention. Parsing techniques can be translated for use with many other native applications). The operating system side of the "platform" 400b or implementation of this example 400 includes an "ink analyzer" method 406, which is called by the application 400a. The application 400a includes an ink analyzer method 406, which references and passes the analysis context object 404 therein. The ink analyzer method 406 will call the parser 408 (also part of the platform 400b in this example), which classifies and analyzes the layout of the input data as described above comprehensively. Example implementation operations in accordance with the present invention are described in more detail in the <Analyze Ink> section below. Once the parser 408 has completed the analysis and processing, the platform 400b is document document 402 and / or analysis context object 404, as illustrated comprehensively by arrow 410 in FIG. 4. The data can be returned to the application 400a to reconstruct its data structure based on this parser processing and results.

도 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)로서 데이터 구조로(예를 들어, 계층적 배열로) 저장될 수 있다. FIG. 5 illustrates an electronic device in at least some examples of the present invention, for example, a data structure generated and / or output by a portion of an “analysis context” object 404, a document model 402, or a parser 408. A comprehensive illustration of an example of a data structure that can be used to store document data is shown. In particular, in FIG. 5, an example electronic document 500 is shown. When the data structure is stored as an analysis context object 502 or targeted for parsing, the data structure may include various document elements that may be classified or arranged into different groupings or "nodes". . For example, as shown in FIG. 5, the electronic document 500 includes three electronic text paragraphs 504, 506, and 508; One electronic ink drawing 510; One electronic ink tin 512 is included. An example analysis context data structure 502 for an electronic document 500 is shown in FIG. 5 as a list of high-level elements. In particular, node element 504 (a) corresponds to paragraph 504 in electronic document 500, node element 506 (a) corresponds to paragraph 506 in electronic document 500, and node element 508 (a) corresponds to paragraph 508 in the electronic document 500, and node element 510 (a) corresponds to paragraph 510 in the electronic document 500, and node element 512 (a ) Corresponds to paragraph 512 in electronic document 500. Additional nodes, as will be described in more detail below, the higher level nodes 504 (a), 506 (a), 508 (a), 510 (a), 512 (a) shown in FIG. Can be stored in a data structure (eg, in a hierarchical array) as a parent node and / or child node.

B. 콘텍스트 노드 및 계층적 데이터 구조B. Context Nodes and Hierarchical Data Structures

도 6a 내지 도 6i는 본 발명의 몇가지 예들에 따라서 분석 콘텍스트 대상과 같은 전자 문서 데이터를 구축하고, 분석하고, 파싱하는데 사용될 수 있는 콘텍스트 노드들 및 데이터 구조들의 여러가지 예들을 도시한다. 도 6a는 미분류 전자 잉크 데이터(예를 들어, 이전에 파싱을 목표로 하지 않은 사용자에 의해 새롭게 입력된 잉크)를 저장하기 위해 사용될 수 있는 예의 데이터 구조(600)를 도시한다. 이러한 예의 데이터 구조(600)는 (응용 프로그램, 문서의 특정 페이지, 또는 그 응 용 프로그램에 의해 사용되는 그룹과 같은 데이터의 임의의 적절한 또는 원하는 그룹 내의 전체 전사 문서에 대응할 수 있는) 루트 노드(root node)(602)를 포함한다. 임의의 적절하거나 원하는 데이터는 페이지 수, 이전의 페이지 및 다음 페이지, 마진의 위치 또는 크기 등의 포인터들과 같은 루트 노드(602)에 포함될 수 있다. 각각의 루트 노드(602)는 임의의 수의 미분류 잉크 노드들(604)을 자식 노드들로 포함할 수 있고, 각각의 미분류 잉크 노드(604)는 또한 임의의 수의 개별 스트록 노드들(606)을 포함할 수 있다(계층 구조의 마지막 노드(본 예에서 스트록 노드(606)는 또한 이 명세서에서 "리프 노드(leaf node)"로 언급될 수 있다). (여러 도면들에서의 문자 "n"은 0을 포함한 임의의 수를 나타낸다.) 데이터 구조(600)의 여러가지 노드들은 그 노드에 대응하는 임의의 원하는 또는 적절한 데이터를 포함할 수 있다. 예를 들어, 스트록 노드들(606)은: 전자 잉크 스트록을 식별하는 디지타이저 포인트 또는 다른 데이터; 스트록 위치 또는 방향 데이터; 스트록 컬러 데이터; 스트록 압력 데이터; 스트록 입력 타이밍 데이터; 스트록 ID 데이터; 및/또는 전자 잉크를 수신할 수 있는 시스템 및 방법에서 스트록 정보를 저장하는데 사용되는 임의의 다른 종래의 또는 유용한 데이터를 나타내는 데이터를 포함할 수 있다. 마찬가지로, 미분류 잉크 노드(들)(604)는: 노드 내에 포함된 모든 스트록들의 바운딩 박스(bounding box) 크기; 바운딩 박스 위치; 입력 타이밍 정보; (예를 들어, 최소 볼록 집합(convex hull) 정보와 같은) 잉크에 대한 기하학(geometric) 정보; 및/또는 그 노드에 포함된 미분류 잉크 스트록들에 관한 임의의 다른 종래의 또는 유용한 데이터를 나타내는 데이터와 같은, 잉크 또는 노 드에 연관된 임의의 원하는 또는 적절한 데이터를 포함한다. 대안으로, 필요에 따라, 스트록 데이터는 일반적으로 문서 트리내의 분리된 노드보다는 또다른 노드(예를 들어, 단어 노드, 테이블 노드 등의) 속성으로서 저장될 수 있다. 6A-6I illustrate various examples of context nodes and data structures that can be used to construct, analyze, and parse electronic document data, such as an analysis context object, in accordance with some examples of the present invention. 6A illustrates an example data structure 600 that may be used to store unclassified electronic ink data (eg, ink newly entered by a user who has not previously been targeted for parsing). The data structure 600 of this example is a root node (which may correspond to an entire transcription document in any suitable or desired group of data, such as an application, a particular page of a document, or a group used by the application). node) 602. Any suitable or desired data may be included in the root node 602, such as pointers to the number of pages, previous and next pages, location or size of margin, and the like. Each root node 602 can include any number of unclassified ink nodes 604 as child nodes, and each unclassified ink node 604 can also include any number of individual stroke nodes 606. (The last node in the hierarchy (in this example, the stroke node 606 may also be referred to herein as a "leaf node"). (The letter "n" in the various figures. Represents any number, including 0.) The various nodes of data structure 600 may contain any desired or appropriate data corresponding to that node. A digitizer point or other data identifying an ink stroke; stroke position or orientation data; stroke color data; stroke pressure data; stroke input timing data; stroke ID data; and / or a system capable of receiving electronic ink; May include data indicative of any other conventional or useful data used to store the stroke information in the law Similarly, the unclassified ink node (s) 604 may: bounding boxes of all strokes contained within the node box) size; bounding box position; input timing information; geometric information about the ink (e.g., minimum convex hull information); and / or unclassified ink strokes contained in the node. Any desired or appropriate data associated with the ink or node, such as data representing any other conventional or useful data relating to the alternative, alternatively, as needed, the stroke data is generally more than a separate node in the document tree. It may be stored as another node (eg, word node, table node, etc.) attribute.

일단 미분류 잉크가 분류기, 레이아웃 분석기, 인식기 및/또는 또다른 파싱 시스템으로 보내지기만 하면, 그 잉크의 적어도 일부는 함께 연관될 수 있거나 및/또는 여러가지 다른 타입들로 분류될 수 있으며, 그 잉크에 연관된 데이터 구조는 그것이 분류되었던 여러가지 결합들 및 타입들에 대응하도록 변화될 수 있다. 도 6b는 잉크 텍스트로서 분류되었던 전자 잉크에 대한 예의 데이터 구조(610)를 도시한다. 본 기술분야에 공지되고 사용된 종래의 파서들을 포함한 파싱 기술을 사용하면, 입력 전자 잉크 스트록들(예를 들어, 펜-다운 이벤트(pen-down event)와 시간적으로 다음의 펜-업 이벤트(pen-up event) 또는 몇가지 다른 방식으로 콜렉팅된 전자 잉크 데이터)은 계층적 방식으로 파싱되고 저장될 수 있으며, 관련된 개별 잉크 스트록들은 함께 그룹화되어 잉크 단어들로서 저장될 수 있으며, 선형적으로 배치된 잉크 단어들은 함께 그룹화되어 잉크 라인들로서 저장될 수 있으며, 관련된 잉크 라인들은 함께 그룹화되어 잉크 단락들로서 저장될 수 있으며 관련된 단락들은 전자 문서들로서(예를 들어, 각각의 페이지 부분들로, 전제 문서들로서, 또는 임의의 적절한 루트 그룹으로) 저장될 수 있다. 도 6b에 도시된 바와 같이, 이러한 방식으로 파싱되고 저장된 전자 잉크 데이터에 대응하는 예시적인 계층적 데이터 구조(610)가 루트 노드(612)를 포함할 수 있고, 이는 전체 전자 문서, 페이지, 또는 응용 프로그램으로 사용되는 또다른 그룹에 대응할 수 있다. 각각의 루트 노 드(612)는 전자 잉크 스트록들의 단락들 또는 유사한 그룹들에 대응하는 임의의 수의 노드들(614)을 포함할 수 있다. 단락 노드들(614)은 임의의 수의 개별 라인 노드들(616)을 포함할 수 있고, 이는 또한 입력 전자 잉크 데이터의 개별 스트록들에 대응하는 임의의 수의 개별 스트록 노드들(620)을 포함할 수 있다. 선택적으로, 앞서 기재된 바와 같이, 그 스트록 데이터는 필요에 따라, 연관된 단어 노드의 "속성"으로서 저장될 수 있다. 여러가지 노드들(612, 614, 616, 618, 620)은 유사한 공간적 방향과 같은 노드 내에 포함된 여러가지 개별 스트록들 또는 스트록들의 콜렉션 또는 앞서 기재된 것과 같은 위치 데이터 및/또는 다른 데이터에 관한 임의의 적절한 데이터를 저장할 수 있다. Once the unclassified ink has been sent to the classifier, layout analyzer, recognizer, and / or another parsing system, at least some of the ink may be associated together and / or classified into various other types and associated with that ink. The data structure can be changed to correspond to the various combinations and types in which it has been classified. 6B shows an example data structure 610 for an electronic ink that has been classified as ink text. Using parsing techniques, including conventional parsers known and used in the art, input electronic ink strokes (e.g., pen-down events and the following pen-up events in time) -up event) or electronic ink data collected in some other manner) can be parsed and stored in a hierarchical manner, and the individual ink strokes involved can be grouped together and stored as ink words, and the linearly placed ink The words may be grouped together and stored as ink lines, the associated ink lines may be grouped together and stored as ink paragraphs and the related paragraphs may be electronic documents (eg, as individual page parts, as prerequisite documents, or To any suitable root group). As shown in FIG. 6B, an example hierarchical data structure 610 corresponding to electronic ink data parsed and stored in this manner may include a root node 612, which may be an entire electronic document, page, or application. Corresponds to another group used by the program. Each root node 612 may include any number of nodes 614 corresponding to shorts or similar groups of electronic ink strokes. Shorting nodes 614 may include any number of individual line nodes 616, which also includes any number of individual stroke nodes 620 corresponding to individual strokes of input electronic ink data. can do. Optionally, as described above, the stroke data may be stored as "attributes" of the associated word node, as needed. The various nodes 612, 614, 616, 618, 620 may contain a collection of various individual strokes or strokes contained within the node, such as similar spatial orientation, or any suitable data regarding positional data and / or other data as described above. Can be stored.

입력 전자 잉크 스트록들에 대응하는 다른 데이터 타입들 및 데이터 구조 배치들이 본 발명으로부터 벗어나지 않고 가능하다. 예를 들어, 분류하는 것, 레이아웃 분석, 또는 인식기 기술이 입력 전자 잉크가 잉크 그림을 형성함을 결정할 수 있다. 도 3은 몇몇 개별 잉크 스트록들을 포함하는 예의 잉크 그림(304)을 도시한다. 도 6c 및 도 6d는 잉크 그림들에 관련하는 것으로 결정된 전자 잉크 데이터를 그룹화하고 저장하는데 사용될 수 있는 예시적인 계층적 데이터 구조들을 도시한다. 도 6c에 도시된 바와 같이, 데이터 구조(630)는 (앞서 기재된 바와 같이 전체 전자 문서, 전자 페이지, 또는 데이터의 몇가지 다른 그룹에 대응할 수 있는) 루트 노드(632)를 포함한다. 각각의 루트 노드(632)는 (예를 들어, 각각의 개별 그림이 예를 들어, 그림 폭, 그림 높이, 그림 위치, 바운딩 박스 크기 등에 관한 데이터를 저장하는 개별 노드를 갖도록) 임의의 수의 개별 잉크 그림 노드들(636)을 포함할 수 있으며, 각각의 잉크 그림 노드(636)는 (그 그림을 구성하는 개별 잉크 스트록들에 대응하는) 임의의 수의 개별 잉크 스트록 노드들(638)을 포함할 수 있다. 선택적으로, 그 잉크 스트록 데이터는 대응하는 잉크 그림 노드(또는 다른 노드)의 "속성"으로 저장될 수 있다. Other data types and data structure arrangements corresponding to the input electronic ink strokes are possible without departing from the present 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 data structure 630 includes a root node 632 (which may correspond to an entire electronic document, an electronic page, or some other group of data, as described above). Each root node 632 can be any number of individual (eg, each individual picture has individual nodes that store data, for example, picture width, picture height, picture position, bounding box size, etc.). Ink picture nodes 636, each ink picture node 636 includes any number of individual ink stroke nodes 638 (corresponding to the individual ink strokes that make up the picture). can do. Optionally, the ink stroke data may be stored as the "attributes" of the corresponding ink picture node (or other node).

도 6d는 하나 이상의 잉크 그림들을 포함하는 전자 문서들에 대한 대안의 데이터 구조(630a)를 도시한다. 본 예에서, 전자 문서 또는 페이지 또는 데이터의 다른 그룹(루트 노드 632a로 표시됨)은 함께 연관되어 도 6c에 관련하여 기재된 계층적 방식으로 저장된 그들의 데이터를 갖는 전자 잉크 그림들의 하나 이상의 그룹들(노드 634a로 표시됨)을 포함할 수 있다(예를 들어, 전체 전자 문서(루트 노드 632a로 표시됨)는 몇몇 개별 페이지들(그룹 노드 634a로 각각 표시됨)을 포함할 수 있고, 각각의 개별 페이지는 하나 이상의 개별 잉크 그림들(잉크 그림 노드 636a로 각각 표시됨)을 가질 수 있고, 각각의 개별 잉크 그림은 하나 이상의 개별 잉크 스트록들(스트록 노드 638a로 또는 잉크 그림 노드의 속성으로 각각 표시됨)을 포함할 수 있다). 두 개의 그룹들 및 잉크 그림들이 동일한 루트 노드 또는 임의의 그룹 노드의 자식들이 될 수 있음을 이해해야 한다. 또한, 필요에 따라 하나의 그룹 노드가 추가의 그룹 노드를 포함할 수도 있다. 물론, 전자 잉크 그림들을 저장하기 위한 또다른 적절한 데이터 구조들이 본 발명으로부터 벗어나지 않고 사용될 수 있다. 6D shows an alternative data structure 630a for electronic documents that include one or more ink pictures. In this example, an electronic document or page or other group of data (denoted as root node 632a) is associated with one or more groups (node 634a) having their data stored in a hierarchical manner described in connection with FIG. 6C. (E.g., an entire electronic document (denoted as root node 632a) may comprise several individual pages (each denoted as group node 634a)), each individual page being one or more individual Ink pictures (represented individually as ink picture node 636a), and each individual ink picture may include one or more individual ink strokes (represented as stroke node 638a or individually as attributes of the ink picture node). . It should be understood that the two groups and the ink pictures can be children of the same root node or any group node. Also, one group node may include additional group nodes as needed. Of course, other suitable data structures for storing electronic ink pictures can be used without departing from the present invention.

그러나, 계층적 데이터 구조들은 입력 전자 잉크 데이터로 사용하는 것으로 제한되는 것은 아니다. (예를 들어, 키보드로부터) 입력 타이프라이팅된 텍스트는 또한 여러가지 그룹들로 연관되어 계층적 데이터 구조로 저장될 수 있다. 도 6e는 그러한 데이터 구조(640)의 예를 도시한다. 이러한 데이터 구조(640)는 (예를 들어, 앞서 논의된 루트 노드들과 같은) 루트 노드(642)를 포함할 수 있다. 각각의 루트 노드(642)는 (텍스트의 단락들에 대응하는) 임의의 수의 텍스트 단락 노드들(644)을 포함할 수 있고, 각각의 단락 노드(644)는 임의의 수의 텍스트 라인 노드들(646)(또는 대안으로 텍스트 문장 노드들)을 포함할 수 있으며, 각각의 라인 노드(646)는 임의의 수의 개별 텍스트 단어 노드들(648)을 더 포함할 수 있다. 필요에 따라, 텍스트 단어들은 또한 본 발명으로부터 벗어나지 않는 개별 텍스트 문자 노드들로 더 쪼개질 수 있으며, (예를 들어, 각 문자의 기준선, 가는선, 어센더(ascender) 및 디센더(descender) 모양들에 관한) 개별 문자 모양 노드들로 더 끊어질 수 있다. 여러가지 노드들은 단락, 라인 또는 단어 공간적 위치, 콘텐트, 크기 등과 같은 텍스트; 페이지 마진; 마진 크기 또는 위치; 페이지 수 등에 관한 임의의 적절한 데이터를 저장할 수 있다. However, hierarchical data structures are not limited to use as input electronic ink data. Input typed text (eg, from a keyboard) can also be associated with various groups and stored in a hierarchical data structure. 6E shows an example of such a data structure 640. This data structure 640 may include a root node 642 (eg, such as the root nodes discussed above). Each root node 642 may include any number of text paragraph nodes 644 (corresponding to paragraphs of text), and each paragraph node 644 may include any number of text line nodes. 646 (or alternatively text sentence nodes), and each line node 646 may further include any number of individual text word nodes 648. If desired, text words can also be further broken down into individual text character nodes without departing from the invention (eg, baseline, thin line, ascender and descender shapes of each character). Can be further broken into individual glyph nodes). Various nodes include text such as paragraph, line or word spatial location, content, size, etc .; Page margins; Margin size or location; Any suitable data about the number of pages and the like can be stored.

도 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 exclusively include electronic ink data or only electronic typed text data. Parsing techniques can be used to analyze, combine, associate, and group these different types within a single data structure without departing from the invention. 6F illustrates that an electronic document or portion thereof (denoted as root node 652) includes one or more individual paragraphs (denoted by paragraph node 654) and one or more individual lines (denoted by line node 656). An example data structure is shown. The lines can include both potentially typed text (denoted by text word node 658) and electronic ink text (denoted by ink word node 660 and ink stroke node 662). Each individual paragraph, line and word node (both typed text and ink words) will contain appropriate independent data, depending on the content of the paragraph, line and word. Additionally or alternatively, the individual words may further include both ink letters and typed letters without departing from the present invention.

다른 전자 데이터는 또한 본 발명으로부터 벗어나지 않고 (계층적 데이터 구조를 포함하는) 전자 문서의 데이터 구조에 포함될 수 있다. 예를 들어, (디지털 포토, 그래픽 정보 등과 같은) 이미지 데이터는 예를 들어, 도 6g의 데이터 구조(664)에 도시된 바와 같이, 전자 문서에 대한 데이터 구조에 포함될 수 있다. 본 예에 도시된 바와 같이, 그 데이터 구조(664)는 하나 이상의 데이터의 개별 그룹들(그룹 노드(668)로 표시됨)을 포함하는 전자 문서 또는 그 부분(루트 노드(666)로 표시됨)을 포함한다. 본 예에서의 각각의 데이터 그룹은 도 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, image data (such as digital photos, graphic information, etc.) may be included in the data structure for the electronic document, as shown, for example, in data structure 664 of FIG. 6G. As shown in this example, the data structure 664 includes an electronic document or portion thereof (denoted as root node 666) that includes one or more individual groups of data (denoted as group node 668). do. Each group of data in this example is typed text (represented by paragraph node 672, line node 674, and text word node 676), as previously described above with respect to FIGS. 6E and 6F. As well as an electronic image (represented by image node 670). Of course, a data structure such as shown in FIG. 6G may also include electronic ink data (eg, such as the data structure shown in FIGS. 6A-6D) or other desired data type without departing from the present invention. 6H illustrates an example of another potential data structure 680 that may be used in accordance with at least some examples of the present invention. In particular, its data structure 680 in FIG. 6H corresponds to an electronic document or portion thereof (indicated as root node 682) that includes one or more lists (indicated by list node 684). The list in the electronic document may include any number of individual list items (represented by list item node 686), and each list item may contain a wide variety of different types of electronic information. For example, some list items may optionally include a list bullet, which may consist of a typed bullet or an electronic ink bullet (containing one or more corresponding ink strokes 690). Ink bullet node 688 is shown in the example of FIG. 6H). In addition, each list item may optionally include one or more electronic ink paragraphs (denoted by node chain 692), one or more ink pictures (denoted by node chain 694), and / or one or more typed paragraphs. (Denoted by node chain 696). Additionally (or alternatively), each list item may optionally include one or more images (represented by image node 698) and / or one or more data groups, such as the groups described above with respect to FIGS. 6D and 6G. (Denoted by the group node chain 700). Various nodes and / or node chains 692, 694, 696, 698, 700 generally correspond to the portions and / or groups of such data structures as well as the example data structures shown in FIGS. 6A-6G. As such, other descriptions are omitted. If desired, in at least some cases, the individual list item node 686 itself may also include a list having a data structure as shown in FIG. 6H.

도 6i는 본 발명의 적어도 몇가지 예들에 사용될 수 있는 또다른 예시적인 데이터 구조(710)을 도시한다. 이러한 예시적인 데이터 구조(710)는 테이블로서 분석되고, 함께 연관되고, 그룹화되고, 저장된 전자 데이터에 대응한다. 이 도시된 예에서, 각각의 전자 문서 또는 그 부분(루트 노드(712)로 표시됨)은 하나 이상의 테이블들(테이블 노드(714)로 표시됨)을 포함할 수 있다. 본 예에서, 테이블은 하나 이상의 정보 행들(행 노드(716)로 표시됨)로 구성될 수 있고, 모든 행은 하나 이상의 개별 셀들(셀 노드(718)로 표시됨)로 구성될 수 있다. 그 개별 셀들은 예를 들어, 앞서 기재된 여러가지 다른 데이터 구조들 중 임의의 구조를 포함하는 하나 이상의 데이터 구조를 포함할 수 있다. 도시된 예에서, 그 개별 테이블 셀들은 임의의 수의 이미지들(이미지 노드(720)로 표시됨), 임의의 수의 타이프라이팅된 텍스트 단락들(노드 체인(722)으로 표시됨), 임의의 수의 그룹들(노드 체인(724)으로 표시됨), 임의의 수의 부가적인 테이블들(노드 체인(728)으로 표시됨) 및 임의의 수의 리스트들(노드 체인(730)으로 표시됨)을 잠재적으로 포함하는 것으로 도시된다. 물론, 앞서 기재된 여러가지 특정 데이터 구조들 및/또는 예를 들어, 앞서 기재된 것들과 같은 데이터 구조들의 조합들 및 부분들을 포함하는 임의의 다른 적절한 또는 원하는 데이터 구조들이 본 발명으로부터 벗어나지 않는 테이블에 포함될 수 있다. 6I illustrates another exemplary data structure 710 that can be used in at least some examples of the present invention. This example data structure 710 is analyzed as a table, associated together, grouped, and corresponds to stored electronic data. In this illustrated example, each electronic document or portion thereof (denoted as root node 712) may include one or more tables (denoted as table node 714). In this example, the table may consist of one or more rows of information (represented by row node 716), and every row may consist of one or more individual cells (represented by cell node 718). The individual cells may comprise one or more data structures, including for example any of the various other data structures described above. In the example shown, the individual table cells are any number of images (represented by image node 720), any number of typed text paragraphs (represented by node chain 722), any number of Potentially including groups (represented by node chain 724), any number of additional tables (represented by node chain 728), and any number of lists (represented by node chain 730). Is shown. Of course, various specific data structures described above and / or any other suitable or desired data structures, including, for example, combinations and portions of data structures such as those described above, may be included in the table without departing from the invention. .

임의의 적절한 또는 원하는 데이터가 앞서 기재된 여러가지 데이터의 타입들을 포함하는 여러가지 다른 노드들에 저장될 수 있다. 주석들에 관한 데이터를 처리하는 사용을 위해, 그 전자 문서 내의 노드의 공간적 위치, 방향 또는 위치에 관 한 데이터를 저장하기 위해 여러가지 노드들에 대한 본 발명의 적어도 몇가지 예들에 유용할 수 있으며, 선택적으로 이러한 공간적 정보는 전자 문서 데이터 구조 내의 다른 노드들에 관련하거나 또는 그와 링크한다. 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 present invention. For example, recognizers can be used without departing from the present invention, but with electrical or electronic symbols (eg, resistors, voltage sources, capacitors, etc.); Music symbols; Mathematical symbols; Flowchart elements; Pie chart elements and the like can be used to analyze, recognize, group, and / or associate.

도 6a 내지 도 6i에 도시된 데이터 구조들은 본 발명의 실시예들에 따라 사용될 수 있는 여러가지 데이터 구조들의 단순한 예들이다. 본 기술분야의 숙련자들은 사용된 특정 데이터 구조들이 본 발명으로부터 벗어나지 않고 광범위하게 변경될 수 있음을 인식할 것이다. 예를 들어, 다른 레이아웃 그룹들을 나타내는 다른 노드들이 사용될 수 있거나, 부가적인 노드 타입들이 추가될 수 있거나, 기재된 노드 타입들의 몇몇이 본 발명으로부터 벗어나지 않고 생략될 수 있다(예를 들어, 열 노드들이 테이블 데이터 구조 내에 행 노드들 대신에 사용될 수 있다). 부가적으로, 상기 기재는 문자들이 페이지마다 좌에서 우로 이어서 상에서 하로 판독되는 언어들 및 텍스트 표현들로 사용하기에 최적화되어 있다. 다른 언어들 및 문자 배치에 대응하고 이를 사용하도록 설계된 데이터 구조들, 예를 들어, 우에서 좌로, 상에서 하로, 하에서 상으로 및 그 조합들로 판독 및/또는 기록된 언어들을 수용하 기 위한 데이터 구조들이 본 발명으로부터 벗어나지 않고 사용될 수 있다. 부가적으로, 원한다면(특히 아시아 언어들과 같은 몇가지 언어들에 대해), 스트록들이 문자들로 적절하게 그룹화될 수 있으며, 이어서 상기 기재된 바와 같이, 중간의 "단어" 노드를 사용하지 않고 라인들로 그룹화될 수 있다. 또다른 대안으로, 라인 노드들의 사용은 생략될 수 있고 단어 노드들이 단락들 및/또는 다른 원하는 그룹들로서 함께 그룹화될 수 있다. 특정 언어의 문자들을 수용하기 위해 데이터 구조의 이들 및 다른 변경들이 본 발명으로부터 벗어나지 않고 사용될 수 있다. The data structures shown in FIGS. 6A-6I are simple 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 widely modified without departing from the invention. For example, other 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 present invention (eg, column nodes are tables May be used instead of row nodes within the data structure). In addition, the description is optimized for use in languages and textual representations in which characters are read from left to right and top to bottom, page by page. Data structures that correspond to and use other languages and character placement, for example, data structures to accommodate languages read and / or written in right to left, top to bottom, top to bottom and combinations thereof. Can be used without departing from the present invention. In addition, if desired (especially for some languages, such as Asian languages), the strokes can be properly grouped into letters, and then into lines without using an intermediate "word" node, as described above. Can be grouped. Alternatively, the use of line nodes can be omitted and word nodes can be grouped together as paragraphs and / or other desired groups. These and other changes in data structure may be used without departing from the invention to accommodate characters of a particular language.

C. 주석들에 대한 본 발명의 실시예들의 응용C. Application of Embodiments of the Invention to Comments

앞서 기재된 바와 같이 콘텍스트 노드들 및 계층적 데이터 구조들의 사용을 포함하는 본 발명의 실시예들이 전자 문서들 내의 "스마트한(smart)" 전자 잉크 주석들을 제공하는데 사용될 수 있다. 앞서 기재된 바와 같이, 펜입력식 컴퓨팅 시스템들이 전자 문서들의 주석에 바람직하고 유리하게 사용된다. 그러나, 특히 유용하고 효과적이기 위해, 펜입력식 컴퓨팅 시스템 상의 문서들 내의 전자 잉크로 이루어진 주석들은 기초의 문서 내의 여러가지 엘리먼트들과 연관된 특성들이 어떤 이유(예를 들어, 마진 변화, 디스플레이 크기 변화, 폰트 변화, 정보의 추가, 정보의 삭제 등)로 변화하는 경우, 그 주석은 기초의 문서 내의 주석된 엘리먼트들에 대한 변화들에 기초하여 위치 및/또는 다른 특징들을 정확하게 변화시킬 수 있도록 충분히 유연해야 한다. 이는 예를 들어, 주석과 연관된 적어도 하나의 콘텍스트 노드를 언더라인 표시한 문서와 연관된 하나 이상의 콘텍스트 노드들에 링크함으로 써 달성될 수 있다. 적어도 몇가지 예들에서, 공간적 속성들 위치, 및/또는 하나 이상의 문서 엘리먼트들의 위치에 관한 데이터와 같은, 기초의 문서와 연관되고 그 기초의 문서에 관해 저장된 데이터 및/또는 특성들은 그 주석의 위치, 모양 및/또는 다른 특성들을 제어하는데 사용될 수 있다. Embodiments of the present invention, including the use of context nodes and hierarchical data structures as described above, can be used to provide "smart" electronic ink annotations in electronic documents. As described above, pen-type computing systems are preferably and advantageously used for annotation of electronic documents. However, in order to be particularly useful and effective, annotations made of electronic ink in documents on a pen-type computing system may be used for reasons related to various elements in the underlying document (eg, margin change, display size change, font). Change, add information, delete information, etc.), the annotation should be flexible enough to accurately change position and / or other features based on changes to annotated elements in the underlying 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 underlined document. In at least some examples, the data and / or properties associated with the document of the base and stored with respect to the document of the base, such as spatial properties locations, and / or data about the location of one or more document elements, may be the location, shape of the annotation. And / or to control other properties.

도 7a 및 도 7b는 전자 잉크를 통해 전자 문서에 적용될 수 있는 주석의 일례를 도시한다. 도 7a에 도시된 바와 같이, 전자 문서(750)는 문장 "Today the sky is green"을 포함한다. 펜입력식 컴퓨팅 시스템의 사용자가 단어 "green"을 언더라인 표시하기 위해 전자 잉크를 사용하여 이러한 문서(750)에 주석했다(그 언더라인 표시한 주석은 참조 번호(752)로 도시되었다). 도 7b는 이러한 복합 전자 문서(750)에 대응하는 예시적인 계층적 데이터 구조(760)를 도시한다(그 전체 전자 문서(750)는 루트 노드(762)에 의해 데이터 구조 내에서 표현된다. 일단 완전히 파싱되기만 하면, 그 데이터 구조(760)는 전체 문서 구조를 도시하는 콘텍스트 노드들을 포함할 것이다. 특히, 전자 문서(750) 내의 타이프라이팅된 텍스트에 관한 정보는 그 전자 문서(750)가 하나의 단락(단락 노드(764))을 포함하고, 그 단락은 라인(라인 노드(766))을 포함하고, 그 라인은 다섯개의 단어(각각의 단어들 "Today", "the", "sky", "is", "green"에 대해 각각 하나씩의 텍스트 단어 노드(768a 내지 768e))를 포함함을 나타내기 위해 분석되고 함께 연관될 것이다. 부가적으로, 그 파서는 주석(752)에 관한 전자 문서(750) 내의 데이터의 존재를 주목할 것이며, 이 데이터를 전자 잉크 그림(잉크 그림 노드(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 electronic document 750 includes the sentence “Today the sky is green”. A user of the pen-input computing system annotated this document 750 using electronic ink to underline the word "green" (the underlined annotation is shown by reference numeral 752). 7B shows an example hierarchical data structure 760 corresponding to such a compound electronic document 750 (the entire electronic document 750 is represented within the data structure by the root node 762. Once fully Once parsed, the data structure 760 will include context nodes that show the entire document structure, in particular, information about typed text within the electronic document 750 indicates that the electronic document 750 is a paragraph. (Paragraph node 764), the paragraph containing a line (line node 766), and that line contains five words (each of the words "Today", "the", "sky", " will be analyzed and associated together to indicate that it contains one text word node 768a through 768e for " is " and " green. " Note the presence of data in 750), and the data Pictures will be classified as ink picture node 770. Additionally, based on the location and location of the ink picture stroke (s) for typed text within the underlying document 750, the parser will render its annotations. It will recognize and classify it as an "underlined" annotation, and will generate an underline node 772. Additionally, the parser will actually contain the underlined annotation in one or more strokes (leaf node 774). All stroke data corresponding to the ink stroke (s) will be stored (optionally, the stroke data can be stored as an attribute of the underline node 772 or another suitable node).

부가적으로, 개별 단어 "green"이 전자 문서(750)에 있을 때마다(예를 들어, 그 단어를 어떤 이유로 이동시켜야 할 때마다) 전자 잉크 언더라인 스트록(752)을 개별 단어 "green"으로 유지하기 위해서, 그 언더라인 콘텍스트 노드(772)(예를 들어, 이러한 링크 예에서 "소스" 콘텍스트 노드)가 도 7b에 화살표(776)로 도시된 바와 같이 단어 "green"에 대한 텍스트 단어 노드(768e)에 링크됨을 나타내도록 본 예의 데이터 구조(760)에 데이터가 저장되며, 텍스트 단어 노드(768e)가 화살표(778)로 지시된 바와 같이 언더라인 노드(772)에 링크됨을 나타내도록 데이터가 저장된다. 이러한 링크는 그 언더라인 노드(772)를 텍스트 단어 노드(768e)에 앵커한다(예를 들어, "앵커" 타입 링크). 따라서, 어떤 이유로 텍스트 단어 콘텍스트 노드(768e)에 저장된 데이터가 단어 "green"의 위치가 전자 문서에서 변경되었음을 나타내는 경우, 그 링크들(776, 778)은 응용 프로그램이 가능하면 그 언더라인 표시한 주석의 렌더링을 그 변경된 전자 문서 내의 텍스트 단어 콘텍스트 노드(768e)의 지점 및/또는 공간적 위치로 이동시켜야 함을 검출하도록 허용할 것이다. 또다른 예로서, 콘텍스트 노드(768e)에 저장된 "바운딩 박스" 데이터, 단어 폭 데이터, 또는 다른 데이터가 어떤 이유로(예를 들어, 폰트 크기 변경, 문자들의 추가, 문자들의 삭제, 문자들의 변경 등이 기인하여) 단어 크기 또는 위치 변화를 나타낸다면, 그 응용 프로그램은 가능하면 콘텍스트 노드(768e)로 표시된 텍스트 단어와 연관된 새로운 크기에 대응하도록 그 렌더링된 언더라인의 크기를 수정할 수 있다(예를 들어, 늘리거나 자를 수 있다). 적용가능한 본 발명의 적어도 몇가지 예들에 따른 시스템 및 방법이 그 주석의 스트록(들)을 한 라인 이상 나타내도록 쪼갤 수 있다면, (예를 들어, 추가된 단어들, 하이픈 넣기(hyphenation) 등 때문에) 그 언더라인 표시한 문서에 대한 변화들은 주석된 문서 엘리먼트가 다수의 라인들 상에 있도록 한다. 또한, 노드들 간의 임의의 적절한 링크 배치 또는 링크를 나타내는 임의의 적절한 데이터가 본 발명으로부터 벗어나지 않고 사용될 수 있다. Additionally, whenever an individual word "green" is in the electronic document 750 (eg, whenever the word has to be moved for some reason), the electronic ink underline stroke 752 is replaced by the individual word "green". In order to maintain, the underline context node 772 (eg, the "source" context node in this link example) is the text word node for the word "green" (as shown by arrow 776 in FIG. 7B). Data is stored in the data structure 760 of this example to indicate that it is linked to 768e, and the data is stored to indicate that the text word node 768e is linked to the underline node 772 as indicated by the arrow 778. do. This link anchors its underline node 772 to the text word node 768e (eg, an “anchor” type link). Thus, if for some reason the data stored in the text word context node 768e indicates that the position of the word "green" has been changed in the electronic document, the links 776, 778 indicate the underlined annotation, if possible by the application. Will allow the detection of the need to move the rendering of to the point and / or spatial location of the text word context node 768e in the modified electronic document. As another example, "bounding box" data, word width data, or other data stored in context node 768e may be for some reason (e.g. changing font size, adding characters, deleting characters, changing characters, etc.). Indicative of a word size or position change, the application may possibly modify the size of the rendered underline to correspond to the new size associated with the text word represented by the context node 768e, if possible. Stretch or cut). If a system and method in accordance with at least some examples of the invention applicable is capable of breaking the stroke (s) of the comment to represent more than one line (eg, due to added words, hyphenation, etc.), Changes to the underlined document cause the annotated document element to be on multiple lines. In addition, any suitable link placement or link between nodes may be used without departing from the present invention.

도 8a 및 도 8b는 또다른 주석 예를 도시한다. 이 예에서, 도 8a에 도시된 바와 같이, 그 전자 문서(800)는 다시 문장 "Today the sky is green"을 포함하지만, 이 경우에는, 펜입력식 컴퓨팅 시스템의 사용자가 단어 "green"을 스트라이크아웃 표시하기 위해 전자 잉크를 사용하여 그 문서(800)를 주석했다(그 스트라이크아웃(strike-out)은 참조번호(802)로 도시된다). 도 8b는 완전히 파싱된 경우의 이 복합 전자 문서(800)에 대응하는 예시적인 계층적 데이터 구조(810)를 도시한다(도 8b의 많은 특정 콘텍스트 노드들이 도 7b에 존재하는 콘텍스트 노드에 대응하기 때문에, 도 7b에 존재하는 것들과 동일한 참조 번호들이 도 8b에 사용되며, 중복 설명은 생략한다). 이 경우, 그 파서는 주석(802)에 관한 전자 문서(800) 내의 데이터의 존재를 주목할 것이고, 이 데이터를 전자 잉크 그림(잉크 그림 노드(812))으로 분류할 것이다. 부가적으로, 문서(800) 내의 기초의 타이프라이팅된 텍스트의 콘텐트에 대한 잉크 그림 스트록(들)의 지점 및 위치에 기초하여, (예를 들어, 그 스트라이크아웃은 텍스트 단어를 수평으로 스팬한다) 그 파서는 그 주석을 "스트라이크아웃(strike-out)" 주석으로 인식하여 분류하고 스트라이크아웃 노드(814)를 생성할 것이다. 부가적으로, 그 파서는 하나 이상의 스트록 리프 노드들(816)에 그 스트라이크아웃 주석의 실제 잉크 스트록(들)에 대응하는 모든 스트록 데이터를(또는 대안으로, 스트라이크아웃 노드(814) 또는 또다른 적절한 노드의 속성으로서) 저장할 것이다. 8A and 8B show another annotation example. In this example, as shown in FIG. 8A, the electronic document 800 again includes the sentence “Today the sky is green”, but in this case, a user of the pen-input computing system strikes the word “green”. The document 800 has been annotated using electronic ink to mark out (the strike-out is shown by reference 802). FIG. 8B shows an example hierarchical data structure 810 corresponding to this compound electronic document 800 when fully parsed (because many of the specific context nodes of FIG. 8B correspond to context nodes present in FIG. 7B). , The same reference numerals as those present in FIG. 7B are used in FIG. 8B, and redundant description is omitted). In this case, the parser will note the presence of data in the electronic document 800 for annotation 802 and will classify this data as an electronic ink picture (ink picture node 812). Additionally, based on the location and location of the ink picture stroke (s) relative to the content of the underlying typed text in document 800 (eg, the strikeout spans the text word horizontally). The parser will recognize and classify the annotation as a "strike-out" annotation and create a strikeout node 814. Additionally, the parser sends one or more stroke leaf nodes 816 with all the stroke data corresponding to the actual ink stroke (s) of the strikeout annotation (or, alternatively, strikeout node 814 or another appropriate). As a node's attributes).

도 7a 및 도 7b에 대해 기재된 언더라인 주석에 대한 경우와 같이, 그 단어가 어떤 이유로 이동해야 한다면, 그 스트라이크아웃 주석은 개별 단어 "green"에 유지될 수 있다. 다시, 이는 예를 들어, 도 8b에 화살표(818)로 도시된 바와 같이, 그 스트라이크아웃 콘텍스트 노드(814)(본 예에서 "소스" 콘텍스트 노드)가 단어 "green"에 대해 텍스트 단어 노드(768e)(본 예에서 "목적지" 콘텍스트 노드)에 링크됨을 나타내기 위해 그 데이터 구조(810)에 데이터를 저장하고, 화살표(820)로 표시된 바와 같이 텍스트 단어 노드(768e)가 스트라이크아웃 노드(814)에 링크됨을 나타내기 위해 데이터 구조에 데이터를 저장함으로써, 달성될 수 있다. 본 예의 링크 타입은 그 스트라이크아웃 노드(814)를 텍스트 단어 노드(768e)에 앵커하는 "수평 스패닝(horizontally spanning)" 링크 타입이다. 따라서, 단어 "green"(또는 노드(768e)와 연관된 다른 단어(들))의 위치 및/또는 크기를 나타내는 텍스트 단어 콘텍스트 노드(768e)에 저장된 데이터가 어떤 이유로 문서(800)에서 변경되었다면, 그 링크들(818, 820)은 응용 프로그램이 가능하다면 스트라이크아웃의 렌더링을 조정하고 및/또는 (가능하다면) 변경된 전자 문서에서 콘텍스트 노드(768e)에 저장된 단어의 위치에 대한 크기, 공간적 위치, 및/또는 크기를 조정해야하는지를 검출하도록 허용할 것이다. 다시, 노드들 간의 임의의 적절한 링크 배치 또는 링크를 나타내는 임의의 적절한 데이터가 본 발명으로부터 벗어나지 않고 사용될 수 있다. As with the underline annotation described with respect to FIGS. 7A and 7B, if the word has to be moved for some reason, the strikeout annotation may be retained in the individual word "green". Again, this means that the strikeout context node 814 (in this example, the "source" context node) is the text word node 768e for the word "green", as shown, for example, by the arrow 818 in FIG. 8B. Data in the data structure 810 to indicate that it is linked to the " destination " context node in this example, and the text word node 768e, as indicated by the arrow 820, is a strikeout node 814. By storing data in a data structure to indicate that it is linked to. The link type of this example is a " horizontally spanning " link type that anchors its strikeout node 814 to the text word node 768e. Thus, if the data stored in text word context node 768e indicating the location and / or size of the word "green" (or other word (s) associated with node 768e) has changed in document 800 for some reason, The links 818, 820 may adjust the rendering of the strikeout, if possible, and / or (if possible) the size, spatial position, and / or position of the word stored in the context node 768e in the changed electronic document. Or it will allow you to detect if you need to resize. Again, any suitable link placement or link between the nodes may be used without departing from the present invention.

도 9a 및 도9b는 주석의 타입의 또다른 예를 도시하며, 주석들을 하나 이상의 텍스트 단어와의 연관 또는 링크를 더 나타낸다. 도 9a 및 도 9b에 도시된 예에서, 그 전자 문서(900)는 다시 문장 "Today the sky is green"을 포함하지만, 이 경우에는, 펜입력식 컴퓨팅 시스템의 사용자가 단어들 "is green"을 써클 표시하기 위해 전자 잉크를 사용한 문서(900)를 주석했다(그 써클 또는 "콘테이너" 타입의 주석은 도 9a에서 참조번호 902로 도시된다). 도 9b는 완전히 파싱된 경우의 이 복합 전자 문서(900)에 대응하는 예시적인 계층적 데이터 구조(910)를 도시한다(도 9b의 많은 특정 콘텍스트 노드들이 도 7b에 존재하는 콘텍스트 노드에 대응하기 때문에, 도 7b에 존재하는 것들과 동일한 참조 번호들이 도 9b에 사용되며, 중복 설명은 생략한다). 이 경우, 그 파서는 다시 주석(902)에 관한 전자 문서(900) 내의 데이터의 존재를 주목할 것이고, 이 데이터를 전자 잉크 그림(잉크 그림 노드(912))으로 분류할 것이다. 부가적으로, 문서(900) 내의 기초의 타이프라이팅된 텍스트의 콘텐트에 대한 잉크 그림 스트록(들)의 지점 및 위치에 기초하여, 그 파서는 그 주석을 "콘테이너(container)" 주석으로 인식하여 분류하고 데이터 구조(910)에 콘테이너 노드(914)를 생성할 것이다. 부가적으로, 그 파서는 하나 이상의 스트록 리프 노드들(916)에 그 콘테이너 주석의 실제 잉크 스트록(들)에 대응하는 모든 스트록 데이터를(또는 대안으로, 잉크 콘테이너 노드 또는 또다른 적절한 노드의 속성으로서) 저장할 것이다. 9A and 9B illustrate another example of the type of annotation, further illustrating the association or linking of the annotation with one or more text words. In the example shown in FIGS. 9A and 9B, the electronic document 900 again includes the sentence “Today the sky is green”, but in this case, a user of the pen-input computing system uses the words “is green”. Annotated document 900 using electronic ink for circle display (annotation of that circle or “container” type is shown at 902 in FIG. 9A). FIG. 9B shows an example hierarchical data structure 910 corresponding to this composite electronic document 900 when fully parsed (because many of the specific context nodes of FIG. 9B correspond to the context nodes present in FIG. 7B). , The same reference numerals as those present in FIG. 7B are used in FIG. 9B, and redundant descriptions are omitted). In this case, the parser will again note the presence of data in the electronic document 900 for annotation 902, and classify this data as an electronic ink picture (ink picture node 912). Additionally, based on the location and location of the ink glyph stroke (s) for the content of the underlying typed text in document 900, the parser recognizes and classifies the annotation as a "container" annotation. And create container node 914 in data structure 910. In addition, the parser sends one or more stroke leaf nodes 916 with all the stroke data corresponding to the actual ink stroke (s) of the container annotation (or, alternatively, as an attribute of an ink container node or another suitable node). Will save).

도 7a 내지 도 8b에 대해 기재된 언더라인 및 스트라이크아웃 주석들에 대한 경우와 같이, 어떤 이유로 이동해야 한다면, 그 콘테이너 주석은 단어 "is green"에 유지될 수 있다. 다시, 이는 예를 들어, 도 9b에 화살표(918a)로 도시된 바와 같이, 그 잉크 콘테이너 콘텍스트 노드(914)(본 예에서 "소스" 콘텍스트 노드)가 단어들 "is green"에 대해 텍스트 단어 노드들(768d, 768e)(본 예에서 "목적지" 콘텍스트 노드) 각각에 링크됨을 나타내기 위해 그 데이터 구조(910)에 데이터를 저장함으로써 달성될 수 있다. 부가적으로, 도 9b에 화살표들(920a, 920b)로 표시된 바와 같이, 텍스트 단어 노드들(768d, 768e)이 콘테이너 노드(914)에 링크됨을 나타내기 위해 데이터 구조(910)에 데이터를 저장할 수 있다. 이 링크는 "콘테인먼트(containment)" 타입의 링크이다. 따라서, 단어들 "is green"(또는 이러한 콘텍스트 노드들과 연관된 다른 단어(들))의 위치 및/또는 크기를 나타내는 텍스트 단어 콘텍스트 노드들(768d, 768e)에 저장된 데이터가 어떤 이유로 전자 문서(900)에서 변경되었다면, 그 링크들(918a, 918b, 920a, 920b)은 응용 프로그램이 가능하다면 콘테이너 주석의 렌더링을 조정하고 및/또는 변경된 전자 문서에서 콘텍스트 노드들(768d, 768e)에 저장된 단어들의 위치에 대한 크기, 공간적 위치, 및/또는 크기를 조정해야하는지를 검출하도록 허용할 것이다. 부가적으로, 사용자가 단어 들 "is"와 "green" 사이에 단어들을 추가하거나, 그 단어들 또는 문자들이 임의의 방식으로 제거 또는 변경되는 경우, 그 응용 프로그램은 이러한 변경들을 수용하기 위해 그 콘테이너 주석의 크기 및/또는 위치를 수정할 수 있다. 다시, 다른 링크 배치들 또는 링크를 나타내는 데이터가 본 발명으로부터 벗어나지 않고 사용될 수 있다. If for some reason the container annotation is to be moved, such as for the underline and strikeout annotations described with respect to FIGS. 7A-8B, the container annotation may be retained in the word “is green”. Again, this means that the ink container context node 914 ("source" context node in this example) is a text word node for the words "is green," for example, as shown by arrow 918a in FIG. 9B. It may be accomplished by storing data in its data structure 910 to indicate that it is linked to each of the fields 768d, 768e (in this example, a “destination” context node). Additionally, as indicated by arrows 920a and 920b in FIG. 9B, data may be stored in data structure 910 to indicate that text word nodes 768d and 768e are linked to container node 914. have. This link is a "containment" type of link. Thus, for some reason the data stored in the text word context nodes 768d and 768e representing the position and / or size of the words “is green” (or other word (s) associated with these context nodes) is for some reason electronic document 900. ), The links 918a, 918b, 920a, and 920b adjust the rendering of container annotations, if possible, and / or position the words stored in the context nodes 768d and 768e in the changed electronic document. It will allow to detect if the size, spatial location, and / or size should be adjusted. Additionally, if the user adds words between the words "is" and "green", or if the words or letters are removed or altered in any way, the application can add the container to accommodate these changes. You can modify the size and / or position of the annotation. Again, other link arrangements or data representing the link can be used without departing from the present invention.

도 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)을 가지며, 그 첫번째 라인 노드(1012)는 (단어들 "Today" 및 "the"와 연관된) 텍스트 단어 노드들(768a, 768b)를 포함하고, 두번째 라인 노드(1014)는 (단어들 "sky", "is" 및 "green"과 연관된) 텍스트 단어 노드들(768c, 768d, 768e)를 포함한다. 10A and 10B show another type of comment that is commonly used, in particular a comment of the "margin comment" type. In this example, as shown in FIG. 10A, the user annotated the electronic document 1000 containing the sentence “Today the sky is green” with an electronic ink margin comment 1002 stating “it's not green!”. . Obviously, in this case, as shown in FIG. 10B, since this text exists in the electronic document 1000 as two lines (unlike one line shown in FIGS. 7A, 8A, 9A), The data structure 1010 associated with the typed text is changed. Thus, the data structure 1010 has two line nodes 1012 and 1014, the first line node 1012 being text word nodes 768a (associated with the words "Today" and "the"). 768b, and the second line node 1014 includes text word nodes 768c, 768d, 768e (associated with the words “sky”, “is”, and “green”).

일단 복합 전자 문서(1000)가 완전히 파싱되면, 그 파서는 주석(1002)을 전자 잉크 텍스트를 포함하는 것으로 인식할 것이며, 이 주석을 (예를 들어, 문서(1000)의 마진의 위치에 기인하여) "마진 코멘트" 타입의 주석으로 분류할 것이다. 따라서, 그 파서는 마진 코멘트에 대해 적절한 콘텍스트 노드(1016)를 생성 할 것이다. 이러한 마진 코멘트(1002)가 단지 전자 잉크 텍스트를 포함하기 때문에, 그 파서는 전자 잉크의 계층적 구조와 연관된 단락 노드(1018), 두 개의 라인 노드들(1020, 1022), 및 적절한 잉크 단어 노드들(1024, 1026, 1028) 및 스트록 노드들(1030, 1032, 1034))를 더 생성한다(앞서 언급된 바와 같이, 선택적으로 및 대안으로, 그 잉크 스트록 데이터는 잉크 단어 노드(들)의 속성들로서 저장될 수 있고, 및/또는 그 라인 노드들은 데이터 구조(1010)로부터 생략될 수 있다). Once the composite electronic document 1000 is fully parsed, the parser will recognize the annotation 1002 as containing electronic ink text, which may be interpreted (eg, due to the position of the margin of the document 1000). ) Will be classified as a comment of type "margin comment" Thus, the parser will create an appropriate context node 1016 for margin comments. Since this margin comment 1002 only contains the electronic ink text, the parser includes a paragraph node 1018, two line nodes 1020, 1022, and appropriate ink word nodes associated with the hierarchical structure of the electronic ink. (1024, 1026, 1028) and stroke nodes 1030, 1032, 1034) (as mentioned above, optionally and alternatively, the ink stroke data is an attribute of the ink word node (s). And / or its line nodes may be omitted from data structure 1010).

다른 링크 관계가 도 10a 및 도 10b의 예에 도시된다. 특히, 이 예에서, 페이지 마진 및 기초의 문서 콘텐트에 대한 마진 코멘트(1002)의 위치 및 방향에 기초하여, 그 파서는 도 10b에 화살표(1036)로 도시된 바와 같이, 마진 코멘트(1002)와 연관된 단락 노드(1018)(본 예에서 "소스" 콘텍스트 노드)가 타이프라이팅된 텍스트와 연관된 단락 노드(764)(본 예에서 "목적지" 콘텍스트 노드)에 링크된다. 부가적으로, 그 파서는 화살표(1038)로 도시된 바와 같이, 타이프라이팅된 텍스트와 연관된 단락 노드(764)가 마진 코멘트(1002)의 단락 노드(1018)에 의해 링크됨을 나타내기 위해 데이터 구조(1010)에 데이터를 저장할 것이다. 이는 잉크 단락이 텍스트 단락에 앵커되는 "앵커된(anchored)" 타입의 링크 배치이다. 이러한 방식으로, 타이프라이팅된 단락이 전자 문서(1000) 내에서 이동할 때마다, 링크들(1036, 1038)은 응용 프로그램이 가능하다면, 선택적으로, 부가적인 라인들 및/또는 단어들이 단락에 추가되고, 및/또는 라인들 및/또는 단어들이 단락으로부터 제거되고, 다른 변경들이 단락 또는 전자 문서(1000)에서 행해질지라도, 링크된 타이프라이팅된 단락에 인접한 마진에 남게되도록 그 마진 코멘트(1002)를 이동시 켜야 한다는 것을 검출하도록 허용할 것이다. 물론, 다른 링크 배치들 또는 그 링크들과 연관된 데이터가 본 발명으로부터 벗어나지 않고 저장될 수 있다. 예를 들어, 그 마진 코멘트 노드(1016)는 첫번째 텍스트 단어 노드(768a)와 같은 타이프라이팅된 단락의 하나 이상의 개별 텍스트 단어 노드들에 링크될 수 있다. Another link relationship is shown in the example of FIGS. 10A and 10B. In particular, in this example, based on the page margin and position and orientation of margin comment 1002 relative to the underlying document content, the parser is coupled with margin comment 1002, as shown by arrow 1036 in FIG. 10B. An associated paragraph node 1018 (in this example a "source" context node) is linked to a paragraph node 764 (in this example a "destination" context node) associated with the typed text. In addition, the parser may indicate that paragraph node 764 associated with typed text is linked by paragraph node 1018 of margin comment 1002, as shown by arrow 1038. 1010) will store the data. This is a "anchored" type of link placement in which an ink paragraph is anchored to a text paragraph. In this way, every time a typed paragraph moves within the electronic document 1000, the links 1036, 1038 may optionally add additional lines and / or words to the paragraph, if the application is capable of it. Move the margin comment 1002 so that the lines and / or words are removed from the paragraph and other changes are made in the paragraph or electronic document 1000, but remain in the margin adjacent to the linked typed paragraph. It will allow you to detect that it should be turned on. Of course, other link arrangements or data associated with the links can be stored without departing from the present invention. For example, the margin comment node 1016 may be linked to one or more individual text word nodes of a typed paragraph, such as the first text word node 768a.

도 11a 및 도 11b는 본 발명의 적어도 몇가지 예들에 따른 방법 및 시스템에 의해 인식가능한 주석의 다소 좀더 복잡한 예를 도시한다. 도시된 예에서, 그 전자 문서(1100)는 문구 "Today the sky is green"을 다시 포함하지만, 이 경우에, 사용자는 다른 주석 타입들의 조합을 사용하여 전자 문서(1100)를 주석했다. 특히, 그 사용자는 단어 "green"을 둘러싸는 콘테이너 타입 주석(1102), 전자 잉크 단어 "Blue!"를 포함하는 마진 코멘트 타입 주석(1104) 및 콘테이너 타입 주석(1102)으로부터 마진 코멘트 주석(1104)으로 지시하는 커넥터 타입 주석(1106)을 그렸다. 11A and 11B illustrate somewhat more complex examples of annotations recognizable by methods and systems in accordance with at least some examples of the present invention. In the example shown, the electronic document 1100 again includes the phrase "Today the sky is green", but in this case, the user annotated the electronic document 1100 using a combination of other annotation types. In particular, the user has a container type annotation 1102 surrounding the word "green", a margin comment type annotation 1104 comprising the electronic ink word "Blue!" And a margin comment annotation 1104 from the container type annotation 1102. A connector type tin 1106 is indicated.

기초의 문서, 타이프라이팅된 문서 텍스트 및 문서의 마진들에 대한 여러가지 주석 타입들의 관련 지점 및 공간적 방향 때문에, 본 발명의 적어도 몇가지 예들에 따른 파서 시스템은 여러가지 주석 타입들, 그들의 콘텐트, 및 서로에 대한 그들의 관계 및 앞서 포괄적으로 기재된 바와 같은 전자 문서 타이프라이팅된 텍스트를 인식할 것이다. 그 파서에 의해 생성된 전자 문서(1100)에 대한 예시적인 계층적 데이터 구조(1110)가 도 11b에 도시된다. 타이프라이팅된 텍스트에 대한 그 계층적 구조가 도 7b에서 앞서 기재된 바와 동일하기 때문에, 동일한 참조번호들이 도 11b의 구조에 사용되며, 상세한 설명은 생략한다. 또한, 도 11b에 도시된 바와 같이, 잉크 콘테이너 타입 주석(1102)에 대한 노드 체인(1112)은 도 9b에 도시된 것과 유사하며, 가장자기 코멘트 타입 주석(1104)에 대한 노드 체인(1114)는 도 10b에 도시된 것과 유사하다. 따라서, 이러한 노드 체인들의 상세한 설명은 기재되지 않는다. Because of the relevant points and spatial orientation of the various annotation types for the underlying document, typed document text, and margins of the document, a parser system according to at least some examples of the present invention provides various annotation types, their content, and relative to each other. It will recognize their relationship and the electronic document typed text as described above comprehensively. An exemplary hierarchical data structure 1110 for the electronic document 1100 generated by the parser is shown in FIG. 11B. Since the hierarchical structure for typed text is the same as described previously in FIG. 7B, the same reference numerals are used in the structure of FIG. 11B, and the detailed description is omitted. Also, as shown in FIG. 11B, the node chain 1112 for ink container type tin 1102 is similar to that shown in FIG. 9B, and the node chain 1114 for most magnetic comment type tin 1104 is shown in FIG. Similar to that shown in FIG. 10B. Thus, detailed descriptions of these node chains are not described.

주석들의 공간적 위치를 기초의 텍스트의 적절한 지점 및 공간적 위치로 유지하기 위해서, 그 주석 노드들 간의 여러가지 링크들 및 적절한 텍스트 노드를 갖는 여러가지 링크들이 파서에 의해 제공되며, 데이터 구조(1110)에 저장된다. 도시된 예에서, 도 11b에 화살표(1118)로 도시된 바와 같이, 그 잉크 콘테이너 노드(1116)(여기서 "소스" 콘텍스트 노드)는 그가 포함하는 단어의 텍스트 단어 노드(768e)에 링크된다. 유사하게, 도 11b에 화살표(1120)로 표시된 바와 같이, 텍스트 단어 노드(768e)가 잉크 콘테이너 노드(1116)에 링크됨을 나타내는 데이터 구조(1110)에 데이터가 저장된다. 이것은 "콘테이너" 타입 링크 배치이다. In order to maintain the spatial location of the annotations at the appropriate point and spatial location of the underlying text, various links between the annotation nodes and various links with appropriate text nodes are provided by the parser and stored in the data structure 1110. . In the example shown, as shown by arrow 1118 in FIG. 11B, the ink container node 1116 (here “source” context node) is linked to the text word node 768e of the word it contains. Similarly, as indicated by arrow 1120 in FIG. 11B, data is stored in data structure 1110 indicating that text word node 768e is linked to ink container node 1116. This is a "container" type link placement.

앞서 언급된 바와 같이, 본 발명의 이러한 예에 따른 파서는 또한 그 전자 문서(1100)가 잉크 커넥터에 대응하는 잉크 그림(1106)(즉, 본 예에서 콘테이너 주석(1102)과 마진 코멘트 주석(1104) 사이의 화살표)을 포함함을 인식한다. 이러한 커넥터 주석(1106)은, 커넥터를 구성하는 스트록 또는 스트록들을 나타내는 데이터를 (예를 들어, 스트록 노드(들)(1126) 또는 잉크 커넥터 노드(1124)(또는 또다른 적절한 노드)와 연관된 속성에) 더 포함하는, 주석 타입을 나타내는 노드(본 예에서 잉크 커넥터 노드(1124))를 포함하는, 잉크 그림(본 예에서 잉크 그림 노드(1122)로 표시됨)으로서 데이터 구조(1110)에 저장된다. 더구나, 정보는 잉크 커넥터 노드(1124)(본 예에서 "목적지" 노드)가 그 잉크 커넥터 노드(1116)(본 예에서 "소스" 노드)로부터 지시됨을 나타내도록 데이터 구조(1110)에 저장된다. 이러한 링크("~로부터의 지시들(points from)" 타입의 링크)는 도 11b에 화살표(1128)로 표시된다. 부가적으로, 데이터 구조(1110)는 잉크 커넥터 노드(1124)(본 예에서 "소스" 콘텍스트 노드)가 잉크 단어 노드(1132)(본 예에서 "목적지" 콘텍스트 노드)에 링크됨을 나타내도록 데이터를 더 포함한다. 이러한 링크("~로의 지시들(point to)" 타입의 링크)는 도 11b에 화살표(1134)로 표시된다. 대안으로, 그 잉크 커넥터 노드(1124)는 본 발명으로부터 벗어나지 않고 잉크 라인 노드, 잉크 단락 노드, 또는 노드 체인(1114)의 마진 코멘트 노드 중 임의의 것으로 링크될 수 있다. 앞서 기재된 특정 링크들로, 그 데이터 구조(1110)는 도 11a에 도시된 바와 같이, 잉크 커넥터(1106)가 써클 그림(1102)로부터 지시하고 잉크 단어로 지시함을 나타낸다. 이러한 여러가지 링크들은 응용 프로그램이 기초의 문서 및 여러가지 주석 엘리먼트들 간의 관계를 검출하도록 허용한다. 이어서, 가능하다면, 그 응용 프로그램은 기초의 문서에서의 이동들에 적절하게 대응하기 위해 주석 엘리먼트들을 이동시킬 수 있다. 임의의 적절한 링크 배치 또는 링크와 연관된 데이터는 본 발명으로부터 벗어나지 않고 사용될 수 있다. As mentioned above, the parser according to this example of the present invention also has an ink picture 1106 whose electronic document 1100 corresponds to an ink connector (i.e., container annotation 1102 and margin comment annotation 1104 in this example). (The arrows between)). This connector annotation 1106 may assign data representing the stroke or strokes that make up the connector (eg, to attributes associated with the stroke node (s) 1126 or ink connector node 1124 (or another suitable node). ) Is further stored in the data structure 1110 as an ink picture (indicated by ink picture node 1122 in this example), including a node indicating an annotation type (ink connector node 1124 in this example). Moreover, information is stored in the data structure 1110 to indicate that the ink connector node 1124 (the "destination" node in this example) is directed from that ink connector node 1116 (the "source" node in this example). This link (link of type “points from”) is indicated by arrow 1128 in FIG. 11B. In addition, the data structure 1110 displays data to indicate that the ink connector node 1124 (the "source" context node in this example) is linked to the ink word node 1132 (the "destination" context node in this example). It includes more. This link (link of type “point to”) is indicated by arrow 1134 in FIG. 11B. Alternatively, the ink connector node 1124 can be linked to any of the ink line node, ink shorting node, or margin comment node of the node chain 1114 without departing from the present invention. With the specific links described above, its data structure 1110 indicates that the ink connector 1106 points out of the circle picture 1102 and in ink words, as shown in FIG. 11A. These various links allow the application to detect the relationship between the underlying document and various annotation elements. Then, if possible, the application program can move the annotation elements to appropriately correspond to the movements in the underlying document. Any suitable link placement or data associated with a link can be used without departing from the present invention.

도 12a 및 도 12b는 통상적으로 사용된 주석 모양의 또다른 예를 도시한다. 이 예에서, 도 12a에 도시된 바와 같이, 그 전자 문서(1200)는 다시 문장 "Today the sky is green"을 포함하지만, 이 경우에는, 펜입력식 컴퓨팅 시스템의 사용자가 그 문장의 첫번째 단어 근처에 별(star) 또는 별표(asterisk)를 위치시키기 위 해 전자 잉크를 사용하여 그 문서(1200)를 주석했다(그 주석은 참조번호(1202)로 도시된다). 도 12b는 완전히 파싱되면 이러한 복합 전자 문서(1200)에 대응하는 예시적인 계층적 데이터 구조(1210)를 도시한다(도 12b의 많은 콘텍스트 노드들이 도 7b에 존재하는 콘텍스트 노드들에 대응하기 때문에, 도 7b에 존재하는 것들과 동일한 참조번호들이 도 12b에서 사용되며, 중복 설명은 생략한다). 이 경우에, 그 파서는 주석에 관한 전자 잉크 데이터의 존재를 주목할 것이며, 이러한 데이터를 잉크 그림(잉크 그림 노드(1212))으로서 분류할 것이다. 부가적으로, 기초의 문서(1200)의 콘텐트에 대한 주석(1202)의 잉크 스트록(들)의 위치 및 지점뿐만 아니라 잉크 스트록 모양에도 기초하여(예를 들어, 타이프라이팅된 텍스트의 라인과 나란히), 그 파서는 그 주석을 "별표", "불릿" 또는 앵커 타입의 주석으로서 인식할 것이며, 별표 노드(1214)를 생성할 것이다. 부가적으로, 그 파서는 하나 이상의 스트록 리프 노드들(1216) 또는 그 별표 노드의 속성(또는 몇가지 다른 노드)에 별표의 실제 잉크 스트록(들)에 대응하는 모든 스트록 데이터를 저장할 것이다. 12A and 12B show another example of a commonly used tin shape. In this example, as shown in FIG. 12A, the electronic document 1200 again includes the sentence “Today the sky is green”, but in this case, the user of the pen-input computing system is near the first word of the sentence. Annotated the document 1200 using electronic ink to place a star or an asterisk in (the annotation is shown by reference number 1202). FIG. 12B shows an example hierarchical data structure 1210 corresponding to such a compound electronic document 1200 when fully parsed (since many context nodes of FIG. 12B correspond to context nodes present in FIG. 7B, FIG. The same reference numerals as those present in 7b are used in FIG. 12b and duplicate descriptions are omitted). In this case, the parser will note the presence of electronic ink data relating to the annotation and will classify this data as ink picture (ink picture node 1212). Additionally, based on the ink stroke shape as well as the location and point of the ink stroke (s) of the annotation 1202 relative to the content of the underlying document 1200 (e.g., alongside lines of typed text). , The parser will recognize the annotation as a "star", "bullet" or anchor type annotation, and create an asterisk node 1214. Additionally, the parser will store all the stroke data corresponding to the star's actual ink stroke (s) in one or more stroke leaf nodes 1216 or attributes (or some other node) of the star node.

이러한 예에서, 그 타이프라이팅된 텍스트가 어떤 이유로 이동해야 한다면, 그 별표 타입의 주석(1202)은 라인이 전자 문서(1200)에 있을 때마다 타이프라이팅된 텍스트의 전체 라인에 유지될 수 있다. 이것은 예를 들어, 그 별표 콘텍스트 도 12b에 화살표(1218)로 도시된 바와 같이, 노드(1214)(본 예에서 "소스" 콘텍스트 노드)가 텍스트 라인 노드(766)에 링크됨을 나타내기 위해 데이터 구조(1210) 내에 데이터를 저장하고, 화살표(1220)로 표시된 바와 같이, 텍스트 라인 노드(766)가 별표 노드(1214)에 의해 링크됨을 나타내기 위해 데이터를 저장함으로 써, 달성될 수 있다. 따라서, 텍스트 라인 콘텍스트 노드(766)에 저장된 데이터가 라인의 지점 및 위치가 전자 문서(1200)에서 어떤 이유로 변경되었음을 나타낸다면, 그 링크들(1218, 1220)은 가능하다면, 변경된 전자 문서 내의 콘텍스트 노드(766)와 연관된 데이터의 렌더링에 대응하는 위치 및/또는 공간적 위치에 대해 별표의 렌더링을 조정해야 한다는 것을 응용 프로그램이 검출하도록 허용할 것이다. 대안으로, 필요에 따라, 그 파서는 본 발명으로부터 벗어나지 않고 별표 노드(1214)(또는 별표 주석과 연관된 다른 적절한 노드)를 단락 노드(764) 또는 개별 단어 노드들 중 하나(예를 들어, 단어 노드(768a))와 묶을 수 있다. 또한, 필요에 따라, 잉크 그림 노드(1212)가 라인 노드(766)에 앵커된 소스 노드(또는 본 예에서 타이프라이팅된 텍스트에 대응하는 다른 적절한 노드)가 될 수 있다. 임의의 적절한 링크 배치 또는 링크를 나타내는 데이터가 본 발명으로부터 벗어나지 않고 사용될 수 있다. In this example, if the typed text has to be moved for some reason, the asterisk type annotation 1202 may be maintained in the entire line of typed text whenever the line is in the electronic document 1200. This is, for example, a data structure to indicate that node 1214 (the "source" context node in this example) is linked to text line node 766, as shown by arrow 1218 in its asterisk context FIG. 12B. By storing the data in 1210 and storing the data to indicate that the text line node 766 is linked by an asterisk node 1214, as indicated by arrow 1220. Thus, if the data stored in the text line context node 766 indicates that the point and location of the line has changed for some reason in the electronic document 1200, the links 1218, 1220, if possible, the context node in the changed electronic document. Will allow the application to detect that the rendering of the asterisk should be adjusted for the location and / or spatial location corresponding to the rendering of the data associated with 766. Alternatively, if necessary, the parser may replace the star node 1214 (or other appropriate node associated with the star comment) or one of the individual word nodes (eg, a word node) without departing from the present invention. (768a)). Also, if desired, ink picture node 1212 may be a source node anchored to line node 766 (or other suitable node corresponding to typed text in this example). Any suitable link placement or data representing a link can be used without departing from the present invention.

링크된 주석의 "플로우차트" 타입이 도 13a 및 도 13b의 도움으로 도시된다. 본 예에서, 전자 문서(1300)는 플로우차트를 포함하며, 이는 선택적으로 전체의 큰 전자 문서 내의 주석의 부분으로서 포함될 수 있다. 도 13a에 도시된 바와 같이, 그 주석 또는 플로우차트는 첫번째 콘테이너에 의해 둘러싸인 또는 에워싸인 제1 잉크 엔트리(1302)(본 예에서 문자 "A") 및 두번째 콘테이너 주석(1308)에 의해 둘러싸인 또는 에워싸인 제2 잉크 엔트리(1306)를 포함한다. 부가적으로, 커넥터 주석(1310)(본 예에서 화살표)은 제1 콘테이너 주석(1304)에서 제2 콘테이너 주석(1308)으로 연장한다. 그러나, 문서 엘리먼트들 간의 관계들이 링크들 외의 대안의 방식들로 표시될 수 있음을 이해해야 한다. 예를 들어, 이러한 관계들은 예를 들어, 연관된 문서 엘리먼트들을 포함하는 콘테이너 노드들의 사용을 통해 데이터 트리 자체의 구조로 표시될 수 있다. The "flowchart" type of linked annotation is shown with the aid of FIGS. 13A and 13B. In this example, electronic document 1300 includes a flowchart, which may optionally be included as part of an annotation in the entire large electronic document. As shown in FIG. 13A, the tin or flowchart is surrounded or surrounded by a first ink entry 1302 (letter “A” in this example) and a second container tin 1308 surrounded or surrounded by a first container. A second ink entry 1306 that is signed. Additionally, connector tin 1310 (arrow in this example) extends from first container tin 1304 to second container tin 1308. However, it should be understood that relationships between document elements may be represented in alternative ways other than links. For example, such relationships may be represented in the structure of the data tree itself, for example, through the use of container nodes containing associated document elements.

도 13b는 완전히 파싱되면 도 13a의 전자 문서(1300)의 플로우차트 주석과 연관될 수 있는 예시적인 데이터 구조(1320)를 도시한다. 이러한 예시적인 데이터 구조(1320)에서, 전자 문서(1300)의 모든 부분 또는 일부분에 대응할 수 있는 루트 노드(1322)가 부모 노드로서 플로우차트 타입의 주석 내의 노드들에 제공된다. 특정 주석 구조들에 관한 제1 콘텍스트 노드는 콘테이너(1304)에 대응하는 잉크 그림 노드(1324)이다. 잉크 콘테이너 노드(1326)가 자식 노드로서 잉크 그림 노드(1324)에 제공되고, 그 잉크 콘테이너 주석(1304)과 연관된 특정 스트록(들)이 리프 노드(들)(1328)에 저장되거나, 잉크 콘테이너 노드(1326)(또는 다른 노드)에 속성들로서 저장된다. FIG. 13B shows an example data structure 1320 that, when fully parsed, may be associated with flowchart annotations of the electronic document 1300 of FIG. 13A. In this example data structure 1320, a root node 1322, which may correspond to all or a portion of the electronic document 1300, is provided to nodes in a flowchart type annotation as parent node. The first context node for the particular annotation structures is an ink picture node 1324 corresponding to container 1304. An ink container node 1326 is provided to the ink picture node 1324 as a child node, and specific stroke (s) associated with the ink container annotation 1304 are stored in the leaf node (s) 1328, or an ink container node 1326 (or other nodes) are stored as attributes.

도 13a에 대해 앞서 언급된 바와 같이, 그 주석은 문자 "A"(1302)에 대응하는 전자 잉크 텍스트를 더 포함한다. 앞서 기재된 다른 전자 잉크 텍스트와 공통으로, 이 잉크 텍스트와 연관된 전자 잉크는 계층적 데이터 구조(1320)에 단락 노드(1330)로 저장되며, 그 단락노드(1330)는 라인 노드(1332)를 포함하며, 그 라인 노드(1332)는 잉크 단어 노드(1334)를 포함하며, 그 잉크 노드 단어(1334)는 잉크 텍스트 주석 내의 개별 스트록들 또는 그 스트록 데이터를 포함하는 속성에 대응하는 하나 이상의 리프 노드들(1336)을 선택적으로 포함한다. 데이터 구조(1320)에 저장되는 정보는 콘테이너 주석(1304)의 잉크 콘테이너 노드(1326)("소스" 노드)가 도 13b에 화살표(1338)로 도시되는 바와 같이, 문자 "A"의 단락 노드(1330)("목적지" 콘텍스트 노드)에 링크됨을 나타낸다. 대안으로, 필요에 따라, 그 잉크 단어 노드(1334) 또는 라인 노드(1332)는 목적지 노드로서 역할을 할 수 있다. 부가적으로, 데이터 구조(1320)에 저장된 정보는 또한 그 단락 노드(1330)가 도 13b에 화살표(1340)로 표시된 바와 같이, 잉크 콘테이너 노드(1326)에 의해 링크됨을 나타낸다. 본 예에서 그 주석의 잉크 콘테이너(1308) 및 문자 "B"(1306)에 대한 데이터 구조가 동일한 일반 링크 구조를 포함하는 잉크 콘테이너(1304) 및 문자 "A"(1302)의 데이터 구조와 동일한 일반적 구조를 공유하기 때문에, 문자 "B"(1306) 및 그 연관된 콘테이너(1308)에 대한 데이터 구조(1320) 내의 여러가지 노드들이 문자 "A" 및 그 콘테이너와 연관된 것과 동일한 참조번호들을 공유하지만, 문자 "b"는 도 13b에서 잉크 콘테이너(1308) 및 잉크 단어(1306)에 대한 참조번호들을 따른다. 물론, 그 여러가지 계층적 배열 및 링크 구조 또는 링크 데이터는 특히 본 발명으로부터 벗어나지 않고 앞서 기재된 것과는 다를 수 있다. As mentioned 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 this ink text is stored in a hierarchical data structure 1320 as a paragraph node 1330, which includes a line node 1332. The line node 1332 includes an ink word node 1334, the ink node word 1334 corresponding to individual strokes in the ink text annotation or one or more leaf nodes corresponding to an attribute comprising the stroke data ( 1336) optionally. The information stored in the data structure 1320 is a paragraph node (of letter " A ", as the ink container node 1326 (" source " node) of container annotation 1304 is shown by arrow 1338 in FIG. 1330) (“Destination” context node). Alternatively, if desired, the ink word node 1334 or line node 1332 can serve as a destination node. Additionally, the information stored in data structure 1320 also indicates that paragraph node 1330 is linked by ink container node 1326, as indicated by arrow 1340 in FIG. 13B. In this example, the data structure for the ink container 1308 and the letter "B" 1306 of the annotation is the same as the data structure of the ink container 1304 and the letter "A" 1302 including the same general link structure. Since the structure is shared, the various nodes in the data structure 1320 for the letter "B" 1306 and its associated container 1308 share the same reference numerals as those associated with the letter "A" and its container, but the letter " b "follows reference numerals for the ink container 1308 and the ink word 1306 in FIG. 13B. Of course, the various hierarchical arrangements and link structures or link data may differ from those previously described without particularly departing from the present invention.

그 주석은 데이터 구조(1320)에 잉크 그림 노드(1342)로 표시된 커넥터 주석(1310)을 더 포함한다. 도 11b와 관련하여 앞서 기재된 바와 같이, 잉크 커넥터 주석을 나타내는 잉크 그림에 대한 데이터 구조는 잉크 커넥터 노드(1344)를 더 포함할 수 있고, 그 잉크 커넥터 구조(1344)는 하나 이상의 속성들 또는 리프 노드(들)(1346)를 더 포함할 수 있고, 그 리프 노드(들)(1346)는 커넥터(1310)를 구성하는 특정 스트록(들)과 연관된 데이터를 포함한다. 본 예의 주석 데이터 구조를 완성하기 위해, 잉크 커넥터 주석(1310)(소스 노드)과 연관된 데이터는 두 개 의 콘테이너 주석들(1304, 1308)(목적지 노드들)과 연관된 데이터와 링크된다. 특히, 도 13b의 예에 도시된 바와 같이, 정보는 잉크 콘테이너 노드(1326)가 "~로부터의 지시들" 주석 타입으로서 잉크 커넥터 노드(1344)(화살표(1348)로 표시됨)에 링크됨을 나타내기 위해 데이터 구조(1320)에 저장된다. 부가적으로, 정보는 그 잉크 커넥터 노드(1344)가 "~로의 지시들" 주석 타입으로서 잉크 콘테이너 노드(1326b)(화살표(1352)로 표시됨)에 링크됨을 나타내기 위해 데이터 구조(1320)에 저장된다. 이러한 방식으로, 링크들에 관해 저장된 데이터는 그 커넥터(1310)가 도 13a에 도시된 바와 같이, 써클 콘테이너(1304)로부터 써클 콘테이너(1308)로 지시함을 나타낸다. 그러므로, 여러 링크들의 존재는 전자 문서(1300) 내의 주석의 일부분의 이동이 그 주석의 다른 부분들에 선행되므로 전자 문서(1300)가 몇가지 방식으로 변경할지라도 주석은 원래대로 유지하도록 허용할 것이다. 물론, 상기한 전체적인 구조는 본 발명으로부터 벗어나지 않고 전술한 하부(underlying) 문서 엘리먼트들 일부에 링크되어 있을 수도 있다.The annotation further includes a connector annotation 1310 indicated by an ink picture node 1342 in the data structure 1320. As described above with respect to FIG. 11B, the data structure for the ink picture representing the ink connector annotation may further include an ink connector node 1344, which ink connector structure 1344 may include one or more attributes or leaf nodes. (S) 1346, which leaf node (s) 1346 include data associated with the particular stroke (s) that make up the connector 1310. To complete the annotation data structure of this example, the data associated with the ink connector annotation 1310 (source node) is linked with the data associated with two container annotations 1304 and 1308 (destination nodes). In particular, as shown in the example of FIG. 13B, the information indicates that the ink container node 1326 is linked to the ink connector node 1344 (indicated by arrow 1348) as the “instructions from” annotation type. To a data structure 1320. Additionally, information is stored in data structure 1320 to indicate that ink connector node 1344 is linked to ink container node 1326b (indicated by arrow 1352) as the "instructions to" annotation type. do. In this way, the data stored for the links indicates that the connector 1310 points from the circle container 1304 to the circle container 1308, as shown in FIG. 13A. Therefore, the presence of several links will allow the annotation to remain intact, even if the electronic document 1300 changes in some way, since the movement of a portion of the annotation within the electronic document 1300 precedes other portions of the annotation. Of course, the overall structure described above may be linked to some of the underlying document elements described above without departing from the invention.

유사하게, 주석이 예를 들어, "switch these!"와 같은 쓰여진 코멘트로 커넥터에 의해 연결된 두 개의 엔클로저(encloser)들을 포함할 수 있다. 그 주석의 일부분이 이동되면, 단어들이 두 개의 엔클로저들 간에 삽입되는 경우와 같이, 그 주석의 다른 부분과 관계없이 이동하는 것이 필요할 것이다. 전자 잉크 주석들을 나타내는 콘텍스트 노드들과 비-잉크(non-ink) 콘텐트를 나타내는 노드들 간의 링크들은 그 주석의 조각들을 재위치시키기 위해 소프트웨어 애플리케이션에 의해 사용될 수 있으며, 그 위치지정 동작이 완료할 경우 그들을 다시 함께 묶을 수 있다. Similarly, a comment may include two enclosures connected by a connector with written comments, for example, "switch these!". If a portion of the comment is moved, it will be necessary to move it independently of the other parts of the comment, such as when words are inserted between two enclosures. 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 the annotation, when the positioning operation is complete. You can tie them together again.

도 14a 및 도 14b는 플로우차트 타입의 주석 또는 잉크 구조를 갖는 전자 문서(1400)의 또다른 예를 도시한다. 이 예에서, 문자 "A"(1402)에 대한 전자 잉크 주석이 문자들 "A"와 "B" 및 "A"와 "C" 간의 전자 잉크 커넥터들(1408, 1410)로 문자들 "B"(1404) 및 "C"(1406)에 대한 전자 잉크 주석들에 각각 연결된다. 14A and 14B show another example of an electronic document 1400 having a flowchart type annotation or ink structure. In this example, the electronic ink annotation for the letter "A" 1402 is the letters "B" to the electronic ink connectors 1408 and 1410 between the letters "A" and "B" and "A" and "C". Connected to electronic ink annotations for 1404 and "C" 1406, respectively.

파싱 후 전자 문서(1400)에 대한 예시적인 데이터 구조(1420)가 도 14b에 도시된다. 전체 전자 문서 또는 그의 일부분에 관한 데이터가 부모 루트 노드(1422)에 저장될 수 있다. 전자 잉크 단어들 "A", "B" 및 "C"에 대응하는 데이터는 앞서 몇가지 모양들로 사용된 바와 같이, 동일한 단락 노드(1424a, 1424b, 1424c), 라인 노드(1426a, 1426b, 1426c), 잉크 단어 노드(1428a, 1428b, 1428c) 및 스트록 노드(들)(1430a, 1430b, 1430c) 구조를 갖는다. 이러한 노드들의 반복 설명은 생략한다. 마찬가지로, 잉크 커넥터들은 앞서 도 11b 및 도 13b에 사용된 잉크 그림 노드(1432a, 1432b), 잉크 콘테이너 노드(1434a, 1434b) 및 스트록 노드(들)(1436a, 1436b) 구조를 가지며, 반복 기재는 생략된다. 물론, 앞서 기재된 가능한 변경들을 포함한 이러한 특정 데이터 구조들의 변경들은 본 발명으로부터 벗어나지 않고 사용될 수 있다. An example data structure 1420 for the electronic document 1400 after parsing is shown in FIG. 14B. Data about the entire electronic document or portions thereof may be stored at the parent root node 1422. The data corresponding to the electronic ink words "A", "B" and "C" are the same paragraph nodes 1424a, 1424b, 1424c, line nodes 1426a, 1426b, 1426c, as used in several shapes above. Ink word nodes 1428a, 1428b, 1428c, and stroke node (s) 1430a, 1430b, 1430c. Repeated descriptions of these nodes are omitted. Similarly, the ink connectors have the structure of ink picture nodes 1432a and 1432b, ink container nodes 1434a and 1434b, and stroke node (s) 1434a and 1436b previously used in FIGS. 11B and 13B, and repeated descriptions are omitted. do. Of course, changes in these specific data structures, including the possible changes described above, can be used without departing from the invention.

이러한 예시적인 주석 데이터 구조를 완성하기 위해서, 잉크 커넥터 주석(1408)과 연관된 데이터는 연결한 두 개의 잉크 단어 주석들(1402, 1404)과 연관된 데이터에 링크되고, 잉크 커넥터 주석(1410)과 연관된 데이터는 연결한 두 개의 잉크 단어 주석들(1402, 1406)과 연관된 데이터에 링크된다. 특히, 도 14b의 예에 도시된 바와 같이, 잉크 그림 노드(1432a)("소스" 노드)가 잉크 단어 노드들(1428a, 1428b)(화살표(1438, 1440)로 각각 표시됨)"로 지시함"을 나타내기 위해 데이터 구조(1420)에 정보가 저장된다. 유사하게, 잉크 그림 노드(1432b)("소스" 노드)가 잉크 단어 노드들(1428a, 1428c)(화살표(1442, 1444)로 각각 표시됨)"로 지시함"을 나타내기 위해 데이터 구조(1420)에 정보가 저장된다. 그 잉크 단어 노드들(1428a, 1428b, 1428c)은 "목적지" 노드들로서 기능한다. 여러가지 링크들 때문에, 전자 문서(1400)의 주석의 일부의 이동이 주석의 다른 부분들에 선행할 수 있으므로, 전자 문서(1400)가 몇가지 방식으로 변경될지라도 그 주석을 원래대로 유지할 수 있다. 또한, 이러한 주석은 본 발명으로부터 벗어나지 않고 타이프라이팅된 텍스트, 그림, 이미지 등과 같은 전자 문서 내의 하나 이상의 다른 엘리먼트들과 링크될 수 있다. To complete this example annotation data structure, the data associated with the ink connector annotation 1408 is linked to the data associated with the two ink word annotations 1402 and 1404 to which it is linked, and the data associated with the ink connector annotation 1410. Is linked to the data associated with the two ink word annotations 1402 and 1406 that are connected. In particular, as shown in the example of FIG. 14B, the ink picture node 1432a (the " source " node) is indicated by the ink word nodes 1428a, 1428b (represented by arrows 1438 and 1440, respectively). " Information is stored in the data structure 1420 to indicate that. Similarly, the data structure 1420 to indicate that the ink picture node 1432b (the "source" node) points to the ink word nodes 1428a and 1428c (represented by arrows 1442 and 1444 respectively) ". The information is stored in. The ink word nodes 1428a, 1428b, 1428c serve as "destination" nodes. Because of the various links, movement of a portion of the annotation of the electronic document 1400 may precede other portions of the annotation, so that the annotation may remain intact even if the electronic document 1400 is changed in some way. In addition, such annotations may be linked with one or more other elements in an electronic document, such as typed text, pictures, images, and the like, without departing from the invention.

도 15a 내지 도 15c는 전자 문서(1500)의 예들 및 복수의 행들 및 열들을 갖는 테이블의 형태로 전자 잉크 주석을 포함하는 예시적인 데이터 구조들을 도시한다. 특히, 도 15a의 예에 도시된 바와 같이, 전자 문서(1500)는 두 개의 행들 및 두 개의 열들(전체 4개의 셀들로 구성됨)을 갖는 테이블(1502)을 포함하고, 그 테이블의 각각의 셀은 전자 잉크 경계들로 구성되고, 전자 잉크 텍스트 입력을 포함한다. 15A-15C illustrate example data structures including electronic ink annotation in the form of examples of electronic document 1500 and a table having a plurality of rows and columns. In particular, as shown in the example of FIG. 15A, the electronic document 1500 includes a table 1502 with two rows and two columns (consisting of four cells in total), each cell of the table It consists of electronic ink boundaries and contains electronic ink text input.

파싱이 완료된 후에, 도 15a에 도시된 전자 잉크 테이블(1502)에 대한 예시적인 데이터 구조(1510)가 도 15b에 도시된다. 이 예에서, 데이터 구조(1510)는 전자 문서(1500)의 모두 또는 일부에 대응할 수 있는 루트 노드(1512)를 포함한다. 루트 노드(1512) 하에서, 테이블에 관한 관련 데이터가 테이블 노드(1514)에 저장 된다. 이것은 예를 들어, 테이블 크기, 테이블 위치, 행수, 열수, 바운딩 박스 크기 등을 나타내는 데이터를 포함할 수 있다. 테이블 노드(1514) 하에서, 분리 행 노드들이 테이블의 각 행에 제공된다(본 예에서, 도 15b에 도시된 바와 같이, 두 개의 행 노드들(1516, 1518)이 제공된다). 이러한 예시적인 데이터 구조 각각의 행 노드는 하나 이상의 셀 노드들을 더 포함한다(도시된 예에서, 행 노드(1516)는 두 개의 셀 노드들(1520, 1522)을 포함하고, 행 노드(1518)는 두 개의 셀 노드들(1524, 1526)을 포함한다). 본 예의 각각의 셀은 전자 잉크 텍스트 데이터를 포함하기 때문에, 본 예의 계층적 데이터 구조(1510)의 나머지는 앞서 상세하게 기재된 친숙한 단락 노드, 라인 노드, 잉크 단어 노드 및 스트록 노드(들)을 갖는다. 물론, 그 테이블 셀들은 본 발명으로부터 벗어나지 않고 예를 들어, 타이프라이팅된 텍스트 데이터 및/또는 도 6i에 대해 앞서 상세하게 기재된 여러가지 데이터 타입들을 포함하는 전자 잉크 데이터에 부가하여 및/또는 그 전자 잉크 데이터 대신에 하나 이상의 다른 데이터 타입들을 포함할 수 있다. 또다른 대안으로서, 행 노드들(1516, 1518) 대신에, 그 데이터 구조는 도 15b에 도시된 바와 같이 셀 노드들, 단락 노드들 등을 포함할 수 있는 열 노드들을 포함할 수 있다. 실제 테이블을 구성하는 잉크 스트록들은 예를 들어, 테이블 노드(1514)의 부분(예를 들어, 그 노드와 연관된 속성들), 테이블 노드(1514)에 의존하는 잉크 그림 노드(그 아래에 저장된 연관된 스트록들), 및/또는 데이터 구조(1510) 내의 임의의 다른 적절한 위치에 저장될 수 있다. After parsing is complete, an exemplary data structure 1510 for the electronic ink table 1502 shown in FIG. 15A is shown in FIG. 15B. In this example, data structure 1510 includes a root node 1512 that may correspond to all or part of electronic document 1500. Under root node 1512, relevant data about the table is stored in table node 1514. This may include, for example, data indicative of table size, table position, number of rows, number of columns, bounding box size, and the like. Under table node 1514, separate row nodes are provided for each row of the table (in this example, two row nodes 1516, 1518 are provided, as shown in FIG. 15B). The row node of each of these exemplary data structures further includes one or more cell nodes (in the example shown, row node 1516 includes two cell nodes 1520 and 1522, and row node 1518 is Two cell nodes 1524, 1526). Since each cell of this example contains electronic ink text data, the rest of the hierarchical data structure 1510 of this example has the familiar shorting node, line node, ink word node and stroke node (s) described in detail above. Of course, the table cells are in addition to and / or electronic ink data including, for example, typed text data and / or various data types described above in detail with respect to FIG. 6I without departing from the invention. It may instead contain one or more other data types. As another alternative, instead of row nodes 1516, 1518, the data structure may include column nodes, which may include cell nodes, shorting nodes, and the like, as shown in FIG. 15B. The ink strokes that make up the actual table are, for example, portions of table node 1514 (eg, attributes associated with that node), ink picture nodes that depend on table node 1514 (associated strokes stored below it). And / or any other suitable location within data structure 1510.

테이블(1502)을 포함하는 전자 문서(1500)에 대한 대안의 예시적인 데이터 구조(1530)이 도 15c에 도시된다. 이 예에서, 루트 노드(1512); 테이블 노드(1514); 행 노드들(1516, 1518); 및 셀 노드들(1520, 1522, 1524, 1526)은 도 15b에 도시된 것과 동일하다. 그러나, 전자 잉크 텍스트 데이터를 자식 노드들로서 포함하는 것보다는 여러가지 셀 노드들(1520, 1522, 1524, 1526) 하에서, 전자 잉크 텍스트 데이터의 단락 노드들(1528a, 1528b, 1528c, 1528d)(또는 임의의 다른 적절한 또는 원하는 데이터 구조)은 도 15c에 화살표(1530a, 1530b, 1530c, 1530d)로 도시된 바와 같이, 각각의 셀 노드들(1520, 1522, 1524, 1526)에 각각 링크된다. 본 예의 셀 노드들은 그 내에 포함된 잉크 단어들에 대한 콘테이너 타입 "소스" 노드들로서 역할을 할 수 있으며, 잉크 단락, 라인 또는 단어 노드들은 "목적지" 콘텍스트 노드들로서 역할을 한다. 여러가지 링크들 때문에, 전자 문서(1500)에서 테이블 주석의 일부의 이동이 주석의 다른 부분들에 선행될 수 있으며, 그리하여 그 전자 문서(1500)가 몇가지 방식으로 변경될지라도 테이블 주석을 본래대로 유지하여 링크될 수 있다. 그 테이블은 또한 기초의 전자 문서에 기초하여 존재하는 몇가지 다른 노드들에 링크될 수 있다. 다시, 대안으로서, 행 노드들(1516, 1518)은 본 발명으로부터 벗어나지 않고, 여러가지 셀 노드들을 포함하는 열 노드들로 대체될 수 있다. 또한, 실제 테이블을 구성하는 잉크 스트록들은 본 발명으로부터 벗어나지 않고 임의의 위치, 예를 들어, 테이블 노드(1514)의 일부로서(예를 들어, 그 노드와 연관된 속성들로서), 테이블 노드(1514)에 의존하는 잉크 그림 노드로서(그 아래에 저장된 연관된 스트록들로), 및/또는 데이터 구조(1510) 내의 임의의 다른 적절한 위치에 저장될 수 있다. An alternative example data structure 1530 for an electronic document 1500 that includes a table 1502 is shown in FIG. 15C. In this example, root node 1512; Table node 1514; Row nodes 1516 and 1518; And cell nodes 1520, 1522, 1524, 1526 are the same as shown in FIG. 15B. However, under various cell nodes 1520, 1522, 1524, 1526, rather than including electronic ink text data as child nodes, paragraph nodes 1528a, 1528b, 1528c, 1528d of electronic ink text data (or any Other suitable or desired data structures) are linked to respective cell nodes 1520, 1522, 1524, 1526, respectively, as shown by arrows 1530a, 1530b, 1530c, 1530d in FIG. 15C. The cell nodes of this example can serve as container type "source" nodes for ink words contained therein, and ink paragraph, line or word nodes serve as "destination" context nodes. Because of the various links, the movement of a portion of the table annotation in the electronic document 1500 may precede other portions of the annotation, thus keeping the table annotation intact, even if the electronic document 1500 is changed in some way. Can be linked. The table can also be linked to several other nodes that exist based on the underlying electronic document. Again, as an alternative, row nodes 1516 and 1518 may be replaced with column nodes including various cell nodes without departing from the present invention. Also, the ink strokes that make up the actual table may be placed at the table node 1514 at any location, for example, as part of the table node 1514 (eg, as attributes associated with that node) without departing from the invention. As a dependent ink picture node (with associated strokes stored below), and / or at any other suitable location within data structure 1510.

물론, 앞서 기재된 여러가지 예시적인 주석 타입들에 관한 여러가지 모양들은 단지 가능한 주석 타입들, 주석들의 사용, 및 그 주석들 내에 포함될 수 있는 정보의 예들을 기재한다. 본 기술분야의 숙련자들은 많은 수정들 및 변경들이 본 발명으로부터 벗어나지 않고 행해질 수 있음을 인식할 것이다. 예를 들어, 주석들은 본 발명으로부터 벗어나지 않는 많은 다른 조합들 및 교환들에 (전자 잉크 텍스트, 그림, 이미지, 타이프라이팅된 텍스트 및 이미지 등과 같은) 많은 다른 데이터 타입들을 포함할 수 있다. Of course, various aspects of the various exemplary annotation types described above merely describe possible annotation types, the use of annotations, and examples of information that may be included within the annotations. Those skilled in the art will appreciate that many modifications and variations can be made without departing from the present invention. For example, annotations may include many other data types (such as electronic ink text, pictures, images, typed text and images, etc.) in many other combinations and exchanges without departing from the invention.

부가적으로, 여러가지 링크 계획들이 앞서 기재된 여러가지 데이터 구조들에 관련하여 기재된다. 그러한 링크 계획들 또는 기술들은 단지 여러가지 데이터 노드들이 함께 링크될 수 있는 방식의 예들이다. 링크와 연관된 데이터 또는 임의의 적절한 링크 배치가 본 발명으로부터 벗어나지 않고 저장될 수 있다. 예를 들어, 각각의 노드를 ("세계적 단일 식별자(globally unique identifier)", 즉 GUID와 같은) 개별 식별자로 나타내고, GUID 쌍들(또는 그 이상)을 이용하여 나타내는 것이 가능할 수 있다. 또다른 대안으로서, 상기 몇가지 예들에 대해 기재된 이중 링크 배치보다는 단일의 링크가 링크 노드들에 사용될 수 있다. 또다른 가능한 대안으로서, 필요하거나 원한다면, 노드가 그 자체로 링크될 수 있다(예를 들어, 소스 노드 및 목적지 노드가 같은 노드에 있는 셀프-링킹(self-linking)). 본 기술 분야의 숙련자들은 여러가지 데이터 세트들을 서로와 연관시키거나 링크시키는 임의의 적절한 방식이 본 발명으로부터 벗어나지 않고 사용될 수 있음을 인식할 것이다. In addition, various linking schemes are described in relation to the various data structures described above. Such link plans or techniques are merely examples of how various data nodes can be linked together. Data associated with the link or any suitable link placement can be stored without departing from the present 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 using GUID pairs (or more). As another alternative, a single link may be used for the link nodes rather than the dual link arrangement described for some examples above. As another possible alternative, the node can be linked by itself if necessary or desired (eg, self-linking where the source node and the destination node are on the same node). Those skilled in the art will appreciate that any suitable manner of associating or linking various data sets with each other may be used without departing from the present invention.

<잉크의 분석><Analysis of Ink>

본 발명의 예들에 따른 전자 문서 내의 전자 잉크를 분석하기 위한 여러가지 예시적인 기술들이 이제 기재될 것이다. 특히, 도 16a 내지 도 16e는 본 발명의 각종 실시예들에 따라 문서를 분석하는 단계들을 보여주는 플로우차트를 도시한다. 이어서 도 17 내지 도 26은 그 분석 처리동안 사용되는 다른 구성요소들 간의 관계들을 도시한다. Various exemplary techniques for analyzing electronic ink in an electronic document in accordance with examples of the present invention will now be described. In particular, FIGS. 16A-16E illustrate a flowchart 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)으로서 식별된 그러한 데이터 구조를 생성한다. Returning now to FIG. 17, this figure illustrates a software application 1701. The software application 1701 maintains a document 1703 that may include both electronic ink data 1705 and non-ink data 1707, such as typed characters or images. As discussed in detail above, the attributes of both electronic ink data 1705 and non-ink data 1707 may be described in a hierarchical data structure such as a tree. To begin analysis of the electronic ink, at step 1601, the software application 1701 creates such a data structure identified as the analysis context object 1709 in FIG.

도 18은 분석 콘텍스트 대상(1709)에 포함될 수 있는 타입의 예시적인 트리(1801)를 도시한다. 그 트리(1801)는 루트 노드(1803) 및 단락 노드(1805)를 포함한다. 그 단락 노드(1805)는 예를 들어, 보다 이전의 분석 처리로부터 미리 식별되었을 수 있는 전자 잉크 텍스트의 단락에 대응한다. 그 단락 노드(1805)는 두 개의 라인 노드들(1807, 1809)에 연결되며, 이는 전자 잉크 텍스트의 단락에 두 개의 라인들을 표시한다. 라인 노드(1807)은 차례로 두 개의 단어 노드들(1811, 1813)과 연관된다. 각각의 단어 노드(1811, 1813)는 라인 노드(1807)로 표시된 전자 잉크 텍스트의 라인 내의 단어에 대응한다. 단어 노드(1811)는 잉크 스트록 데이터(1815) 및 잉크 스트록 데이터(1817)를 포함한다. 그러므로, 스트록 데이터(1815, 1817)는 단어 노드(1811)로 표시된 단어를 구성하는 텍스트 전자 잉크 스트록들에 대응한다. 유사하게, 단어 노드(1813)는 잉크 스트록 데이터(1819) 및 잉크 스트록 데이터(1821)를 포함하며, 이는 단어 노드(1813)로 표시된 단어를 구성하는 텍스트 전자 잉크 스트록들에 대응한다. 그 트리(1801)는 또한 단지 루트 노드(1803)와 연관된 스트록 데이터(1823~1827)를 포함한다. 이러한 잉크 데이터(1823~1827)는 또다른 잉크 스트록 또는 다른 문서 엘리먼트와 연관되거나 미분류 새로운 잉크 스트록들을 표시한다. 18 shows an example tree 1801 of the type that may be included in the analysis context object 1709. The tree 1801 includes a root node 1803 and a shorting node 1805. The paragraph node 1805 corresponds to, for example, a paragraph of electronic ink text that may have been previously identified from a previous analysis process. The paragraph node 1805 is connected to two line nodes 1807, 1809, which indicate two lines in the paragraph of the electronic ink text. Line node 1807 is in turn associated with two word nodes 1811, 1813. Each word node 1811, 1813 corresponds to a word in a line of electronic ink text represented by line node 1807. Word node 1811 includes ink stroke data 1815 and ink stroke data 1817. Therefore, the stroke data 1815 and 1817 correspond to the text electronic ink strokes that make up the word represented by the word node 1811. Similarly, word node 1813 includes ink stroke data 1819 and ink stroke data 1821, which correspond to the text electronic ink strokes making up the word indicated by word node 1813. The tree 1801 also includes stroke data 1831-1827 associated with only the root node 1803. Such ink data 1823-1827 indicate new ink strokes that are unclassified or associated with another ink stroke or other document element.

그러므로, 개별 스트록 노드들에 그 스트록들을 저장하지 않고, 여러가지 노드들이 노드와 연관된 스트록들에 대응하는 데이터를 저장하는 연관된 "스트록들" 속성을 가질 수 있다. 예를 들어: 리스트 항목 내에 (a) 미분류 콘텍스트 노드들이 분석될 필요가 있는 하나 이상의 스트록들을 갖는 하나 이상의 "스트록들" 속성들을 포함할 수 있고; (b) 잉크 단어 노드들이 잉크 단어를 구성하는 하나 이상의 스트록들을 포함하는 하나 이상의 "스트록들" 속성들을 포함할 수 있고; (c) 그림 노드들이 그림을 구성하는 하나 이상의 스트록들을 포함하는 하나 이상의 "스트록들" 속성들을 포함할 수 있고, (d) 불릿 노드들이 불릿을 구성하는 하나 이상의 스트록들을 포함하는 하나 이상의 "스트록들" 속성들을 포함할 수 있다. 물론, 본 발명의 대안의 구현들로서, 개별 스트록 노드들은 예를 들어, 단어 노드 또는 그림 노드와 잉크 스트록들을 연관시키는 것보다 전자의 개별 스트록들을 표시하기 위해 데이터 트리에 사용될 수 있다. Therefore, without storing the strokes in separate stroke nodes, various nodes may have an associated "strokes" attribute that stores data corresponding to the strokes associated with the node. For example: in a list item (a) unclassified context nodes may include one or more "strokes" attributes with one or more strokes that need to be analyzed; (b) the ink word nodes may include one or more "strokes" attributes that include one or more strokes that make up the ink word; (c) one or more "strokes" attributes where picture nodes include one or more strokes that make up a picture, and (d) one or more "strokes" where bullet nodes comprise one or more strokes that make up a bullet. "Attributes may be included. Of course, as alternative implementations of the present invention, individual stroke nodes can be used in the data tree to represent the individual strokes of the former, for example, rather than associating ink strokes with word nodes or picture nodes.

도 18에 도시된 트리(1801)가 이미 단어들, 라인들 및 단락들로 조직된 잉크 스트록들을 포함하지만, 그 트리(1801)는 또다른 잉크 스트록 또는 문서 엘리먼트와 연관되거나 미분류 단지 새로운 잉크 스트록들만을 포함할 수 있음을 이해해야 한다. 예를 들어, 사용자가 처음에 전자 잉크를 문서(1705)에 입력하는 경우, 이러한 처음의 잉크 스트록들은 분석되지 않을 것이다. 그 트리(1801)는 단지 전형적인 것이며, 본 발명의 각종 실시예들을 이해하는데 용이하도록 지나치게 간소화된 것임을 또한 이해해야 한다. 예를 들어, 라인 노드가 통상적으로 복수의 단어 노드들과 연관될 것이며, 각각의 단어 노드가 몇몇 잉크 스트록들에 대한 스트록 데이터를 포함할 수 있다. 그 트리(1801)는 단지 잉크-관련(ink-related) 노드들인 반면, 분석 콘텍스트 대상(1709)은 앞서 상세하게 기재된 바와 같이, 이미지 및 타이프라이팅된 텍스트와 같은 비-잉크 문서 엘리먼트들을 타나내는 노드들을 포함할 수 있음을 또한 유의해야 한다. Although the tree 1801 shown in FIG. 18 already contains ink strokes organized into words, lines and paragraphs, the tree 1801 is associated with another ink stroke or document element or is only unclassified with only new ink strokes. It should be understood that it may include. For example, if the user initially enters electronic ink into document 1705, these initial ink strokes will not be analyzed. It should also be understood that the tree 1801 is merely exemplary and is overly simplified to facilitate understanding of various embodiments of the present invention. For example, a line node will typically be associated with a plurality of word nodes, each word node may include stroke data for some ink strokes. The tree 1801 is merely ink-related nodes, while the analysis context object 1709 represents a node representing non-ink document elements, such as images and typed text, as described in detail above. It should also be noted that these may be included.

이제 도 17로 돌아가서, 본 발명의 몇가지 예들로서, 그 소프트웨어 애플리케이션(1701)은 그 자신의 분석 콘텍스트 대상(1709)을 생성하고 유지할 것이다. 이러한 소프트웨어 애플리케이션들(1701)에 대해, 그 소프트웨어 애플리케이션(1701)은 분석 대상(1709)에 간단히 참조를 제공할 수 있다. 그러나, 이러한 소프트웨어 애플리케이션들(1701)에 대해, 그 애플리케이션(1701)은 분석 대상을 생성하고, 파퓰레이트하고(populate), 유지하는데 필요한 메커니즘들을 포 함해야 한다. 그러나, 일부 소프트웨어 개발자들은 이러한 메커니즘들에 그 애플리케이션(1701)을 제공하는 문제점을 제기하고 싶지는 않을 것이다. Returning now 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 subject 1709 for analysis. However, for such software applications 1701, the application 1701 must include the mechanisms needed to create, populate, and maintain the subject of analysis. However, some software developers will not want to raise the problem of providing the application 1701 to these mechanisms.

따라서, 그러나, 본 발명의 다른 예들로서, 그 소프트웨어 애플리케이션(1701)은 분석 콘텍스트 대상(1709)을 생성하기 위해 또다른 대상을 실증할 수 있다. 예를 들어, 그 소프트웨어 애플리케이션(1701)은 분석 콘텍스트 대상(1709)을 생성 및/또는 유지하기 위해 잉크 분석 도구 또는 다른 대상을 사용할 수 있다. 예를 들어, 소프트웨어 애플리케이션(1701)이 미분석 잉크 데이터를 잉크 분석 도구에 제공하거나 식별할 수 있다. 소프트웨어 애플리케이션(1701)으로부터의 명령들에 의존하여, 이어서 그 잉크 분석 도구는 전체 문서(1703), 또는 대안으로, 소프트웨어 애플리케이션(1701)에 의해 식별된 미분석 잉크를 포함하는 문서의 특정 영역(또는 영역들)을 표시하는 분석 콘텍스트 대상(1709)을 생성할 수 있다. 몇몇 소프트웨어 애플리케이션들(1701)로서, 그 소프트웨어 애플리케이션(1701)은 그후 스스로 또는 잉크 분석 도구 또는 또다른 대상이 제공된 서비스들을 이용하여, 분석 콘텍스트 대상(1709)을 유지하고 업데이트할 수 있다. 다른 소프트웨어 애플리케이션들(1701)로서, 그 소프트웨어 애플리케이션(1701)은 분석 문서 대상(1709)을 유지하지 못할 수 있고, 대신에 잉크 분석 도구를 갖거나 다른 대상이 필요할 때 새로운 분석 문서 대상(1709)을 생성한다. Thus, however, as other examples of the present invention, the software application 1701 can demonstrate another object to create an analysis context object 1709. For example, the software application 1701 can use an ink analysis tool or other object to create and / or maintain an 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 is then used to determine the entire document 1703, or, alternatively, the specific area (or the area of the document containing the unanalyzed ink identified by the software application 1701). Analysis context object 1709 representing regions) can be created. As some software applications 1701, the software application 1701 may then maintain and update the analysis context object 1709 on its own or using services provided with an ink analysis tool or another object. As other software applications 1701, the software application 1701 may not be able to hold the analysis document object 1709, and instead have a new analysis document object 1709 when it has ink analysis tools or other objects are needed. Create

통상적으로, 그 분석 콘텍스트 대상(1709)은 전체 문서(1703)에 대한 문서 엘리먼트들에 대한 정보를 포함할 것이다. 그러나, 본 발명의 몇가지 예들로서, 그 분석 콘텍스트 대상(1709)은 그 문서(1703)의 단지 일부 내의 문서 엘리먼트들에 대한 정보를 포함할 수 있다. 즉, 그 분석 콘텍스트 대상(1709)은 단지 새로운 또는 "더러운(dirty)" 잉크 또는 다른 데이터를 포함하는 문서의 공간적 영역 내의 문서 엘리먼트들만을 표시할 수 있다. 전자 잉크를 포함하는 문서의 영역 내의 모든 문서 엘리먼트들이 이미 분석되었다면, 이러한 미리 분석된 문서 엘리먼트들은 분석 콘텍스트 대상(1709)에 포함되지 않을 수 있다. 또다른 대안으로서, 그 응용 프로그램은 전체 전자 문서(1703)에 관한 데이터의 각 페이지 또는 다른 서브세트에 대해 분리된 분석 콘텍스트 대상(1709)을 유지할 수 있다. Typically, the analysis context object 1709 will contain information about document elements for the entire document 1703. However, as some examples of the present invention, the analysis context object 1709 may include information about document elements within only a portion of the document 1703. That is, the analysis context object 1709 can only display 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 of the document containing the electronic ink have already been analyzed, these pre-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 relating to the entire electronic document 1703.

일단 그 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709)을 생성하기만 하면, 단계 1603에서, 그 잉크 분석 도구(1901)는 도 19에 도시된 바와 같이, 그 분석 콘텍스트 대상(1709)의 적어도 일부를 카피한다. 특히, 그 분석 콘텍스트 대상(1709)이 앞서 기재된 바와 같이 새로운 잉크 및/또는 다른 데이터를 포함하는 영역들로 제한되지 않는다면, 그 소프트웨어 애플리케이션(1701)은 새로운 잉크 및/또는 분석되어야 하는 다른 데이터를 포함하는 문서(1703)의 영역들을 지정할 것이다. 이어서 그 소프트웨어 애플리케이션(1701)은 그 문서(1703)의 지정된 영역에 대응하는 분석 콘텍스트 대상(1709)의 부분을 카피하기 위해 잉크 분석 도구(1901)를 야기한다. (물론, 그 분석 콘텍스트 대상(1709)이 새로운 잉크를 포함하는 영역들을 기재하는 것으로 제한된다면, 그 잉크 분석 도구(1901)는 전체 분석 콘텍스트 대상(1709)을 카피할 수 있다.) Once the software application 1701 has created an analysis context object 1709, at step 1603, the ink analysis tool 1901 may at least part of the analysis context object 1709, as shown in FIG. 19. Copy In particular, if the analysis context object 1709 is not limited to areas containing new ink and / or other data as described above, the software application 1701 includes new ink and / or other data to be analyzed. Areas of the document 1703 will be specified. The software application 1701 then causes the ink analysis tool 1901 to copy a portion of the analysis context object 1709 corresponding to the designated area of the document 1703. (Of course, if the analysis context object 1709 is limited to describing areas containing new ink, the ink analysis tool 1901 can copy the entire analysis context object 1709.)

응용 프로그램(1701)은 잉크가 미리 분석되지 않았음을 알지만, 그 전자 문 서(1703)의 어느 부분(들)(예를 들어, 미리 분석된 잉크, 전자 문서 내의 기초의 데이터 등)이 새로운 잉크에 영향을 미치는지(그러므로, 어느 부분(들)이 그 잉크 분석 도구(1901)에 존재하는지)는 알 수 없다. 그러므로, 본 발명의 적어도 몇가지 예들에서, 그 응용 프로그램(1701)은 분석 콘텍스트 대상(1709)을 통해 잉크 분석 도구(1901)에 이용가능한 전자 문서(1703)의 큰 섹션들을 만들 것이다. 그 응용 프로그램(1701)은 분석 콘텍스트 대상(1709)을 통해 그 응용 프로그램(1701)으로부터 실제로 요구되는 정보를 결정하기 위해 잉크 분석 도구(1901)에 맡긴다.  The application 1701 knows that the ink has not been analyzed beforehand, but any portion (s) of the electronic document 1703 (eg, pre-analyzed ink, underlying data in the electronic document, etc.) is new ink. (Which part (s) are present in the ink analysis tool 1901) is not known. Therefore, in at least some examples of the invention, the application 1701 will make large sections of the electronic document 1703 available to the ink analysis tool 1901 via the analysis context object 1709. The application 1701 leaves the ink analysis tool 1901 to determine the information actually required from the application 1701 via the analysis context object 1709.

새로운 데이터를 분석하기 위해 호출에 응답하여, 그 잉크 분석 도구(1901)는 필요하다면, 새로운 잉크 및/또는 소프트웨어 애플리케이션(1701)에 의해 지정된 영역 내의 다른 데이터를 분석하는데 요구되는 분석 콘텍스트 대상(1709)으로부터 정보를 획득하기 위해, 그 분석 콘텍스트 대상(1709)에 여러번의 콜백을 행한다. 예를 들어, 새로운 잉크 및/또는 다른 데이터에 부가하여, 그 잉크 분석 도구(1901)는 잉크 및/또는 이미 분석된 지정된 영역 내의 다른 데이터에 관한 정보, 또는 그 지정된 영역 내의 비-잉크 문서 엘리먼트들에 관한 정보에 대한 분석 콘텍스트 대상(1709)을 질의할 수 있다. 그 "지정된 영역"은 본 발명의 적어도 몇가지 예들에서, 새로운 잉크 또는 분석될 다른 데이터를 포함하는 영역에 또는 그 영역 부근에서 공간적 영역의 데이터에 대응한다. In response to the call to analyze new data, the ink analysis tool 1901 may, if necessary, analyze contextual objects 1709 required to analyze other data within the area designated by the new ink and / or software application 1701. To get the information from the call, the callback is made several times to the analysis context object 1709. For example, in addition to new ink and / or other data, the ink analysis tool 1901 may include information about ink and / or other data within a designated area that has already been analyzed, or non-ink document elements within that designated area. The analysis context object 1709 may be queried for information about. The “designated area” corresponds to data in a spatial area at or near the area that contains new ink or other data to be analyzed, in at least some examples of the invention.

미리 분석된 잉크 및 비-잉크 문서 엘리먼트들 둘 모두, 특히 분석될 새로 입력된 데이터 부근에 위치된 그 엘리먼트들이 미분석 잉크 또는 다른 데이터의 분석을 개선하는 콘텍스트를 제공할 수 있다. 잉크 분석 도구(1901)가 그 분석 콘텍 스트 대상(1709)으로부터 원하는 정보를 획득하기 때문에, 그 잉크 분석 도구(1901)는 그 획득된 정보로 문서 독립 분석 콘텍스트 대상(1903)을 생성한다. 그러므로, 그 문서 독립 분석 콘텍스트 대상 (1903)은 그 분석 콘텍스트 대상(1709)에 포함된 정보의 적어도 부분을 포함하지만, 이는 문서(1703)로부터 독립이다. 앞서 기재된 공간적 추상화(abstraction) 방법에 기초한 질의에서 이러한 "콜백(call back)" 기술의 사용은 필요한 데이터를 효율적으로 획득하고 분석하기 위해 그 잉크 분석 도구(1901)에 대해, 심지어 큰 문서들에 대해서도 가능하게 한다. 그러나, 그 애플리케이션(1701)은 요청될 때 콘텐트를 그 분석 도구에 노출하지 않음으로써 그 문서 독립 분석 콘텍스트 대상(1903) 내의 콘텐트를 간단히 제한할 수 있음을 유의해야 한다. Both pre-analyzed ink and non-ink document elements, in particular those elements located near newly input data to be analyzed, may provide a context for improving the analysis of unanalyzed ink or other data. Since the ink analysis tool 1901 obtains the desired information from the analysis context object 1709, the ink analysis tool 1901 generates a document independent analysis context object 1901 with the obtained information. Therefore, the document independent analysis context object 1903 includes at least a portion of the information contained in the analysis context object 1709, but it is independent of the document 1703. The use of this "call back" technique in queries based on the spatial abstraction method described above is useful for the ink analysis tool 1901, even for large documents, to efficiently obtain and analyze the required data. Make it possible. However, it should be noted that the application 1701 can simply limit the content in the document independent analysis context object 1903 by not exposing the content to the analysis tool when requested.

그 잉크 분석 도구(1901)가 문서 독립 분석 콘텍스트 대상(1903)을 생성하지만, 그 소프트웨어 애플리케이션(1701)은 그 분석 콘텍스트 대상(1709)을 변경해서는 안됨을 (그리고, 응용 프로그램 내의 다른 스레드(thread)들 및/또는 다른 프로그램들이 이러한 시간주기 동안 그 분석 콘텍스트 대상(1709)을 변경하도록 허용할 수 없음을) 또한 유의해야 한다. 즉, 그 소프트웨어 애플리케이션(1701)은 이 시간주기 동안 새로운 데이터를 그 문서(1703)에 입력해서는 안되며, 다른 스레드들 및/또는 응용 프로그램들이 그렇게 하도록 허용해서는 안된다. 그러나, 문서 독립 분석 콘텍스트 대상(1903)을 생성하는 처리는 비교적 빠르며, 이는 통상적으로 그 소프트웨어 애플리케이션(1701)의 동작에 상당히 영향을 미치지는 않을 것이다. 그러나, 필요에 따라, 문서(1703)에 데이터를 입력한 결과들은 그 문서 독립 분석 콘텍스트 대상(1903)이 생성된 후에 그 시스템에 입력되어 캐쉬(cach)될 수 있다. Although the ink analysis tool 1901 creates a document independent analysis context object 1903, the software application 1701 should not change the analysis context object 1709 (and other threads in the application). And / or other programs may not allow to change its analysis context object 1709 during this time period. That is, the software application 1701 should not enter new data into the document 1703 during this time period and should not allow other threads and / or applications to do so. However, the process of creating a document independent analysis context object 1903 is relatively fast, which will typically not significantly affect the operation of the software application 1701. However, if desired, the results of entering data into document 1703 may be entered into the system and cached after the document independent analysis context object 1903 is created.

일단 그 문서 독립 분석 콘텍스트 대상(1903)이 생성되면, 미분석 잉크 및/또는 다른 데이터의 다음의 모든 분석들은 그 소프트웨어 애플리케이션(1701)이 미분석 잉크 및/또는 다른 데이터의 분석들에 의해 지연되거나 중지되지 않고 표준 동작을 계속하도록 허용하는 분석 콘텍스트 대상(1709)보다는 문서 독립 분석 콘텍스트 대상(1903)에서 수행될 수 있다. 그 소프트웨어 애플리케이션(1701)은 심지어 문서 독립 분석 콘텍스트 대상(1903) 내의 미분석 잉크의 분석에 간섭하지 않고 새로운 전자 잉크 데이터(1705)를 그 문서(1703)에 입력할 수 있다. Once the document independent analysis context object 1903 is created, all subsequent analyzes of the unanalyzed ink and / or other data may be delayed by the software application 1701 due to the analysis of the unanalyzed ink and / or other data. It may be performed on document independent analysis context object 1901 rather than analysis context object 1709 that allows for continued normal operation without being suspended. The software application 1701 can even enter 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)의 원래의 형태의 카피가 그 분석 처리의 분석 결과들을 문서(1703)의 현재 상태로 조정하는데 사용될 수 있다. Thus, after the document independent analysis context object 1903 is created, at step 1605 the ink analysis tool 1901 creates a separate analysis thread for analyzing ink in the document independent analysis context object 1903. Thus, at step 1607, the software application 1701 can resume control of the main processing thread and continue normal operation. Then, in step 1609, the ink analysis tool 1901 provides a document independent analysis context object 1903 to the first analysis process for analysis. For example, as shown in FIG. 20, the ink analysis tool 1901 may pass a document independent analysis context object 1903 to a parsing process 2001 for parsing using an analysis thread. The parsing process additionally includes ink and / or other data such as ink text, ink pictures, tables, charts, graphics, images, music, mathematics, (resistance, capacitors, etc.) without departing from the present invention. One or more classification processes (such as schematics) to classify into various other types, such as pictures with specific symbols. It should be noted that as some examples of the present invention, the ink analysis tool 1901 can make a copy of the document independent analysis context object 1903. As will be described in more detail below, a copy of the original form of the document independent analysis context object 1903 can be used to adjust the analysis results of the analysis process to the current state of the document 1703.

제1 분석 처리가 문서 독립 분석 콘텍스트 대상(1903) 내의 잉크 및/또는 다른 데이터를 분석한 후에, 그 제1 분석 처리는 잉크 분석 도구(1901)로 분석 결과들을 리턴하며, 이는 차례로 단계 1611의 소프트웨어 애플리케이션에 그 분석 결과들을 알린다. 예를 들어, 도 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 ink analysis tool 1901, which in turn is the software of step 1611. Inform the application of the results of the analysis. For example, as shown in FIG. 21, if the first analysis process is a parsing process 2001, the parsing process returns the parsing results 2101 to the ink analysis tool 1901, and then (eg, For example, by firing an event, a reference to the analysis results 2101 can be passed to the software application 1701.

이하에 보다 상세하게 설명될 것처럼, 본 발명의 몇가지 예들로서, 분석 결과들(2101)은 분석 처리에 최초에 존재했던 문서 독립 분석 콘텍스트 대상(1903)이 될 수 있지만, 제1 분석 처리에 의해 생성된 새로운 정보(예를 들어, 본 예에서 파싱 결과들)를 포함하도록 변경될 수 있다. 그러나, 본 발명의 또다른 예들로서, 그 분석 결과들(2101)은 문서 독립 분석 콘텍스트 대상(1903)의 변경된 카피가 될 수 있다. 문서 독립 분석 콘텍스트 대상(1903)의 카피에 제1 분석 처리에 의해 생성된 새로운 정보를 포함함으로써, 그 최초의 문서 독립 분석 콘텍스트 대상(1903)은 예를 들어, 조정자(reconciler)에 의해 및/또는 앞서 언급된 다른 분석 처리들 에 사용하기 위해 보존될 수 있다. As will be described in more detail below, as some examples of the invention, the analysis results 2101 may be the document independent analysis context object 1903 that originally existed in the analysis process, but generated by the first analysis process. Can be changed to include new information (eg, parsing results in this example). However, as still other examples of the invention, the analysis results 2101 can be a modified copy of the document independent analysis context object 1903. By including 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 may be, for example, by a reconciler and / or It can be preserved for use in the other analytical processes mentioned above.

도 22는 파싱 처리(2001)와 같은 파싱 처리가 파싱 동작에 의해 생성된 레이아웃 변경들을 보여주기 위해 데이터 트리(1801)를 어떻게 변경할 수 있는지의 예를 도시한다. 이 도면에 보여지는 바와 같이, 그 파싱 처리(2001)는 스트록 데이터(1823)로 표시된 미분석 잉크 스트록이 단어 노드(1813)로 표시된 단어의 부분임을 결정한다. 따라서, 그 파싱 처리는 루트 노드(1803)와 그 스트록 데이터(1823)를 관계 해제하고, 대신에 단어 노드(1813)와 연관시킨다. FIG. 22 shows an example of how a parsing process, such as parsing process 2001, may modify data tree 1801 to show layout changes generated by the parsing operation. As shown in this figure, the parsing process 2001 determines that the unanalyzed ink stroke indicated by the stroke data 1823 is part of the word indicated by the word node 1813. Thus, the parsing process disassociates the root node 1803 from its stroke data 1823 and associates it with the word node 1813 instead.

그 파싱 처리는 또한 미분류 스트록 데이터로 표시된 잉크 스트록들(1825, 1827)이 미리 식별되지 않은 라인 노드(1809)로 표시된 라인 내의 새로운 단어의 부분임을 결정한다. 따라서, 파싱 처리(2001)는 새로운 단어 노드(2201)를 생성하고, 라인 노드(1809)와 그 단어 노드(2201)를 연관시킨다. 이어서 그 파싱 처리(2001)는 새로운 단어 노드(2201)에 스트록 데이터(1825, 1827)를 연관시킨다. 그러므로 그 파싱 처리들(2101)은 미리 미분석 잉크 스트록들과 파싱 처리(2001)에 의해 식별된 다른 잉크 스트록들(또는 다른 문서 엘리먼트들) 간의 관계들을 설명한다. 또한, 파싱 처리(2001)에 의해 결정된 관계 변경들을 보여주는 것에 부가하여, 그 파싱 결과들(2101)은 또한 그 파싱 결과들(2101)에 의해 결정된 분류 정보를 포함할 수 있다. 예를 들어, 잉크 스트록 데이터(1823~1827)의 각각의 경우는 그 대응하는 잉크 스트록을 그림 잉크 스트록보다는 텍스트 잉크 스트록으로서 분류하기 위해 변경될 수 있다. 본 발명의 적어도 몇가지 예들에서, 필요에 따라, 그 파싱 결과들(2101)은 문서 독립 분석 콘텍스트 대상(1903)에 표시될 수 있다. The parsing process also determines that the ink strokes 1825 and 1827 represented by the unclassified stroke data are part of the new word in the line indicated by the line node 1809 that is not previously identified. Thus, parsing process 2001 generates a new word node 2201 and associates the line node 1809 with the word node 2201. The parsing process 2001 then associates the stroke data 1825, 1827 with the new word node 2201. Therefore, the parsing processes 2101 describe the relationships between the unanalyzed ink strokes and other ink strokes (or other document elements) identified by the parsing process 2001 in advance. Further, in addition to showing the relationship changes determined by parsing process 2001, the parsing results 2101 may also include classification information determined by the parsing results 2101. For example, each case of ink stroke data 1823-1827 can be modified to classify the corresponding ink stroke as text ink stroke rather than picture ink stroke. In at least some examples of the present invention, the parsing results 2101 can be displayed in the document independent analysis context object 1903 as needed.

앞서 언급된 바와 같이, 제1 분석 처리가 문서 독립 분석 콘텍스트 대상(1903)을 분석하는 동안, 그 소프트웨어 애플리케이션(1701)은 새로운 잉크 데이터(1705) 및 새로운 비-잉크 데이터(1707) 둘 모두를 포함하는 새로운 데이터를 문서(1703)에 입력할 수 있다. 따라서, 제1 분석 처리의 결과들은 문서(1703)의 현재 상태에 더 이상 적용가능하지 않을 수 있다. 예를 들어, 파싱 처리는 잉크 스트록이 단어와 연관됨을 결정할 수 있지만, 사용자는 (예를 들어, 전체의 연관된 단어 또는 그 이상에 따라) 문서(1703)로부터 잉크 스트록을 전체적으로 삭제할 수 있다. 따라서, 그 분석 결과들(2101)은 단계 1613에서 문서(1703)의 현재 상태로 조정되어야 한다. 예시적인 조정 처리가 도 23에 포괄적으로 도시되며, 이는 이하에 보다 상세하게 기재될 것이다. As mentioned above, while the first analysis process analyzes the document independent analysis context object 1903, the software application 1701 includes both new ink data 1705 and new non-ink data 1707. New data can be entered into the document 1703. Thus, the results of the first analysis process may no longer be applicable to the current state of document 1703. For example, the parsing process may determine that the ink stroke is associated with the word, but the user may delete the ink stroke entirely from the document 1703 (eg, according to the entire associated word or more). Thus, the analysis results 2101 should be adjusted to the current state of the document 1703 at step 1613. An exemplary adjustment process is shown generically in FIG. 23, which will be described in more detail below.

본 발명의 몇가지 예들로서, 그 소프트웨어 애플리케이션(1701)은 그 분석 결과들(2101)을 문서(1703)의 현재 상태로 수동으로 조정할 수 있다. 즉, 그 소프트웨어 애플리케이션(1701)은 그 결과들이 현재 문서(1703) 내의 문서 엘리먼트들에 관련함을 결정하기 위해 그 분석 결과들(2101)을 통해 가려낼 수 있다. 그러나, 본 발명의 다른 예들로서, 그 잉크 분석 도구(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 can manually adjust its analysis results 2101 to the current state of the document 1703. That is, the software application 1701 can sift through the analysis results 2101 to determine that the results relate to document elements in the current document 1703. However, as other examples of the present invention, the ink analysis tool 1901 may include the analysis results 2101 as an analysis context object 1709 that reflects the current analysis context object 1709 (ie, the current state of the document 1703). You can provide adjustments to adjust with)). As will be discussed in more detail below, the adjustment function of the various embodiments of the present invention is based on the conflict between the analysis results 2101 from the first analysis process and the analysis context object 1709 for the current state of the document 1703 ( You will identify a conflict or "collision". The ink analysis tool 1901 then updates the analysis context object 1709 based on the analysis results in step 1615, and a new document independent analysis from the adjusted analysis results of the analysis context object 1709 in step 1617. It will create a context target 1903.

잉크 분석 도구(1901)가 그 분석 결과들(2101)을 현재 분석 콘텍스트 대상(1709)으로 조정하는 동안, 그 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709)을 변경해서는 안됨을 (그리고 분석 콘텍스트 대상(1709)이 응용 프로그램 및/또는 임의의 다른 응용 프로그램 내의 다른 스레드들에 의해 변경되도록 허용해서는 안됨을) 유의해야 한다. 즉, 그 소프트웨어 애플리케이션(1701)은 새로운 데이터를 문서(1703)에 입력해서는 안되고, 및/또는 조정이 완료될 때까지 다른 스레드들 및/또는 응용 프로그램이 새로운 데이터를 문서(1703)에 입력하도록 허용해서는 안된다. 처음에 문서 독립 분석 콘텍스트 대상(1903)을 생성하는 처리와 같이, 그 조정 처리는 비교적 빠르며, 통상적으로 소프트웨어 애플리케이션(1701)의 동작에 상당히 영향을 미치지는 않을 것이다. 그러나, 필요에 따라, 시도된 사용자 입력이 그 조정 처리가 완료된 후에 입력되고 캐쉬될 수 있다. While the ink analysis tool 1901 adjusts its analysis results 2101 to the current analysis context target 1709, the software application 1701 should not change the analysis context target 1709 (and the analysis context target). (1709) should not be allowed to be changed by the application and / or other threads in any other application. That is, the software application 1701 should not enter new data into the document 1703 and / or allow other threads and / or applications to enter the new data into the document 1703 until the adjustment is complete. Should not. As with the process of initially creating the document independent analysis context object 1903, its coordination process is relatively fast and will typically not significantly affect the operation of the software application 1701. However, if necessary, the attempted user input can be input and cached after the adjustment process is completed.

그 잉크 분석 도구(1901)가 문서(1703)의 현재 상태에 대해 분석 결과들(2101)을 분석 콘텍스트 대상(1709)으로 조정한 후, 잉크 분석 도구(19901)은 선택적으로 조정된 분석 결과들을 다른 분석을 위한 제2 분석 처리에 제공할 수 있다. 예를 들어, 도 24에 도시된 바와 같이, 그 잉크 분석 도구(1901)는 조정된 파싱 결과들(2401)을 인식을 위한(예를 들어, 텍스트, 음악, 수학적 정보 또는 다른 특정 데이터 타입들의 핸드라이팅 인식을 위한) 잉크 인식 처리(2003)에 제공할 수 있다. 특히, 그 잉크 분석 도구(1901)는 단계 1619에서 제2 분석 처리를 수행하기 위한 분리된 분석 스레드를 다시 생성할 것이다. 그 잉크 분석 도구(1901)가 제2 분석 처리를 실행하기 위한 이러한 분리 스레드를 생성하기 때문에, 그 소프트웨어 애플리케이션(1701)은 단계 1621에서 표준 동작을 다시 시작할 수 있으며, 심지어 새로운 전자 잉크 데이터(1705)를 포함하는 새로운 입력 데이터를 수용할 수 있다. After the ink analysis tool 1901 adjusts the analysis results 2101 to the analysis context object 1709 for the current state of the document 1703, the ink analysis tool 19901 selectively modifies the adjusted analysis results. Can be provided to a second analysis process for analysis. For example, as shown in FIG. 24, the ink analysis tool 1901 can hand the adjusted parsing results 2401 (eg, text, music, mathematical information or other specific data types) for recognition. To the ink recognition process 2003 (for writing recognition). In particular, the ink analysis tool 1901 will recreate a separate analysis thread for performing the second analysis process in step 1619. Since the ink analysis tool 1901 creates such a separate thread for executing the second analysis process, the software application 1701 can resume normal operation in step 1621, and even new electronic ink data 1705. It can accommodate new input data comprising a.

다음으로, 단계 1623에서, 그 잉크 분석 도구(1901)는 제1 분석 처리로부터 제2 분석 처리로 그 조정된 결과들(2401)을 제공한다. 일단 제2 분석 처리가 시작하면, 그 애플리케이션(1701)은 새로운 미분석 잉크에 대해 제1 분석 처리의 또다른 실행을 시작할 수 있다. 그러므로, 다수의 분석 처리들이 동시에 실행될 수 있으며, 그리하여 제2 분석 처리가 제1 분석 처리의 결과들로 작동하는 동안, 그 애플리케이션(1701)은 분석 결과들의 다음 세트를 준비하기 위해 제1 분석 처리를 재시작할 수 있다. Next, at step 1623, the ink analysis tool 1901 provides the adjusted results 2401 from the first analysis process to the second analysis process. Once the second analysis process has begun, the application 1701 can begin another execution of the first analysis process for the new unanalyzed ink. Therefore, multiple analysis processes can be executed simultaneously, so that while the second analysis process operates with the results of the first analysis process, the application 1701 performs the first analysis process to prepare for the next set of analysis results. You can restart it.

유리하게, 그 분석 처리들을 병렬로 수행하는 것은 소프트웨어 애플리케이션(1701)의 동작을 개선할 수 있다. 예를 들어, 그 파싱 분석 처리는 통상적으로 인식 분석 처리에 관련하여 통상적으로 빠르며, 파싱 분석 결과들은 인식 분석 결과들을 사용하지 않고 정확한 선택 동작 및 공간-삽입(space-insertion) 동작을 구현하는데 사용될 수 있다. 그러므로, 다른 분석 처리들이 병렬로 수행될 수 있기 때문에, 문서(1703)에 추가된 새로운 잉크는 그것이 선택되거나 또는 그 내에 정확하게 삽입되는 공간을 가지기 전에 낡은 잉크 데이터를 마무리하기 위해 인식 분석 처리를 대기할 필요가 없다. 또한, 본 발명의 각종 실시예들은 파서 및 인식기 알고리즘 개발자들뿐만 아니라 애플리케이션 개발자들을 두 그룹들에 대해 정비성(maintainability)을 개선하고 개발 처리를 간소화하는 멀티스레딩 문제들로부터 고립시키기 위해 비동시적 잉크 분석을 달성하고, 변경들이 그 애플리케이션에 대해 변경하지 않고 분석 처리들 간에 인터렉트하도록 허용한다. Advantageously, performing the analysis processes in parallel can improve the operation of the software application 1701. For example, the parsing analysis process is typically fast relative to the recognition analysis process, and the parsing analysis results can be used to implement an accurate selection operation and a space-insertion operation without using the recognition analysis results. have. Therefore, because other analysis processes can be performed in parallel, the new ink added to the document 1703 may wait for the recognition analysis process to finish the old ink data before it has space to be selected or correctly inserted therein. no need. In addition, various embodiments of the present invention provide asynchronous ink analysis to isolate not only parser and recognizer algorithm developers, but also application developers from multithreading problems that improve maintainability and simplify development processes for both groups. And allow changes to interact between analysis processes without making changes to the application.

앞서 언급된 바와 같이, 그 잉크 분석 도구(1901)는 그 분석 결과들(2101)의 관련 부분들을 포함하도록 업데이트된 후에 새로운 문서 독립 분석 콘텍스트 대상(1903)을 분석 문서 대상(1703)으로부터 생성함으로써 조정된 분석 결과들을 제공할 수 있다. 그러나, 본 발명의 다른 예들로서, 그 잉크 분석 도구(1901)는 문서(1703)의 현재 상태를 반영하기 위해 최초의 문서 독립 분석 콘텍스트 대상(1903)을 그 분석 결과들(2101)로 간단히 업데이트할 수 있다. 또한, 그 잉크 분석 도구(1901)는 제2 분석 처리와 달리 분석되도록 관련 잉크 데이터를 간단히 제공할 수 있다. As mentioned above, the ink analysis tool 1901 is updated to include relevant portions of the analysis results 2101 and then adjusted by creating a new document independent analysis context object 1903 from the analysis document object 1703. Analyzed results can be provided. However, as other examples of the invention, the ink analysis tool 1901 may simply update the original document independent analysis context object 1903 with its analysis results 2101 to reflect the current state of the document 1703. Can be. In addition, the ink analysis tool 1901 can simply provide relevant ink data to be analyzed differently from the second analysis process.

그러므로, 본 발명의 각종 실시예들은 다음의 분석 처리를 실행하기 전에 이전의 분석 처리의 결과들을 그 문서(1703)의 현재 상태로 조정한다. 그러나, 이러한 중간 조정 단계는 본 발명의 몇가지 예들로 생략될 수 있음을 이해해야 한다. 특히, 본 발명의 몇가지 예들로서, 보다 이른 분석 처리의 결과들은 그 결과들을 문서(1703)의 현재 상태로 조정하지 않고, 다음의 분석 처리에 직접적으로 제공될 수 있다. 예를 들어, 잉크 분석기 처리가 잉크 레이아웃 처리로부터 분리되어 제공된다면, 그 핸드라이팅된 텍스트로서 분류된 잉크는 중간 조정 단계없이 잉크 레이아웃 분석기 처리에 제공될 수 있다. Therefore, various embodiments of the present invention adjust the results of the previous analysis process to the current state of the document 1703 before executing the next analysis process. However, it should be understood that this intermediate adjustment step may be omitted in some examples of the invention. In particular, as some examples of the invention, the results of earlier analytical processing may be provided directly to the next 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 the handwritten text can 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 another arrangement, after the second analysis process 2003 has finished analyzing the adjusted results 2401 from the first analysis process, the second analysis process 2003 may then perform its analysis as shown in FIG. The results 2501 are returned to the ink analysis tool 1901. The ink analysis tool 1901 then informs the software application 1701 of the results 2501 of the second analysis in step 1625.

앞서 언급된 바와 같이, 제2 분석 처리가 제1 분석 처리의 조정된 결과들(2401)을 분석하는 동안, 그 소프트웨어 애플리케이션(1701)은 새로운 전자 잉크 데이터(1705)를 포함하는 새로운 데이터를 문서(1703)에 입력할 수 있다. 그러므로, 제2 분석 처리 결과들(2501)은 문서(1703)의 현재 상태에 더 이상 적용할 수 없다. 따라서, 제2 분석 처리(2003)의 결과들(2501)은 또한 단계 1627에서 문서(1703)의 현재 상태로 조정되어야 한다. 예시적인 조정 처리가 도 26에 포괄적으로 도시되며, 이는 이하에 보다 상세하게 기재될 것이다. As mentioned above, while the second analysis process analyzes the adjusted results 2401 of the first analysis process, the software application 1701 is responsible for documenting new data including the new electronic ink data 1705. 1703). Therefore, the second analysis processing results 2501 are no longer applicable 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 comprehensively 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 present invention, the software application 1701 can manually adjust the second analysis results 2501 to the current state of the document 1703. Alternatively, as other examples of the present invention, the ink analysis tool 1901 may provide an adjustment function to adjust the analysis results 2101 to the current analysis context object 1709. This adjustment function will identify an conflict or “collision” between the analysis results 2501 from the second analysis process and the analysis context object 1709 for the current state of the document 1703, and then the ink analysis tool ( 1901 will update the analysis context object 1709 based on the analysis results at step 1629. This process may then be repeated as needed to analyze the new ink input or ink during the analysis processes.

앞서 말한 논의로부터, 본 발명의 각종 실시예들에 따른 잉크 분석 기술들은 전자 잉크가 소프트웨어 애플리케이션(1701)으로부터 비동시적으로 분석되도록 허용하며, 그 소프트웨어 애플리케이션(1701)이 새로운 전자 잉크를 포함하는 입력 데이터를 분석 처리동안 계속해서 받아들이도록 한다. 상기 논의는 단지 두 분석 처리들을 기재한 것이지만, 임의의 수의 분석 처리들이 병렬로 동시에 수행될 수 있음을 유의해야 한다. 예를 들어, 본 발명의 여러가지 구현들이 제1 파싱 처리, 제2 파싱 처리 및 인식 처리를 이용할 수 있다. 이러한 방식으로, 일단 각각의 분석 처리가 완료되면, 그 결과들은 다음 분석 처리에 전달될 수 있으며, 그 제1 분석 처리는 다시 새롭게 입력된 잉크에 동시에 병렬로 실행될 수 있다. From the foregoing discussion, ink analysis techniques in accordance with various embodiments of the present invention allow electronic ink to be analyzed asynchronously from software application 1701, where the software application 1701 includes input data that contains new electronic ink. Continue to be accepted during the analysis process. Although the above discussion describes only two analytical processes, it should be noted that any number of analytical processes may be performed in parallel at the same time. For example, various implementations of the invention may utilize a first parsing process, a second parsing process, and a recognition process. 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 to the newly input ink.

또한, 본 발명의 각종 실시예들로서, 하나 이상의 분석 처리들이 순차적으로 실행될 수 있다. 예를 들어, 몇가지 소프트웨어 애플리케이션들로서, 사용자가 영어(English) 또는 일어(Japanese)와 같은 잉크 스트록 또는 스트록들의 콜렉션에 대한 특정 언어를 지정할 수 있다. 이어서 이러한 언어 지정은 분석 콘텍스트 대상(1709) 및 문서 독립 분석 콘텍스트 대상(1903)에 포함될 수 있다. 언어 지정에 기초하여, 그 잉크 분석 도구(1901)는 제1 언어로 지정된 전자 잉크를 그 제1 언어로 맞춤된(tailored) 인식 처리로 라우팅하고, 그 후에 제2 언어로 지정된 전자 잉 크를 그 제2 언어로 맞춤된 다른 인식 처리로 라우팅할 수 있다. 이러한 동일한 방식으로, 다른 특정 타입들로 분류 및/또는 지정된 입력 데이터가 음악용 인식기들, 전기 기호들, 수학 기호들, 플로우차트 모양들, 그래픽 모양들 등과 같은 다른 특정 인식기들로 보내질 수 있다. In addition, as various embodiments of the present invention, one or more analysis processes may be executed sequentially. For example, with some software applications, a user can specify a specific language for an ink stroke or collection of strokes, such as English or Japanese. This language designation may then be included in the analysis context object 1709 and the document independent analysis context object 1903. Based on the language designation, the ink analysis tool 1901 routes the electronic ink designated in the first language to a recognition process tailored to the first language, and then routes the electronic ink designated in the second language to the recognition process. Routing to other recognition processes tailored to the second language. In this same manner, input data classified and / or designated in other specific types may be sent to other specific identifiers such as musical identifiers, electrical symbols, mathematical symbols, flowchart shapes, graphic shapes, and the like.

게다가, 그 분석 처리들이 소프트웨어 애플리케이션(1701)의 부분이 될 필요가 없기 때문에, 임의의 소망의 분석 처리가 그 소프트웨어 애플리케이션(1701)에서 전자 잉크를 분석하는데 사용될 수 있다. 예를 들어, 소프트웨어 애플리케이션 개발자가 소프트웨어 애플리케이션(1701)에 대해 예상되는 전자 잉크 입력을 분석하는데 특히 적절한 파싱 처리 또는 인식 처리를 개발하고 사용할 수 있다. In addition, since the analysis processes need not be part of the software application 1701, 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 expected electronic ink input for 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 not be desirable 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 intended to simply use simple state information regarding the electronic ink input. As such software applications 1701, the software application 1701 may omit generating an analysis context object 1709 that reflects the current state of the premise document 1703. Rather, the software application 1701 can create a particular-purpose analysis context object 1709 that only includes information about a particular ink input that the software application 1701 wants to be analyzed. By using the specific-purpose analysis context object 1709, while using the desired analysis processes to analyze the ink in the document, the software application 1701 maintains an internal data structure corresponding to the state of the document 1703. Complexity can be avoided.

또한, 앞서 말한 기재가 전자 잉크의 비동시성 분석을 논의하지만, 본 발명의 각종 실시예들이 잉크 분석 도구(1901)가 잉크를 동시에 분석하도록 허용할 수 있음을 유의해야 한다. 예를 들어, 본 발명의 몇가지 구현들이 소프트웨어 애플리케이션(1701)이 전자 잉크의 즉각적이고 동시적인 분석을 수행하도록 허용할 수 있다. 또한, 동시적인 분석은 단지 문서(1703)의 특정 영역 내의 잉크 또는 전체 문서(1703)에 대한 것이 될 수 있다. In addition, while the foregoing description discusses asynchronous analysis of electronic ink, it should be noted that various embodiments of the present invention may allow the ink analysis tool 1901 to simultaneously analyze the ink. For example, some implementations of the invention may allow software application 1701 to perform an immediate and simultaneous analysis of electronic ink. In addition, simultaneous analysis may be for ink only or for the entire document 1703 within a particular area of the document 1703.

<잉크 분석 도구>Ink Analysis Tool

앞서 논의된 바와 같이, 그 잉크 분석 도구(1901)는 전자 잉크의 처리를 용이하게 하기 위해 여러가지 기능들을 수행한다. 예를 들어, 본 발명의 여러가지 구현들에 따라서, 그 잉크 분석 도구(1901)는 잉크 데이터가 분석되는 문서(1703) 내에 하나 이상의 영역들을 지정하는 소프트웨어 애플리케이션(1701)으로부터 정보를 수신하고, 그 영역들에 관한 정보를 획득하기 위해 소프트웨어 애플리케이션(1701)에 질의하고, 이어서 그 정보에 기초하여 문서 독립 분석 콘텍스트 대상(1903)을 구성한다. 또한, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903)을 분석을 위한 하나 이상의 분석 처리들에 제공하고, 이어서 그 분석 처리의 결과들을 그 문서(1703)의 현재 상태로 조정한다. 그 여러가지 처 리들은 스레드 풀(thread pool)을 통해, (앞서 기재된 바와 같은) 분리 스레드들을 사용하여 클러스트 또는 임의의 다른 적절한 또는 원하는 방식으로 분리된 기계들을 통해, 분리 처리들로서 수행될 수 있다. As discussed above, the ink analysis tool 1901 performs various functions to facilitate the processing of electronic ink. For example, in accordance with various implementations of the invention, the ink analysis tool 1901 receives information from a software application 1701 that specifies one or more regions within the document 1703 from which ink data is to be analyzed, and the regions. The software application 1701 is queried to obtain information about the fields, and then, based on the information, a document independent analysis context object 1903 is constructed. The ink analysis tool 1901 also provides a document independent analysis context object 1903 to one or more analysis processes for analysis, and then adjusts the results of the analysis process to the current state of the document 1703. The various processes may be performed as detach processes, through a thread pool, through detached machines in a cluster or any other suitable or desired way using detach threads (as described above).

본 발명의 다른 예들에 따라서, 여러가지 소프트웨어 대상들 및 도구들이 잉크 분석 도구(1901)를 구현하고 이러한 기능들을 수행하는데 사용될 수 있다. 그러나, 본 발명의 몇가지 예들로서, 그 잉크 분석 도구(1901)는 응용 프로그래밍 인터페이스(API)로서 구현될 수 있다. 특히, 본 발명의 몇가지 예들에 따라서, 그 잉크 분석 도구(1901)는 소프트웨어 대상 루틴들의 그룹 및 문서(1703) 내의 잉크를 분석하는데 요구되는 그 소프트웨어 애플리케이션(1701)에 의해 호출될 수 있는 관련 정보로서 구현될 수 있다. According to other examples of the invention, various software objects and tools may be used to implement the ink analysis tool 1901 and perform these functions. However, as some examples of the present invention, the ink analysis tool 1901 may be implemented as an application programming interface (API). In particular, according to some examples of the invention, the ink analysis tool 1901 is a group of software subject routines and associated information that can be called by the software application 1701 required to analyze the ink in the document 1703. Can be implemented.

본 기술분야의 숙련자들에 의해 이해되는 바와 같이, 응용 프로그래밍 인터페이스가 소프트웨어 대상들에 속하는 카테고리들 또는 "클래스들(classes)"로 체계화될 수 있다. "대상"은 저장가능한 상태 값들 및 실행가능한 동작들의 콜렉션(collection)이다. 특히, 대상이 "필드들(fields)" 및 "속성들(properties)"으로 언급되는 다른 타입들의 상태 값들을 유지할 수 있으며, 이는 그 대상과 연관되거나 그 대상에 의해 검색될 수 있다. 외부의 소프트웨어 애플리케이션 또는 또다른 소프트웨어 대상에 대해, 이러한 속성들은 판독 전용(read only)(용어 "{get;}"의 사용에 의해 식별됨), 기록 전용(write only)(용어 "{set;}"의 사용자에 의해 식별됨), 또는 판독가능 및 기록가능 둘 모두("{get; set}"으로 식별됨)가 될 수 있다. 대상이 또한 종종 소프트웨어 애플리케이션 또 는 또다른 대상의 요청 또는 "호출"에서 태스크들 또는 "방법들"을 실행할 수 있다. 그러므로, 애플리케이션 프로그래밍 인터페이스는 특정 태스크들을 수행하거나 또는 요청시 특정 정보를 제공하기 위해 또다른 소프트웨어 애플리케이션에 의해 명령될 수 있는 여러가지 대상들을 포함할 수 있다. As will be appreciated by those skilled in the art, an application programming interface may be organized into categories or "classes" belonging to software objects. A "target" is a collection of storeable state values and executable actions. In particular, an object may maintain other types of state values referred to as "fields" and "properties", which may be associated with or retrieved by that object. For external software applications 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}"). A subject may also often execute tasks or “methods” in a request or “call” of a software application or another subject. Therefore, the application programming interface may include various objects that can be commanded by another software application to perform specific tasks or to provide specific information on request.

본 발명의 각종 실시예들이 소프트웨어 애플리케이션(1701)이 원하는 분석 처리를 완료하는데 필요한 단지 최소량의 정보만을 제공해야함을 요구하도록 구현될 수 있음을 유의해야 한다. 이러한 이유로, 이하에 상세하게 기재될 몇가지 속성들이 단지 판독 전용(즉 "{get;}") 또는 기록 전용(즉, "{set;}") 속성들로서 논의될 수 있지만, 본 발명의 여러가지 대안의 구현들에 대해 판독가능 및 기록가능 둘 모두가 될 수 있다. 예를 들어, 전자 잉크를 분석하기 위해 분석 처리에 의해 사용될 "힌트들"을 정의하는 속성은 소프트웨어 애플리케이션(1701)이 힌트들을 사용하는 것으로 의도되어서는 안되는 상황들에 대해 판독 전용 속성으로서 식별될 수 있다. 이는 잉크 분석기에 의해 생성된 대상이 적어도 이러한 속성을 판독하도록 허용하며, 이러한 속성의 값이 영(null)의 디폴트(default) 값임을(즉, 어떠한 "힌트들"도 소프트웨어 애플리케이션(1701)에 의해 소망되지 않음을) 결정한다. 그러나, 만약 소프트웨어 애플리케이션(1701)이 잉크 분석에 대해 힌트들을 사용하기를 원한다면, 이러한 속성은 소프트웨어 애플리케이션(1701)이 원하는 힌트들을 지정하기 위해서, 영 값으로부터 이러한 속성의 값을 변경하도록 허용하기에 판독가능하고 기록가능할 것이다. It should be noted that various embodiments of the present invention may be implemented to require that the software application 1701 provide only the minimum amount of information needed to complete the desired analysis process. For this reason, some attributes, which will be described in detail below, may be discussed as read only (ie "{get;}") or write only (ie "{set;}") attributes, but various alternatives of the invention It may be both readable and writable for implementations. 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 for situations in which the software application 1701 should not be intended to use the hints. have. This allows objects created by the ink analyzer to read at least these attributes, and that the value of these attributes is a null default value (i.e. any "hints") by the software application 1701. Not desired). However, if the software application 1701 wants to use hints for ink analysis, this attribute is read to allow the software application 1701 to change the value of this attribute from zero to specify the desired hints. It will be possible and recordable.

본 발명의 각종 실시예들에 따라서, 잉크 분석 도구(1901)의 구현을 구체화 하는 API(이후 잉크 분석 API로서 언급됨)가 두 개의 코어 클래스들을 포함할 수 있다. 그 첫번째 클래스는 "분석 콘텍스트" 클래스로 언급될 것이며, 두번째 클래스는 "Ink Analyzer" 클래스이다. "분석 콘텍스트" 클래스의 구성요소들은 분석 콘텍스트 대상(1709)을 생성하는데 사용된다. 따라서, 소프트웨어 애플리케이션(1701)이 그 자신의 분석 콘텍스트 대상(1701)을 생성하고 유지하는 본 발명의 여러가지 구현들로서, 이 클래스의 하나 이상의 구성요소들은 잉크 분석 도구로부터 생략될 수 있다. 대신에, 하나 이상의 이러한 구성요소들이 소프트웨어 애플리케이션(1701) 자체에 의해 구현될 수 있다. According to various embodiments of the present invention, an API (hereinafter referred to as an ink analysis API) that specifies an implementation of the ink analysis tool 1901 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 an analysis context object 1709. Thus, as various implementations of the invention in which the software application 1701 creates and maintains its own 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 "Ink Analyzer" class are then used to create and use objects that provide the document independent analysis context object 1903 to the analysis process, determine when the results of the analysis are generated, and document the results of the analysis. 1703) to the current state. These and other classes that may be included in the ink analysis API in accordance with various embodiments of the present invention will be described in detail below.

우선 분석 콘텍스트 클래스로 돌아가서, 이러한 클래스는 분석 콘텍스트 대상(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 serves as a proxy view on the internal document tree of the software application 1701. Do it. Alternatively, as mentioned above, if the application implements its own analysis context object, one or more components in this class may be omitted from the ink analysis tool 1901. As described above, the analysis context object 1703 includes all unanalyzed ink data, and the analysis context object 1703 is used to identify that the unanalyzed ink data should be analyzed. The analysis context object 1703 also includes information about the ink that has already been analyzed. This already analyzed ink can now be used to determine how the unanalyzed ink should be analyzed, and itself can be changed during the analysis of the unanalyzed ink. In addition, the analysis content object 1703 includes information about non-ink content of the document 1703, which is used to properly classify ink as annotations for non-ink content.

본 발명의 각종 실시예들에 따라서, 그 분석 콘텍스트 클래스는 소프트웨어 애플리케이션(1701)에 의해 호출되는 경우, 그 분석 콘텍스트 대상(1709)을 생성하는 콘스트럭터(constructor)를 포함한다. 이 클래스는 또한 "더티 영역(Dirty Region) {get;}"로 명명된 속성을 포함하는 분석 콘텍스트 대상(1709)에 대해 여러가지 속성들을 포함할 수 있다. 그 더티 영역 속성은 미분석 잉크 데이터를 포함하는 그 문서의 부분(그리고 분석 콘텍스트 대상(1709)의 부분)을 정의한다. 본 발명의 각종 실시예들로서, 그 더티 영역은 해체 영역(disjoint area)을 정의할 수 있다. 그 더티 영역은 AnalysisRegion으로서 특정되고, 이는 이하에 보다 자세히 기재될 것이지만, 간단히 그 문서 내의 직사각 영역들의 콜렉션이 될 수 있다. 그 더티 영역이 비어있다면, 어떠한 분석도 발생하지 않을 것이다. 이러한 클래스는 "마진(Margins) {get;}"로 명명된 분석 콘텍스트 대상에 대한 속성을 더 포함하고, 이는 고려된 마진들인 문서(1703) 내의 페이지 영역을 선언한다. 예를 들어, 레이아웃을 분석하고 전자 잉크의 분류를 결정하는 분석 처리가 비-잉크 콘텐트(예를 들어, 마진의 잉크)인 전자 잉크의 분류의 결정을 돕기 위해 이러한 속성을 사용할 수 있다. According to various embodiments of the present invention, the analysis context class includes a constructor that, when invoked by the software application 1701, creates the 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 unanalyzed 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 can simply be a collection of rectangular regions within the 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 a page area within the document 1703, which is 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 the electronic ink that is non-ink content (eg, margin ink).

또한, 그 분석 콘텍스트 클래스는 "루트노드(Rootnode) {get;}"로 명명된 속성을 포함할 수 있고, 이는 분석 콘텍스트 대상(1709)에서 최고의 또는 루트 콘텍스트 노드를 식별한다. 앞서 보다 상세하게 논의된 바와 같이, 이러한 루트 노드는 주어진 분석 콘텍스트 대상(1709)에 대해 모든 다른 콘텍스트 노드들을 자식 콘텍스트 노드들로 포함한다. 본 발명의 각종 실시예들로서, 그 루트 콘텍스트 노드는 그 콘텍스트 노드 타입 "Root"가 되어야 함을 유의해야 한다. 그 애플리케이션(1701)이 그 자신의 분석 콘텍스트 대상(1709)을 구현하는 본 발명의 예들로서, 그 분석 콘텍스트 대상(1709)은 루트 콘텍스트 노드의 형제들(siblings)과 같은 다른 콘텍스트 노드들을 가질 수 있으나, Ink Analyzer 클래스의 구성요소들은 루트 콘텍스트 노드에 의해 포함된 콘텍스트 노드들을 고려하는 것으로 제한될 수 있음을 또한 유의해야 한다. In addition, the analysis context class may include an attribute named "Rootnode {get;}", which identifies the best or root context node in the analysis context target 1709. As discussed in more detail above, this root node includes all other context nodes as child context nodes for a given analysis context object 1709. It should be noted that as various embodiments of the present invention, the root context node should be of that context node type "Root". As 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. It should also be noted that the components of the Ink Analyzer class may be limited to considering the context nodes contained by the root context node.

그 분석 콘텍스트 클래스는 속성 "분석 힌트들(Analysis Hints) {get;}"을 부가적으로 포함할 수 있으며, 이는 소프트웨어 애플리케이션(1701)에 의해 설정된 분석 힌트 대상들의 어레이를 리턴한다. 이하에 보다 상세하게 논의되는 바와 같이, 그 분석 힌트 대상들은 그 분석 처리를 원조할 수 있는 임의의 정보 타입을 포함할 수 있다. 이러한 정보는 예를 들어, 팩토이드들(factoids), 가이드들 또는 단어 리스트로서 포함할 수 있다. 이는 또한 분석을 위해 사용될 언어를 설정하는 정보, 미분석 잉크를 단지 핸드라이팅된 텍스트 또는 단지 그림으로서 지정하거나 그 잉크를 리스트, 테이블, 모양, 플로우차트, 커넥터, 콘테이너 등으로서 식별하는 것과 같은, 임의의 종류의 유도를 제공하는 정보를 포함한다. The analysis context class may additionally include an attribute "Analysis Hints {get;}", which returns an array of analysis hint objects set by the software application 1701. As discussed in more detail below, the analysis hint subjects can include any type of information that can assist the analysis process. Such information may include, for example, as factoids, guides, or word lists. This also includes information that sets the language to be used for analysis, such as specifying unanalyzed ink as only handwritten text or just a picture, or identifying the ink as a list, table, shape, flowchart, connector, container, etc. Contains information that provides derivation of any kind of.

이러한 속성들에 부가하여, 분석 콘텍스트 클래스는 또한 예를 들어, 태스크를 수행하는 분석 콘텍스트 대상(1709)을 갖는 소프트웨어 애플리케이션(1701)에 의해 호출될 수 있는 여러가지 방법들을 포함할 수 있다. 예를 들어, 분석 콘텍스트 클래스는 "FindNode (Guid id)"로 명명된 방법을 포함할 수 있다. 그 분석 콘텍스트 대상(1709)의 각각의 노드는 세계적 단일 식별자(globally unique identifier(즉, GUID)를 가지며, 이러한 방법은 분석 콘텍스트 대상(1709) 내의 어디엔가 그 호출로 지정된 노드에 위치할 것이다. 이러한 방법이 많은 시간 소모적인 동작들로부터 호출될 수 있으므로, 이러한 룩업 방법은 가능한 한 효율적으로 구현되어야 한다. In addition to these attributes, the analysis context class may also include various methods that may be invoked by the software application 1701 having, for example, an analysis context target 1709 that performs a task. For example, the analysis context class may include a method named "FindNode (Guid id)". Each node of the analysis context target 1709 has a globally unique identifier (ie, GUID), and this method will be located at the node specified by the call somewhere within the analysis context target 1709. Since the method can be called from many time consuming operations, this lookup method should be implemented as efficiently as possible.

분석 콘텍스트 클래스와 같이, 그 Ink Analyzer 클래스는 또한 여러가지 속성들을 따라, 소프트웨어 애플리케이션(1701)이 그 클래스의 경우(즉, Ink Analyzer 대상)를 생성하도록 허용하는 공중 콘스트럭터(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 that, along with various properties, allows the software application 1701 to create a case of that class (ie, an Ink Analyzer target). . 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 the main form, parser results will be fired to the application main thread. It may also contain the attribute "AnalysisOptions AnalysisOptions {get; set '}", which specifies various criteria that can be used in the analysis process. Such criteria may include, for example, enabling text recognition, enabling the use of tables, enabling the use of lists, enabling the use of annotations, and enabling the use of connectors and containers.

Ink Analyzer 클래스는 여러가지 방법들을 포함할 것이다. 예를 들어, 이러한 클래스는 "AnalysisRegion Analyze ()"로 명명된 방법을 포함할 수 있다. 이러한 방법은 동시성 분석 처리를 시작한다. 문서 엘리먼트 데이터가 문서(1703)의 현재 상태를 기재하고 문서(1703) 내의 어떤 잉크가 분석될 필요가 있는지를 나타내는 이러한 방법에 전달된다. 본 발명의 몇가지 구현들로서, 그 문서 엘리먼트 데이터는 앞서 언급된 바와 같이, 분석 콘텍스트 대상(1709)(즉, AnalysisRegion Analyze(Analysis Context))으로서 제공될 수 있다. 대안으로, 개별 잉크 스트록들은 그 스트록들(즉, AnalysisRegion Analyze(Strokes))에 대한 참조를 사용하거나 어떤 속성들도 그 분석 방법에 전달되지 않은 Ink Analyzer 대상(예를 들어, InkAnalyzer.Strokes {get; set})의 속성으로서 참조되는, 분석 처리로 전달될 수 있다. The Ink Analyzer class will contain several methods. For example, such a class might contain a method named "AnalysisRegion Analyze ()". This method starts the concurrency analysis process. Document element data is communicated to this method describing the current state of the document 1703 and indicating which ink in the document 1703 needs to be analyzed. In some implementations of the invention, the document element data may be provided as an analysis context object 1709 (ie, AnalysisRegion Analyze (Analysis Context)), as mentioned above. Alternatively, individual ink strokes may use references to those strokes (ie, AnalysisRegion Analyze (Strokes)) or Ink Analyzer objects (eg, InkAnalyzer.Strokes {get; set}), which can be passed to an analysis process, referred to as an attribute.

일단 그 분석 처리가 완료되면, 이러한 방법은 참조를 그 분석 처리의 결과들을 포함하도록 변경된 문서 독립 분석 콘텍스트 대상으로 리턴할 것이다. 그 방법은 또한 결과들이 계산된 문서 내의 영역을 기술하는 AnalysisRegion 값을 리턴한다. Once the analysis process is complete, this method will return the reference to the document independent analysis context object that has been modified to include the results of the analysis process. The method also returns an AnalysisRegion value describing the area in the document from which the results were calculated.

그 Ink Analyzer 클래스는 또한 "AnalysisRegion Analyze(AnalsisContext, waitRegion)"으로 명명된 방법을 포함할 수 있다. 이 방법은 앞서 기재된 동시성 Analysis Region Analyze () 방법과 동일하지만, 단지 결과들이 특정 waitRegion 영역에 요구되는 경우 분석된 잉크를 가질 수 있다. 특히, 이 방법에 대한 호출은 그 문서(1703)에 대한 분석 콘텍스트 대상(1709) 및 분석 처리가 동시에 분석해야 하는 그 분석 콘텍스트 대상(1709)의 영역("waitRegion"으로 언급됨)을 식별할 것이다. 본 발명의 각종 실시예들로서, 그 분석 처리가 waitRegion의 분석을 완료하기 위해서 분석 처리가 그 영역들 내의 콘텐트를 분석할 필요가 없다면, 분석 콘텍스트 대상(1709)의 모든 다른 영역들(1709)이 무시될 것이다. 앞서 논의된 바와 같이, 이러한 방법으로 전달된 그 분석 콘텍스트 대상(1709)은 분석을 필요로 하는 문서(1703)의 영역들을 기술하는 "DirtyRegion"으로 언급되는 속성을 포함한다. 특정 waitRegion을 명시함으로써, 그 소프트웨어 애플리케이션(1701)은 분석된 문서(1703) 내의 모든 잉크 데이터를 갖는 것보다, 관심있는 하나의 특정 영역에 대해 분석 결과들을 보다 신속하게 획득할 수 있다. The Ink Analyzer class can also include a method named "AnalysisRegion Analyze (AnalsisContext, waitRegion)". This method is identical to the concurrency Analysis Region Analyze () method described above, but can only have the analyzed ink if results are required for a particular waitRegion region. In particular, a call to this method will identify the analysis context object 1709 for that document 1703 and the area of that analysis context object 1709 (referred to as "waitRegion") that the analysis process should analyze at the same time. . In various embodiments of the present invention, all other areas 1709 of the analysis context object 1709 are ignored unless the analysis process needs to analyze the content in those areas in order for the analysis process to complete the analysis of waitRegion. Will be. As discussed above, the analysis context object 1709 delivered in this way includes an attribute referred to as "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 more quickly for one particular area of interest than having all the ink data in the analyzed document 1703.

이러한 Analyze 방법들 중 어느 것이 호출되는 경우, 모든 이용가능한 분석 처리가 실행될 것이다. 또한, 이러한 Analyze 방법들은 동시성 호출들이기 때문에, 그 조정 처리를 그 종료시에 실행될 필요가 없으며, 완료한다해도 이벤트 파이어를 실행하지 않을 것이다. If any of these Analyze methods are called, all available analytical processing will be executed. Also, because these Analyze methods are concurrency calls, the coordination process does not need to be executed at the end and will not execute the event fire upon completion.

그 Ink Analyzer 클래스는 또한 "BackgroundAnalyze(AnalysisContext)"로 명명된 방법을 포함한다. 이 방법은 명시된 분석 동작을 시작하지만, 별도의 배경 분석 스레드를 시작한다. 그러므로, 이러한 방법은 제어를 실제의 분석 동작이 배경에서 완료하는 거의 즉시 그 주요 처리 스레드로 리턴할 것이다. 특히, 이러한 방법은 분석 처리가 성공적으로 시작되었으면 "참(true)"의 값을 리턴할 것이다. 다시, 그 방법으로 전달된 AnalysisContext 값은 문서(1703)에 대해 분석 콘텍스트 대상(1709)을 식별하며, 문서(1703) 내의 어떤 잉크가 분석될 필요가 있는지를 나타낸다. 일단 그 분석 동작이 배경 스레드를 완료하면, Results 이벤트는 소프트웨어 애플리케이션(1701)이 그 결과들로 액세스하도록 허용하기 위해 제기된다. 그 이벤트는 결과들 및 그 결과들이 리턴되는 경우 그 결과들을 문서(1703)의 현재 상태에 대해 분석 콘텍스트 대상(1709)으로 다시 통합하는데 사용되는 조정 방법을 포함한다. The Ink Analyzer class also includes a method named "BackgroundAnalyze (AnalysisContext)". This method starts the specified analysis operation but starts a separate background analysis thread. Therefore, this method will return control to its main processing thread almost immediately after the actual analysis operation completes in the background. In particular, this method will return a value of "true" if the analysis process has been started successfully. Again, the AnalysisContext value passed in that way 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 completes the background thread, the Results event is raised to allow the software application 1701 to access the results. The event includes the results and the adjustment method used to integrate the results back to the analysis context target 1709 for the current state of the document 1703 when the results are returned.

이러한 3개의 Analyze 방법들 각각이 이하에 상세하게 논의될 "Analysis Region" 클래스에서의 방법 "Clone"을 차례로 호출함을 유의해야 한다. "Clone" 방법을 사용하면, 이러한 Analyze 방법들은 그 분석 결과들을 보여주기 위해 분석 처리에 의해 그 다음 변경된 독립 문서 분석 콘텍스트 대상을 생성한다. Note that each of these three Analyze methods in turn calls the method "Clone" in the "Analysis Region" class, which will be discussed in detail below. Using the "Clone" method, these Analyze methods create an independent document analysis context object that is then modified by the analysis process to show the analysis results.

Ink Analyzer 클래스는 또한 소프트웨어 애플리케이션(1701)이 BackgroundAnalyze(AnalysisContext) 방법을 호출함으로써 야기된 결과 이벤트를 수신한 후에 호출하는, "Reconcile(AnalysisContext current, AnalysisResultsEventArgs resultArgs)"로 명명된 방법을 포함할 수 있다. 그 Reconcile 방법은 문서 독립 분석 콘텍스트 대상에 포함된 분석 결과들을 소프트웨어 애플리케이션(1701)에 의해 유지되는 분석 콘텍스트 대상(1709)의 현재 버전과 비교한다. 이 방법은 분석 콘텍스트 대상(1709)의 현재 버전으로부터 추가되고 제거될 필요가 있는 노드들을 식별하고, 현존하는 노드의 다음 속성들: 그 인식 결과 들, 그 위치, 노드와 연관된 잉크 스트록들 또는 분석 동작의 결과들과 연관된 임의의 다른 데이터 중 어느 것이 변경되는지를 식별한다. 이 방법은 또한 분석 콘텍스트 대상(1709)의 현재 버전에 이러한 식별된 변경들을 기록한다. 이 방법은 라인 콘텍스트 노드 상의 단어 콘텍스트 노드들의 순서와 같은 콘텍스트 노드 순서에 민감하다. The Ink Analyzer class may also include a method named "Reconcile (AnalysisContext current, AnalysisResultsEventArgs resultArgs)" that the software application 1701 calls after receiving a result event caused by calling the BackgroundAnalyze (AnalysisContext) method. The Reconcile 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. The method identifies nodes that need to be added and removed from the current version of the analysis context object 1709, and identifies the following attributes of the existing node: its recognition results, its location, ink strokes associated with the node or analysis operation. Identifies which of any other data associated with the results of. The method also records these identified changes in 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)이 조정 처리 전에 분석 결과들 중 임의의 결과를 변경하는 것을 방지하기 위해 포함된다. The results of the analysis (i.e. the value of the attribute AnalysisResultsEventArgs) are passed back in this way because they contain public results structure and private results structure. The personal structure is included to prevent the software application 1701 from changing any of the analysis results before the adjustment process.

그 Ink Analyzer 클래스는 또한 "Recognizers RecognizersPriority()" 및 "SetHighestPriorityRecognizer(recognizer)"로 명명된 방법들을 포함할 수 있다. 잉크가 인식될 필요가 있는 경우, 그 적절한 인식기는 언어들 및 능력들에 기초하여 사용될 것이다. 따라서, 그 Recognizers RecognizerPriority() 방법은 인식 처리들이 Ink Analyzer 대상에 의해 평가될 순서로 그 인식 처리들을 리턴한다. 그 순서는 이용가능한 인식 처리들에 의존하는 시스템마다 결정되지만, Ink Analyzer 대상에 SetHighestPriorityRecognizer(recognizer)를 호출함으로써 그 소프트웨어 애플리케이션(1701)에 대해 무시될 수 있다. 그 InkAnalyzer는 적절한 인식기가 발견될 수 있을 때까지 이러한 순서 리스트를 통해 열거될 것이다. 그 SetHighestPriorityRecognizer(recognizer) 방법은 인식 처리의 우선순위를 제기한 다. 특정 인식 처리의 우선순위를 제기함으로써, 그 인식 처리는 현재 인식 동작의 요구되는 언어 및 능력들에 부합한다면 사용될 것이다. 본질적으로, 그 SetHighestPriorityRecognizer(recognizer)는 RecognizersPriority 방법에 의해 리턴되는 리스트의 상부에 지정된 인식 처리를 푸시한다. The Ink Analyzer class may also include methods named "Recognizers RecognizersPriority ()" and "SetHighestPriorityRecognizer (recognizer)". If the ink needs to be recognized, the appropriate recognizer will be used based on the languages and abilities. Thus, the Recognizers RecognizerPriority () method returns the recognition processes in the order in which the recognition processes will be evaluated by the Ink Analyzer object. The order is determined per system depending on the available recognition processes, but can be ignored for the software application 1701 by calling SetHighestPriorityRecognizer (recognizer) on the Ink Analyzer object. The InkAnalyzer will be listed through this ordering list until a suitable identifier can be found. The SetHighestPriorityRecognizer (recognizer) method raises the priority of recognition processing. By raising the priority of a particular recognition process, that recognition process will be used if it conforms to 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.

그 Ink Analyzer 클래스는 또한 분석 콘텍스트 대상을 파라미터로서 사용할 수 있는, "AnalysisRegion Abort()"로 명명된 방법을 포함한다. 이 방법은 전경(foreground) 또는 배경(background) 분석 동작이 일찍 종결되도록 허용한다. 이러한 방법은 중단하기에 앞서 분석된 영역을 기술하는 분석 영역을 리턴한다. 그러므로, 소프트웨어 애플리케이션(1701)이 이후의 시간에 분석 동작을 계속할 작정이면, 이 영역은 그 문서(1703)의 현재 상태에 대해 분석 콘텍스트 대상(1709)의 DirtyRegion으로 합병될 수 있다. 또한, 그 Ink Analyzer 클래스는 실제로 빈번하게 그 InkAnalyzer 대상에 파이어링하는 "AnalysisResultsEventHandler"로 명명된 이벤트를 포함할 수 있다. 특히, 이러한 이벤트는 분석 처리들 사이에 5초마다 적어도 한번 파이어링할 수 있다. 이 이벤트는 진행중인 비동시성 분석 처리(또는 처리들)의 상태에 관해 업데이트 애플리케이션(1701)에 제공하는데 사용될 수 있다. The Ink Analyzer class also includes a method named "AnalysisRegion Abort ()", which can take an analysis context object as a parameter. This method allows the foreground or background analysis operation to terminate early. This method returns an analysis region describing the analyzed region prior to abort. Therefore, if the software application 1701 intends to continue the analysis operation at a later time, this area may be merged into the DirtyRegion of the analysis context target 1709 for the current state of the document 1703. In addition, the Ink Analyzer class may include an event named "AnalysisResultsEventHandler" that actually fires the InkAnalyzer target frequently. In particular, such an event may fire at least once every 5 seconds between analysis processes. This event can be used to provide the update application 1701 with respect to the status of the ongoing asynchronous analysis process (or processes).

그 Ink Analysis API는 또한 Analysis Context 클래스 및 Ink Analyzer 클래스에 부가한 클래스들을 포함할 수 있다. 예를 들어, 본 발명의 각종 실시예들에 따른 Ink Analysis API는 Context Node 클래스를 포함할 수 있다. 이러한 클래스는 "ContextNodeType Type {get;}"으로 명명된 속성과 같은, 분석 콘텍스트 노드(1709) 및 문서 독립 분석 콘텍스트 대상을 구성하는 콘텍스트 노드들에 관한 여러가지 구성요소들을 포함할 수 있다. 본 기술분야의 숙련자들에 의해 이해되는 바와 같이, 각각의 콘텍스트 노드는 어떤 타입을 가지며, 각각의 타입이 고수해야 하는 특정 세트의 규칙들이 있다. 이는 예를 들어, 자식 콘텍스트 노드들의 어떤 타입들이 허용되는지, 그리고 스트록들이 그 콘텍스트 노드에 직접적으로 연관될 수 있거나 또는 단지 그 자식 콘텍스트 노드들을 통해서만 연관되는지의 여부와 같은 규칙들을 포함한다. The Ink Analysis API can also include classes added 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 relating to the analysis context node 1709 and the context nodes that make up the document independent analysis context object, such as an attribute named "ContextNodeType Type {get;}". As will be appreciated by those skilled in the art, each context node has a certain type, and there is a specific set of rules that each type must adhere to. This includes rules such as, for example, what types of child context nodes are allowed, and whether the strokes can be directly associated with that context node or only through the child context nodes.

콘텍스트 노드들의 가능한 타입들은 ContextNodeTypes 열거에 정의될 수 있으며 예를 들어, 다음 타입들: 넌-텍스트 데이터(non-text data)를 주석하는 잉크 데이터를 나타내는 InkAnnotation 노드; 그림을 형성하는 잉크 데이터를 나타내는 InkDrawing 노드; 단어를 형성하는 잉크 데이터를 나타내는 InkWord 노드, 하나 이상의 InkWord 노드들을 포함하는 Line 노드 및/또는 텍스트의 라인을 형성하는 단어들에 대한 TextWord 노드들; 리스트 내에 예상되는 단락, 이미지 등의 노드들을 포함할 수 있는 ListItem 노드; 및 리스트 내에 엔트리를 각각 기재하는 하나 이상의 ListItem 노드들을 포함하는 List 노드를 포함할 수 있다. 그 노드 타입들은 또한 비-잉크 그림 이미지를 나타내는 NonInkDrawing 노드; ContextNodeType 열거의 다른 값들에 의해 커버되지 않는 데이터를 나타내는 Object 노드; 단락을 형성하는 라인들에 대응하는 하나 이상의 Line 노드들을 포함하는 Paragraph 노드; 픽쳐 미이지를 나타내는 Picture 또는 Image 노드; 분석 콘텍스트 대상에서 최고의 노드로서 역할을 하는 Root 노드; 테이블을 구성하는 항목들을 나타내는 노드들을 포함하는 Table 노드; 텍스트 박스를 나타내는 TextBox 노드; TextWord 노드; 및 아직 미분류 잉크 데이터에 대응하는 UnclassifiedInk 노드를 포함할 수 있다. 그 노드 타입들은 또한 다른 노드들의 그룹들에 대한 Group 노드, 불릿 항목들에 대한 InkBullet 노드, 테이블의 행에 제시된 문서 엘리먼트들에 대한 Row 노드, 및 테이블의 셀에 제시된 문서 엘리먼트들에 대한 Cell 노드를 포함할 수 있다. Possible types of context nodes can be defined in the ContextNodeTypes enumeration, for example, the following types: InkAnnotation node representing ink data annotating non-text data; An InkDrawing node representing ink data forming a picture; An InkWord node representing ink data forming a word, a Line node including one or more InkWord nodes and / or TextWord nodes for words forming a line of text; A ListItem node, which may include nodes such as expected paragraphs, images, and the like within the list; And a List node comprising one or more ListItem nodes, each of which describes an entry in the list. The node types also include NonInkDrawing nodes that represent non-ink picture images; An Object node representing data not covered by other values of the ContextNodeType enumeration; A Paragraph node comprising one or more Line nodes corresponding to lines forming a short; 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 a table; A TextBox node representing a text box; TextWord node; And an UnclassifiedInk node that still corresponds to unclassified ink data. The node types also include a Group node for groups of other nodes, an InkBullet node for bullet items, a Row node for document elements presented in a row of a table, and a Cell node for document elements presented in a cell of a table. It may include.

그 Context Node 클래스는 또한 현재 콘텍스트 노드에 대한 세계적 단일 식별자인, "GUID Id {get;}"으로 명명된 속성을 포함할 수 있다. 임의의 원하는 콘텍스트 노드로의 액세스를 허용하기 위해서, 단일 분석 콘텍스트 대상 내의 각각의 콘텍스트 노드가 항상 단일 식별자를 가져야 한다. 이러한 클래스는 또한 관련 콘텍스트 노드가 실제로 위치된 문서 공간 내의 위치를 식별하는, "AnalysisRegion Location {get;}"으로 명명된 속성을 포함할 수 있다. 앞서 언급된 바와 같이, AnalysisRegion이 하나 이상의 가능한 해체 사각형 구조들을 함께 그룹화하는 이차원 구조이다. 이러한 클래스는 또한 이는 관련 콘텍스트 노드와 연관된 잉크 스트록들을 식별하는, "StrokeCollection Strokes {get;}"으로 명명된 속성을 포함할 수 있다. 본 발명의 각종 실시예들로서, (Word, Drawing 및 Bullet 노드들과 같은) 단지 리프 콘텍스트 노드들이 스트록들을 갖기 위해 Ink Analysis API에 의해 허용된다. 그 소프트웨어 애플리케이션(1701)은 모든 조상(ancestor) 콘텍스트 노드들에 의해 리프 노드 레벨로 그 스트록들을 참조하기 위해 이러한 속성들을 사용할 수 있다(예를 들어, 루트 노드는 모든 스트록들에 대한 스트록 참조를 관련 분석 콘텍스트 대상 내에 포함할 것이다). The Context Node class can also include an attribute named "GUID Id {get;}", which is the global single identifier for the current context node. In order 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 earlier, 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 Word, Drawing, and Bullet nodes) are allowed by the Ink Analysis API to have strokes. The software application 1701 can use these attributes to refer to its strokes at the leaf node level by all ancestor context nodes (eg, the root node associates a stroke reference to all the strokes). In the analysis context object).

또한, 이러한 클래스는 관련 콘텍스트 노드를 포함하는 부모 콘텍스트 노드를 식별하는, "ContextNode ParentNode {get;}"으로 명명된 속성을 포함할 수 있다. 본 발명의 각종 실시예들로서, 콘텍스트 노드들은 Root 콘텍스트 노드가 분석 콘텍스트 대상의 정적인 수인, 부모 콘텍스트 노드로부터 의존하기 위해 항상 생성된다. 이 클래스는 또한 관련 콘텍스트 노드의 직접 자식인 모든 콘텍스트 노드를 식별하는 속성 "ContextNode[]SubNodes {get;}"를 포함할 수 있다. 즉, 이러한 속성은 분석 콘텍스트 대상에서 한 레벨 아래의 자식 콘텍스트 노드들을 단지 식별할 것이다. 예를 들어, 이러한 Paragraph 콘텍스트 노드에 대한 속성의 값은 Paragraph 노드에 의해 포함되는 라인 콘텍스트 노드들만을 단지 식별할 것이며, 라인 콘텍스트 노드의 자식인 단어 콘텍스트 노드들은 식별하지 않을 것이다. 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 depend on 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. In other words, this attribute will only identify child context nodes one level below the analysis context object. For example, the value of an 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 RecognitionResult {get;}"으로 명명된 속성을 포함할 수 있다. 그 Recognition Result는, 인식 분석 처리에 의해 설정되고 RecognitionResult 대상을 생성하는데 사용되는 RecognitionData 속성(이하에 보다 상세하게 기재됨)이 데이터의 복제를 피하기 위해 콘텍스트 노드 트리의 단지 한 레벨로 설정될 수 있을지라도, 문서 독립 분석 콘텍스트 대상 내의 모든 콘텍스트 노드가 이용가능하다. 그 노드가 그와 연관된 RecognitionData를 갖지 않는다면, 그 서브노드들 모두의 인식 결과를 합병하거나 그 부모로부터 인식 결과를 추출할 것이다. 이러한 클래스는 또한 RecognitionResult 값의 지속적인 형태인, "Stream RecognitionData {get; set;}"으로 명명된 속성을 포함할 수 있다. 다시, 그 인식 분석 처리는 관련 콘텍스트 노드로 설정된 Stream RecognitionData 값을 생성한다. 이어서 그 RecognitionResult 대상은 이러한 값에 기초하여 구성된다. This class is also an attribute named "RecognitionResult RecognitionResult {get;}", which provides recognition results calculated by the relevant recognition analysis process or processes, because RecognitionResult can represent one or more lines of text in one or more languages. It may include. The Recognition Result is set by the Recognition Analysis process and although the RecognitionData attribute (described in more detail below) used to create the RecognitionResult object may be set to only one level of the context node tree to avoid duplication of data. For example, all context nodes within the document independent analysis context object are available. If the node does not have RecognitionData 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 named "Stream RecognitionData {get; set;}", which is a persistent form of RecognitionResult value. Again, the recognition analysis process generates a Stream RecognitionData value set to the associated context node. The RecognitionResult object is then constructed based on these values.

그 Context Node 클래스는 ContextLink 대상들의 어레이를 제공하는, "ContextLink[] Links {get;}"으로 명명된 속성을 더 포함할 수 있다. ContextLink 대상이 두 개의 콘텍스트 노드들 간의 대안의 관계를 설명한다. 콘텍스트 노드들이 통상적으로 다른 콘텍스트 노드들과 부-자 관계를 갖지만, ContextLink가 콘텍스트 노드들 간의 대안의 관계를 허용한다. 예를 들어, ContextLink가 두 개의 콘텍스트 노드들 간의 연결, 또다른 콘텍스트 노드에 하나의 콘텍스트 노드 앵커링, 또다른 콘텍스트 노드에 의한 하나의 콘텍스트 노드의 억제, 또는 소프트웨어 애플리케이션(1701)에 의해 정의된 원하는 링크 타입을 허용할 수 있다. ContextLinks는 이하에 보다 상세하게 논의되는 AddLink 방법을 호출함으로써 이러한 어레이에 추가될 수 있다. 유사하게, ContextLinks는 이하에 보다 상세하게 논의된는 DeleteLink 방법을 호출함으로써 이러한 어레이로부터 제거될 수 있다. The Context Node class may further include an attribute named "ContextLink [] Links {get;}", which provides an array of ContextLink objects. The ContextLink target describes an alternative relationship between two context nodes. Although context nodes typically have sub-child relationships with other context nodes, ContextLink allows for an alternative relationship between context nodes. For example, a ContextLink 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 a desired link defined by software application 1701. You can allow types. ContextLinks can be added to this array by calling the AddLink method, discussed in more detail below. Similarly, ContextLinks can be removed from this array by calling the DeleteLink method, discussed in more detail below.

또한, 이러한 클래스는 속성들 "IsContainer {get;}" 및 "IsInkLeaf {get;}"을 포함할 수 있다. 그 속성 IsContainer {get;}는 관련 콘텍스트 노드가 리프 콘텍스트 노드가 아니라면(즉, 관련 콘텍스트 노드가 자식 콘텍스트 노드들을 포함하고 그리하여 콘테이너 콘텍스트 노드가 고려되면), "참" 값을 갖고, 그렇지 않으면 "거짓(false)" 값을 갖는다. 그 IsInkLeaf {get;} 속성은 현재 콘텍스트 노드가 콘테이너 콘텍스트 노드가 아니라면 "참" 값을 갖고, 그렇지 않으면 "거짓" 값을 갖는다. 즉, 현재 콘텍스트 노드가 임의의 자식 콘텍스트 노드들을 포함하지 않는다면, 리프 콘텍스트 노드로 고려된다. 본 발명의 각종 실시예들로서, InkLeaf 콘텍스트 노드가 스트록 데이터에 참조들을 포함할 것으로 예상되는 반면 콘테이너 콘텍스트 노드들은 이러한 제한을 갖지 않는다. 콘테이너 콘텍스트 노드들은 소프트웨어 애플리케이션(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 container context nodes are considered), 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, and a value of "false" otherwise. 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, while the InkLeaf context node is expected to include references in the stroke data, 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.

Context Node 클래스는 또한 속성 "Rect RotatedBoundingBox {get; set;}"을 포함할 수 있다. 이러한 속성의 값은 레이아웃 및 분류 분석 처리에 의해 계산된다. 그 관련 콘텍스트 노드와 연관된 잉크 데이터가 비스듬히 쓰여지면, 그 콘텍스트 노드에 대한 바운드들은 여전히 수평 정렬될 것이다. 그러나, RotateBoundingBox 속성의 값은 관련 콘텍스트 노드와 연관된 잉크 데이터가 쓰여진 각도로 정렬될 것이다. 또한, 이러한 클래스는 값들을 변경하도록 허용되면 그 InkAnalyzer에 관련 콘텍스트 노드를 알리는, 속성 "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 the ink data associated with the relevant context node is written at an angle, the bounds for that context node will still be horizontally aligned. However, the value of the RotateBoundingBox attribute will be aligned at the angle at which the ink data associated with the associated context node was written. In addition, this class may include an attribute "ReClassifiable {get;}", which informs its InkAnalyzer of the relevant context node if allowed to change the values.

이러한 속성들에 부가하여, 그 Context Node 클래스는 또한 여러가지 방법들을 포함할 수 있다. 예를 들어, 이러한 클래스는 "ContextNode CreateSubNode(ContextNodeType type)"으로 명명된 방법을 포함한다. 이러한 방법은 특정 타입의 자식 콘텍스트 노드의 생성을 허용한다. 본 발명의 각종 실시예들 로서, 이러한 방법은 단지 관련 콘텍스트 노드의 유효한 자식 타입들이 생성되도록 허용할 수 있으며, 그리하여 기형의 데이터 구조들이 생성되는 것을 방지한다. 예를 들어, 이 방법은 단지 Line 콘텍스트 노드가 InkWord 및 TextWord 콘텍스트 노드를 생성하도록 허용할 수 있다. 이 클래스는 또한 관련 분석 콘텍스트 대상으로부터 그 참조된 자식 콘텍스트 노드를 삭제하는, "void DeleteSubNode(ContextNode node)"로 명명된 방법을 포함할 수 있다. 그러나, 본 발명의 각종 실시예들로서, 그 참조된 콘텍스트 노드가 스트록들 또는 자식 콘텍스트 노드들을 포함한다면 이러한 방법이 실패한다는 것을 유의해야 한다. 또한, 그 참조 콘텍스트 노드가 관련 콘텍스트 노드의 직접적인 자식이 아니라면, 이 방법이 실패한다. 소프트웨어 애플리케이션(1701)이 그 자신의 분석 콘텍스트 대상(1709)을 구현하고 차례로 이 방법을 이용한다면, 분석 콘텍스트 대상(1709)에서 기형의 데이터 구조를 방지하기 위해 비어있지 않은(non-empty) 콘텍스트 노드들 또는 관련 콘텍스트 노드의 직접적인 자식들이 아닌 콘텍스트 노드들을 삭제하지 않음을 유의해야 한다. In addition to these attributes, the Context Node class can also include various methods. For example, this class includes a method named "ContextNode CreateSubNode (ContextNodeType type)". This method allows the creation of child context nodes of a particular type. As various embodiments of the present invention, this method may only allow valid child types of the associated context node to be created, thus preventing malformed data structures from being created. For example, this method can only allow the Line context node to create InkWord and TextWord context nodes. This class may also include a method named "void DeleteSubNode (ContextNode node)", which deletes the referenced child context node from the associated analysis context object. However, as various embodiments of the present invention, it should be noted that this method fails if the referenced context node includes strokes or child context nodes. Also, if the reference context node is not a direct child of the associated context node, this method fails. If the software application 1701 implements its own analysis context object 1709 and in turn uses this method, a non-empty context node to prevent malformed data structures in the analysis context object 1709. Note that you do not delete context nodes that are not direct children of these or related context nodes.

또한, 이러한 클래스는 그 특정 영역 내에 위치된 콘텍스트 노드의 어레이를 리턴하는, 방법 "ContextNode[] HitTestSubNodes(AnalysisRegion region)"을 포함할 수 있다. 그러나, 모든 자손들(descendants)이 아닌, 단지 이러한 엘리먼트의 직접적인 자식 노드들이 리턴됨을 유의해야 한다. 그 영역은 앞서 언급된 바와 같이, 하나 이상의 직사각형들의 콜렉션이 될 수 있는, AnalysisRegion 대상에 의해 정의된다. 본 발명의 각종 실시예들에 따라서, 콘텍스트 노드의 위치의 임의의 부분이 특정 영역을 가로지른다면, 그 콘텍스트 노드는 그 어레이에 리턴될 것이다. 이러한 방법은 예를 들어, 문서 독립 분석 콘텍스트 대상을 생성하고 그 분석 결과들을 문서(1703)의 현재 상태에 대응하는 분석 콘텍스트 대상으로 조정하기 위해 사용된다. 그러므로, 이 방법은 빈번하게 호출되며, InkAnalyzer 대상에 의한 빠른 반복된 액세스에 대해 최적화되어야 한다. This class may also include the method "ContextNode [] HitTestSubNodes (AnalysisRegion region)", which returns an array of context nodes located within that particular region. Note, however, that only direct child nodes of this element are returned, not all descendants. The region is defined by the AnalysisRegion object, which can 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 a context node crosses a particular area, that context node will be returned to the array. This method is used, for example, to create a document independent analysis context object and to 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 quick repeated access by the InkAnalyzer object.

그 Context Node 클래스는 또한 "MoveStroke(Stroke stroke, ContextNode destination)"으로 명명된 방법을 포함한다. 이 방법은 하나의 리프 콘텍스트 노드로부터 또다른 노드로 스트록의 결합을 이동시킨다. 본 발명의 각종 실시예들로서, 이 방법은 단지 리프 콘텍스트 노드들 간에 사용된다. 이는 또한 이는 형제 콘텍스트 노드들에 대해 관련 콘텍스트 노드를 다시 순서를 정하는(reorder), "MoveSubNodeToPosition(int OldIndex, int NewIndex)"로 명명된 방법을 포함할 수 있다. 예를 들어, 문서(1703)가 한 라인 상에 3개의 단어들, 예를 들어 단어 1, 단어 2, 단어 3을 갖는다면, 그들의 순서는 부모 콘텍스트 노드로부터 리턴된 서브노드들의 어레이에 의해 관련된다. 이 방법은 그들의 순서가 변경되도록 허용하므로, 관련 콘텍스트 노드에 대해 단어 1이 위치 1에서 위치 3으로 단어 1에 대한 콘텍스트 노드를 이동시킴으로써 그 라인 상의 마지막 단어가 되도록 지정된다. The Context Node class also includes a method named "MoveStroke (Stroke stroke, ContextNode destination)". This method moves the concatenation of the strokes from one leaf context node to another. As various embodiments of the present invention, this method is only used between leaf context nodes. It may also include a method named "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 example word 1, word 2, word 3, their order is related by an array of subnodes returned from the parent context node. . This method allows their order to be changed, so that for the relevant context node, word 1 is specified to be the last word on that line by moving the context node for word 1 from position 1 to position 3.

또한, 이러한 클래스는 현재 콘텍스트 노드에 새로운 ContextLink 대상을 추가하는, "AddLink(ContextLink link)"로 명명된 방법을 포함할 수 있다. 본 발명의 각종 실시예들로서, 그 ContextLink 대상은 관련 콘텍스트 노드에 연관된 ContextLinks의 어레이에 성공적으로 추가될 ContextLink의 순서로 관련 콘텍스트 노드에 대한 참조를 포함해야 한다. 이는 또한 "DeleteLink(ContextLink link)"로 명명된 방법을 포함할 수 있다. 이 방법은 관련 콘텍스트 노드에 대한 ContextLinks의 어레이로부터 그 특정 ContextLink 대상을 삭제하거나 제거한다. 본 발명의 각종 실시예들로서, 이 방법은 그 ContextLink가 관련 콘텍스트 노드와 연관된 ContextLinks의 어레이에 존재하지 않을 지라도, 항상 호출을 성공적으로 완료한다. This class may also include a method named "AddLink (ContextLink link)", which adds a new ContextLink object to the current context node. In various embodiments of the present invention, the ContextLink object must include a reference to the associated context node in the order of the ContextLink to be successfully added to the array of ContextLinks associated with the associated context node. It may also include a method named "DeleteLink (ContextLink link)". This method deletes or removes that particular ContextLink object from the array of ContextLinks for the relevant context node. In various embodiments of the present invention, the method always successfully completes the call, even if the ContextLink is not present in the array of ContextLinks associated with the associated context node.

그 Ink Analysis API는 또한 Analysis Hint 클래스를 포함한다. 앞서 기재된 많은 클래스들로서, 그 Analysis Hint 클래스는 Analysis Hint 대상을 비어있는 상태로 초기화하는, "AnalysisHint()"로 명명된 콘스트럭터를 포함한다. 이러한 클래스는 또한 "AnalysisRegion Location {get;}"로 명명된 속성을 포함하는 많은 속성들을 포함할 수 있다. 이러한 속성은 그 AnalysisHint가 적용가능한 문서(1703)(AnalysisRegion로서) 내에 위치를 지정한다. 예를 들어, 그 문서(1703)가 페이지의 상부에 타이틀 부분을 갖는 자유 형식의 노트(note)라면, 그 애플리케이션(1701)은 잉크의 수평 라인이 그 영역 내에 예상됨을 명시하기 위해 그 타이틀 영역에 대해 AnalysisHint를 설정할 수 있다. 이 Analysis Hint는 분석 처리의 정확성을 증가시키는데 도움을 줄 것이다. The Ink Analysis API also includes an Analysis Hint class. As many of the classes described above, the Analysis Hint class includes a constructor named "AnalysisHint ()", which initializes the Analysis Hint object to an empty state. This class can also contain many properties, including a property named "AnalysisRegion Location {get;}". This property specifies the location in the document 1703 (as AnalysisRegion) to which the AnalysisHint 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 may apply to that title area to specify that horizontal lines of ink are expected within that area. You can set AnalysisHint for. This Analysis Hint will help to increase the accuracy of the analysis process.

이 클래스는 또한 AnalysisHint가 적용가능한 문서(1703) 내의 위치에 대해 사용될 특정 "팩토이드(factoid)"를 명시하는, "string Factoid {get; set;}"로 명명된 속성을 포함할 수 있다. 본 기술분야의 숙련자들에게 공지된 바와 같이, 팩토이드들이 잉크 데이터의 예상되는 사용(예를 들어, 규칙적인 텍스트, 숫자, 우편번호, 파일명 및 웹 URL)에 관해 인식 처리에 힌트들을 제공한다. 이 클래스는 "RecognizerGuide Guide "{get; set;}" 및 "OverrideLanguageId {get; set;}로 명명된 속성들을 포함할 수 있다. 그 RecognizerGuide Guide {get; set;} 속성은 AnalysisHint가 적용가능한 문서(1703) 내의 위치에 인가될 기록 가이드를 명시한다. 예를 들어, 가이드를 기록하는 것은 사용자가 라인들 또는 문자들을 기록할 인식기 분석 처리를 사용자에게 명시하고 알림으로써 인식기 분석 처리의 정확성을 개선하는데 도움을 준다. 그 OverrideLanguageId {get; set;} 속성은 AnalysisHint가 적용가능한 문서(1703)에 그에 대한 Language Hint를 명시한다. Language Hint를 설정하는 것은 InkAnalyzer 대상이 콘텍스트 노드 상에 명시된 언어 대신에 지정된 언어를 사용하도록 한다. This class may also contain an attribute named "string Factoid {get; set;}" that specifies the particular "factoid" to be used for the location in the document 1703 where AnalysisHint is applicable. As is known to those skilled in the art, factoroids provide hints in the recognition process regarding the expected use of ink data (eg, regular text, numbers, zip codes, filenames and web URLs). . This class is called the "RecognizerGuide Guide" {get; set;} "and" OverrideLanguageId {get; may contain attributes named set;}. The Recognizer Guide Guide {get; set;} attribute specifies a recording guide to be applied to a location in the document 1703 to which AnalysisHint is 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 to record lines or characters. Its OverrideLanguageId {get; set;} attribute specifies a Language Hint for it in the document 1703 to which AnalysisHint is applicable. Setting the Language Hint causes the InkAnalyzer target to use the specified language instead of the language specified on the context node.

이러한 클래스는 또한 인식되어야 할 잉크의 라인에 앞서 기록되거나 타이핑된 텍스트를 명시하는, "PrefixText {get; set;}"으로 명명된 속성을 포함할 수 있다. 또한, 이 클래스는 인식 처리가 그 AnalysisHint가 적용가능한 문서(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;}" that specifies the text written or typed prior to the line of ink to be recognized. This class also contains an attribute named "RecognitionModes RecognitionFlags {get; set;}", which specifies the specific types of modes that the recognition process should relate to a location in the document 1703 to which the AnalysisHint is applicable. This class also specifies an attribute named "SuffixText {get; set;}" that specifies the text written or typed after 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 contain an attribute named "WordList WordList {get; set;}. Before the user has actually recorded input data, such as a list of medical terms that are expected to be written inside a medical form, If the expected recognition results are known, a word list can be used.

또한, 이 클래스는 "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 contains an attribute named "Coerce {get; set;}" that will force the analysis process to limit the result to any factoroid or wordlist set in the relevant hint. can do. 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.

본 발명의 각종 실시예들에 따라서, 그 Ink Analysis API는 Analysis Region 클래스를 더 포함할 수 있다. 이러한 클래스가 예를 들어, AnalysisRegion 대상을 구성하기 위한 다수의 콘스트럭터를 포함할 수 있다. 예를 들어, 어떤 영역을 갖는 AnalysisRegion 대상을 구성하기 위한 제1 콘스트럭터, 2차원 직사각형에 대한 파라미터들에 기초하여 AnalysisRegion 대상을 구성하는 제2 콘스트럭터, 및 공간 좌표에 기초하여 AnalysisRegion 대상을 구성하는 제3 콘스트럭터를 포함할 수 있다. 예를 들어, 디폴트 콘스트럭터가 비어있는 영역을 생성할 수 있다. 이 클래스는 또한 많은 속성들을 포함할 수 있다. 예를 들어, 이 클래스는 AnalysisRegion에 대한 바운딩 직사각형을 수신하는, "Rectangle Bounds {get;}"으로 명명된 속성, 관련 AnalysisRegion 대상이 비어있는 내부를 갖는지의 여부를 나타내는, "IsEmpty {get;}"으로 명명된 속성, 및 그 관련 AnalysisRegion이 무한으로 설정되었는지 아닌지의 여부를 나타내는, "IsInfinite {get;}"으로 명명된 속성 을 포함할 수 있다. According to various embodiments of the present invention, the Ink Analysis API may further include an Analysis Region class. Such a class may, for example, contain multiple constructors for constructing an AnalysisRegion target. For example, a first constructor for constructing an AnalysisRegion object having an area, a second constructor for constructing an AnalysisRegion object based on parameters for a two-dimensional rectangle, and an AnalysisRegion object based on spatial coordinates. It may include a third constructor constituting. For example, the default constructor could create an empty area. This class can also contain many attributes. For example, this class contains a property named "Rectangle Bounds {get;}" that receives a bounding rectangle for AnalysisRegion, and "IsEmpty {get;}" indicating whether the associated AnalysisRegion target has an empty interior. And an attribute named "IsInfinite {get;}" indicating whether or not an attribute named as is related to and its associated AnalysisRegion is set to infinite.

이 클래스는 또한 관련 AnalysisRegion 대상을 복제하는, "AnalysisRegion Clone()"으로 명명된 방법과 같은 다수의 방법들을 포함한다. 이 클래스는 또한 그 지정된 AnalysisRegion 대상(otherRegion으로 언급됨)이 관련 AnalysisRegion 대상과 동일한지의 여부를 테스트하는, "Equals(AnalysisRegion otherRegion)"으로 명명된 방법을 포함할 수 있다. 이 방법은 지정된 Analysis Region 대상의 내부가 관련 Analysis Region 대상의 내부와 동일하다면, "참"의 값을 리턴하고, 그렇지 않으면 "거짓"의 값을 리턴한다. This class also contains a number of methods, such as the method named "AnalysisRegion Clone ()", which duplicates the associated AnalysisRegion target. This class can also include a method named "Equals (AnalysisRegion otherRegion)", which tests whether the specified AnalysisRegion target (referred to as otherRegion) is the same as the related AnalysisRegion target. This method returns a value of "true" if the interior of the specified Analysis Region object is the same as the interior of the related Analysis Region object; otherwise, it returns a value of "false".

이 클래스는 지정된 분석 영역에 대해 관련 AnalysisRegion 대상을 크롭 다운(crop down)하는, 방법 "Intersect(AnalysisRegion regionToIntersect)"을 더 포함할 수 있다. 그러므로, 결과적인 AnalysisRegion 대상은 단지 그 지정된 분석 영역에 중복했거나 가로질렀던 영역들을 포함할 것이다. 이러한 클래스는 또한 지정된 직사각형에 대해 관련 AnalysisRegion 대상을 크롭 다운하는, "Intersect(Rectangle rectangle)"로 명명된 방법을 포함할 수 있다. 다시, 그 결과적인 AnalysisRegion 대상은 단지 그 지정된 직사각형에 중복했거나 가로질렀던 영역들을 포함할 것이다. 이는 또한 그 관련 AnalysisRegion 대상을 비어있는 내부로 초기화하는, "MakeEmpty()"로 명명된 방법 및 관련 AnalysisRegion에 의해 무한정 점유된 영역을 설정하는 "MakeInfinite()"로 명명된 방법을 포함할 수 있다. 이는 AnalysisRegion 대상을 그 관련 AnalysisRegion 대상에 결합하거나 추가하도록 지정하는, "Union(AnalysisRegion regionToUnion)"으로 명명된 방법 및 지정된 직사각형을 그 관련 AnalysisRegion 대상에 결합하는, "Union(Rectangle rectangle)"로 명명된 방법과 같은, 상이하게 정의된 영역들을 결합하거나 분리하기 위한 여러가지 방법들을 더 포함할 수 있다. 이 방법으로서, 그 직사각형은 관련 AnalysisRegion 대상에 대한 좌표 공간에 의해 지정될 수 있다. 물론, 이 클래스는 영역들을 결합하거나 그 영역들에 대한 임의의 원하는 정의에 기초한 또다른 영역으로부터 하나의 영역을 추출하기 위한 다수의 다른 방법들을 포함할 수 있다. This class may further include the method "Intersect (AnalysisRegion regionToIntersect)", which crops down the relevant AnalysisRegion target for the specified analysis region. Therefore, the resulting AnalysisRegion object will only contain regions that have overlapped or traversed the specified analysis region. These classes can also include a method named "Intersect (Rectangle rectangle)", which crops down the associated AnalysisRegion target for a given rectangle. Again, the resulting AnalysisRegion object will only contain regions that overlapped or traversed the specified rectangle. It may also include a method named "MakeEmpty ()" that initializes its associated AnalysisRegion target to an empty interior, and a method named "MakeInfinite ()" that sets an area occupied indefinitely by the associated AnalysisRegion. It is named "Union (AnalysisRegion regionToUnion)", which specifies to join or add an AnalysisRegion target to its associated AnalysisRegion target, and a method named "Union (Rectangle rectangle)", which joins the specified rectangle to its associated AnalysisRegion target. The method may further include various methods for combining or separating differently defined regions. In this way, the rectangle can be specified by the coordinate space for the associated AnalysisRegion object. Of course, this class may include a number of different ways to combine regions or extract one region from another region based on any desired definition of the regions.

그 Ink Analysis API는 또한 Recognition Result 클래스를 가질 수 있다. 앞서 기재된 많은 클래스들로서, 그 Recognition Result 클래스는 하나 이상의 콘스트럭터들을 포함할 수 있다. 예를 들어, 이러한 클래스는 주어진 인식 격자(lattice)로부터 RecognitionResult 대상을 구성하는, "RecognitionResult(Stream lattice)"로 명명된 콘스트럭터를 포함할 수 있다. 본 발명의 각종 실시예들로서, 인식 격자는 인식 처리로부터의 결과들의 지정된 형식이다. 이 방법은 예를 들어, 관련 RecognitionResult 대상의 구성을 위해 사용되도록 바이트(byte) 어레이로서 인식 격자를 지정할 수 있다. 이는 또한 주어진 콘텍스트 노드로부터 RecognitionResult 대상을 구성하는, "RecognitionResult(ContextNode node)"으로 명명된 콘스트럭터를 포함할 수 있다. 이는 또한 지정된 텍스트 값으로부터 RecognitionResults 대상을 구성하는, "RecognitionResult(string Text, int StrokeCount)"으로 명명된 콘스트럭터를 포함할 수 있으며, 이는 차례로 지정된 수의 스트록들에 연관되고, 인식 처리가 실제의 핸드라이팅된 잉크 데이터에 대응하는 대안의 인식 값을 제공하지 않았다면 수 정을 위해 사용될 수 있다. 또한, 이 클래스는 두개의 현존하는 Recognition Result 대상들을 함께 합병함으로써 RecognitionResults 대상을 구성하는, "RecognitionResult(RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)"로 명명된 콘스트럭터를 포함할 수 있다. The Ink Analysis API can also have a Recognition Result class. As with many of the classes described above, the Recognition Result class may contain one or more constructors. For example, such a class may contain a constructor named "RecognitionResult (Stream lattice)", which constitutes a RecognitionResult object from a given recognition lattice. In various embodiments of the present invention, the recognition grid is a designated form of results from the recognition process. This method may, for example, designate a recognition grid as an array of bytes to be used for construction of the associated RecognitionResult object. It may also include a constructor named "RecognitionResult (ContextNode node)", which constructs a RecognitionResult object from a given context node. It may also include a constructor named "RecognitionResult (string Text, int StrokeCount)", which constructs a RecognitionResults target from a specified text value, which in turn is associated with a specified number of strokes, where the recognition process is actually If an alternative recognition value corresponding to the handwritten ink data has not been provided, it can be used for modification. In addition, this class may contain a constructor named "RecognitionResult (RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)", which constructs a RecognitionResults object by merging two existing Recognition Result objects together.

그 Recognition Result는 또한 단일의 잉크 대상에 포함된 스트록들의 콜렉션을 나타내는 스트록 인덱스들의 어레이를 제공하는, "StrokeCollection StrokeCollection {get;}"으로 명명된 속성, 및 인식 결과의 최상의 대안을 제공하는, "RecognitionAlternate TopAlternate {get;}"으로 명명된 속성과 같은 하나 이상의 속성들을 포함할 수 있다. 이 클래스는 또한 인식 분석 처리로부터의 현재 결과의 최상의 대안의 선택의 (예를 들어, 강력한, 중간의, 또는 열악한) 신뢰성 레벨을 제공하는, "RecognitionConfidence RecognitionConfidence {get;}"으로 명명된 속성 및 인식 분석 처리로부터의 분석 결과들의 최상의 결과 스트링을 리턴하는, "string TopString {get;}"으로 명명된 속성을 포함할 수 있다. The Recognition Result also provides 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 "RecognitionAlternate", which provides the best alternative to recognition results. It may contain one or more attributes, such as the one named TopAlternate {get;} ". This class also recognizes an attribute and recognition named "RecognitionConfidence RecognitionConfidence {get;}", which provides a (eg, strong, medium, or poor) reliability level of the best alternative choice of current results 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.

그 Recognition Results 클래스는 또한 인식 분석 처리로부터의 분석 결과들의 최고의 결과 스트링 내의 선택으로부터 대안의 콜렉션을 지정하는, "public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, selectionLength, maximumAlternates)"로 명명된 방법과 같은 많은 방법들을 포함할 수 있으며, 각각의 대안은 단지 하나의 잉크 세그먼트에 대응한다. 이 방법을 위한 입력 파라미터들은 예를 들어, 대안의 콜렉션이 리턴되는 텍스트 선택의 시작을 지정하는 값, 대안의 콜렉션이 리턴되는 텍스트 선택의 길이 를 지정하는 값 및 리턴하기 위해 최대수의 대안들을 지정하는 값을 포함할 수 있다. 이어서 이 방법은 인식 결과의 최고의 결과 스트링 내에서의 선택으로부터 대안들의 RecognitionAlternateCollection collection을 리턴할 수 있다. The Recognition Results class may also include many methods, such as the method named "public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, selectionLength, maximumAlternates)", which specifies an alternative collection 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 alternative collection is returned, a value specifying the length of the text selection in which the alternative collection 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.

그 Recognition Results 클래스는 "RecognitionResults Merge(RecognitionResults left, string separator, RecognitionResults right)"로 명명된 방법을 더 포함할 수 있다. 이러한 방법은 새로운 RecognitionResults 대상을 편평한 격자가 되는 단일의 스트링으로부터 생성하거나, 현존하는 RecognitionResult 대상의 시작 및 종료에 단일의 스트링을 부가하거나, 두 현존하는 RecognitionResult 대상들 간에 단일의 스트링을 연결시키도록 사용될 수 있다. 이 클래스는 또한 공지된 대안으로 변경되도록 그 인식 결과를 지정하는, "ModifyTopAlternate(RecognitionAlternate alternate)"로 명명된 방법을 포함할 수 있다. 본 발명의 몇가지 실시예들로서, 인식 분석 처리의 결과들의 최고의 결과 스트링은 디폴트로 최상의 대안(top alternate)에 대응한다. 그러나, 이 방법은 최상의 대안과는 다른 대안들이 인식 분석 처리의 결과들에 사용됨을 지정하는데 사용될 수 있다. 새로운 최상의 대안이 이전과 다른 분할(segmentation)이 되면, ModifyTopAlternate 방법은 변경들에 반영하기 위해 그 콘텍스트 노드들을 자동으로 업데이트할 것이다. The Recognition Results class may further include a method named "RecognitionResults Merge (RecognitionResults left, string separator, RecognitionResults right)". This method can be used to create a new RecognitionResults object from a single string that becomes a flat grid, add a single string to the beginning and end of an existing RecognitionResult object, or connect a single string between two existing RecognitionResult objects. have. This class may also include a method named "ModifyTopAlternate (RecognitionAlternate alternate)", which specifies the recognition result to be changed to known alternatives. In some embodiments of the present invention, the best result string of the results of the recognition analysis process defaults to the top alternate. However, this method can be used to specify that alternatives other than the best alternative are used in the results of the recognition analysis process. If the new best alternative is a different segment than before, the ModifyTopAlternate method will automatically update its context nodes to reflect the changes.

인식 결과를 변경하는데 사용될 수 있는 대안들을 검색하기 위해서, 이 방법은 이하에 상세하게 논의되는 GetAlternatesFromSelection 방법을 호출함을 유의해야 한다. 이 클래스는 또한 인식 격자의 형태로 관련 RecognitionResults 대상을 지속적으로 유지하는, "Stream Save()"로 명명된 방법을 가질 수 있다. 인식 격자가 인식 처리로부터의 결과들을 표현하는데 사용되는 나열된 포맷이다. Note that this method calls the GetAlternatesFromSelection method, which is discussed in detail below, in order to retrieve alternatives that can be used to change the recognition result. This class can also have a method named "Stream Save ()", which keeps the associated RecognitionResults object in the form of a recognition grid. The recognition grid is an enumerated format used to represent the results from the recognition process.

그 Ink Analysis 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"로 명명된 필드를 더 포함할 수 있다. 그러나, 부가적인 분석 처리들이 이용가능하면(또는 동일한 분석 처리의 다른 버전들), 이러한 타입은 따라서 부가적인 AnalysisOptions을 포함할 수 있음을 유의해야 한다. The Ink Analysis API can 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 available options 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 can also enable and disable detection of annotations, a field named "const AnalysisOptions EnableAnnotations", a field named "const AnalysisOptions EnableConnectorsAndContainers", which enables and disables detection of connectors and containers, and It may include a field named “const AnalysisOptions EnableIntermediateResults” that enables and disables the return of analysis results for the software application 1701 between use of other sequential analysis processes. This type may also have a field named "const AnalysisOptions EnableLists" that enables and disables the detection of the list and a field named "const AnalysisOptions EnableTables" that enables and disables the detection of the table. This enumerated type may further include a field named "const AnalysisOptions EnableTables", which enables and disables text recognition analysis processing. However, it should be noted that if additional analysis processes are available (or other versions of the same analysis process), this type may thus include additional AnalysisOptions.

또한, 그 Ink Analysis API는 AnalysisResultsEventArgs 클래스를 포함할 수 있다. 이 클래스는 분석 결과들을 포함하고, AnalysisResult 이벤트가 제기될 경우 소프트웨어 애플리케이션(1701)으로 리턴되는 데이터 구조를 생성하는, "public AnalysisResultsEventArgs()"로 명명된 콘스트럭터를 가질 수 있다. 이 클래스는 분석 처리를 수행한 그 InkAnalyze를 식별하는, "InkAnalyzer InkAnalyzer {get;}"으로 명명된 속성을 포함할 수 있다. The Ink Analysis API can also include an AnalysisResultsEventArgs class. This class may have a constructor named "public AnalysisResultsEventArgs ()" that contains analysis results and creates a data structure that is returned to the software application 1701 when an AnalysisResult event is raised. This class may contain an attribute named "InkAnalyzer InkAnalyzer {get;}" that identifies the InkAnalyze that performed the analysis process.

그 API는 또한 기하학적 라인을 나타내는 "Line" 대상의 사용을 인식하는 몇가지 타입의 운영체제가 유용할 수 있는 Line 클래스를 가질 수 있다. 이 클래스는 Line 대상을 생성하는, "public Line(Point beginPoint, Point endPoint)"로 명명된 콘스트럭터와 같은, 콘스트럭터를 포함할 수 있다. 이 클래스는 또한 라인 대상의 시작점을 나타내는, "public Point BeginPoint {get; set;}"로 명명된 속성 및 라인 대상의 종료점을 나타내는, "public Point EndPoint {get; set;}"로 명명된 속성과 같은, 여러가지 속성들을 포함할 수 있다. The API can also have a Line class that can 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, such as a constructor named "public Line (Point beginPoint, Point endPoint)", which creates a Line target. This class also contains an attribute named "public Point BeginPoint {get; set;}" that indicates the starting point of the line target, and an attribute named "public Point EndPoint {get; set;}" that indicates the ending point of the line target. It can contain several attributes, such as.

이러한 클래스들에 부가하여, 그 Ink Analysis API는 또한 Recognition Alternate 클래스를 포함할 수 있다. 이 클래스는 인식기의 사전과 비교되는 잉크의 세그먼트들에 대해 가능한 단어 매치를 나타내는 엘리먼트들을 포함할 수 있다. 예를 들어, 이러한 클래스는 단일의 라인 상에 존재하는 RecognitionAlternate 대상의 어센더 라인(ascender line)을 제공하는(라인이 두 지점들로 표현됨), "Line Ascender {get;}"로 명명된 속성, 단일의 라인 상에 현존하는 RecognitionAlternate 대상의 기준선(Baseline)을 제공하는, "public Line Baseline {get;}"으로 명명된 속성, 단일의 라인 상에 현존하는 RecognitionAlternate 대상의 디센더 라인(descender line)을 제공하는, "Line Descender {get;}"으로 명명된 속성을 포함할 수 있다. 이 클래스는 또한 현재 RecognitionAlternate 대상에 대한 RecognitionResults를 제공하는, "RecognitionResult Extract {get;}"로 명명된 속성을 포함할 수 있다. 이 속성은 예를 들어, 단어에 대한 RecognitionResult 대상을 그 단어를 포함하는 라인에 대한 RecognitionResult 대상으로부터 추출하는데 사용될 수 있다. In addition to these classes, the Ink Analysis API may also include a Recognition Alternate class. This class may contain elements representing possible word matches for segments of the ink compared to the dictionary of the recognizer. For example, such a class might provide an ascender line for a RecognitionAlternate target that exists on a single line (the line is represented by two points), an attribute named "Line Ascender {get;}", An attribute named "public Line Baseline {get;}" that provides a baseline for an existing RecognitionAlternate object on a single line, and a descender line of an existing RecognitionAlternate object on a single line. It 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 RecognitionAlternate target. This attribute can be used, for example, to extract the RecognitionResult object for a word from the RecognitionResult object for the line containing the word.

이는 또한 단일의 라인 상에 현존하는 RecognitionAlternate 대상에 대한 중심선(midline)을 제공하는, "Line Midline {get;}"으로 명명된 속성, 잉크 대상에 포함된 스트록들의 콜렉션을 제공하는(즉, 이는 RecognitionResult에 연관된 스트록들을 나타내는 StrokeCollection을 제공함), "StrokeCollection Strokes {get;}"으로 명명된 속성 및 RecognitionResult와 연관된 스트록들을 나타내는 하나 이상의 잉크 대상들에 포함된 스트록들의 콜렉션을 제공하는, "StrokeCollection[] StrokesArray {get;}"으로 명명된 속성을 포함할 수 있다. 이 클래스는 또한 인식 분석 처리가 RecognitionAlternate 대상 또는 제스츄어의 인식시에 결정되는 (예를 들어, 강력한, 중간의 또는 열악한) 신뢰도 레벨을 제공하는, "RecognitionConfidence RecognitionConfidence {get;}"로 명명된 속성을 포함할 수 있다. 비선형 노드들(non-line nodes)에 대해, 관련 콘텍스트 노드들으 자식들 의 최하위 RecognitionConfidence가 리턴될 것이다. 이는 또한 대안의 결과 스트링을 지정하는 "string RecognizedString {get;}"으로 명명된 속성을 포함할 수 있다. 그러므로, 단어 콘텍스트 노드보다 위의 임의의 콘텍스트 노드에 대해, 그 결과들 스트링은 이러한 방법에 의해 함께 연결된다. 예를 들어, 라인 노드가 그 자식 노드들 또는 단어 노드들 모두의 결과들을 차례로 포함하는 결과들 스트링을 포함할 것이다. 이어서, 단락 노드가 그 자식 노드들 또는 라인 노드들 모두의 결과들을 포함하는 결과들 스트링을 포함할 것이다. It also provides an attribute named "Line Midline {get;}", which provides a midline for an existing RecognitionAlternate object on a single line, that is, a collection of strokes contained in the ink object (i.e. it is a RecognitionResult "StrokeCollection [] StrokesArray {which provides a collection of strokes contained in one or more ink objects representing strokes associated with a RecognitionResult and a property named" StrokeCollection Strokes {get;} " get;} ". This class also contains an attribute named "RecognitionConfidence RecognitionConfidence {get;}", which provides a recognition level (e.g., strong, medium, or poor) confidence level determined upon recognition of a RecognitionAlternate object or gesture. can do. For non-line nodes, the lowest RecognitionConfidence of the children of the relevant context nodes will be returned. It may also contain an attribute named "string RecognizedString {get;}" which specifies an alternative result string. Therefore, for any context node above the word context node, the result strings are concatenated together in this way. For example, a line node would contain a string of results that in turn contains the results of both its child nodes or word nodes. The shorting node will then contain a string of results that contains the results of both its child nodes or the 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 includes one or more methods, including, for example, a method named "StrokeCollection [] GetStrokeArrayFromTextRange (int selectionstart, int selectionlength)" that specifies a StrokeCollection from each ink object corresponding to a known text range. It may include. This class also includes a method named "StrokeCollection [] GetStrokesFromStrokesArrayRanges (StrokeCollection [] strokesArray)", which contains a known input collection of strokes and specifies the collection of the smallest strokes whose identifier can provide alternatives. can do. In particular, the strokes are returned by an array of ink objects that each include an array of stroke indices for that collection. It should be noted that the collection of ink strokes returned by this method may match the input collection, or may be larger if the input collection matches only some of the smallest recognition results that include all the input strokes. . This class contains a known input collection of strokes and corresponds to a method and known text range named "StrokeCollection GetStrokesFromStrokesRanges (StrokeCollection strokes)", which specifies the collection of the smallest 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 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)"으로 명명된 방법을 가질 수 있으며, 이는 이 방법이 호출되는 대안의 분할이다. 그 콜렉션 내의 각각의 대안은 그 방법으로 전달되는 속성에 대한 동일한 속성 값을 갖는 인접한 인식 세그먼트들을 포함한다. 예를 들어, 이러한 방법은 원래의 대안을 그 인식 결과 내의 (강력한, 중간의 또는 열악한) 신뢰성 레벨 경계들, 라인 경계들 또는 세그먼트 경계들로 분할하는 대안들을 획득하는데 사용될 수 있다. 이는 대안의 인식기 신뢰도와 같은 그 대안의 공지된 속성의 값을 지정하는, "byte[] GetPropertyValve(GUID propertyType)"으로 명명된 방법을 더 포함한다. 그러나, 모든 인식 분석 처리들이 모든 속성 타입들에 대한 값을 제공하는 것은 아니다. 그러므로, 이 방법은 관련 인식 분석 처리에 의해 지원된 타입들에 대한 데이터를 제공한다. This class is named "void GetTextRangeFromStrokes (ref int selectionstart, ref int selectionend, StrokeCollection strokes)", which specifies the smallest range of recognized text from which the recognizer can return an alternative containing a set of known strokes. And a method named "void GetTextRangeFromStrokesArray (ref int selectionstart, ref int selectionend, StrokeCollection [] strokesarray)", which specifies the smallest range of recognized text from which the recognizer can return an alternative containing a set of known strokes. It may further include. It may also have a method named "RecognitionAlternateCollection SplitWithConstantPropertyValue (GUID propertyType)", which returns a collection of alternatives, which is the split of the alternative in which this method is called. Each alternative in the collection includes adjacent recognition segments having the same attribute value for the attribute passed in that way. For example, this method can be used to obtain alternatives for dividing the original alternative into (strong, intermediate or poor) confidence level boundaries, line boundaries or segment boundaries within the recognition result. It further includes a method named “byte [] GetPropertyValve (GUID propertyType)” that specifies the value of that alternative known attribute, 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.

그 Ink Analysis API는 또한 Recognition Alternate Collection 클래스를 포함할 수 있다. 앞서 논의된 많은 클래스들과 같이, 이러한 클래스는 RecognitionAlternateCollection 대상을 생성하기 위한 "RecognitionAlternateCollection()"으로 명명된 콘스트럭터를 포함할 수 있다. 이러한 클래스는 또한 많은 대상들 또는 대안의 인식 값들의 콜렉션에 포함된 콜렉션들을 제공하는, "Count {get;}"으로 명명된 속성, 대안의 인식 값들의 콜렉션으로의 액세스가 소프트웨어 애플리케이션(1701)(즉, "스레드 안전(thread safe)")으로 동시화되는지의 여부를 나타내는 값을 제공하는, "IsSynchronized {get;}"으로 명명된 속성, 및 대안의 인식 값들의 콜렉션으로의 액세스를 동시화하는데 사용될 수 있는 대상을 제공하는, "SyncRoot {get;}"으로 명명된 속성과 같은, 많은 속성들을 포함할 수 있다. The Ink Analysis API can also include the Recognition Alternate Collection class. Like many of the classes discussed above, such a class may include a constructor named "RecognitionAlternateCollection ()" for creating a RecognitionAlternateCollection object. This class also provides access to the attribute named "Count {get;}", the collection of alternative recognition values, which provides collections included in the collection of many objects or alternative recognition values. Namely, "IsSynchronized {get;}", which provides a value indicating whether or not to be 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 a target.

이 클래스는 또한 지정된 목적지 어레이 인덱스에서 시작하는 지정된 1차원 어레이에 대안의 인식 값들의 현재 콜렉션의 모든 엘리먼트들을 카피하는, "virtual void CopyTo(Array array, int index)"로 명명된 방법, 및 호출자(caller)들이 각각의 구성을 대안의 인식 값들의 콜렉션 내의 각각의 RecognitionAlternate를 통해 열거하는데 사용할 수 있도록 하는 IEnumerable의 표 준 구현인, "IEnumerable IEnumerableGetEnumerator()"로 명명된 방법과 같은 하나 이상의 방법들을 포함할 수 있다. 이 클래스는 또한, 인식 대안 값들의 콜렉션 내에 모든 대상들을 포함하는 RecognitionAlternateCollectionEnumerator를 리턴하는 "RecognitionAlternateCollectionEnumerator GetEnumerator()"로 명명된 방법을 포함할 수 있다. 이 방법은 예를 들어, 인식 대안 값들의 콜렉션에서 각각의 대상을 검색하는데 사용될 수 있다. This class also provides a method named "virtual void CopyTo (Array array, int index)", which copies all the elements of the current collection of alternative recognition values into the specified one-dimensional array starting at the specified destination array index, and the caller ( caller) may include one or more methods, such as the method named "IEnumerable IEnumerableGetEnumerator ()", which is a standard implementation of IEnumerable that allows each configuration to be enumerated through each RecognitionAlternate in the collection of alternative recognition values. Can be. This class may also include a method named "RecognitionAlternateCollectionEnumerator GetEnumerator ()" that returns a RecognitionAlternateCollectionEnumerator that includes all objects in the collection of recognition alternative values. This method can be used, for example, to retrieve each object in a collection of recognition alternative values.

그 Ink Analysis API는 부가적으로 Recognition Confidence 열거 및 Recognition Mode 열거를 포함할 수 있으며, 각각은 인식 분석 처리에 관한 하나 이상의 필드들을 포함할 수 있다. 예를 들어, 그 Recognition Confidence 클래스는 인식 분석 처리가 대안의 인식 값들이 제공된 리스트에 정확한 결과가 있음을 확신함을 나타내는, "Intermediate"로 명명된 필드, 인식 분석이 대안의 인식 값들이 제공된 리스트에 그 결과가 있음을 확신하지 못함을 나타내는, "Poor"로 명명된 필드, 및 인식 분석 처리가 대안의 인식 값들의 최고의 대안이 정확함을 확신함을 나타내는, "Strong"으로 명명된 필드와 같은 다수의 필드들을 포함할 수 있다. The Ink Analysis API may additionally include a Recognition Confidence enumeration and a Recognition Mode enumeration, each of which may include one or more fields related to recognition analysis processing. For example, the Recognition Confidence class might contain a field named "Intermediate" that indicates that the recognition analysis process is confident that the list is provided with alternative recognition values. Multiple fields such as a field named "Poor" indicating that the result is not certain, and a field named "Strong" indicating that the recognition analysis process is convinced that the best alternative of alternative recognition values is correct. May contain fields.

마찬가지로, 그 Recognition Mode 클래스는 인식 분석 처리가 전자 잉크 데이터를 어떻게 해석하며, 그리하여 인식 결과 스트링을 어떻게 결정하는지를 명시하는 필드들을 포함할 수 있다. 예를 들어, 이 클래스는 인식 분석 처리가 그 콘텍스트에 대해 지정된 팩토이드에 기초한 인식 결과를 지배함을 명시하는, "Coerce"로 명명된 필드, 및 인식 분석 처리가 단일 라인으로서 전자 잉크 데이터를 다룸을 명시하는 "Line"으로 명명된 필드를 포함할 수 있다. 이 클래스는 또한 인식 분석 처리가 어떠한 인식 모드들도 적용하지 않음을 명시하는, "None"으로 명명된 필드, 및 인식 분석 처리가 그 전자 잉크 데이터를 단일의 단어 또는 문자를 형성하는 것으로서 다룸을 명시하는, "Segment"로 명명된 필드를 포함할 수 있다. 또한 이 클래스는 다수의 분할을 디스에이블하는, "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 may contain a field named "Coerce" specifying that recognition analysis processing dominates recognition results based on the factoroid specified for that context, and the recognition analysis processing retrieves electronic ink data as a single line. May contain a field named "Line" that specifies the handling. This class also specifies that the field named "None" specifies that the recognition analysis process does not apply any recognition modes, and that the recognition analysis process treats the electronic ink data as forming a single word or character. It may contain a field named "Segment". This class may also contain a field named "TopInkBreaksOnly", which disables multiple partitions.

또한, 그 Ink Analysis API는 두 개의 콘텍스트 노드들이 어떻게 함께 링크될 수 있는지를 정의하는, Context Link 클래스를 포함할 수 있다. 그 ContextLink 대상 자체는 두 개의 콘텍스트 노드들, 그 링크의 방향 및 링크의 타입이 링크됨을 나타낸다. 이 클래스는 또다른 콘텍스트 노드로부터 링크됨을 소스 콘텍스트 노드를 지정하는, "ContextNode SourceNode {get;}"으로 명명된 속성, 소스와 목적지 콘텍스트 노드들 산에 현존하는 링크 관계의 타입을 명시하는, "ContextLinkType LinkType {get;}"으로 명명된 속성, 및 주문형 링크(custom link)가 사용됨을 명시하는, "CustomLinkType {get;}"으로 명명된 속성을 포함할 수 있다. 이 상황은 API가 인식할 수 있는 것을 뛰어넘는 애플리케이션 특정 링크들을 나타내기 위해 InkAnalyzer API의 링킹 시스템을 사용할 것을 애플리케이션이 결정하는 경우에 발생할 것이다. The Ink Analysis API can also include a Context Link class, which defines how two context nodes can be linked together. The ContextLink object itself indicates that two context nodes, the direction of the link and the type of link are linked. This class specifies an attribute named "ContextNode SourceNode {get;}" that specifies the source context node to be linked from another context node, and a "ContextLinkType" that specifies the type of existing link relationship in the source and destination context nodes. It may include an attribute named LinkType {get;} ", and an attribute named" CustomLinkType {get;} ", which specifies that a custom link is used. This situation will occur if the application decides to use the InkAnalyzer 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 creates a relationship between existing source and destination context nodes.

이 클래스는 또한 두 개의 콘텍스트 노드들에 의해 공유된 관계의 타입을 정의하는, "ContextLinkType enum"으로 명명된 열거를 포함할 수 있다. 이러한 여러가지 링크 타입들은 예를 들어, 하나의 노드가 다른 노드에 앵커됨을 기술하는 "AnchorsTo" 타입을 포함할 수 있다. 둘 모두의 노드들은 파싱 상황에 기초하여 SourceNode 또는 DestinationNode 속성을 사용할 수 있다. 그 링크 타입들은 또한 하나의 노드가 다른 노드를 포함함을 기술하는, 타입 "Contains"을 포함할 수 있다. 이러한 관계로서, 그 콘테이너 노드는 SourceNode로서 참조될 수 있는 반면, 그 콘테이너 노드는 DestinationNode로서 참조될 수 있다. 그 링크 타입들은 하나의 노드가 또다른 노드에 포인팅함을 기술하는, "PointTo" 타입을 더 포함할 수 있다. 이러한 관계에 대해, 포인팅하는 노드는 SourceNode로서 언급될 수 있는 반면, 포인팅되는 노드는 DestinationNode로서 언급될 수 있다. 또한, 그 링크 타입들은 하나의 노드가 다른 노드로부터 포인팅함을 기술하는, "PointsForm" 타입을 가질 수 있다. 이러한 관계에서, 다른 노드로부터 떨어져 있는 노드 포인팅은 SourceNode로서 언급될수 있는 반면, 다른 노드로부터 포인팅된 노드는 DestinationNode로서 언급될 수 있다. This class may also contain an enumeration named "ContextLinkType enum" that defines the type of relationship shared by the two context nodes. These various link types may include, for example, an "AnchorsTo" type that describes one node anchored to another node. Both nodes may use the SourceNode or DestinationNode attribute based on the parsing situation. The link types may also include type "Contains", describing that one node includes another node. With this relationship, the container node can be referred to as a SourceNode, while the container node can 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 the SourceNode, while the pointing node may be referred to as the DestinationNode. In addition, the link types may have a "PointsForm" type, describing that one node points from another node. In this relationship, node pointing away from other nodes may be referred to as a SourceNode, while nodes pointing from other nodes may be referred to as DestinationNodes.

그 링크 타입들은 부가적으로 하나의 노드가 또다른 노드의 길이를 수평으로 움직임을 기술하는, "SpansHorizontally" 타입, 및 하나의 노드가 또다른 노드의 길이를 수직으로 움직임을 기술하는, "SpansVertically" 타입을 포함할 수 있다. 이러한 타입들에 대해, 보통 마지막에 기록되는 다른 노드를 커버하는(스트라이크아웃, 언더라인, 마진 표시 바) 노드는 SourceNode로서 언급될 수 있는 반면, 그 스패닝된 노드는 DestinationNode로서 언급될 수 있다. 그 링크 타입들은 또한 주문형 링크 타입이 사용되었음을 기술하는, "Custom" 타입을 포함할 수 있다. 이 값이 사용되는 경우, ContextLink 대상에 대한 "CustomLinkType" 속성은 이 링크의 목적에 관해 보다 상세하게 제공할 수 있다. The link types additionally include a "SpansHorizontally" type, in which one node describes the movement of another node horizontally, and a "SpansVertically", in which one node describes the movement of another node vertically. It can include a type. For these types, a node that normally covers the other node that is recorded last (strikeout, underline, margin indicator bar) may be referred to as the SourceNode, while the spanned node may be referred to as the DestinationNode. The link types may also include a "Custom" type, which describes that the on-demand link type was used. If this value is used, the "CustomLinkType" attribute for the ContextLink object may provide more details about the purpose of this link.

따라서, 그 Ink Analyzer API는 문서 내의 전자 잉크를 비동시적으로 분석하기 위한 여러가지 기능들 및 서비스들을 제공하며, 이어서 앞서 상세하게 기재된 바와 같이 그 분석 처리의 결과들을 그 문서의 현재 상태로 조정한다. 또한, 앞서 기재된 여러가지 클래스들이 Microsoft Windows 운영 환경, Microsoft COM 운영 환경, Unix 또는 Linux 운영 환경, 또는 임의의 다른 적절한 컴퓨터 운영 환경과 같은 여러가지 운영 체제들 및 운영 환경들에 적용될 수 있음을 이해해야 한다. 게다가, 본 발명의 여러가지 구현들에 따른 응용 프로그래밍 인터페이스가 앞서 기재된 하나 이상의 클래스 구성요소들을 생략할 수 있거나, 또는 원하는 서비스 또는 기능성을 제공하기 위해 부가적인 구성요소들을 포함할 수 있음을 이해해야 한다. Thus, the Ink Analyzer API provides various functions and services for asynchronous analysis of electronic ink in a document, and then adjusts the results of the analysis process to the current state of the document as described in detail 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)를 입력할 수 있거나, 또는 문서(1703)로부터 현존하는 전자 잉크 데이터(1705)를 삭제할 수 있다. 또한, 그 소프트웨어 애플리케이션(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 its document 1703 is analyzed by the background analysis process. Because of this, the software application 1701 can change the document 1703 in a number of ways that will conflict with the results of the analysis process. For example, the software application 1701 can enter new electronic ink data 1705 into the document 1703, or delete existing electronic ink data 1705 from the document 1703. The software application 1701 can also edit the existing electronic ink data 1705 by moving the location of the existing electronic ink data 1705 or by changing the attributes of the existing electronic ink data 1705. Also, the software application 1701 can add, delete, or change non-ink document elements 1707 in ways that affect existing electronic ink data 1705. For example, the software application 1701 can delete the typed text annotated with the electronic ink data 1705.

그 소프트웨어 애플리케이션(1701)은 분석 처리에 의한 변경을 금지하기 위해, 현존하는 전자 잉크 데이터(1705)를 부가적으로 "고정(pin)"할 수 있다. 예를 들어, 사용자가 잉크 스트록들의 그룹에 대해 레이아웃 또는 분류를 수동으로 지정하면, 그 소프트웨어 애플리케이션(1701)은 그 잉크 스트록들이 특정 레이아웃 내에 또는 파싱 처리에 의해 생성된 결과들에 무관한 분류로서 남아있음을 지정할 수 있다. 유사하게, 사용자가 인식 처리에 의해 생성된 결과들과 무관하게 잉크 스트록들의 그룹에 대한 특정 인식 결과를 지정할 수 있다. The software application 1701 may additionally "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 remains as a classification where the ink strokes are within a particular layout or independent of the results generated by the parsing process. Can be specified. 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)는 늦은 스트록들로 "단단한" 고정을 허용할 수 있으며, 이는 늦은 스트록들에 대해 지정된 조건들 하에서 추가되도록 허용하고, 그 고정된 노드 아래의 임의의 리프 노드들로부터 제거되는 것으로부터 스트록들을 금지하고, 자식 노드들의 추가 또는 제거를 금지하고, 그 고정된 노드 아래의 임의의 노드들의 리-페어런팅을 금지한다. 또한, 그 잉크 분석 도구(1901)는 그 소프트웨어 애플리케이션(1701)이 잉크를 대안으로 또는 부가적으로 "부드럽게(soft)" 고정하도록 허용할 수 있다. 이러한 배치로서, 어떠한 스트록들도 고정된 노드 아래의 임의의 리프 노드들로부터 제거될 수 없으며, 스트록들의 추가하도록 허용하기 위해 지정된 규칙들이 있으며(이는 늦은 스트록들에 대해 내부에 추가되도록 허용한다), 자식 노드들의 재그룹화, 추가 및 제거가 허용된다. 고정이 제거될 수 있으며, 일단 고정이 제거되기만 하면, 이전에 고정된 노드들 및 그들의 자식들은 "더티"로 고려될 수 있거나 재분석이 필요하게 됨을 유의해야 한다. Various types of pinning can be used in accordance with other implementations of the invention. For example, the ink analysis tool 1901 may allow the software application 1701 to "hard" fix the ink. With this arrangement, no ink strokes can be added to any leaf nodes below the fixed node, and no strokes can be removed from any leaf nodes below that fixed node, and no No addition or deletion is allowed, and no re-parenting of any nodes below that fixed node is allowed. Alternatively or additionally, the ink analysis tool 1901 may allow for "hard" fixation with late strokes, which allows it to be added under specified conditions for late strokes and below the fixed node. Prohibits strokes from being removed from any leaf nodes, prohibits the addition or removal of child nodes, and prohibits re-pairing of any nodes below that fixed node. The ink analysis tool 1901 may also allow the software application 1701 to "soft" fix the ink alternatively or additionally. With this arrangement, no strokes can be removed from any leaf nodes below the fixed node, and there are rules specified to allow the addition of strokes (which allow it to be added internally for late strokes), Allow regrouping, addition and removal of child nodes. It should be noted that pinning can be removed, and once pinning is removed, previously pinned nodes and their children can be considered "dirty" or require reanalysis.

또한, 본 발명의 각종 실시예들에 따른 잉크 처리는 앞서 상세하게 논의된 바와 같이, 다수의 분석 처리들을 이용할 수 있다. 따라서, 제2의 다음 분석 처리가 실행중인 동안, 이전의 분석 처리의 결과들이 전자 잉크 데이터(1705)를 변경할 수 있다. 따라서, 분석 처리의 결과들이 문서(1703)의 현재 상태로 조정되어야 하 므로, 문서(1703)의 현재 상태에 대해 유효한 단지 그 결과들만이 그 분석 콘텍스트 대상(1709)에 적용된다. 즉, 그 현재 분석 콘텍스트 대상(1709)(및, 몇가지 경우에 그 분석 처리의 결과들)이 분석 처리의 결과들과 문서(1703)의 현재 상태 간의 불일치들(discrepancies) 또는 "충돌들"을 생략하기 위해서 변경된다. In addition, the ink process 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 those 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) omits discrepancies or “collisions” between the results of the analysis process and the current state of the document 1703. To change it.

그 조정 처리의 결과들이 유효하도록 하기 위해서, 그 문서(1703)의 상태가 조정 처리동안 변경되어서는 안됨을 유의해야 한다. 그러므로 그 조정 처리는 소프트웨어 애플리케이션(1701)이 실행되는 1차 스레드를 사용하여 수행될 수 있고, 그 조정 처리를 실행하는 것은 소프트웨어 애플리케이션(1701)의 동작을 일시적으로 중지시킬 수 있다. 대안으로, 데이터 구조 잠김(locking)과 같은 다른 기술들이 그 문서(1703)의 상태가 조정 처리 동안 변경되지 않음을 보장하도록 사용될 수 있다. 따라서, 사용자가 소프트웨어 애플리케이션(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. Therefore, the adjustment process can be performed using the primary thread on which the software application 1701 is executed, and executing the adjustment process can temporarily stop the operation of the software application 1701. Alternatively, other techniques, such as data structure locking, can 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 soon as possible. Another consideration of the tuning process is the effect on the performance of the analysis process running on a separate background analysis thread. If inconsistencies 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 are 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 the adjustment can be used without departing from the present invention.

본 발명의 각종 실시예들로서, 그 분석 처리 및 조정 처리는 조정 처리의 효율성(efficiency) 및 편리성을 개선하기 위해 하나 이상의 다음의 컨벤션(convention)들에 집착할 수 있다. 우선, 그 분석 처리는 문서 독립 분석 콘텍스트 대상(1903) 내의 문서 엘리먼트에 대한 노드들을 가능한 한 많이 재사용할 수 있다. 즉, 충돌들이 문서 엘리먼트들에 대한 새로운 관련되지 않은 노드들을 생성함으로써 회피되어서는 안된다. 또한, 그 조정 처리는 소프트웨어 애플리케이션(1701)에 의해 지정된 "고정(pinning)"에 관련해야 한다. 그 분석 처리가 통상적으로 소프트웨어 애플리케이션(1701)에 의한 고정의 지정들을 따를 것인 반면, 그 소프트웨어 애플리케이션(1701)은 그 분석 처리가 실행되는 동안, 전자 잉크 데이터(1705)를 고정할 수 있다. 또한, 그 조정 처리는 어떠한 비어있는 노드들도 그 조정 처리가 완료된 후에 현재 분석 콘텍스트 대상(1709)에 남아있지 않음을 보장해야 한다. 그러나, 하나 이상의 이러한 컨벤션들이 본 발명의 대안의 구현에 따라 생략되고 따르지 않을 수 있음을 이해해야 한다. 예를 들어, 본 발명의 몇가지 구현은 그 분석 대상(1709)가 비어있는 노드들을 포함하도록 허용할 수 있다. As various embodiments of the present invention, the analysis process and the adjustment process may cling to one or more of the following conventions to improve the efficiency and convenience of the adjustment process. First, the analysis process can reuse as many nodes as possible for document elements in the document independent analysis context object 1903. That is, conflicts should not be avoided by creating new unrelated nodes for document elements. In addition, the adjustment process must relate to "pinning" specified by the software application 1701. While the analysis process will typically follow the designations of fixation by the software application 1701, the software application 1701 can fix the electronic ink data 1705 while the analysis process is executed. In addition, the coordination process must ensure that no empty nodes remain in the current analysis context object 1709 after the coordination process is completed. However, it should be understood that one or more of these conventions may be omitted and may not be followed in accordance with alternative implementations of the invention. For example, some implementations of the invention may allow the subject 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 unless it has any child nodes.

앞서 언급된 바와 같이, 분석 처리가 시작된 후에 이루어진 분석 콘텍스트 대상(1709)에 대해 변경하는 몇가지 형태에 대립하는 문서 독립 분석 콘텍스트 대상(1903)에 대해 분석 처리가 변경할 경우에 충돌이 발생한다. 충돌들은 두가지 타입: 강제적인 충돌들 및 무조건적인 충돌들로 나눠질 수 있다. As mentioned above, conflicts arise when the analysis process changes for the document independent analysis context object 1903 as opposed to some form of change to the analysis context object 1709 made after the analysis process has begun. Collisions can be divided into two types: mandatory collisions and unconditional collisions.

문서(1703)의 현재 상태에 대해 분석 콘텍스트 대상(1709)에 대한 분석 처리에 의한 문서 독립 분석 콘텍스트 대상(1903)에 대해 이루어진 변경을 적용하는 것이 불가능 한 경우 강제적인 충돌들이 발생한다. 예를 들어, 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709)에 노드를 "고정(pin)" 또는 고정(fix)하고, 분석 처리가 문서 독립 분석 콘텍스트 대상(1903) 내의 대응하는 노드를 변경하는 경우, 강제적인 충돌이 발생한다. 강제적인 충돌은 또한 분석 처리가 문서 독립 분석 콘텍스트 대상(1903) 내의 노드에 대해 임의의 타입의 변경을 이루지만 그 소프트웨어 애플리케이션(1701)은 분석 콘텍스트 대상(1709)으로부터 대응하는 노드를 삭제한 경우, 및 분석 처리가 문서 독립 분석 콘텍스트 대상(1903) 내의 대응하는 노드를 삭제한 경우의 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709) 내의 노드에 대해 스트록들 또는 자식 노드들을 추가한 경우에 발생할 것이다. 또한, 그 분석 처리가 문서 독립 분석 콘텍스트 대상(1903) 내의 대응하는 노드에 대해 링크를 다시 주문하거나 생성한 경우의 그 소프트웨어 애플리케이션(1701)분석 콘텍스트 대상(1709) 내의 노드를 삭제하는 경우, 강제적인 충돌이 발생할 것이다. Forced conflicts arise when it is impossible to apply a change made to the document independent analysis context object 1901 by the analysis process for the analysis context object 1709 to the current state of the document 1703. For example, the software application 1701 "pins" or fixes a node to an analysis context object 1709, and the analysis process changes the corresponding node within the document independent analysis context object 1903. In this case, a forced collision occurs. A mandatory conflict also occurs when the analysis process makes any type of change to a node in the document independent analysis context object 1901 but the software application 1701 deletes the corresponding node from the analysis context object 1709, And when the software application 1701 adds strokes or child nodes to the node in the analysis context object 1709 when the analysis process deletes the corresponding node in the document independent analysis context object 1901. In addition, if the analysis process deletes a node in the software application 1701 analysis context object 1709 when it reorders or creates a link to the corresponding node in the document independent analysis context object 1903, it is forced. A crash will occur.

소프트웨어 애플리케이션(1701)이 분석 처리에 의해 문서 독립 분석 콘텍스트 대상(1903)에서 변경된 값에 관련된 분석 콘텍스트 대상(1709)에서 값을 변경하는 경우에, 무조건적 충돌이 발생하지만, 고정 제약들, 엘리먼트 재사용 제약들, 및 그 분석 콘텍스트 대상(1709)에 대한 인터페이스의 고유의 제약들이 분석 콘텍 스트 대상(1709)에 대해 분석 처리에 의해 이루어진 변경의 애플리케이션을 허용할 수 있다. 임의의 분석이 또한 적용될 수 있다. 무조건적인 충돌이 분석 콘텍스트 대상(1709)에 대한 변경으로서 적용되거나 또는 회피될 수 있다. 또한, 그 조정 처리는 몇가지 타입의 무조건적인 충돌들을 간단히 무시할 수 있다. When the software application 1701 changes the value in the analysis context object 1709 related to the value changed in the document independent analysis context object 1901 by the analysis process, an unconditional conflict occurs, but fixed constraints, element reuse constraints. And the inherent constraints of the interface to the analysis context object 1709 may allow application of changes made by the analysis process to the analysis context object 1709. Any analysis can also be applied. Unconditional collision can be applied or avoided as a change to the analysis context object 1709. The coordination process can also simply ignore some types of unconditional collisions.

무조건적인 충돌의 한가지 그래픽 예가 분석 콘텍스트 대상(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 unconditional collision occurs when the first node of both analysis context object 1709 and document independent analysis context object 1901 has child nodes A and B for ink strokes A and B. The software application 1701 can then add a third child C node for ink stroke C within analysis context object 1709, but the analysis process removes the ink stroke D from document independent analysis context object 1903. 3 Add child node D. In various embodiments of the present invention, the adjustment process may add the child node D to the parent node in the analysis context object 1709 based on the analysis results. However, even if such a change to the parent node in the analysis context object 1709 is not prohibited, the characteristics of the parent node are changed in a manner that may not be desired by the software application 1701. For example, the ink associated with its parent node may then be analyzed and considered 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 may now refer to erroneous child nodes or strokes, and may never be modified again.

따라서, 본 발명의 각종 실시예들이 분석 처리의 결과들에 기초하여 분석 콘텍스트 대상(1709)을 업데이트하는 경우, 무조건적인 충돌에 대한 변경들을 적용하 지 않을 것이다. 이러한 기준이 무조건적인 충돌들에 기초하여 변경들을 식별하고 차단하기 위해 부가적인 처리를 요구할 수 있지만, 이러한 기준은 비교적 구현하기 쉬우며 유지하기 간단하다. 물론, 본 발명의 또다른 예들이 다른 기준에 따라서 무조건적인 충돌들에 대응하는 변경들을 구현할 수 있다. 특히, 이러한 대안의 예들은 분석 콘텍스트 대상(1709)에서 영구적인 논리적 불일치 관계들을 생성하지 않는 무조건적인 충돌들로부터의 변경들을 구현할 수 있다. Thus, when various embodiments of the present invention update the analysis context object 1709 based on the results of the analysis process, no changes to unconditional collisions will be applied. Although this criterion may require additional processing to identify and block changes based on unconditional conflicts, this criterion is relatively easy to implement and simple to maintain. Of course, other examples of the present invention may implement changes corresponding to unconditional collisions according to other criteria. In particular, examples of such an alternative may implement changes from unconditional 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 the node L was not applied to the analysis context object 1709 due to some kind of collision, the creation of the node W would be a forced collision.

본 발명의 각종 실시예들이 분석 처리의 결과들을 문서(1703)의 현재 상태로 조정하기 위해 로그-기반의 접근법을 이용할 수 있다. 이러한 로그-기반의 접근법에서, 그 문서 독립 분석 콘텍스트 대상(1903)은 분석 처리에 의해 이루어진 문서 독립 분석 콘텍스트 대상(1903)에 대한 변경들의 로그를 포함한다. 그 로그는 예를 들어, 변화 기록들의 리스트의 형태가 될 수 있다. 이어서 각각의 변경은 (예를 들어, 문서 독립 분석 콘텍스트 대상(1903)을 변경하도록 호출되었던 방법을 식별함으로써) 이루어진 변경의 타입, 그 변경이 (예를 들어, 그 방법이 호출되었던 문서 독립 분석 콘텍스트 대상(1903) 내의 노드를 식별함으로써) 이루어진 문서 엘 리먼트, 및 그 방법 호출을 위한 논쟁들을 재생성하는데 요구되는 임의의 정보를 포함할 수 있다. 유리하게, 그 문서 독립 분석 콘텍스트 대상(1903)이 잉크 분석 도구(1901) 및 분석 처리들에 의해 구현되기 때문에, (비록 대안으로 원한다면 그 로그가 그 애플리케이션(1701)에 노출될 수 있을지라도) 그 변경 로그는 소프트웨어 애플리케이션(1701)에 보이지 않을 수 있다. Various embodiments of the present invention may use a log-based approach to adjust the results of the analysis process to the current state of the document 1703. In this log-based approach, the document independent analysis context object 1903 includes a log of changes to the document independent analysis context object 1903 made by the analysis process. The log may be in the form of a list of change records, for example. Each change is then a type of change made (e.g., by identifying a method that was invoked to change the document independent analysis context object 1903), and the change is made (e.g., the document independent analysis context from which the method was invoked). Document elements), and any information required to recreate arguments for the method call. Advantageously, because the document independent analysis context object 1903 is implemented by the ink analysis tool 1901 and analysis processes (although the log may alternatively be exposed to the application 1701 if desired), The change log may not be visible to the software application 1701.

그 변경 로그 접근법을 이용한 그 조정 처리를 실행하기 위해서, 그 잉크 분석 도구(1901)는 그 변경들의 연대순으로 각각의 변경 기록을 시험한다. 즉, 그 잉크 분석 도구(1901)는 도 27에 도시된 처리를 구현할 수 있다. 우선, 단계 2701에서, 그 잉크 분석 도구(1901)는 변경을 적용하도록 요구되는 현재 분석 콘텍스트 대상(1709) 내의 대응하는 노드들을 액세스하려고 시도한다. 이 검색 단계는 강제적인 충돌이 되는 분석 콘텍스트 대상(1709)으로부터 하나 이상의 필요한 노드들을 삭제한다면, 소프트웨어 애플리케이션(1701)이 실패할 수 있음을 유의해야 한다. In order to perform the adjustment process using the change log approach, the ink analysis tool 1901 examines each change record in chronological order of the changes. That is, the ink analysis tool 1901 can implement the processing shown in FIG. First, at step 2701, the ink analysis tool 1901 attempts to access corresponding nodes in the current analysis context object 1709 that are required to apply the change. It should be noted that this search step may fail if the software application 1701 fails if it deletes one or more required nodes from the forcing conflicting analysis context object 1709.

다음으로, 단계 2703에서, 그 잉크 분석 도구(1901)는 변경이 강제적인 충돌을 생성하는지 아니면 무조건적인 충돌을 생성하는지를 결정한다. 이러한 결정을 하기 위한 절차는 이하에 보다 상세하게 설명될 것이다. 단계 2705에서, 그 잉크 분석 도구(1901)는, 그 조정 처리에 대한 기준에 의해 금지된 강제적인 충돌이나 또는 무조건적인 충돌을 생성하는 경우, 변경을 하거나 아니면 변경을 금지한다. 예를 들어, 변경이 조정 처리에 대한 기준에 의해 금지된 강제적인 충돌이나 또는 무조건적인 충돌을 생성한다면, 그 잉크 분석 도구(1901)는 변경이 행해진 문서(1703)의 대응하는 영역을 나타내는 분석 콘텍스트 대상(1709) 내의 노드들에 대해 변경들을 차단할 수 있다. 다른 한편 변경이 적용되면, 그 잉크 분석 도구(1901)는 그 분석 콘텍스트 대상(1709) 내의 필수적인 노드들에 대해 원하는 변경을 행하기 위해 적절한 방법을 호출할 수 있다. Next, at step 2703, the ink analysis tool 1901 determines whether the change produces a forced collision or an unconditional collision. The procedure for making this determination will be described in more detail below. In step 2705, the ink analysis tool 1901 makes a change or prohibits the change if it creates a forced collision or an unconditional collision prohibited by the criteria for the adjustment process. For example, if the change creates a forced conflict or an unconditional conflict that is prohibited by the criteria for the adjustment process, the ink analysis tool 1901 may display an analysis context that indicates the corresponding area of the document 1703 in which the change was made. Changes can be blocked for nodes within the target 1709. On the other hand, once the change is applied, the ink analysis tool 1901 can invoke the appropriate method to make the desired change to the necessary nodes in the analysis context object 1709.

그 분석 처리가 분석 콘텍스트 대상(1709)에 새로운 엘리먼트 노드를 추가하지만 이어서 스트록 노드들을 새로운 노드로 이동시키는 것을 실패한다면, 그 분석 처리는 또한 스트록 노드들이 그 새로운 노드들로 성공적으로 이동되었음을 가정하여 그 엘리먼트 노드를 삭제하려고 하지 않을 것이다. 그러므로, 현재 분석 콘텍스트 대상(1709) 내의 비어있는 노드에 대응하는 문서 독립 분석 콘텍스트 대상(1903) 내에 엘리먼트 노드가 있을 것이다. 따라서, 일단 분석 콘텍스트 대상(1709)에 대한 모든 변경들이 처리되기만 하면, 단계 2707에서, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903) 내의 노드들에 대응하는 분석 콘텍스트 대상(1709) 내의 임의의 "비어있는" 노드들을 삭제하기 위해 그 문서 독립 분석 콘텍스트 대상을 리뷰한다. 이러한 비어있는 노드 삭제 단계는 선택적인 것이며, 본 발명으로부터 벗어나지 않고 생략될 수 있다. If the analysis process adds a new element node to analysis context object 1709 but then 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. You will not want to delete the element node. Therefore, there will be an element node in the document independent analysis context object 1903 corresponding to an empty node in the current analysis context object 1709. Thus, once all changes to the analysis context object 1709 have been processed, at step 2707, the ink analysis tool 1901 may analyze the analysis context object 1709 corresponding to the nodes in the document independent analysis context object 1903. Review the document independent analysis context object to delete any "empty" nodes within. This empty node deletion step is optional and can be omitted without departing from the present invention.

문서 독립 분석 콘텍스트 대상(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 that the adjustment process should prevent empty nodes from being created in the document independent analysis context object 1903. It should also be noted that this step will not attempt to delete the root node of the analysis context target 1709 even if it is empty as an exception. Finally, at step 2709, the ink analysis tool 1901 identifies any conflict between the document independent analysis context target 1901 and the analysis results of the current analysis context target 1709 for the software application 1701. As such, the software application 1701 may include areas of the document 1703 that are affected by conflicts in the next analysis process.

이제 상기 단계 2703 내의 충돌들의 처리로 돌아가서, 일단 문서 독립 분석 콘텍스트 대상(1903) 내의 변경들에 대응하는 분석 콘텍스트 대상(1709) 내의 모든 노드들이 액세스되기만 하면, 분석 콘텍스트 대상(1709) 내의 각각의 노드에 대한 모든 다른 가능한 강제적인 충돌들이 정적으로 삭제될 수 있다(또는 대안으로, 강제적인 충돌의 부재가 각각의 노드에 대해 삭제될 수 있다). 특히, 강제적인 충돌들이 분석 콘텍스트 대상(1709)에 대한 인터페이스에 의해 지정된 규칙들에 기초하여 삭제될 수 있다. Returning to the processing of conflicts in step 2703 now, each node in analysis context object 1709 once all nodes in analysis context object 1709 corresponding to changes in document independent analysis context object 1903 are accessed. All other possible coercive conflicts for C may be statically deleted (or alternatively, the absence of coercive collisions may be deleted for each node). In particular, mandatory conflicts can be deleted based on rules specified by the interface to the 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, if both affect the same node within the analysis context object 1709, the software application (i.e. Based on unconditional choices for friendly changes made by 1701, unconditional conflicts cannot be identified without additional state information about that document 1703. Instead, these conflicts compare the current analysis context object 1709 with the original version of the document independent analysis context object 1901 to determine that nodes within the analysis context object 1709 have been modified by the software application 1701. Can be deleted.

예를 들어, 그 조정 기준은 소프트웨어 애플리케이션(1701)에 의한 부모 노 드로부터의 자식 스트록 노드의 추가 또는 삭제가 그 부모 노드에 대한 무조건적인 충돌임을 정의할 수 있다. 그러한 변경이 발생하는지를 결정하기 위해, 그 잉크 분석 도구(1901)는 현재 분석 콘텍스트 대상(1709) 내의 노드로부터 의존하는 자식 스트록 노드들을 리뷰하고, 그 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 대응하는 노드로부터 의존하는 자식 스트록 노드들에 그들의 수 및 Guid(또는 다른 유일 식별자)를 비교할 수 있다. 자식 스트록 노드들이 이러한 실시예들(및 임의의 다른 원하는 실시예들)에 매칭한다면, 그 잉크 분석 도구(1901)는 분석 콘텍스트 대상(1709) 내의 부모 노드에 그 분석 처리들에 의해 수행된 변경들을 적용할 수 있다. For example, the coordination criteria may define that the addition or deletion of child stroke nodes from the parent node by the software application 1701 is an unconditional collision for that parent node. To determine if such a change occurs, the ink analysis tool 1901 reviews the child stroke nodes that depend from the node within the current analysis context object 1709 and corresponds to the original version of the document independent analysis context object 1903. You can compare their number and Guid (or other unique identifier) to the child stroke nodes that depend from that node. If the child stroke nodes match these embodiments (and any other desired embodiments), the ink analysis tool 1901 can make changes made by the analysis processes to the parent node within the analysis context object 1709. Applicable

이러한 예에 연속하여, 로그 엔트리 내의 그 다음 변경은 문서 독립 분석 콘텍스트 대상(1903) 내의 부모 노드로부터 의존하기 위해 이동되는 또다른 스트록 노드로 이루어 질 수 있다. 이러한 변경들로부터의 어떠한 강제적인 충돌도 없으면, 그 잉크 분석 도구(1901)는 분석 콘텍스트 대상(1709)에 대응하는 변경을 하도록 허용된다. 그러나, 그 잉크 분석 도구(1901)가 무조건적인 충돌이 존재하는지를 결정하기 위해 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전을 점검하는 경우, 이는 현재 분석 콘텍스트 대상(1709) 내의 부모 노드가 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 부모 노드보다 하나 이상의 의존성 스트록 노드를 더 갖는 것으로 결론 내릴 것이며, 그러므로 이는 강제적인 충돌이 존재하는 것으로 잘못 결정할 것이다(즉, 행해진 변경들에 기초하여 충돌이 존재하는 것으로 결정할 것이다). Subsequent to this example, the next change in the log entry may be made with another stroke node that is moved to rely on the parent node in the document independent analysis context object 1903. In the absence of any mandatory collision from these changes, the ink analysis tool 1901 is allowed to make a change corresponding to the analysis context object 1709. However, if the ink analysis tool 1901 checks the first version of the document independent analysis context target 1901 to determine if an unconditional conflict exists, this means that the parent node within the current analysis context target 1709 is analyzed by the document independent. It will be concluded that there are more than one dependency stroke node than the parent node in the original version of the context target 1903, which would therefore incorrectly determine that a mandatory conflict exists (i.e., based on the changes made) Will decide).

따라서, 그 로그-기반의 조정 처리는 문서 독립 분석 콘텍스트 대상(1903)의 현재 버전과 분석 콘텍스트 대상(1709)의 최초 버전 간의 비교로부터의 조정에 의해 행해진 이전의 변경들을 배제해야 한다. 본 발명의 각종 실시예들로서, 이러한 배제(exclusion)는 임의의 리스트 엔트리들을 시험하고 충돌된 노드들의 리스트를 유지하기 전에, 그 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 그들의 대응하는 노드들과 현재 분석 콘텍스트 대상(1709) 내의 모든 노드들을 비교함으로써 행해질 수 있다. Thus, the log-based reconciliation process should exclude previous changes made by the reconciliation from the comparison between the current version of the document independent analysis context object 1901 and the original version of the analysis context object 1709. In various embodiments of the present invention, such exclusion may include any of their corresponding nodes within the original version of the document independent analysis context object 1903 before examining any list entries and maintaining a list of conflicting nodes. This can be done by comparing all nodes in the current analysis context object 1709.

대안으로 또는 부가적으로, 본 발명의 각종 실시예들이 문서 독립 분석 콘텍스트 대상 내의 요소들에 대응하는 현재 분석 콘텍스트 대상(1709) 내의 요소들의 캐쉬(cache)를 대응하는 요소들이 검색될 때마다 사용되는 분석 결과들로 유지할 수 있다. 어떠한 임시적인 전달도 없으나, 그 캐쉬는 대응하는 요소가 무조건적인 충돌들이 없도록 결정된 처음에 파퓰레이팅(populate)된다. 선택적으로, 그 캐쉬는 또한 결과들의 요소들이 무조건적인 충돌들을 가졌던 트랙을 유지할 수 있다. 이러한 접근법은 변경 로그가 짧은 경우 무조건적-충돌-발견-전달(discretionary-collision-finding-pass) 접근법보다 더 나은 성능을 갖지만, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903)이 많은 노드들을 포함한다면 보다 나쁜 성능을 가질 수도 있다. 이는 또한 전혀 다른 접근법보다 복잡하지는 않다. Alternatively or additionally, various embodiments of the present invention may be used whenever an element corresponding to a cache of elements in the current analysis context object 1709 corresponds to elements in the document independent analysis context object. The results of the analysis can be maintained. There is no temporary delivery, but the cache is populated at the beginning when the corresponding element is determined to have unconditional collisions. Optionally, the cache can also keep track of which elements of the results had unconditional collisions. This approach has better performance than the discretionary-collision-finding-pass approach when the change log is short, but if the document independent analysis context target 1903 with analysis results includes many nodes. You may have worse performance. It is also not more complicated than any other approach.

캐쉬 내의 요소들의 부모 콘텍스트 노드들이 또한 캐쉬되어야 함을 유의해야 한다. 특히, 자식 콘텍스트 노드로의 변경은 그 부모 콘텍스트 노드의 속성들로의 변경이 고려될 것이다. 그러므로, 캐쉬 내에 저장된 콘텍스트 노드의 부모 콘텍스 트 노드는 또한 이 순간에 소프트웨어 애플리케이션(1701)에 의해 행해진 변경들에 대해 평가될 필요가 있다. 캐쉬 내의 각각의 콘텍스트 노드에 대한 부모 노드들의 캐슁(caching)은 루트 노드가 전달될 때까지 또는 변경들이 검출될 때까지 그 트리 끝까지(예를 들어, 부모 노드에서 조부모(grandparent) 노드 내지 증조부모(great-grandparent) 노드까지) 반복될 필요가 있다. 그러나, 많은 경우에서, 트리가 통상적으로 매우 깊게 되어있지 안을 것이므로, 이러한 반복은 단지 소수의 노드들만을 반복한다. Note that the parent context nodes of the elements in the cache should also be cached. In particular, a change to a child context node will be considered a change to the attributes of its parent context node. Therefore, the parent context node of the context node stored in the cache also needs to be evaluated for changes made by the software application 1701 at this moment. Caching of the parent nodes for each context node in the cache is done until the root node is delivered or until the changes are detected (eg, from the parent node to the grandparent to great-grandparents). (grandparent) until the node needs to be repeated. However, in many cases, this iteration only repeats a few nodes, since the tree will typically not be very deep.

또한 본 발명의 여러가지 노드들로서, 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전은 무조건적인 충돌들을 검출하는데에만 사용된다. 무조건적인 충돌들의 검출이 본 발명의 예들로서 필수적이지 않다면, 그 문서 독립 분석 콘텍스트 대상(1903) 및 대응하는 요소 캐쉬 둘 모두가 제거될 수 있다. 이러한 "로그-기반의" 접근법은, 무슨 변경들이 분석 처리에 의해 행해졌는지를 결정하는데 보다 적은 검색을 요구하고 문서 독립 분석 콘텍스트(1903)에 대한 동작들이 개별적으로 처리되기 때문에, 이하에 기재되는 "비교-기반의(comparison-based)" 접근법보다는 유지하기 용이할 수 있으며, 그러므로, 새로운 타입의 동작을 추가하는 것은 다른 동작들에 영향을 미치기 쉽지 않다. Also as various nodes of the present invention, the original version of the document independent analysis context object 1903 is only used to detect unconditional conflicts. If detection of unconditional conflicts is not essential as examples of the present invention, both 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 for the document independent analysis context 1903 are handled separately, the " It may be easier to maintain than a "comparison-based" approach, and therefore adding a new type of operation is not easy to affect other operations.

분석 결과들을 문서(1703)의 현재 상태로 조정하기 위한 "로그-기반의" 기술 대신에, 본 발명의 각종 실시예들이 조정을 위한 "비교-기반의" 접근법을 이용할 수 있다. 비교-기반의 접근법의 주요 구분 특징은 문서 독립 분석 콘텍스트 대상(1903)에 대해 행해진 변경들 어떠한 로그도 유지되지 않는다는 것이며, 그래 서 이러한 기술은 그 분석 결과들을 포함하는 문서 독립 분석 콘텍스트 대상을 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전과 비교함으로써 그 분석 처리가 했던 것에 대한 정보를 콜렉팅하지 않는다. 그러므로, 이러한 접근법으로서, 무조건적인 충돌들에 대한 임의의 견식들과는 무관하게 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전이 항상 요구된다. Instead of a "log-based" technique for adjusting the 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 uses document independent analysis context objects containing the analysis results as document independent. It does not collect information about what the analysis process did by comparing it with the original version of the analysis context object 1903. Therefore, with this approach, the first version of document independent analysis context object 1903 is always required, regardless of any knowledge of unconditional conflicts.

이러한 접근법을 사용하여, 잉크 분석 도구(1901)는 우선 스트록 맵을 구축한다. 즉, 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 모든 잉크 리프 노드에 대해, 현재 분석 콘텍스트 대상(1709) 내의 대응하는 노드가 있다면, 그 리프 노드는 해시 테이블(hash table)(또는 다른 적절한 데이터 구조)에 추가된다. 그러므로, 그 해시 테이블은 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 스트록 GUID들(또는 다른 단일 노드 식별자들)을 현재 분석 콘텍스트 대상(1709) 내의 리프 노드 참조들로 매핑한다. Using this approach, the ink analysis tool 1901 first builds a stroke map. That is, for every ink leaf node in the original version of the document independent analysis context object 1903, if there is a corresponding node in the current analysis context object 1709, the leaf node is a hash table (or other appropriate data). Structure). Therefore, the hash table maps the stroke GUIDs (or other single node identifiers) in the original version of the document independent analysis context object 1903 to leaf node references in the current analysis context object 1709.

다음으로, 그 잉크 분석 도구(1901)는 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709)에서 변경하는 모든 노드들을 식별한다. 이것은 앞서 상세하게 기재된 무조건적인 충돌들을 결정하기 위한 기술들을 사용하여 행해진다. 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 각각의 노드에 대해, 현재 분석 콘텍스트 대상(1709) 내에 대응하는 노드가 있으며 그것이 몇가지 중요한 방식에서 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 노드와 다르다면, 그 잉크 분석 도구(1901)는 이 노드가 그 애플리케이션에 의해 변경되고 잠재적인 충돌임을 결정한다. 그러한 노드들에 대한 참조들이 그 분석 콘텍스트 대상(1709)에 추가되어서는 안되는 분석 결과 노드들에 대응하는 제1 리스트(이후 resultsNodesNotToAdd 리스트로서 언급됨) 및 무조건적인 충돌들을 생성하는 노드들의 제2 리스트에 저장된다. Next, the ink analysis tool 1901 identifies all nodes that the software application 1701 changes in the analysis context object 1709. This is done using techniques for determining the unconditional collisions described in detail above. For each node in the original version of the document independent analysis context object 1903, there is a corresponding node within the current analysis context object 1709 and it is in some important way the node in the original version of the document independent analysis context object 1903. If different, the ink analysis tool 1901 determines that this node is modified by the application and is a potential conflict. References to such nodes should be added to the first list corresponding to analysis result nodes that should not be added to the analysis context object 1709 (hereafter referred to as resultsNodesNotToAdd list) and to the second list of nodes generating unconditional conflicts. Stored.

문서 독립 분석 콘텍스트 대상(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 ink analysis tool 1901 is in both the document independent analysis context object 1903 and the current analysis context object 1709 having the analysis results. Find the corresponding nodes. For each node in analysis context object 1709, the ink analysis tool 1901 determines whether the software application 1701 has deleted the node. Such nodes exist in the original version of document independent analysis context object 1903, but there is no corresponding node in analysis context object 1709. The corresponding node in the document independent analysis context object 1903 with the analysis results is added to the resultsNodesNotToAdd list if it exists.

다음으로, 그 잉크 분석 도구(1901)는 그 문서 독립 분석 콘텍스트 대상(1903)으로부터 노드를 삭제했는지 결정한다. 이것은 분석 콘텍스트 대상(1709) 내에 대응하는 노드가 있으며 그것이 변경되지 않았지만, 그 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 내에 대응하는 노드가 없을 때, 검출된다. 분석 처리에 의해 삭제된 노드들이 삭제된 노드들의 리스트에 저장된다. 그러한 노드는 현재 분석 콘텍스트 대상(1709)에 추가되지 않지만, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 내에 어떠한 대응하는 노드도 없기 때문에 그 resultsNodesNotToAdd 리스트에서 없어지지 않는다. Next, the ink analysis tool 1901 determines whether the node has been deleted from the document independent analysis context object 1903. This is detected when there is a corresponding node in analysis context object 1709 and it has not changed, but there is no corresponding node in document independent analysis context object 1903 with its analysis results. Nodes deleted by the analysis process are stored in the list of deleted nodes. Such a node is not currently added to the analysis context object 1709, but is not removed from its resultsNodesNotToAdd list because there is no corresponding node in the document independent analysis context object 1901 with analysis results.

소프트웨어 애플리케이션(1701)이 그 노드를 삭제하지도 않고 변경하지도 않으며, 그 분석 처리가 그 노드를 삭제하지 않는다면, 잉크 분석 도구(1901)는 그 분석 처리가 그 노드를 변경했는지를 결정할 수 있다. 소프트웨어 애플리케이션(1701)에 의해 행해진 변경들을 검출하는데 사용하기 위해 앞서 기재되었던 것과 동일한 기술들이 그 분석 처리에 의해 행해진 변경들을 검출하는데에도 사용될 수 있다. 그 분석 처리에 의해 변경된 노드들이 resultsNodesNotToAdd 리스트에 추가되며, 그 변경들은 분석 콘텍스트 대상(1709) 내의 노드들을 적절한 방법으로 호출함으로써 전파된다. 소프트웨어 애플리케이션(1701)도 분석 처리도 노드를 변경하거나 삭제하지 않았으면, 그 노드에 아무것도 발생하지 않으며, 그 노드가 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903)에 존재하고 그 분석 콘텍스트 대상(1709)에 추가되지 않기 때문에 그 잉크 분석 도구(1901)는 그 노드를 resultsNodesNotToAdd 리스트에 추가한다. If the software application 1701 does not delete or change the node, and the analysis process does not delete the node, the ink analysis tool 1901 can determine whether the analysis process has changed the node. The same techniques as described above for use in detecting changes made by software application 1701 can also be used to detect changes made by the analysis process. Nodes changed by the analysis process are added to the resultsNodesNotToAdd list, and the changes are propagated by invoking the nodes in the analysis context object 1709 in an appropriate manner. If neither the software application 1701 nor the analysis processing node has changed or deleted, then nothing happens to that node, and that node exists in the document independent analysis context target 1901 having the analysis results and that analysis context target 1709. The ink analysis tool 1901 adds the node to the resultsNodesNotToAdd list.

다음으로, 그 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 내의 각각의 노드에 대해, 그 노드가 resultsNodesNotToAdd 리스트에 없으면, 그 잉크 분석 도구(1901)는 그 분석 콘텍스트 대상(1709) 내에 대응하는 노드를 생성함으로써 분석 처리에 의해 그 노드에 임의의 변경들을 전파할 수 있다. 그 분석 결과들 내의 노드들의 탐색(traversal)은 하향식(top-down) 전위(pre-order) 탐색을 이용하여 수행될 수 있으므로, 부모 노드들은 자식 노드들에 앞서 생성되는 것으로 보증된다. Next, for each node in the document independent analysis context object 1901 with the results of the analysis, if the node is not in the resultsNodesNotToAdd list, the ink analysis tool 1901 will correspond to the corresponding node in the analysis context object 1709. It is possible to propagate any changes to that node by the analysis process by generating. The traversal of the nodes in the analysis results can be performed using top-down pre-order search, so that parent nodes are guaranteed to be created before child nodes.

분석 콘텍스트 대상(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 discussed above can then be used to identify source elements for moving the strokes. The ink strokes are not moved if there is no source element (creating a mandatory collision), or if the source element is included in the aforementioned unconditional collision list. To store unnecessary calls to the analysis context object 1709, this ink analysis tool 1901 calls the method to create a child context node if there is no at least one non-colliding stroke source node. Can be avoided. The same stroke source check is also performed at non-ink leaf nodes, so that no node for a line is created if the component words of at least one line will not contain, for example, at least one successfully moved stroke. .

이어서, 다른 정보가 인식 격자와 같은 새롭게 생성된 노드에 또한 적용된다. 일시적인 논리적 불일치성을 초래하는 적용된(즉, 차단되지 않은(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 if any strokes that result in an applied (ie non-blocked) unconditional collision resulting in temporary logical inconsistency cannot be moved. However, because the software application 1701 is notified to reanalyze the blocked area after 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 where the changes are blocked, the inconsistency is inconsistent. It is temporary.

분석 콘텍스트 대상(1709)으로부터 삭제될 각각의 노드에 대해, 그 잉크 분 석 도구(1901) 리스트는 그 노드가 실제로 삭제될 수 있는지를 확인하기 위해 분석 콘텍스트(1709)에 대한 모든 다른 편집들 및 추가들이 수행됨을 점검한다. 삭제되어야 하고 모든 자식 노드들 및 스트록들이 실제로 비어있는 노드들은 분석 콘텍스트 대상(1709)으로부터 삭제된다. 일단 그러한 노드가 삭제되면, 모든 조상 노드들(루트 노드까지 그러나 루트 노드는 포함하지 않음)은 조상이 다른 남아있는 자식들과 마주칠 때까지 연속적으로 삭제된다. For each node to be deleted from the analysis context object 1709, the ink analysis tool 1901 list adds all other edits and additions to the analysis context 1709 to see if the node can actually be deleted. Check that they are performed. Nodes that must be deleted and all child nodes and strokes are actually empty are deleted from the analysis context object 1709. Once such a node is deleted, all ancestor nodes (up to the root node but not the root node) are deleted continuously until the ancestors encounter other remaining children.

마지막으로, 그 잉크 분석 도구(1901)는 그 분석 처리에 의해 분석 콘텍스트 대상(1709)에 대한 변경들을 검출하고 전파하기 위해, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903)과 분석 콘텍스트 대상(1709) 간에 오더링(ordering)하는 노드를 전체적으로 비교한다. 그러나, 이러한 비교는 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전을 무시하고, 그래서 그 소프트웨어 애플리케이션(1701)에 의해 행해진 오더링에 대한 변경들을 검출하는 어떠한 방식도 갖지 않음을 유의해야 한다. 다음으로, 분석 콘텍스트 대상(1709) 내의 대응하는 노드를 갖는 분석 결과들 내의 각각의 콘테이너 노드에 대해, 그 콘테이너 노드들의 자식들의 오더링이 비교된다. 둘 모두의 콘테이너 노드들이 정확하게 동일한 자식들 세트를 갖는다면, 그 분석 결과들의 오더링은 노드가 분석 결과들의 자식 노드와 동일한 GUID(또는 다른 식별자 타입)를 갖지 않는 분석 콘텍스트 대상(1709) 내의 콘테이너의 리스트 내의 동일한 위치에서 발견될 때까지 그 분석 결과들 내의 콘테이너의 자식을 통해 루핑(looping)함으로써 분석 콘텍스트 대상(1709)에 전파된다. 그러한 미스매치가 발견되는 경우, 대응하는 노드는 그 분석 콘텍스트 대상(1709) 내의 자식 리스트에서 또한 발견되어야 한다. 이어서 그 잉크 분석 도구(1901)는 그 노드에 대한 분석 콘텍스트 대상(1709) 내의 자식 리스트의 나머지를 검색하고, 그 분석 콘텍스트(1709) 내의 노드에 대한 명령을 수정하기 위해 자식 노드를 이동시키기 위한 방법을 호출한다. 그 잉크 분석 도구(1901)는 이어서 그 분석 결과들 내의 노드들을 통해 계속해서 루핑한다. Finally, the ink analysis tool 1901 is capable of detecting and propagating changes to the analysis context object 1709 by the analysis process, so that the document independent analysis context object 1903 and analysis context object 1709 having the analysis results. Compare nodes that are ordering between However, it should be noted that this comparison ignores the original version of the document independent analysis context object 1901 and so has no way of detecting changes to the ordering made by the software application 1701. Next, for each container node in the analysis results having a corresponding node in the analysis context object 1709, the ordering of the children of those container nodes is compared. If both container nodes have exactly the same set of children, the ordering of the analysis results is a list of containers in the analysis context object 1709 where the node does not have the same GUID (or other identifier type) as the child node of the analysis results. It is propagated to the analysis context object 1709 by looping through the children of the container in its analysis results until found at the same location within. If such a mismatch is found, then the corresponding node must also be found in the child list within that analysis context object 1709. The ink analysis tool 1901 then retrieves the remainder of the child list in the analysis context target 1709 for that node and moves the child node to modify the command for the node in the analysis context 1709. Call The ink analysis tool 1901 then loops through the nodes in the analysis results.

물론, 동일한 리스트들의 가정은 참을 유지한다. 분석 리스트 또는 소프트웨어 애플리케이션(1701)이 어느 리스트 내의 노드들을 삭제 또는 삽입될 수 있다. "자식 리스트 매퍼(child list mapper)" 대상이 공통으로 유지되는 요소들을 단지 포함하는 "잘려진(pruned)" 리스트들을 제시함으로써, 참을 유지하는 가정을 시뮬레이션하는데 사용된다. 이어서 앞서 기재된 절차는 매핑된 자식 리스트들에서 실행되고, 그 이동들은 리스트 매퍼 대상에 의한 실제 인덱스들 및 호출들로 이동된다. Of course, the assumptions of the same lists remain true. The analysis list or software application 1701 may delete or insert nodes in any list. 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 previously described procedure is then executed on the mapped child lists, and the movements are moved to actual indices and calls by the list mapper object.

그러므로, 앞서 기재된 본 발명의 각종 실시예들에 따른 조정 기술들은 그 문서의 내용들이 분석 처리가 시작된 후에 변경되었다해도 분석 처리의 결과들이 문서 내의 현재 문서 엘리먼트들에 적용되도록 허용한다. 그러므로, 이러한 조정 기술들은 문서 내의 전자 잉크가 그 문서를 호스팅하는 소프트웨어 애플리케이션의 동작으로부터 비동시적으로 분석되도록 허용한다. 또한, 이러한 조정 기술들은 현존하는 독점 록킹 또는 다른 동시성 전략들로 멀티스레딩된 소프트웨어 애플리케이션들을 포함하는, 여러가지 다른 소프트웨어 애플리케이션들에 의해 이용될 수 있다. Therefore, the adjustment techniques in accordance with various embodiments of the present invention described above allow the results of the analysis process to be applied to current document elements in the document even if the contents of the document have changed after the analysis process has begun. Therefore, these adjustment techniques allow the electronic ink in the document to be analyzed asynchronously from the operation of the software application hosting the document. Such coordination techniques may also be used by a variety of other software applications, including software applications multithreaded with existing proprietary locking or other concurrency strategies.

<이벤트 구동 시스템><Event Drive System>

앞서 논의된 바와 같이, 본 발명의 각종 실시예들이 문서 독립 분석 콘텍스트 대상을 카피함으로써 문서 상태의 "스냅사진"(snapshot)을 생성하며, 이어서 그 문서를 호스팅하는 소프트웨어 애플리케이션이 동작을 계속하면서, 그 문서 독립 분석 콘텍스트 대상을 비동시적으로 분석한다. 대안으로, 본 발명의 각종 실시예들이 비동시성 잉크 분석에 대한 문서 독립 분석 콘텍스트 대상의 사용에 선행할 수 있다. 대신에, 이러한 본 발명의 예들은 문서에 대한 모든 잉크 및 의미론 데이터를 저장하기 위해 확인된 구성요소를 사용할 수 있다. 특히, 본 발명의 이러한 예들은 문서: 스트록들을 추가, 삭제 또는 변경하는 것과 같은 잉크 이벤트들; 및 스트록들을 단어들로 그룹화하거나, 의미론 노드들을 추가하거나, 텍스트 인식 결과들을 스트록들에 연관시키는 것과 같은 구조 이벤트들에 대해 행해질 수 있는 두가지 타입의 변경들을 인식한다. 모든 이벤트는 외부 청취자에게 그 이벤트를 완벽하게 기재하는데 필요한 모든 데이터를 포함한다. 예를 들어, "스트록 추가" 이벤트가 모든 스트록 데이터를 포함할 것이다. 이러한 "풍부한" 이벤트들로서, 청취자가 그들이 수신된 명령에 이벤트들을 적용시킴으로써 잉크 대상의 정확한 복제를 유지할 수 있다. As discussed above, various embodiments of the present invention create a "snapshot" of the document state by copying a document independent analysis context object, while the software application hosting the document continues to operate, Independent Analysis of Documents Analyzes 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 the identified component to store all the ink and semantic data for the document. In particular, these examples of the invention 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 to the command they received.

도 28은 본 발명의 각종 실시예들에 따라 어떻게 이러한 배치가 사용될 수 있는지의 한가지 예를 도시한다. 이 도면에 도시된 바와 같이, 애플리케이션(2801)이 잉크 분석 도구(2803)를 이용한다. 그 잉크 분석 도구(2803)는 그 애플리케이션(2801)에 대해 잉크 데이터 및 (예를 들어, 트리 구조와 같은) 문서 구조(2807)를 유지한다. 그 애플리케이션은 또한 이벤트 큐(event queue)(2809), 파서 처리(2811) 및 인식 처리(2817)를 이용한다. 그 파서 처리(2811)는 잉크 데이터(2805)의 클론(clone) 및 문서 구조(2807)의 클론(2815)을 유지한다. 유사하게, 그 인식 처리(2817)는 잉크 데이터(2805)의 클론(2819) 및 문서 구조(2807)의 클론(2821)을 유지한다. Figure 28 illustrates one example of how this arrangement may be used in accordance with various embodiments of the present invention. As shown in this figure, the application 2801 uses the ink analysis tool 2803. The ink analysis tool 2803 maintains ink data and document structure 2807 (such as, for example, a tree structure) for the application 2801. The application also utilizes an event queue 2809, parser processing 2811 and recognition processing 2817. The parser processing 2811 holds a clone of the ink data 2805 and a clone 2815 of the document structure 2807. Similarly, the recognition process 2817 holds a clone 2819 of the ink data 2805 and a clone 2821 of the document structure 2807.

그 애플리케이션이 잉크 데이터를 생성하는 경우, 방법(2823)을 통해 잉크 분석 도구(2803)에 잉크 데이터를 제공한다. 응답하여, 그 잉크 분석 도구(2803)는 잉크 데이터에서의 변경에 대응하는 이벤트를 생성하고, 모든 이벤트에 태그를 추가하고, 특정 태그들을 갖는 이벤트들에 따르는 구성요소들로서 그 원하는 분석 처리를 정의한다. 예를 들어, 모든 사용자는 태그 "UserChange"로 표시될 수 있고 이 태그를 갖는 이벤트(2825)가 변경에 응답하여 동시적으로 그 이벤트 큐(2809)로 보내진다. 미래의 일부 시점에서, 그 파서 처리(2811) 및 인식 처리(2817)는 이벤트 큐(2809)로부터 태그된 이벤트를 검색할 것이다. If the application generates ink data, it provides ink data to the ink analysis tool 2803 via method 2823. In response, the ink analysis tool 2803 generates an event corresponding to a change in the ink data, adds a tag to all events, and defines its desired analysis process as components that follow the events with specific tags. . For example, all users may be marked with the tag "UserChange" and an event 2825 with this tag is sent to its event queue 2809 simultaneously in response to the change. At some point in the future, the parser process 2811 and recognition process 2817 will retrieve the tagged event from the event queue 2809.

이어서 제1 분석 처리(예를 들어, 파싱 처리(2811))가 그 잉크 분석 처리(2803)에 의해 발행된 모든 이벤트들에 따르고, 태그 UserChange를 갖는 그들에 응답할 것이다. 이어서 제1 분석 처리는 잉크 데이터(2813) 및 문서 구조(2815)의 내부 카피에 그 이벤트로 지정된 변경들을 적용하고, 그 이벤트에 기재된 데이터를 분석하고, 이어서 태그 "Parser1Change"로 그 변경들에 의해 생성된 이벤트들(2827)을 생성하고 태그할 것이다. 이러한 이벤트들(2827)은 이벤트 큐(2809)로 돌아가 잉크 분석 도구(2803)에 의해 중계될 것이다. 이어서 제2 분석 처리(예를 들어, 핸드라이팅 인식 처리(2817)가 Parser1Change 태그로 태그된 이벤트들에 따를 것이다. 응답하여, 이는 잉크 데이터(2819) 및 문서 구조(2821)의 내부 카피에 그 이벤트에 의해 지정된 변화들을 적용하고, 응답하여 그 이벤트들에 기재된 데이터를 분석할 것이다. 이어서 제2 분석기는 태그 "HandwritingRecognitionChange"를 갖는 분석 결과들로 이벤트(2829)를 생성하고 태그할 것이다. 그 잉크 분석 도구(2803)가 파서 처리(2811) 및 인식 처리(2817)로부터 이벤트들을 수신하면, 이벤트들(2831)을 문서 구조(2807)에서의 변경을 나타내기 위해 애플리케이션(2801)으로 보낸다. The first analysis process (eg, parsing process 2811) will then follow all the events issued by that ink analysis process 2803 and respond to them 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 document structure 2815, analyzes the data described in the event, and then by those changes with the tag "Parser1Change". Generated events 2827 will be generated and tagged. These events 2827 will return to the event queue 2809 and be relayed by the ink analysis tool 2803. The second analysis process (e.g., handwriting recognition process 2817) will then follow the events tagged with the Parser1Change tag. In response, this event is included in an internal copy of the ink data 2819 and the document structure 2821. Apply the changes specified by and respond to the data described in those events The second analyzer will then generate and tag event 2829 with analysis results with the tag "HandwritingRecognitionChange". When tool 2803 receives events from parser processing 2811 and recognition processing 2817, it sends events 2831 to application 2801 to indicate a change in document structure 2807.

본 발명의 이러한 실시예들은 또한 하나 이상의 이벤트를 갖는 이벤트들에 따름으로써 각각의 분석 처리를 지원하고, 내부 처리에 기초하여 다른 태그들을 갖는 변경들로부터 그 이벤트들을 태그할 수 있다. 따라서, 본 발명의 이러한 대안의 구현들이 또한 그 문서를 호스팅하는 소프트웨어 애플리케이션의 동작으로부터 비동시적인 문서 내에서의 전자 잉크의 분석을 고려할 수 있다. 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 a 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 (18)

전자 잉크를 분석하는 방법으로서,As a method of analyzing electronic ink, 제1 처리 스레드 상에서 실행되는 소프트웨어 애플리케이션으로부터 전자 잉크 콘텐트를 포함하는 문서에 대한 문서 데이터를 수신하는 단계;Receiving document data for a document containing electronic ink content from a software application running on a first processing thread; 제2 처리 스레드 상에서의 분석을 위한 전자 잉크 분석 프로세스로 상기 문서 데이터를 제공하도록 상기 제1 처리 스레드를 채용하는 단계;Employing the first processing thread to provide the document data to an electronic ink analysis process for analysis on a second processing thread; 상기 소프트웨어 애플리케이션으로 상기 제1 처리 스레드의 제어를 복귀시키는 단계;Returning control of the first processing thread to the software application; 상기 분석 프로세스의 결과를 수신하는 단계; 및Receiving a result of the analysis process; And 상기 문서에 대한 현재의 문서 데이터로 상기 분석 프로세스의 상기 결과를 조정하는 단계Adjusting the results of the analysis process with current document data for the document 를 포함하는 방법.How to include. 제1항에 있어서, The method of claim 1, 상기 제1 처리 스레드 상에서 실행되는 상기 소프트웨어 애플리케이션으로부터 상기 조정된 분석 결과를 수신하는 단계;Receiving the adjusted analysis result from the software application running on the first processing thread; 상기 조정된 분석 결과를 제3 처리 스레드 상에서의 분석을 위한 제2 전자 잉크 분석 프로세스로 제공하도록 상기 제1 처리 스레드를 채용하는 단계;Employing the first processing thread to provide the adjusted analysis results to a second electronic ink analysis process for analysis on a third processing thread; 상기 소프트웨어 애플리케이션으로 상기 제1 처리 스레드의 제어를 복귀시키 는 단계;Returning control of the first processing thread to the software application; 상기 제2 분석 프로세스의 결과를 수신하는 단계; 및Receiving a result of the second analysis process; And 상기 문서에 대한 현재의 문서 데이터로 상기 제2 분석 프로세스의 상기 결과를 조정하는 단계Adjusting the result of the second analysis process with current document data for the document 를 더 포함하는 방법.How to include more. 제2항에 있어서,The method of claim 2, 상기 제1 분석 프로세스는 전자 잉크 레이아웃 및 분류 분석 프로세스이고, 상기 제2 분석 프로세스는 인식 프로세스인 방법.Wherein the first analysis process is an electronic ink layout and classification analysis process and the second analysis process is a recognition process. 제2항에 있어서,The method of claim 2, 상기 제3 처리 스레드는 상기 제2 처리 스레드와 동일한 방법.The third processing thread is the same as the second processing thread. 제2항에 있어서,The method of claim 2, 상기 제1 처리 스레드 상에서 실행되는 상기 소프트웨어 애플리케이션으로부터 상기 조정된 제2 분석 결과를 수신하는 단계;Receiving the adjusted second analysis result from the software application running on the first processing thread; 상기 조정된 제2 분석 결과를 제4 처리 스레드 상에서의 분석을 위한 제3 전자 잉크 분석 프로세스로 제공하도록 상기 제1 처리 스레드를 채용하는 단계;Employing the first processing thread to provide the adjusted second analysis result to a third electronic ink analysis process for analysis on a fourth processing thread; 상기 소프트웨어 애플리케이션으로 상기 제1 처리 스레드의 제어를 복귀시키는 단계;Returning control of the first processing thread to the software application; 상기 제3 분석 프로세스의 결과를 수신하는 단계; 및Receiving a result of the third analysis process; And 상기 문서에 대한 현재의 문서 데이터로 상기 제3 분석 프로세스의 상기 결과를 조정하는 단계Adjusting the result of the third analysis process with current document data for the document 를 더 포함하는 방법.How to include more. 제2항에 있어서,The method of claim 2, 상기 제2 분석 프로세스는 제1 언어이도록 지정된 전자 잉크 데이터를 인식하기 위한 제1 스테이지 및 제2 언어이도록 지정된 전자 잉크 데이터를 인식하기 위한 제2 스테이지를 구비하는 인식 프로세스인 방법.And said second analysis process is a recognition process having a first stage for recognizing electronic ink data designated to be a first language and a second stage for recognizing electronic ink data designated to be a second language. 제1항에 있어서,The method of claim 1, 상기 문서 데이터는 상기 문서의 잉크 콘텐트 및 비-잉크 콘텐트를 포함하는 방법.The document data includes ink content and non-ink content of the document. 제7항에 있어서, The method of claim 7, wherein 적어도 상기 전자 잉크 콘텐트의 일부는 상기 비-잉크 콘텐트에 주석을 다는 방법.At least a portion of the electronic ink content annotates the non-ink content. 제1항에 있어서,The method of claim 1, 상기 소프트웨어 애플리케이션으로부터 수신된 상기 문서 데이터에 대한 데 이터 구조를 생성하는 단계; 및Generating a data structure for the document data received from the software application; And 상기 제1 분석 프로세스로 상기 데이터 구조를 제공하는 단계Providing the data structure to the first analysis process 를 더 포함하는 방법.How to include more. 제9항에 있어서,The method of claim 9, 상기 문서의 현재 상태를 유지할 때 사용하기 위하여 상기 소프트웨어 애플리케이션으로 상기 데이터 구조를 제공하는 단계를 더 포함하는 방법.Providing the data structure to the software application for use in maintaining the current state of the document. 제1항에 따른 방법을 수행하기 위한 컴퓨터 실행 가능 명령문들을 포함하는 컴퓨터 판독 가능 매체.A computer readable medium comprising computer executable instructions for performing a method according to claim 1. 전자 잉크의 분석을 위한 소프트웨어 운영 환경으로서,As a software operating environment for the analysis of electronic ink, 전자 잉크 데이터를 포함하는 문서 데이터를 포함하는 문서를 유지하기 위한 소프트웨어 애플리케이션;A software application for maintaining a document including document data including electronic ink data; 전자 잉크의 분석을 위한 잉크 분석 프로세스; 및An ink analysis process for analysis of electronic ink; And 잉크 분석 툴로서, 상기 소프트웨어 애플리케이션으로부터 전자 잉크 데이터를 포함하는 상기 문서 데이터를 수신하고, 분석을 위해 상기 전자 잉크 분석 프로세스로 상기 문서 데이터를 제공하며, 상기 소프트웨어 애플리케이션으로 상기 분석 프로세스에 의해 생성된 결과를 복귀시키는 잉크 분석 툴An ink analysis tool, comprising: receiving the document data comprising electronic ink data from the software application, providing the document data to the electronic ink analysis process for analysis, and generating the result by the analysis process to the software application Ink analysis tool 을 포함하는 소프트웨어 운영 환경.Software operating environment comprising a. 제12항에 있어서, The method of claim 12, 상기 소프트웨어 애플리케이션은 제1 처리 스레드 상에서 동작하고,The software application runs on a first processing thread, 상기 소프트웨어 애플리케이션이 상기 분석 프로세스가 상기 문서 데이터 내의 상기 전자 잉크를 분석하는 동안 계속 동작하도록, 상기 분석 프로세스가 상기 제1 스레드와 다른 제2 스레드 상에서 동작하는 소프트웨어 운영 환경.And the analysis process operates on a second thread different from the first thread such that the software application continues to operate while the analysis process analyzes the electronic ink in the document data. 제13항에 있어서,The method of claim 13, 상기 잉크 분석 툴이 상기 문서에 대한 현재의 문서 데이터로 상기 분석 프로세스에 의해 생성된 상기 결과를 조정하는 소프트웨어 운영 환경.And the ink analysis tool adjusts the results produced by the analysis process with current document data for the document. 제1항에 있어서,The method of claim 1, 전자 잉크를 분석하는 제2 분석 프로세스를 더 포함하고,A second analysis process for analyzing the electronic ink, 상기 잉크 분석 툴이 분석을 위해 상기 제2 분석 프로세스로 상기 제1 분석 프로세스에 의해 생성된 상기 결과를 제공하며,The ink analysis tool provides the results generated by the first analysis process to the second analysis process for analysis, 상기 소프트웨어 애플리케이션으로 상기 제2 분석 프로세스에 의해 생성된 결과를 복귀시키는 소프트웨어 운영 환경.A software operating environment for returning a result produced by the second analysis process to the software application. 제15항에 있어서,The method of claim 15, 상기 잉크 분석 툴이 상기 문서에 대한 현재의 문서 데이터로 상기 제1 분석 프로세스에 의해 생성된 상기 결과를 조정하고,The ink analysis tool adjusts the result generated by the first analysis process with current document data for the document, 분석을 위해 상기 제2 분석 프로세스로 상기 제1 분석 프로세스에 의해 생성된 상기 조정된 결과를 제공하는 소프트웨어 운영 환경.A software operating environment for providing the adjusted results generated by the first analysis process to the second analysis process for analysis. 제16항에 있어서,The method of claim 16, 상기 잉크 분석 툴이 상기 문서에 대한 현재의 문서 데이터로 상기 제2 분석 프로세스에 의해 생성된 상기 결과를 조정하는 소프트웨어 운영 환경.And the ink analysis tool adjusts the results generated by the second analysis process with current document data for the document. 제15항에 있어서,The method of claim 15, 상기 잉크 분석 툴이 상기 문서에 대한 현재의 문서 데이터로 상기 제2 분석 프로세스에 의해 생성된 상기 결과를 조정하는 소프트웨어 운영 환경.And the ink analysis tool adjusts the results generated by the second analysis process with current document data for the document.
KR1020047010387A 2004-06-30 2003-08-21 Electronic ink processing KR20070010094A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020047010387A KR20070010094A (en) 2004-06-30 2003-08-21 Electronic ink processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020047010387A KR20070010094A (en) 2004-06-30 2003-08-21 Electronic ink processing

Publications (1)

Publication Number Publication Date
KR20070010094A true KR20070010094A (en) 2007-01-22

Family

ID=38011432

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047010387A KR20070010094A (en) 2004-06-30 2003-08-21 Electronic ink processing

Country Status (1)

Country Link
KR (1) KR20070010094A (en)

Similar Documents

Publication Publication Date Title
KR100989011B1 (en) Electronic ink processing
US7533338B2 (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
JP5162622B2 (en) Electronic ink processing
KR101045444B1 (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
E601 Decision to refuse application