KR20070010094A - Electronic ink processing - Google Patents
Electronic ink processing Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/768—Arrangements 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
Description
본 발명은 전자 잉크의 처리에 관한 것이다. 특히 본 발명의 각종 실시예들은 전자 잉크의 레이아웃 분석, 분류, 및 인식을 포함하는 전자 잉크의 분석에 적용가능하다. 본 발명의 부가적인 실시예들은 예를 들어, 전자 잉크 문서에 풍부하고 다루기 쉬운 주석들을 제공할 시, 레이아웃 분석되고, 분류되고, 인식된 전자 잉크의 사용에 관한 것이다. 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,
기본 입/출력 시스템(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
하드디스크 드라이브(170), 자기 디스크(190), ROM(140), 또는 RAM(150)에 저장될 수 있는 많은 프로그램 모듈들은 운영 체제(195), 하나 이상의 응용 프로그램(196), 다른 프로그램 모듈(197) 및 프로그램 데이터(198)를 포함한다. 사용자는 키보드(101) 및 (마우스와 같은) 포인팅 디바이스(102)와 같은 입력 디바이스들을 통해 컴퓨터(100) 내에 명령들 및 정보를 입력할 수 있다. 다른 입력 디바이스들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 인공위성 접시(satellite dish), 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 종종 시스템 버스(130)에 접속된 직렬 포트 인터페이스(106)를 통해 처리 유닛(110)에 접속되지만, 이들은 또한 병렬 포트, 게임 포트, 또는 범용 직렬 버스(USB) 등과 같은 다른 인터페이스들에 의해 접속될 수 있다. 또한, 이 디바이스들은 적절한 인터페이스(도시되지 않음)를 통해 시스템 버스(130)에 직접적으로 결합될 수 있다. Many program modules that may be stored on
모니터(107) 또는 다른 타입의 디스플레이 디바이스는 또한 비디오 어댑터(108)와 같은 인터페이스를 통해 시스템 버스(130)에 접속될 수 있다. 모니터(107)에 부가하여, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터와 같은 다른 주변 출력 디바이스(도시되지 않음)를 포함한다. 일례로, 수서 입력(freehand input)을 디지털로 캡쳐하기 위해 펜 디지타이저(pen digitizer)(165) 및 수반된 펜 또는 스타일러스(166)가 제공된다. 펜 디지타이저(165)와 직렬 포트 인터페이스(106) 간의 접속이 도 1에 도시되었을지라도, 실제로 그 펜 디지타이저(165)는 처리 유닛(110)에 직접적으로 결합될 수 있으며, 또는 본 기술분야에 공지되어 있는 바와 같이 병렬 포트 또는 또다른 인터페이스 및 시스템 버스(130)와 같은 임의의 적절한 방법으로 처리 유닛(110)에 결합될 수 있다. 더구나, 디지타이저(165)가 도 1에서 모니터(107)로부터 분리된 것으로 도시되어 있을지라도, 디지타이저(165)의 사용가능 입력 영역은 모니터(107)의 디스플레이 영역과 동일한 영역이 될 수 있다. 또한, 디지타이저(165)는 모니터(107)에 통합될 수 있으며, 아니면 겹치는 분리 디바이스로서 존재할 수 있으며, 그렇지 않으면 모니터(107)에 부가된다. The
컴퓨터(100)는 원격 컴퓨터(109)와 같은 하나 이상의 원격 컴퓨터들로의 논리적 접속들을 사용하는 네트워크 환경에서 동작할 수 있다. 그 원격 컴퓨터(109)는 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device) 또는 다른 통상의 네트워크 노드가 될 수 있으며, 간단성을 위해 단지 메모리 저장 디바이스(111)만이 도 1에 도시되었을지라도, 이는 통상적으로 컴퓨터(100)에 대한 앞서 기재된 많은 또는 모든 엘리먼트들을 포함한다. 도 1에 도시된 논리적 접속들은 근거리 네트워크(LAN)(112) 및 광역 네트워크(WAN)(113)를 포함한다. 그러한 네트워킹 환경은 유선 및 무선 접속들 둘 모두를 사용하는 사무실, 대규모 광 컴퓨터 네트워크, 인트라넷 및 인터넷에 평범한 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 그 컴퓨터(100)는 네트워크 인터페이 스 또는 어댑터(114)를 통해 근거리 네트워크(112)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 그 퍼스널 컴퓨터(100)는 통상적으로 인터넷과 같은 광역 네트워크(113)를 통해 통신 링크를 설정하기 위한 모뎀(115) 또는 다른 수단을 포함한다. 컴퓨터(100) 내부 또는 외부에 있을 수 있는 그 모뎀(115)은 직렬 포트 인터페이스(106)를 통해 시스템 버스(130)에 접속될 수 있다. 네트워크 환경에서, 퍼스널 컴퓨터(100) 또는 그 부분들에 대해 도시된 프로그램 모듈들은 원격 메모리 저장 디바이스에 저장될 수 있다. When used in a LAN networking environment, the
도시된 네트워크 접속들은 예들이며, 컴퓨터들간의 통신 링크를 설정하기 위한 다른 기술들이 사용될 수 있음을 이해해야 한다. TCP/IP, 이더넷, FTP, HTTP, UDP 등과 같은 여러가지 잘 알려진 프로토콜들 중 임의의 프로토콜이 존재하는 것으로 추정되고, 그 시스템은 사용자가 웹-기반 서버로부터 웹 페이지를 검색하도록 허용하기 위해 사용자-서버 구성에서 동작될 수 있다. 다양한 종래의 웹 브라우저들 중 임의의 브라우저가 웹 페이지들 상의 데이터를 디스플레이하고 조작하는데 사용될 수 있다. It is to be understood that the network connections shown are examples and that other techniques for establishing a communication link between 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
스타일러스(204)는 그 성능을 개선시키기 위해 버튼들 또는 다른 특징들이 구비될 수 있다. 일례로, 스타일러스(204)는 "연필(pencil)" 또는 "펜"으로 구현될 수 있고, 한쪽 끝은 기록 부분을 구성하고 다른 끝은 디스플레이를 위해 움직일 때, 지워져야할 디스플레이 상의 전자 잉크 부분들을 표시하는 "지우개" 부분을 구성한다. 마우스, 트랙볼, 키보드 등과 같은 입력 디바이스들의 다른 부분들이 또한 사용될 수 있다. 부가적으로, 사용자 자신의 손가락이 접촉식 또는 근접식(proximity-sensitive) 디스플레이 상에 디스플레이된 이미지의 부분들을 선 택하거나 표시하는데 사용될 수 있다. 결과적으로, 본 명세서에 사용된 용어 "사용자 입력 디바이스"는 넓은 정의를 갖는 것으로 의도되며, 잘 알려진 입력 디바이스들의 많은 변동까지 포함한다. The
다양한 예들에서, 그 시스템은 응용 프로그램이 잉크를 캡쳐하고, 조작하고, 저장하는데 사용할 수 있는 잉크 플랫폼(ink platform)을 COM(구성요소 대상 모델) 서비스의 세트로서 제공한다. 그 잉크 플랫폼은 또한 확장성 마크업 랭귀지(XML)와 같은 랭귀지를 포함하는 마크업 랭귀지를 포함할 수 있다. 또한, 그 시스템은 DCOM을 또다른 구현으로 사용할 수 있다. 또한, 마이크로소프트 코포레이션(Microsoft Corporation)으로부터의 Win32 프로그래밍 모델 및 Net 프로그래밍 모델을 포함하는 구현들이 사용될 수 있다. 이러한 플랫폼들은 상업적으로 이용가능하며 본 기술분야에 공지되어 있다. In various examples, the system provides an ink platform as a set of 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
이 예에서, 사용자가 주석을 입력한 후에, 그 응용 프로그램은 새로 입력된 전자 잉크 데이터의 파서(310)를 호출하고 파싱을 요청할 것이다(앞서 언급된 바와 같이, "파싱"은 예를 들어, 다른 분석 처리들뿐만 아니라 여러가지 잉크 타입들(예를 들어, 그림, 텍스트, 플로우차트, 음악 등)로의 전자 잉크의 분류 및/또는 (예를 들어, 잉크 스트록들 간의 공간적 및 위치적 관계들을 확인하고 그들을 적절한 그룹들로 그룹화하는) 잉크 레이아웃 분석을 포함할 수 있다). 특히, 응용 프로그램은 그 입력된 전자 잉크 데이터를 미분류 잉크 데이터로서 파서(310)로 보낼 것이다. 이는 도 3에 입력 화살표(312)로 도시된다. In this example, after the user enters the annotation, the application will call the
선택적으로, 그 응용 프로그램은 기초의 전자 문서(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
그 파서(310)는 그 입력된 전자 문서 데이터(314) 및 입력된 미분류 잉크 데이터(312)를 취하고, 새로운 전자 잉크 데이터를 잉크 타입으로 분류하기 위해 그 정보를 사용한다. 그 잉크는 본 발명으로부터 벗어나지 않는 여러가지 다른 잉크 타입들로 분류될 수 있으며, 여러가지 예들의 가능한 잉크 타입들이 이하에 보다 상세하게 기재된다. 기초의 문서(300)에 포함된 입력 잉크(306) 및 정보(302)에 기초한 본 예에 대해서, 본 발명의 이러한 예에 따른 파서(310)는 입력 잉크(306)을 주석 또는 보다 특히 특정의 타이프라이팅된 텍스트를 포함하는 콘테이너 주석(예를 들어 써클)에 대응하는 잉크 그림으로서 결정하고 분류할 수 있다. 물론, 중요표시 주석들, "~로 강조" 주석들, "~로부터 강조" 주석들, (예를 들어, ~로 강조 또는 ~로부터 강조가 없는 앵커 주석들, 수평 범위(horizontal span), 수직 범위(vertical span) 등과 같은 다른 주석 타입들은 또한 가능하며, 여러가지 예들 이 이하에 보다 상세하게 설명될 수 있다. The
일단 파싱되면, 그 주석(306)과 연관된 데이터는 전자 문서(300)와 연관된 "문서 트리"의 계층적 데이터 구조(또는 임의의 다른 적절한 또는 원하는 데이터 구조)로 통합될 수 있으며, 그 데이터 구조(또는 응용 프로그램에 의해 유지된 현존하는 데이터 구조를 변경하기 위한 명령들)는 도 3에 화살표(316)로 도시된 바와 같이 그 응용 프로그램에 리턴될 수 있다. 원하면, 다른 데이터가 또한 본 발명으로부터 벗어나지 않고 파서(310)에서 응용 프로그램으로 리턴될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 포함된 파서(310)의 동작이 하나 이상의 인식기 모듈들, 구성요소들 및/또는 프로그램들에 호출한다면, (핸드라이팅 인식기 또는 다른 인식기와 같은) 인식 분석 처리의 결과와 연관된 데이터가 응용 프로그램으로 리턴될 수 있다. Once parsed, the data associated with the
도 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
도 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”
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
일단 미분류 잉크가 분류기, 레이아웃 분석기, 인식기 및/또는 또다른 파싱 시스템으로 보내지기만 하면, 그 잉크의 적어도 일부는 함께 연관될 수 있거나 및/또는 여러가지 다른 타입들로 분류될 수 있으며, 그 잉크에 연관된 데이터 구조는 그것이 분류되었던 여러가지 결합들 및 타입들에 대응하도록 변화될 수 있다. 도 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
입력 전자 잉크 스트록들에 대응하는 다른 데이터 타입들 및 데이터 구조 배치들이 본 발명으로부터 벗어나지 않고 가능하다. 예를 들어, 분류하는 것, 레이아웃 분석, 또는 인식기 기술이 입력 전자 잉크가 잉크 그림을 형성함을 결정할 수 있다. 도 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
도 6d는 하나 이상의 잉크 그림들을 포함하는 전자 문서들에 대한 대안의 데이터 구조(630a)를 도시한다. 본 예에서, 전자 문서 또는 페이지 또는 데이터의 다른 그룹(루트 노드 632a로 표시됨)은 함께 연관되어 도 6c에 관련하여 기재된 계층적 방식으로 저장된 그들의 데이터를 갖는 전자 잉크 그림들의 하나 이상의 그룹들(노드 634a로 표시됨)을 포함할 수 있다(예를 들어, 전체 전자 문서(루트 노드 632a로 표시됨)는 몇몇 개별 페이지들(그룹 노드 634a로 각각 표시됨)을 포함할 수 있고, 각각의 개별 페이지는 하나 이상의 개별 잉크 그림들(잉크 그림 노드 636a로 각각 표시됨)을 가질 수 있고, 각각의 개별 잉크 그림은 하나 이상의 개별 잉크 스트록들(스트록 노드 638a로 또는 잉크 그림 노드의 속성으로 각각 표시됨)을 포함할 수 있다). 두 개의 그룹들 및 잉크 그림들이 동일한 루트 노드 또는 임의의 그룹 노드의 자식들이 될 수 있음을 이해해야 한다. 또한, 필요에 따라 하나의 그룹 노드가 추가의 그룹 노드를 포함할 수도 있다. 물론, 전자 잉크 그림들을 저장하기 위한 또다른 적절한 데이터 구조들이 본 발명으로부터 벗어나지 않고 사용될 수 있다. 6D shows an
그러나, 계층적 데이터 구조들은 입력 전자 잉크 데이터로 사용하는 것으로 제한되는 것은 아니다. (예를 들어, 키보드로부터) 입력 타이프라이팅된 텍스트는 또한 여러가지 그룹들로 연관되어 계층적 데이터 구조로 저장될 수 있다. 도 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
도 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
다른 전자 데이터는 또한 본 발명으로부터 벗어나지 않고 (계층적 데이터 구조를 포함하는) 전자 문서의 데이터 구조에 포함될 수 있다. 예를 들어, (디지털 포토, 그래픽 정보 등과 같은) 이미지 데이터는 예를 들어, 도 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
도 6i는 본 발명의 적어도 몇가지 예들에 사용될 수 있는 또다른 예시적인 데이터 구조(710)을 도시한다. 이러한 예시적인 데이터 구조(710)는 테이블로서 분석되고, 함께 연관되고, 그룹화되고, 저장된 전자 데이터에 대응한다. 이 도시된 예에서, 각각의 전자 문서 또는 그 부분(루트 노드(712)로 표시됨)은 하나 이상의 테이블들(테이블 노드(714)로 표시됨)을 포함할 수 있다. 본 예에서, 테이블은 하나 이상의 정보 행들(행 노드(716)로 표시됨)로 구성될 수 있고, 모든 행은 하나 이상의 개별 셀들(셀 노드(718)로 표시됨)로 구성될 수 있다. 그 개별 셀들은 예를 들어, 앞서 기재된 여러가지 다른 데이터 구조들 중 임의의 구조를 포함하는 하나 이상의 데이터 구조를 포함할 수 있다. 도시된 예에서, 그 개별 테이블 셀들은 임의의 수의 이미지들(이미지 노드(720)로 표시됨), 임의의 수의 타이프라이팅된 텍스트 단락들(노드 체인(722)으로 표시됨), 임의의 수의 그룹들(노드 체인(724)으로 표시됨), 임의의 수의 부가적인 테이블들(노드 체인(728)으로 표시됨) 및 임의의 수의 리스트들(노드 체인(730)으로 표시됨)을 잠재적으로 포함하는 것으로 도시된다. 물론, 앞서 기재된 여러가지 특정 데이터 구조들 및/또는 예를 들어, 앞서 기재된 것들과 같은 데이터 구조들의 조합들 및 부분들을 포함하는 임의의 다른 적절한 또는 원하는 데이터 구조들이 본 발명으로부터 벗어나지 않는 테이블에 포함될 수 있다. 6I illustrates another
임의의 적절한 또는 원하는 데이터가 앞서 기재된 여러가지 데이터의 타입들을 포함하는 여러가지 다른 노드들에 저장될 수 있다. 주석들에 관한 데이터를 처리하는 사용을 위해, 그 전자 문서 내의 노드의 공간적 위치, 방향 또는 위치에 관 한 데이터를 저장하기 위해 여러가지 노드들에 대한 본 발명의 적어도 몇가지 예들에 유용할 수 있으며, 선택적으로 이러한 공간적 정보는 전자 문서 데이터 구조 내의 다른 노드들에 관련하거나 또는 그와 링크한다. Any suitable or desired data may be stored at various other nodes, including the various types of data described above. For use in processing data relating to annotations, it may be useful in at least some examples of the invention for various nodes to store data about the spatial position, orientation, or position of a node in the electronic document, optional This spatial information in turn relates to or links with other nodes in the electronic document data structure.
또한, 다른 타입들의 파서들, 분류기들 및/또는 인식기 및 데이터 타입들이 본 발명으로부터 벗어나지 않고 사용될 수 있다. 예를 들어, 인식기들은 본 발명으로부터 벗어나지 않고, 전기 또는 전자 심볼들(예를 들어, 저항기, 전압원, 캐패시터 등); 음악 심볼들; 수학적 심볼들; 플로우차트 엘리먼트들; 파이 차트 엘리먼트들(pie chart elements) 등을 분석하고, 인식하고, 그룹화하고, 및/또는 연관시키는데 사용될 수 있다. In addition, other types of parsers, classifiers and / or recognizers and data types may be used without departing from the 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
부가적으로, 개별 단어 "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
도 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
도 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
도 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
도 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
도 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
일단 복합 전자 문서(1000)가 완전히 파싱되면, 그 파서는 주석(1002)을 전자 잉크 텍스트를 포함하는 것으로 인식할 것이며, 이 주석을 (예를 들어, 문서(1000)의 마진의 위치에 기인하여) "마진 코멘트" 타입의 주석으로 분류할 것이다. 따라서, 그 파서는 마진 코멘트에 대해 적절한 콘텍스트 노드(1016)를 생성 할 것이다. 이러한 마진 코멘트(1002)가 단지 전자 잉크 텍스트를 포함하기 때문에, 그 파서는 전자 잉크의 계층적 구조와 연관된 단락 노드(1018), 두 개의 라인 노드들(1020, 1022), 및 적절한 잉크 단어 노드들(1024, 1026, 1028) 및 스트록 노드들(1030, 1032, 1034))를 더 생성한다(앞서 언급된 바와 같이, 선택적으로 및 대안으로, 그 잉크 스트록 데이터는 잉크 단어 노드(들)의 속성들로서 저장될 수 있고, 및/또는 그 라인 노드들은 데이터 구조(1010)로부터 생략될 수 있다). Once the composite
다른 링크 관계가 도 10a 및 도 10b의 예에 도시된다. 특히, 이 예에서, 페이지 마진 및 기초의 문서 콘텐트에 대한 마진 코멘트(1002)의 위치 및 방향에 기초하여, 그 파서는 도 10b에 화살표(1036)로 도시된 바와 같이, 마진 코멘트(1002)와 연관된 단락 노드(1018)(본 예에서 "소스" 콘텍스트 노드)가 타이프라이팅된 텍스트와 연관된 단락 노드(764)(본 예에서 "목적지" 콘텍스트 노드)에 링크된다. 부가적으로, 그 파서는 화살표(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
도 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
기초의 문서, 타이프라이팅된 문서 텍스트 및 문서의 마진들에 대한 여러가지 주석 타입들의 관련 지점 및 공간적 방향 때문에, 본 발명의 적어도 몇가지 예들에 따른 파서 시스템은 여러가지 주석 타입들, 그들의 콘텐트, 및 서로에 대한 그들의 관계 및 앞서 포괄적으로 기재된 바와 같은 전자 문서 타이프라이팅된 텍스트를 인식할 것이다. 그 파서에 의해 생성된 전자 문서(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
주석들의 공간적 위치를 기초의 텍스트의 적절한 지점 및 공간적 위치로 유지하기 위해서, 그 주석 노드들 간의 여러가지 링크들 및 적절한 텍스트 노드를 갖는 여러가지 링크들이 파서에 의해 제공되며, 데이터 구조(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
앞서 언급된 바와 같이, 본 발명의 이러한 예에 따른 파서는 또한 그 전자 문서(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
도 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
이러한 예에서, 그 타이프라이팅된 텍스트가 어떤 이유로 이동해야 한다면, 그 별표 타입의 주석(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
링크된 주석의 "플로우차트" 타입이 도 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,
도 13b는 완전히 파싱되면 도 13a의 전자 문서(1300)의 플로우차트 주석과 연관될 수 있는 예시적인 데이터 구조(1320)를 도시한다. 이러한 예시적인 데이터 구조(1320)에서, 전자 문서(1300)의 모든 부분 또는 일부분에 대응할 수 있는 루트 노드(1322)가 부모 노드로서 플로우차트 타입의 주석 내의 노드들에 제공된다. 특정 주석 구조들에 관한 제1 콘텍스트 노드는 콘테이너(1304)에 대응하는 잉크 그림 노드(1324)이다. 잉크 콘테이너 노드(1326)가 자식 노드로서 잉크 그림 노드(1324)에 제공되고, 그 잉크 콘테이너 주석(1304)과 연관된 특정 스트록(들)이 리프 노드(들)(1328)에 저장되거나, 잉크 콘테이너 노드(1326)(또는 다른 노드)에 속성들로서 저장된다. FIG. 13B shows an
도 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
그 주석은 데이터 구조(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
유사하게, 주석이 예를 들어, "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
파싱 후 전자 문서(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
이러한 예시적인 주석 데이터 구조를 완성하기 위해서, 잉크 커넥터 주석(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
도 15a 내지 도 15c는 전자 문서(1500)의 예들 및 복수의 행들 및 열들을 갖는 테이블의 형태로 전자 잉크 주석을 포함하는 예시적인 데이터 구조들을 도시한다. 특히, 도 15a의 예에 도시된 바와 같이, 전자 문서(1500)는 두 개의 행들 및 두 개의 열들(전체 4개의 셀들로 구성됨)을 갖는 테이블(1502)을 포함하고, 그 테이블의 각각의 셀은 전자 잉크 경계들로 구성되고, 전자 잉크 텍스트 입력을 포함한다. 15A-15C illustrate example data structures including electronic ink annotation in the form of examples of
파싱이 완료된 후에, 도 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
테이블(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
물론, 앞서 기재된 여러가지 예시적인 주석 타입들에 관한 여러가지 모양들은 단지 가능한 주석 타입들, 주석들의 사용, 및 그 주석들 내에 포함될 수 있는 정보의 예들을 기재한다. 본 기술분야의 숙련자들은 많은 수정들 및 변경들이 본 발명으로부터 벗어나지 않고 행해질 수 있음을 인식할 것이다. 예를 들어, 주석들은 본 발명으로부터 벗어나지 않는 많은 다른 조합들 및 교환들에 (전자 잉크 텍스트, 그림, 이미지, 타이프라이팅된 텍스트 및 이미지 등과 같은) 많은 다른 데이터 타입들을 포함할 수 있다. 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
도 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
그러므로, 개별 스트록 노드들에 그 스트록들을 저장하지 않고, 여러가지 노드들이 노드와 연관된 스트록들에 대응하는 데이터를 저장하는 연관된 "스트록들" 속성을 가질 수 있다. 예를 들어: 리스트 항목 내에 (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
이제 도 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
따라서, 그러나, 본 발명의 다른 예들로서, 그 소프트웨어 애플리케이션(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
통상적으로, 그 분석 콘텍스트 대상(1709)은 전체 문서(1703)에 대한 문서 엘리먼트들에 대한 정보를 포함할 것이다. 그러나, 본 발명의 몇가지 예들로서, 그 분석 콘텍스트 대상(1709)은 그 문서(1703)의 단지 일부 내의 문서 엘리먼트들에 대한 정보를 포함할 수 있다. 즉, 그 분석 콘텍스트 대상(1709)은 단지 새로운 또는 "더러운(dirty)" 잉크 또는 다른 데이터를 포함하는 문서의 공간적 영역 내의 문서 엘리먼트들만을 표시할 수 있다. 전자 잉크를 포함하는 문서의 영역 내의 모든 문서 엘리먼트들이 이미 분석되었다면, 이러한 미리 분석된 문서 엘리먼트들은 분석 콘텍스트 대상(1709)에 포함되지 않을 수 있다. 또다른 대안으로서, 그 응용 프로그램은 전체 전자 문서(1703)에 관한 데이터의 각 페이지 또는 다른 서브세트에 대해 분리된 분석 콘텍스트 대상(1709)을 유지할 수 있다. Typically, the
일단 그 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709)을 생성하기만 하면, 단계 1603에서, 그 잉크 분석 도구(1901)는 도 19에 도시된 바와 같이, 그 분석 콘텍스트 대상(1709)의 적어도 일부를 카피한다. 특히, 그 분석 콘텍스트 대상(1709)이 앞서 기재된 바와 같이 새로운 잉크 및/또는 다른 데이터를 포함하는 영역들로 제한되지 않는다면, 그 소프트웨어 애플리케이션(1701)은 새로운 잉크 및/또는 분석되어야 하는 다른 데이터를 포함하는 문서(1703)의 영역들을 지정할 것이다. 이어서 그 소프트웨어 애플리케이션(1701)은 그 문서(1703)의 지정된 영역에 대응하는 분석 콘텍스트 대상(1709)의 부분을 카피하기 위해 잉크 분석 도구(1901)를 야기한다. (물론, 그 분석 콘텍스트 대상(1709)이 새로운 잉크를 포함하는 영역들을 기재하는 것으로 제한된다면, 그 잉크 분석 도구(1901)는 전체 분석 콘텍스트 대상(1709)을 카피할 수 있다.) Once the software application 1701 has created an
응용 프로그램(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
새로운 데이터를 분석하기 위해 호출에 응답하여, 그 잉크 분석 도구(1901)는 필요하다면, 새로운 잉크 및/또는 소프트웨어 애플리케이션(1701)에 의해 지정된 영역 내의 다른 데이터를 분석하는데 요구되는 분석 콘텍스트 대상(1709)으로부터 정보를 획득하기 위해, 그 분석 콘텍스트 대상(1709)에 여러번의 콜백을 행한다. 예를 들어, 새로운 잉크 및/또는 다른 데이터에 부가하여, 그 잉크 분석 도구(1901)는 잉크 및/또는 이미 분석된 지정된 영역 내의 다른 데이터에 관한 정보, 또는 그 지정된 영역 내의 비-잉크 문서 엘리먼트들에 관한 정보에 대한 분석 콘텍스트 대상(1709)을 질의할 수 있다. 그 "지정된 영역"은 본 발명의 적어도 몇가지 예들에서, 새로운 잉크 또는 분석될 다른 데이터를 포함하는 영역에 또는 그 영역 부근에서 공간적 영역의 데이터에 대응한다. In response to the call to analyze new data, the
미리 분석된 잉크 및 비-잉크 문서 엘리먼트들 둘 모두, 특히 분석될 새로 입력된 데이터 부근에 위치된 그 엘리먼트들이 미분석 잉크 또는 다른 데이터의 분석을 개선하는 콘텍스트를 제공할 수 있다. 잉크 분석 도구(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
그 잉크 분석 도구(1901)가 문서 독립 분석 콘텍스트 대상(1903)을 생성하지만, 그 소프트웨어 애플리케이션(1701)은 그 분석 콘텍스트 대상(1709)을 변경해서는 안됨을 (그리고, 응용 프로그램 내의 다른 스레드(thread)들 및/또는 다른 프로그램들이 이러한 시간주기 동안 그 분석 콘텍스트 대상(1709)을 변경하도록 허용할 수 없음을) 또한 유의해야 한다. 즉, 그 소프트웨어 애플리케이션(1701)은 이 시간주기 동안 새로운 데이터를 그 문서(1703)에 입력해서는 안되며, 다른 스레드들 및/또는 응용 프로그램들이 그렇게 하도록 허용해서는 안된다. 그러나, 문서 독립 분석 콘텍스트 대상(1903)을 생성하는 처리는 비교적 빠르며, 이는 통상적으로 그 소프트웨어 애플리케이션(1701)의 동작에 상당히 영향을 미치지는 않을 것이다. 그러나, 필요에 따라, 문서(1703)에 데이터를 입력한 결과들은 그 문서 독립 분석 콘텍스트 대상(1903)이 생성된 후에 그 시스템에 입력되어 캐쉬(cach)될 수 있다. Although the
일단 그 문서 독립 분석 콘텍스트 대상(1903)이 생성되면, 미분석 잉크 및/또는 다른 데이터의 다음의 모든 분석들은 그 소프트웨어 애플리케이션(1701)이 미분석 잉크 및/또는 다른 데이터의 분석들에 의해 지연되거나 중지되지 않고 표준 동작을 계속하도록 허용하는 분석 콘텍스트 대상(1709)보다는 문서 독립 분석 콘텍스트 대상(1903)에서 수행될 수 있다. 그 소프트웨어 애플리케이션(1701)은 심지어 문서 독립 분석 콘텍스트 대상(1903) 내의 미분석 잉크의 분석에 간섭하지 않고 새로운 전자 잉크 데이터(1705)를 그 문서(1703)에 입력할 수 있다. Once the document independent
따라서, 문서 독립 분석 콘텍스트 대상(1903)이 생성된 후에, 단계 1605에서, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903) 내의 잉크를 분석하기 위한 분리된 분석 스레드를 생성한다. 따라서, 단계 1607에서, 그 소프트웨어 애플리케이션(1701)은 주요 처리 스레드의 제어를 다시 시작할 수 있으며, 표준 동작을 계속할 수 있다. 이어서, 단계 1609에서, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903)을 분석을 위한 제1 분석 처리에 제공한다. 예를 들어, 도 20에 도시된 바와 같이, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903)을 분석 스레드를 사용하여 파싱하기 위한 파싱 처리(2001)로 통과시킬 수 있다. 그 파싱 처리는 부가적으로 본 발명으로부터 벗어나지 않고 (잉크 및/또는 다른 데이터를 예를 들어, 잉크 텍스트, 잉크 그림, 테이블, 차트, 그래픽, 이미지, 음악, 수학, (저항, 캐패시터 등을 갖는 전기회로도와 같은) 특정 기호들을 포함한 그림 등과 같은 여러가지 다른 타입으로 분류하기 위한) 하나 이 상의 분류 처리들을 포함할 수 있다. 본 발명의 몇가지 예들로서, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903)의 카피를 만들 수 있음을 유의해야 한다. 이하에 보다 상세하게 설명될 것처럼, 문서 독립 분석 콘텍스트 대상(1903)의 원래의 형태의 카피가 그 분석 처리의 분석 결과들을 문서(1703)의 현재 상태로 조정하는데 사용될 수 있다. Thus, after the document independent
제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
이하에 보다 상세하게 설명될 것처럼, 본 발명의 몇가지 예들로서, 분석 결과들(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
도 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
그 파싱 처리는 또한 미분류 스트록 데이터로 표시된 잉크 스트록들(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
앞서 언급된 바와 같이, 제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
본 발명의 몇가지 예들로서, 그 소프트웨어 애플리케이션(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
잉크 분석 도구(1901)가 그 분석 결과들(2101)을 현재 분석 콘텍스트 대상(1709)으로 조정하는 동안, 그 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709)을 변경해서는 안됨을 (그리고 분석 콘텍스트 대상(1709)이 응용 프로그램 및/또는 임의의 다른 응용 프로그램 내의 다른 스레드들에 의해 변경되도록 허용해서는 안됨을) 유의해야 한다. 즉, 그 소프트웨어 애플리케이션(1701)은 새로운 데이터를 문서(1703)에 입력해서는 안되고, 및/또는 조정이 완료될 때까지 다른 스레드들 및/또는 응용 프로그램이 새로운 데이터를 문서(1703)에 입력하도록 허용해서는 안된다. 처음에 문서 독립 분석 콘텍스트 대상(1903)을 생성하는 처리와 같이, 그 조정 처리는 비교적 빠르며, 통상적으로 소프트웨어 애플리케이션(1701)의 동작에 상당히 영향을 미치지는 않을 것이다. 그러나, 필요에 따라, 시도된 사용자 입력이 그 조정 처리가 완료된 후에 입력되고 캐쉬될 수 있다. While the
그 잉크 분석 도구(1901)가 문서(1703)의 현재 상태에 대해 분석 결과들(2101)을 분석 콘텍스트 대상(1709)으로 조정한 후, 잉크 분석 도구(19901)은 선택적으로 조정된 분석 결과들을 다른 분석을 위한 제2 분석 처리에 제공할 수 있다. 예를 들어, 도 24에 도시된 바와 같이, 그 잉크 분석 도구(1901)는 조정된 파싱 결과들(2401)을 인식을 위한(예를 들어, 텍스트, 음악, 수학적 정보 또는 다른 특정 데이터 타입들의 핸드라이팅 인식을 위한) 잉크 인식 처리(2003)에 제공할 수 있다. 특히, 그 잉크 분석 도구(1901)는 단계 1619에서 제2 분석 처리를 수행하기 위한 분리된 분석 스레드를 다시 생성할 것이다. 그 잉크 분석 도구(1901)가 제2 분석 처리를 실행하기 위한 이러한 분리 스레드를 생성하기 때문에, 그 소프트웨어 애플리케이션(1701)은 단계 1621에서 표준 동작을 다시 시작할 수 있으며, 심지어 새로운 전자 잉크 데이터(1705)를 포함하는 새로운 입력 데이터를 수용할 수 있다. After the
다음으로, 단계 1623에서, 그 잉크 분석 도구(1901)는 제1 분석 처리로부터 제2 분석 처리로 그 조정된 결과들(2401)을 제공한다. 일단 제2 분석 처리가 시작하면, 그 애플리케이션(1701)은 새로운 미분석 잉크에 대해 제1 분석 처리의 또다른 실행을 시작할 수 있다. 그러므로, 다수의 분석 처리들이 동시에 실행될 수 있으며, 그리하여 제2 분석 처리가 제1 분석 처리의 결과들로 작동하는 동안, 그 애플리케이션(1701)은 분석 결과들의 다음 세트를 준비하기 위해 제1 분석 처리를 재시작할 수 있다. Next, at step 1623, the
유리하게, 그 분석 처리들을 병렬로 수행하는 것은 소프트웨어 애플리케이션(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
그러므로, 본 발명의 각종 실시예들은 다음의 분석 처리를 실행하기 전에 이전의 분석 처리의 결과들을 그 문서(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
앞서 언급된 바와 같이, 제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
앞서 말한 논의로부터, 본 발명의 각종 실시예들에 따른 잉크 분석 기술들은 전자 잉크가 소프트웨어 애플리케이션(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
게다가, 그 분석 처리들이 소프트웨어 애플리케이션(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
또한, 앞서 말한 기재가 전자 잉크의 비동시성 분석을 논의하지만, 본 발명의 각종 실시예들이 잉크 분석 도구(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)는 전자 잉크의 처리를 용이하게 하기 위해 여러가지 기능들을 수행한다. 예를 들어, 본 발명의 여러가지 구현들에 따라서, 그 잉크 분석 도구(1901)는 잉크 데이터가 분석되는 문서(1703) 내에 하나 이상의 영역들을 지정하는 소프트웨어 애플리케이션(1701)으로부터 정보를 수신하고, 그 영역들에 관한 정보를 획득하기 위해 소프트웨어 애플리케이션(1701)에 질의하고, 이어서 그 정보에 기초하여 문서 독립 분석 콘텍스트 대상(1903)을 구성한다. 또한, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903)을 분석을 위한 하나 이상의 분석 처리들에 제공하고, 이어서 그 분석 처리의 결과들을 그 문서(1703)의 현재 상태로 조정한다. 그 여러가지 처 리들은 스레드 풀(thread pool)을 통해, (앞서 기재된 바와 같은) 분리 스레드들을 사용하여 클러스트 또는 임의의 다른 적절한 또는 원하는 방식으로 분리된 기계들을 통해, 분리 처리들로서 수행될 수 있다. As discussed above, the
본 발명의 다른 예들에 따라서, 여러가지 소프트웨어 대상들 및 도구들이 잉크 분석 도구(1901)를 구현하고 이러한 기능들을 수행하는데 사용될 수 있다. 그러나, 본 발명의 몇가지 예들로서, 그 잉크 분석 도구(1901)는 응용 프로그래밍 인터페이스(API)로서 구현될 수 있다. 특히, 본 발명의 몇가지 예들에 따라서, 그 잉크 분석 도구(1901)는 소프트웨어 대상 루틴들의 그룹 및 문서(1703) 내의 잉크를 분석하는데 요구되는 그 소프트웨어 애플리케이션(1701)에 의해 호출될 수 있는 관련 정보로서 구현될 수 있다. According to other examples of the invention, various software objects and tools may be used to implement the
본 기술분야의 숙련자들에 의해 이해되는 바와 같이, 응용 프로그래밍 인터페이스가 소프트웨어 대상들에 속하는 카테고리들 또는 "클래스들(classes)"로 체계화될 수 있다. "대상"은 저장가능한 상태 값들 및 실행가능한 동작들의 콜렉션(collection)이다. 특히, 대상이 "필드들(fields)" 및 "속성들(properties)"으로 언급되는 다른 타입들의 상태 값들을 유지할 수 있으며, 이는 그 대상과 연관되거나 그 대상에 의해 검색될 수 있다. 외부의 소프트웨어 애플리케이션 또는 또다른 소프트웨어 대상에 대해, 이러한 속성들은 판독 전용(read only)(용어 "{get;}"의 사용에 의해 식별됨), 기록 전용(write only)(용어 "{set;}"의 사용자에 의해 식별됨), 또는 판독가능 및 기록가능 둘 모두("{get; set}"으로 식별됨)가 될 수 있다. 대상이 또한 종종 소프트웨어 애플리케이션 또 는 또다른 대상의 요청 또는 "호출"에서 태스크들 또는 "방법들"을 실행할 수 있다. 그러므로, 애플리케이션 프로그래밍 인터페이스는 특정 태스크들을 수행하거나 또는 요청시 특정 정보를 제공하기 위해 또다른 소프트웨어 애플리케이션에 의해 명령될 수 있는 여러가지 대상들을 포함할 수 있다. As will be appreciated by 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 Analyzer" 클래스의 구성요소들은 분석 처리에 문서 독립 분석 콘텍스트 대상(1903)을 제공하는 대상을 생성하고 이용하는데 사용되며, 그 분석 결과들이 생성될 때를 결정하고, 그 분석 결과들을 문서(1703)의 현재 상태로 조정한다. 본 발명의 각종 실시예들에 따른 잉크 분석 API에 포함될 수 있는 이들 및 다른 클래스들이 이하에 상세하게 기재될 것이다. The components of the "Ink Analyzer" class are then used to create and use objects that provide the document independent
우선 분석 콘텍스트 클래스로 돌아가서, 이러한 클래스는 분석 콘텍스트 대상(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
본 발명의 각종 실시예들에 따라서, 그 분석 콘텍스트 클래스는 소프트웨어 애플리케이션(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
또한, 그 분석 콘텍스트 클래스는 "루트노드(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 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
분석 콘텍스트 클래스와 같이, 그 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
이러한 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
이러한 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
그 분석 결과들(즉, 속성 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
그 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
콘텍스트 노드들의 가능한 타입들은 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
또한, 이러한 클래스는 그 특정 영역 내에 위치된 콘텍스트 노드의 어레이를 리턴하는, 방법 "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
또한, 이러한 클래스는 현재 콘텍스트 노드에 새로운 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
그 소프트웨어 애플리케이션(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
또한, 본 발명의 각종 실시예들에 따른 잉크 처리는 앞서 상세하게 논의된 바와 같이, 다수의 분석 처리들을 이용할 수 있다. 따라서, 제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
그 조정 처리의 결과들이 유효하도록 하기 위해서, 그 문서(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
본 발명의 각종 실시예들로서, 그 분석 처리 및 조정 처리는 조정 처리의 효율성(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
이러한 컨벤션들에 부가하여, 그 조정 처리는 통상적으로 분석 콘텍스트 대상(1709)에 의해 명기된 인터페이스 규칙들에 따라야 한다. 예를 들어, 본 발명의 몇가지 구현들로서, 그 분석 콘텍스트(1709)는 어떠한 자식 노드들도 갖지 않는다면, 문서 엘리먼트에 대한 노드가 삭제되도록 허용하지 않을 수 있다. In addition to these conventions, the coordination process should typically follow the interface rules specified by the
앞서 언급된 바와 같이, 분석 처리가 시작된 후에 이루어진 분석 콘텍스트 대상(1709)에 대해 변경하는 몇가지 형태에 대립하는 문서 독립 분석 콘텍스트 대상(1903)에 대해 분석 처리가 변경할 경우에 충돌이 발생한다. 충돌들은 두가지 타입: 강제적인 충돌들 및 무조건적인 충돌들로 나눠질 수 있다. As mentioned above, conflicts arise when the analysis process changes for the document independent
문서(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
소프트웨어 애플리케이션(1701)이 분석 처리에 의해 문서 독립 분석 콘텍스트 대상(1903)에서 변경된 값에 관련된 분석 콘텍스트 대상(1709)에서 값을 변경하는 경우에, 무조건적 충돌이 발생하지만, 고정 제약들, 엘리먼트 재사용 제약들, 및 그 분석 콘텍스트 대상(1709)에 대한 인터페이스의 고유의 제약들이 분석 콘텍 스트 대상(1709)에 대해 분석 처리에 의해 이루어진 변경의 애플리케이션을 허용할 수 있다. 임의의 분석이 또한 적용될 수 있다. 무조건적인 충돌이 분석 콘텍스트 대상(1709)에 대한 변경으로서 적용되거나 또는 회피될 수 있다. 또한, 그 조정 처리는 몇가지 타입의 무조건적인 충돌들을 간단히 무시할 수 있다. When the software application 1701 changes the value in the
무조건적인 충돌의 한가지 그래픽 예가 분석 콘텍스트 대상(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
따라서, 본 발명의 각종 실시예들이 분석 처리의 결과들에 기초하여 분석 콘텍스트 대상(1709)을 업데이트하는 경우, 무조건적인 충돌에 대한 변경들을 적용하 지 않을 것이다. 이러한 기준이 무조건적인 충돌들에 기초하여 변경들을 식별하고 차단하기 위해 부가적인 처리를 요구할 수 있지만, 이러한 기준은 비교적 구현하기 쉬우며 유지하기 간단하다. 물론, 본 발명의 또다른 예들이 다른 기준에 따라서 무조건적인 충돌들에 대응하는 변경들을 구현할 수 있다. 특히, 이러한 대안의 예들은 분석 콘텍스트 대상(1709)에서 영구적인 논리적 불일치 관계들을 생성하지 않는 무조건적인 충돌들로부터의 변경들을 구현할 수 있다. Thus, when various embodiments of the present invention update the
하나의 충돌이 또다른 충돌을 생성할 수 있다는 점에서 그 충돌들이 추이적 효과(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
본 발명의 각종 실시예들이 분석 처리의 결과들을 문서(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
그 변경 로그 접근법을 이용한 그 조정 처리를 실행하기 위해서, 그 잉크 분석 도구(1901)는 그 변경들의 연대순으로 각각의 변경 기록을 시험한다. 즉, 그 잉크 분석 도구(1901)는 도 27에 도시된 처리를 구현할 수 있다. 우선, 단계 2701에서, 그 잉크 분석 도구(1901)는 변경을 적용하도록 요구되는 현재 분석 콘텍스트 대상(1709) 내의 대응하는 노드들을 액세스하려고 시도한다. 이 검색 단계는 강제적인 충돌이 되는 분석 콘텍스트 대상(1709)으로부터 하나 이상의 필요한 노드들을 삭제한다면, 소프트웨어 애플리케이션(1701)이 실패할 수 있음을 유의해야 한다. In order to perform the adjustment process using the change log approach, the
다음으로, 단계 2703에서, 그 잉크 분석 도구(1901)는 변경이 강제적인 충돌을 생성하는지 아니면 무조건적인 충돌을 생성하는지를 결정한다. 이러한 결정을 하기 위한 절차는 이하에 보다 상세하게 설명될 것이다. 단계 2705에서, 그 잉크 분석 도구(1901)는, 그 조정 처리에 대한 기준에 의해 금지된 강제적인 충돌이나 또는 무조건적인 충돌을 생성하는 경우, 변경을 하거나 아니면 변경을 금지한다. 예를 들어, 변경이 조정 처리에 대한 기준에 의해 금지된 강제적인 충돌이나 또는 무조건적인 충돌을 생성한다면, 그 잉크 분석 도구(1901)는 변경이 행해진 문서(1703)의 대응하는 영역을 나타내는 분석 콘텍스트 대상(1709) 내의 노드들에 대해 변경들을 차단할 수 있다. 다른 한편 변경이 적용되면, 그 잉크 분석 도구(1901)는 그 분석 콘텍스트 대상(1709) 내의 필수적인 노드들에 대해 원하는 변경을 행하기 위해 적절한 방법을 호출할 수 있다. Next, at step 2703, the
그 분석 처리가 분석 콘텍스트 대상(1709)에 새로운 엘리먼트 노드를 추가하지만 이어서 스트록 노드들을 새로운 노드로 이동시키는 것을 실패한다면, 그 분석 처리는 또한 스트록 노드들이 그 새로운 노드들로 성공적으로 이동되었음을 가정하여 그 엘리먼트 노드를 삭제하려고 하지 않을 것이다. 그러므로, 현재 분석 콘텍스트 대상(1709) 내의 비어있는 노드에 대응하는 문서 독립 분석 콘텍스트 대상(1903) 내에 엘리먼트 노드가 있을 것이다. 따라서, 일단 분석 콘텍스트 대상(1709)에 대한 모든 변경들이 처리되기만 하면, 단계 2707에서, 그 잉크 분석 도구(1901)는 문서 독립 분석 콘텍스트 대상(1903) 내의 노드들에 대응하는 분석 콘텍스트 대상(1709) 내의 임의의 "비어있는" 노드들을 삭제하기 위해 그 문서 독립 분석 콘텍스트 대상을 리뷰한다. 이러한 비어있는 노드 삭제 단계는 선택적인 것이며, 본 발명으로부터 벗어나지 않고 생략될 수 있다. If the analysis process adds a new element node to
문서 독립 분석 콘텍스트 대상(1903)이 임의의 비어있는 노드들을 포함해서는 안되며, 그 조정 처리는 비어있는 노드들이 문서 독립 분석 콘텍스트 대상(1903) 내에 생성되는 것을 방지해야 함을 유의해야 한다. 이 단계는 예외로서 비어있을지라도 분석 콘텍스트 대상(1709)의 루트 노드를 삭제하려고 시도하지 않을 것임을 또한 유의해야 한다. 마지막으로, 단계 2709에서, 그 잉크분석 도구(1901)는 소프트웨어 애플리케이션(1701)에 대해 문서 독립 분석 콘텍스트 대 상(1903)과 현재의 분석 콘텍스트 대상(1709)의 분석 결과들 간의 임의의 충돌을 식별할 것이므로, 그 소프트웨어 애플리케이션(1701)은 다음의 분석 처리에서의 충돌들에 의해 영향을 받는 문서(1703)의 영역들을 포함할 수 있다. It should be noted that the document independent
이제 상기 단계 2703 내의 충돌들의 처리로 돌아가서, 일단 문서 독립 분석 콘텍스트 대상(1903) 내의 변경들에 대응하는 분석 콘텍스트 대상(1709) 내의 모든 노드들이 액세스되기만 하면, 분석 콘텍스트 대상(1709) 내의 각각의 노드에 대한 모든 다른 가능한 강제적인 충돌들이 정적으로 삭제될 수 있다(또는 대안으로, 강제적인 충돌의 부재가 각각의 노드에 대해 삭제될 수 있다). 특히, 강제적인 충돌들이 분석 콘텍스트 대상(1709)에 대한 인터페이스에 의해 지정된 규칙들에 기초하여 삭제될 수 있다. Returning to the processing of conflicts in step 2703 now, each node in
그러나, 이러한 변경들이 분석 콘텍스트 대상(1709)의 인터페이스에 의해 강제되지 않지만, 대신에 둘 모두가 분석 콘텍스트 대상(1709) 내의 동일한 노드에 영향을 미칠 경우 그 분석 처리에 의해 행해진 변경들을 통해 소프트웨어 애플리케이션(1701)에 의해 행해진 우호적인 변경들에 대한 무조건적인 선택들에 기초하기 때문에, 무조건적인 충돌들이 그 문서(1703)에 관한 부가적인 상태 정보 없이 식별될 수 없다. 대신에 이러한 충돌들은 분석 콘텍스트 대상(1709) 내의 노드들이 그 소프트웨어 애플리케이션(1701)에 의해 변경되었음을 결정하기 위해, 그 현재 분석 콘텍스트 대상(1709)을 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전과 비교함으로써 삭제될 수 있다. However, these changes are not enforced by the interface of the
예를 들어, 그 조정 기준은 소프트웨어 애플리케이션(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
이러한 예에 연속하여, 로그 엔트리 내의 그 다음 변경은 문서 독립 분석 콘텍스트 대상(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
따라서, 그 로그-기반의 조정 처리는 문서 독립 분석 콘텍스트 대상(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
대안으로 또는 부가적으로, 본 발명의 각종 실시예들이 문서 독립 분석 콘텍스트 대상 내의 요소들에 대응하는 현재 분석 콘텍스트 대상(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
캐쉬 내의 요소들의 부모 콘텍스트 노드들이 또한 캐쉬되어야 함을 유의해야 한다. 특히, 자식 콘텍스트 노드로의 변경은 그 부모 콘텍스트 노드의 속성들로의 변경이 고려될 것이다. 그러므로, 캐쉬 내에 저장된 콘텍스트 노드의 부모 콘텍스 트 노드는 또한 이 순간에 소프트웨어 애플리케이션(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
분석 결과들을 문서(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
이러한 접근법을 사용하여, 잉크 분석 도구(1901)는 우선 스트록 맵을 구축한다. 즉, 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 모든 잉크 리프 노드에 대해, 현재 분석 콘텍스트 대상(1709) 내의 대응하는 노드가 있다면, 그 리프 노드는 해시 테이블(hash table)(또는 다른 적절한 데이터 구조)에 추가된다. 그러므로, 그 해시 테이블은 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 스트록 GUID들(또는 다른 단일 노드 식별자들)을 현재 분석 콘텍스트 대상(1709) 내의 리프 노드 참조들로 매핑한다. Using this approach, the
다음으로, 그 잉크 분석 도구(1901)는 소프트웨어 애플리케이션(1701)이 분석 콘텍스트 대상(1709)에서 변경하는 모든 노드들을 식별한다. 이것은 앞서 상세하게 기재된 무조건적인 충돌들을 결정하기 위한 기술들을 사용하여 행해진다. 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 각각의 노드에 대해, 현재 분석 콘텍스트 대상(1709) 내에 대응하는 노드가 있으며 그것이 몇가지 중요한 방식에서 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 노드와 다르다면, 그 잉크 분석 도구(1901)는 이 노드가 그 애플리케이션에 의해 변경되고 잠재적인 충돌임을 결정한다. 그러한 노드들에 대한 참조들이 그 분석 콘텍스트 대상(1709)에 추가되어서는 안되는 분석 결과 노드들에 대응하는 제1 리스트(이후 resultsNodesNotToAdd 리스트로서 언급됨) 및 무조건적인 충돌들을 생성하는 노드들의 제2 리스트에 저장된다. Next, the
문서 독립 분석 콘텍스트 대상(1903)의 최초 버전 내의 각각의 노드에 대해, 그 잉크 분석 도구(1901)는 그 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 및 현재 분석 콘텍스트 대상(1709) 둘 모두 내의 대응하는 노드들을 찾는다. 분석 콘텍스트 대상(1709) 내의 각각의 노드에 대해, 그 잉크 분석 도구(1901)는 소프트웨어 애플리케이션(1701)이 그 노드를 삭제했는지를 결정한다. 그러한 노드들은 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전에 존재하지만, 분석 콘텍스트 대상(1709) 내에는 어떠한 대응하는 노드도 없다. 그 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 내의 대응하는 노드는 그것이 존재한다면 resultsNodesNotToAdd 리스트에 추가된다. For each node in the original version of the document independent
다음으로, 그 잉크 분석 도구(1901)는 그 문서 독립 분석 콘텍스트 대상(1903)으로부터 노드를 삭제했는지 결정한다. 이것은 분석 콘텍스트 대상(1709) 내에 대응하는 노드가 있으며 그것이 변경되지 않았지만, 그 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 내에 대응하는 노드가 없을 때, 검출된다. 분석 처리에 의해 삭제된 노드들이 삭제된 노드들의 리스트에 저장된다. 그러한 노드는 현재 분석 콘텍스트 대상(1709)에 추가되지 않지만, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 내에 어떠한 대응하는 노드도 없기 때문에 그 resultsNodesNotToAdd 리스트에서 없어지지 않는다. Next, the
소프트웨어 애플리케이션(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
다음으로, 그 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903) 내의 각각의 노드에 대해, 그 노드가 resultsNodesNotToAdd 리스트에 없으면, 그 잉크 분석 도구(1901)는 그 분석 콘텍스트 대상(1709) 내에 대응하는 노드를 생성함으로써 분석 처리에 의해 그 노드에 임의의 변경들을 전파할 수 있다. 그 분석 결과들 내의 노드들의 탐색(traversal)은 하향식(top-down) 전위(pre-order) 탐색을 이용하여 수행될 수 있으므로, 부모 노드들은 자식 노드들에 앞서 생성되는 것으로 보증된다. Next, for each node in the document independent
분석 콘텍스트 대상(1709) 내의 새로운 리프 노드를 생성한 경우, 분석 결과 들에 포함된 노드와 연관된 어떠한 잉크 스트록들이라도 분석 콘텍스트 대상(1709) 내의 다른 노드들로부터 새로운 노드들로 또한 이동될 수 있다. 이어서 앞서 논의된 그 스트록 맵은 그 스트록들을 이동시키기 위한 소스 요소들을 식별하는데 사용될 수 있다. (강제적인 충돌을 생성하는) 소스 요소가 존재하지 않는다면, 또는 소스 요소가 앞서 언급된 무조건적인 충돌 리스트에 포함된다면, 잉크 스트록들은 이동되지 않는다. 분석 콘텍스트 대상(1709)에 불필요한 호출들을 저장하기 위해, 이러한 잉크 분석 도구(1901)는 적어도 하나의 비-충돌(non-colliding) 스트록 소스 노드가 없다면, 자식 콘텍스트 노드를 생성하기 위해 그 방법을 호출하는 것을 피할 수 있다. 동일한 스트록 소스 점검은 또한 비-잉크 리프 노드들에서 수행되므로, 적어도 하나의 라인의 구성요소 단어들이 예를 들어, 적어도 하나의 성공적으로 이동된 스트록을 포함하지 않을 것이라면 라인에 대한 노드가 생성되지 않는다. When creating a new leaf node in the
이어서, 다른 정보가 인식 격자와 같은 새롭게 생성된 노드에 또한 적용된다. 일시적인 논리적 불일치성을 초래하는 적용된(즉, 차단되지 않은(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
분석 콘텍스트 대상(1709)으로부터 삭제될 각각의 노드에 대해, 그 잉크 분 석 도구(1901) 리스트는 그 노드가 실제로 삭제될 수 있는지를 확인하기 위해 분석 콘텍스트(1709)에 대한 모든 다른 편집들 및 추가들이 수행됨을 점검한다. 삭제되어야 하고 모든 자식 노드들 및 스트록들이 실제로 비어있는 노드들은 분석 콘텍스트 대상(1709)으로부터 삭제된다. 일단 그러한 노드가 삭제되면, 모든 조상 노드들(루트 노드까지 그러나 루트 노드는 포함하지 않음)은 조상이 다른 남아있는 자식들과 마주칠 때까지 연속적으로 삭제된다. For each node to be deleted from the
마지막으로, 그 잉크 분석 도구(1901)는 그 분석 처리에 의해 분석 콘텍스트 대상(1709)에 대한 변경들을 검출하고 전파하기 위해, 분석 결과들을 갖는 문서 독립 분석 콘텍스트 대상(1903)과 분석 콘텍스트 대상(1709) 간에 오더링(ordering)하는 노드를 전체적으로 비교한다. 그러나, 이러한 비교는 문서 독립 분석 콘텍스트 대상(1903)의 최초 버전을 무시하고, 그래서 그 소프트웨어 애플리케이션(1701)에 의해 행해진 오더링에 대한 변경들을 검출하는 어떠한 방식도 갖지 않음을 유의해야 한다. 다음으로, 분석 콘텍스트 대상(1709) 내의 대응하는 노드를 갖는 분석 결과들 내의 각각의 콘테이너 노드에 대해, 그 콘테이너 노드들의 자식들의 오더링이 비교된다. 둘 모두의 콘테이너 노드들이 정확하게 동일한 자식들 세트를 갖는다면, 그 분석 결과들의 오더링은 노드가 분석 결과들의 자식 노드와 동일한 GUID(또는 다른 식별자 타입)를 갖지 않는 분석 콘텍스트 대상(1709) 내의 콘테이너의 리스트 내의 동일한 위치에서 발견될 때까지 그 분석 결과들 내의 콘테이너의 자식을 통해 루핑(looping)함으로써 분석 콘텍스트 대상(1709)에 전파된다. 그러한 미스매치가 발견되는 경우, 대응하는 노드는 그 분석 콘텍스트 대상(1709) 내의 자식 리스트에서 또한 발견되어야 한다. 이어서 그 잉크 분석 도구(1901)는 그 노드에 대한 분석 콘텍스트 대상(1709) 내의 자식 리스트의 나머지를 검색하고, 그 분석 콘텍스트(1709) 내의 노드에 대한 명령을 수정하기 위해 자식 노드를 이동시키기 위한 방법을 호출한다. 그 잉크 분석 도구(1901)는 이어서 그 분석 결과들 내의 노드들을 통해 계속해서 루핑한다. Finally, the
물론, 동일한 리스트들의 가정은 참을 유지한다. 분석 리스트 또는 소프트웨어 애플리케이션(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
그 애플리케이션이 잉크 데이터를 생성하는 경우, 방법(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
이어서 제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
본 발명의 이러한 실시예들은 또한 하나 이상의 이벤트를 갖는 이벤트들에 따름으로써 각각의 분석 처리를 지원하고, 내부 처리에 기초하여 다른 태그들을 갖는 변경들로부터 그 이벤트들을 태그할 수 있다. 따라서, 본 발명의 이러한 대안의 구현들이 또한 그 문서를 호스팅하는 소프트웨어 애플리케이션의 동작으로부터 비동시적인 문서 내에서의 전자 잉크의 분석을 고려할 수 있다. 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)
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) |
-
2003
- 2003-08-21 KR KR1020047010387A patent/KR20070010094A/en not_active Application Discontinuation
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 |