RU2358308C2 - Processing electronic ink - Google Patents

Processing electronic ink Download PDF

Info

Publication number
RU2358308C2
RU2358308C2 RU2004119950/09A RU2004119950A RU2358308C2 RU 2358308 C2 RU2358308 C2 RU 2358308C2 RU 2004119950/09 A RU2004119950/09 A RU 2004119950/09A RU 2004119950 A RU2004119950 A RU 2004119950A RU 2358308 C2 RU2358308 C2 RU 2358308C2
Authority
RU
Russia
Prior art keywords
analysis
ink
document
node
data
Prior art date
Application number
RU2004119950/09A
Other languages
Russian (ru)
Other versions
RU2004119950A (en
Inventor
Ричард ДАНКАН (US)
Ричард Данкан
Бодин ДРЕСЕВИЧ (US)
Бодин ДРЕСЕВИЧ
Джеми ВЕКИМ (US)
Джеми ВЕКИМ
Херри СУТАНТО (US)
Херри СУТАНТО
Саши РАГХУПАТИ (US)
Саши РАГХУПАТИ
Тимоти Х. КЕННЕПЕЛ (US)
Тимоти Х. КЕННЕПЕЛ
Зольтан СИЛАДЬИ (US)
Зольтан СИЛАДЬИ
Джером ТЕРНЕР (US)
Джером ТЕРНЕР
Тодд ЛЭНДСТЭД (US)
Тодд ЛЭНДСТЭД
Хайонг ВАНГ (US)
Хайонг ВАНГ
Роман СНИТСАР (US)
Роман СНИТСАР
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Priority to RU2004119950/09A priority Critical patent/RU2358308C2/en
Publication of RU2004119950A publication Critical patent/RU2004119950A/en
Application granted granted Critical
Publication of RU2358308C2 publication Critical patent/RU2358308C2/en

Links

Images

Abstract

FIELD: physics; computer engineering.
SUBSTANCE: present invention relates to processing electronic ink. An application program interface instantiates an ink analysing object which receives document data of a document containing electronic ink from the program application containing the document and running in the first processing stream. The ink analysing object then uses the first stream to make a copy of document data, sends the copy to the process of analysing electronic ink and returns control of the first processing stream of the analysis process. The program application is configured to receive new document data when carrying out the process of analysing electronic ink. After the process of analysing the electronic ink, the ink analysing object reconciles the results of the analysis process with current document data.
EFFECT: provision for processing electronic ink without interruption of input of the electronic ink.
19 cl, 49 dwg

Description

Область техники, к которой относится изобретениеFIELD OF THE INVENTION

Настоящее изобретение относится к обработке электронных чернил. Различные аспекты настоящего изобретения, в частности, применимы к анализу электронных чернил, включая анализ компоновки, классификацию и распознавание электронных чернил. Дополнительные аспекты изобретения относятся к использованию проанализированных по компоновке, классифицированных и распознанных электронных чернил, например, при создании гибких аннотаций с широкими возможностями в документе, выполненном электронными чернилами.The present invention relates to the processing of electronic ink. Various aspects of the present invention are particularly applicable to electronic ink analysis, including layout analysis, classification and recognition of electronic ink. Additional aspects of the invention relate to the use of compiled, classified, and recognized electronic inks, for example, when creating flexible annotations with extensive features in an electronic ink document.

Предшествующий уровень техникиState of the art

Так как в обществе распространилась роль компьютеров, то были разработаны всевозможные различные методики для ввода данных в компьютеры. Одной особенно применимой методикой представления данных является использование рукописного текста. В результате ввода пером или другим предметом на цифровом преобразователе для получения «электронных чернил» пользователь компьютера может отказаться от громоздких и неудобных клавиатур. Рукописный ввод может удобно использоваться, например, врачами, выполняющими обход, архитекторами на стройплощадке, курьерами, доставляющими посылки, рабочими складов, обходящими склад, и во многих ситуациях, когда использование клавиатуры было бы затруднительным или неудобным. Хотя рукописный ввод более удобен, чем ввод с клавиатуры во многих ситуациях, текст, записанный электронными чернилами, обычно не может быть непосредственно обработан большинством программных приложений. Вместо этого, текст, записанный электронными чернилами, должен быть проанализирован для преобразования его в другую форму, такую как знаки Американского стандартного кода обмена информацией (ASCII). Данный анализ включает в себя процесс распознавания рукописного текста, при котором распознают знаки, основываясь на различных зависимостях между отдельными штрихами электронных чернил, составляющими слово электронных чернил.Since the role of computers has spread throughout society, all sorts of different techniques have been developed for entering data into computers. One particularly applicable data presentation technique is the use of handwritten text. As a result of entering with a pen or other object on a digital converter for receiving “electronic ink”, a computer user can refuse bulky and inconvenient keyboards. Handwriting can be conveniently used, for example, by visiting physicians, site architects, couriers delivering parcels, warehouse workers walking around a warehouse, and in many situations where using a keyboard would be difficult or inconvenient. Although handwriting is more convenient than keyboard input in many situations, text written in electronic ink usually cannot be directly processed by most software applications. Instead, text written in electronic ink should be analyzed to convert it to another form, such as characters of the American Standard Code for the Exchange of Information (ASCII). This analysis includes a handwriting recognition process in which characters are recognized based on various relationships between the individual strokes of the electronic ink constituting the electronic ink word.

Алгоритмы распознавания рукописного текста в значительной степени улучшились в последние годы, но их точность может снижаться, когда электронные чернила записываются под углом. Аналогично, когда нельзя легко различить отдельные группы штрихов чернил, например, когда два слова написаны вплотную друг к другу, то многие алгоритмы распознавания не могут точно распознавать электронные чернила. Некоторые алгоритмы распознавания также могут неправильно распознавать электронные чернила в качестве текста, когда, фактически, электронные чернила, как предполагается, являются рисунком. Например, пользователь может аннотировать машинописный текст посредством написания штриха электронных чернил, который подчеркивает, выделяет, окружает или перечеркивает некоторую часть машинописного текста. Алгоритм распознавания рукописного текста может тогда неправильно распознавать данные штрихи аннотаций как тире, число нуль или букву «О».Handwriting recognition algorithms have improved significantly in recent years, but their accuracy may decline when electronic ink is recorded at an angle. Similarly, when it is not possible to easily distinguish between separate groups of ink strokes, for example, when two words are written close to each other, many recognition algorithms cannot accurately recognize electronic ink. Some recognition algorithms may also incorrectly recognize electronic ink as text when, in fact, electronic ink is supposed to be a pattern. For example, a user can annotate typewritten text by writing a stroke of electronic ink that emphasizes, highlights, surrounds, or crosses out some portion of typewritten text. The handwriting recognition algorithm may then incorrectly recognize these strokes of annotations as a dash, a number zero, or the letter “O”.

Точность многих алгоритмов распознавания может быть в значительной степени повышена посредством «синтаксического разбора» (например, посредством анализа компоновки и/или «классификации») электронных чернил перед использованием алгоритма распознавания рукописного текста. Процесс классификации обычно определяет, является ли штрих электронных чернил частью рисунка (т.е. штрихом чернил рисунка) или частью рукописного текста (т.е. штрихом чернил текста). Также возможны алгоритмы классификации для идентификации других типов штрихов. Процесс анализа компоновки обычно группирует штрихи электронных чернил в значимые ассоциации, такие как слова, строки и абзацы. Процессы анализа компоновки и классификации могут быть использованы, таким образом, для идентификации того, какие штрихи в коллекции электронных чернил принадлежат одному слову, какие слова электронных чернил ассоциированы с одной строкой текста, записанного электронными чернилами, и какие строки текста, записанного электронными чернилами, ассоциированы с абзацем.The accuracy of many recognition algorithms can be greatly improved by “parsing” (for example, by analyzing the layout and / or “classification”) of electronic ink before using the handwriting recognition algorithm. The classification process usually determines whether a stroke of electronic ink is part of a drawing (i.e., a stroke of a drawing ink) or part of a handwritten text (i.e. a stroke of text ink). Classification algorithms are also possible to identify other types of strokes. The layout analysis process usually groups the strokes of electronic ink into meaningful associations, such as words, lines, and paragraphs. The layout and classification analysis processes can thus be used to identify which strokes in the electronic ink collection belong to one word, which electronic ink words are associated with one line of text recorded by electronic ink, and which lines of text recorded by electronic ink are associated with a paragraph.

Хотя анализ компоновки и классификация могут в значительной степени улучшить распознавание электронных чернил, многие разработчики программных приложений не осознают важность данных действий перед распознаванием электронных чернил. До последнего времени алгоритмы анализа компоновки и классификации не были легкодоступными для использования с существующими программными приложениями. Например, операционная система Microsoft® Windows XP Tablet PC Edition Version 2002 обычно продавалась с программным приложением Microsoft® Windows Journal для хранения, отображения и управления электронными чернилами. Хотя программное приложение Microsoft® Windows Journal использует внутреннюю программу синтаксического разбора, до последнего времени данная программа синтаксического разбора не была доступна для других программных приложений, работающих под операционной системой.Although layout analysis and classification can greatly improve electronic ink recognition, many software developers are unaware of the importance of these steps to electronic ink recognition. Until recently, layout and classification analysis algorithms were not readily available for use with existing software applications. For example, the Microsoft® Windows XP Tablet PC Edition Version 2002 operating system was usually sold with the Microsoft® Windows Journal software application for storing, displaying, and managing electronic ink. Although the Microsoft® Windows Journal software application uses an internal parsing program, until recently this parsing program was not available for other software applications running under the operating system.

Хотя процесс синтаксического разбора из программного приложения Windows Journal теперь отдельно доступен для других программных приложений, использование данной программы синтаксического разбора не является общеизвестным, и данная программа синтаксического разбора не может быть легко использована со многими программными приложениями, в которые пользователь может захотеть ввести рукописный текст. Кроме того, даже если разработчик программного приложения должен был создавать программу синтаксического разбора специально для использования с требуемым программным приложением (что само по себе может представлять собой трудный и трудоемкий процесс), выполнение процесса синтаксического разбора может быть совершенно трудоемким. Например, синтаксический разбор только нескольких штрихов электронных чернил, использующих относительно быстродействующий микропроцессор, может занимать у программы синтаксического разбора несколько секунд или даже нескольких минут. Если программное приложение должно останавливать свою работу до тех пор, пока не будет завершен процесс синтаксического разбора, то программное приложение становится слишком медленным для практического использования большинством пользователей.Although the parsing process from the Windows Journal software application is now separately available for other software applications, the use of this parsing program is not well known, and this parsing program cannot be easily used with many software applications in which the user may want to enter handwritten text. In addition, even if the software application developer had to create a parsing program specifically for use with the desired software application (which in itself can be a difficult and time-consuming process), the execution of the parsing process can be completely time-consuming. For example, parsing only a few strokes of electronic ink using a relatively fast microprocessor can take several seconds or even several minutes for a parsing program. If a software application should stop working until the parsing process is complete, then the software application becomes too slow for most users to use.

Следовательно, существует потребность в методиках обработки электронных чернил, которые могут быть использованы различными программными приложениями, например, для анализа компоновки, классификации и/или распознавания электронных чернил. Далее, существует потребность в методиках обработки электронных чернил, которые могут обрабатывать электронные чернила, в то же самое время все же позволяя программному приложению применять методики для принятия нового ввода электронных чернил без признания недействительными результатов обработки чернил.Therefore, there is a need for electronic ink processing techniques that can be used by various software applications, for example, to analyze the layout, classification and / or recognition of electronic ink. Further, there is a need for electronic ink processing techniques that can process electronic ink, while at the same time allowing the software application to apply the techniques to accept a new input of electronic ink without invalidating the ink processing results.

Краткое изложение сущности изобретенияSummary of the invention

Преимущественно различные примеры изобретения обеспечивают методики обработки электронных чернил, которые могут быть использованы различными программными приложениями для обработки электронных чернил. Далее, эти методики обработки электронных чернил позволяют производить обработку электронных чернил асинхронно относительно работы программного приложения, реализующего методики, так что электронные чернила могут быть обработаны без останова или существенной задержки работы программного приложения. Программное приложение даже может продолжать принимать новый ввод электронных чернил, в то время как обрабатывается предыдущий ввод электронных чернил.Mostly various examples of the invention provide electronic ink processing techniques that can be used by various electronic ink processing software applications. Further, these electronic ink processing techniques allow electronic ink processing to be performed asynchronously with respect to the operation of a software application that implements the techniques, so that electronic ink can be processed without stopping or significantly delaying the operation of the software application. The software application may even continue to accept a new input of electronic ink, while the previous input of electronic ink is processed.

В соответствии с различными примерами изобретения элементы в файле или документе могут быть описаны, основываясь на их пространственном положении относительно друг друга. Например, как штрих электронных чернил, так и машинописный текст могут быть описаны на основе одной системы пространственных координат. Используя пространственную информацию для описания элементов документа, программное приложение, управляющее документом, может поддерживать структуру данных, описывающую зависимость между ее элементами документа. В частности, программное приложение может поддерживать структуру данных, как описывающую класс различных элементов документа, так и определяющую ассоциации между различными элементами документа. Эти ассоциации могут быть определены, например, как информация, используемая для связи данных штрихов электронных чернил или их коллекций с другими элементами в электронном документе (такими как слова, строки, абзацы, рисунки, ячейки таблицы и т.д.).In accordance with various examples of the invention, elements in a file or document may be described based on their spatial position relative to each other. For example, both a stroke of electronic ink and typescript can be described on the basis of a single spatial coordinate system. Using spatial information to describe elements of a document, a document management software application can maintain a data structure that describes the relationship between its document elements. In particular, a software application can support a data structure that describes both a class of various elements of a document and defines associations between different elements of a document. These associations can be defined, for example, as the information used to link data strokes of electronic ink or their collections with other elements in an electronic document (such as words, lines, paragraphs, figures, table cells, etc.).

Посредством описания элементов документа в структуре данных файла или документа, основываясь на их пространственном положении, элементы документа для различных типов файлов могут использовать общие методики идентификации и управления своими элементами документа. Более конкретно, различные программные приложения могут описывать элементы документа в документе, основываясь на их пространственном положении, и применять данное пространственное положение, ссылаясь на использование общих способов анализа электронных чернил. Далее, посредством задания конкретной области документа для анализа каждое программное приложение может ограничить процесс анализа только требуемыми элементами в документе.By describing the elements of a document in the data structure of a file or document, based on their spatial position, document elements for different types of files can use common techniques for identifying and managing their document elements. More specifically, various software applications can describe elements of a document in a document based on their spatial position, and apply this spatial position, referring to the use of general methods for analyzing electronic ink. Further, by defining a specific area of the document for analysis, each software application can limit the analysis process to only the required elements in the document.

Для анализа нового ввода электронных чернил в документ в соответствии с различными примерами изобретения программное приложение, управляющее документом, модифицирует структуру данных, ассоциированную с документом, с целью включения новых чернил для анализа. Программное приложение затем подает эту структуру данных (или ее соответствующие части) на инструментальное средство анализа чернил, которое копирует некоторую часть или всю структуру данных для анализа (и работает над этой копией данных, которая является независимой от структуры данных документа программы приложения). Инструментальное средство анализа чернил передает копию процессу анализа, такому как процесс синтаксического разбора (например, процесс анализа компоновки и/или процесс классификации). Программное приложение может возобновить свою нормальную работу, включая прием нового ввода электронных чернил и/или других данных, в то время как выполняется процесс(ы) анализа чернил. В дополнение к приему новых электронных чернил программой приложения могут приниматься любые «другие данные», например, данные, модифицирующие размер, размещение или содержимое существующих чернил, текста, изображений, графиков, таблиц, блок-схем, диаграмм и т.п.; данные, добавляющие дополнительный текст, изображения, графики, таблицы, блок-схемы, диаграммы и т.п.; данные, удаляющие существующий текст, изображения, графики, таблицы, блок-схемы, диаграммы и т.п. После завершения всех требуемых процессов анализа результаты анализа возвращаются инструментальному средству анализа чернил.To analyze the new input of electronic ink into a document in accordance with various examples of the invention, the document management software application modifies the data structure associated with the document in order to include new ink for analysis. The software application then feeds this data structure (or its corresponding parts) to the ink analysis tool, which copies some or all of the data structure for analysis (and works on this copy of the data, which is independent of the data structure of the application program document). The ink analysis tool transmits a copy to an analysis process, such as a parsing process (for example, a layout analysis process and / or a classification process). The software application may resume its normal operation, including receiving a new input of electronic ink and / or other data, while the ink analysis process (s) is in progress. In addition to receiving new electronic ink, the application program can receive any “other data”, for example, data modifying the size, placement or contents of existing ink, text, images, graphs, tables, flowcharts, diagrams, etc .; data adding additional text, images, graphs, tables, flowcharts, diagrams, etc .; data deleting existing text, images, graphs, tables, flowcharts, diagrams, etc. After completing all the required analysis processes, the analysis results are returned to the ink analysis tool.

Таким образом, различные примеры систем и способов в соответствии с изобретением позволяют выполнять процессы анализа чернил асинхронно с работой программного приложения, использующего процесс анализа чернил. Данная асинхронная работа позволяет пользователю продолжать использовать программное приложение без задержки, вызываемой процессом анализа. Далее, это позволяет одновременно выполнять многочисленные процессы анализа.Thus, various examples of systems and methods in accordance with the invention allow ink analysis processes to be performed asynchronously with a software application using the ink analysis process. This asynchronous operation allows the user to continue using the software application without the delay caused by the analysis process. Further, it allows you to simultaneously perform multiple analysis processes.

В ответ на прием результатов анализа инструментальное средство анализа чернил получает текущую версию структуры данных электронного документа (которая может содержать новые и/или модифицированные данные, введенные во время выполнения процессов анализа) от программного приложения и согласовывает результаты анализа с текущей версией структуры данных. Посредством согласования результатов анализа с текущей версией структуры данных различные примеры изобретения могут исключить более сложные методики, такие как «блокировка», для асинхронного доступа к данным, используемым программным приложением. Вместо этого согласование может быть вызвано любым программным приложением без необходимости в сложной внутренней блокировке.In response to receiving the analysis results, the ink analysis tool receives the current version of the electronic document data structure (which may contain new and / or modified data entered during the analysis process) from the software application and reconciles the analysis results with the current version of the data structure. By matching the analysis results with the current version of the data structure, various examples of the invention can eliminate more complex techniques, such as “locking”, for asynchronous access to the data used by the software application. Instead, matching can be triggered by any software application without the need for complex internal locking.

После согласования результатов анализа с текущей версией структуры данных инструментальное средство анализа чернил затем может предоставить копию согласованных результатов анализа другому процессу анализа, такому как процесс распознавания рукописного текста. Опять же, программное приложение может возобновить свою нормальную работу, включая прием нового ввода электронных чернил и/или других данных, в то время как выполняется процесс(ы) второго анализа чернил. После того как будут завершены все требуемые процессы второго анализа, результаты процесса второго анализа возвращаются инструментальному средству анализа чернил. Инструментальное средство анализа чернил затем получает текущую версию структуры данных от программного приложения (которое снова может включать в себя новые и/или модифицированные данные) и согласовывает результаты второго анализа с текущей версией структуры данных. Инструментальное средство анализа чернил затем обновляет структуру данных, используя согласованные результаты процесса второго анализа. Конечно, может быть использовано любое количество процедур и/или этапов анализа чернил без отступления от изобретения.After matching the analysis results with the current version of the data structure, the ink analysis tool can then provide a copy of the agreed analysis results to another analysis process, such as a handwriting recognition process. Again, the software application can resume its normal operation, including receiving a new input of electronic ink and / or other data, while the process (s) of the second ink analysis is performed. After all the required second analysis processes have been 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 again may include new and / or modified data) and reconciles the results of the second analysis with the current version of the data structure. The ink analysis tool then updates the data structure using the consistent results of the second analysis process. Of course, any number of ink analysis procedures and / or steps can be used without departing from the invention.

Использование различных процессов анализа чернил, описанных выше, и пространственной информации, задающей соответствие или связывающей данные электронных чернил с другими признаками электронного документа, также может быть использовано для создания ценных, гибких и естественных аннотаций посредством чернил в электронном документе. Например, аспекты изобретения могут быть использованы для создания аннотаций посредством электронных чернил, которые динамически перемещаются и/или иным образом изменяются, основываясь на изменениях, выполненных в нижележащих аннотируемых элементах документа. Пользователи обычно аннотируют документы многими различными путями, например, они могут обводить, подчеркивать, выделять или зачеркивать слова; записывать примечания на полях; рисовать стрелки или другие указатели к аннотациям, расположенным на полях и т.д. Кроме того, пользователи делают аннотации на документах разнообразных отличающихся видов, включая, например, текст, электронные таблицы, рисунки, слайдовые презентации, таблицы, диаграммы, графики, блок-схемы и т.д.The use of various ink analysis processes described above and spatial information that matches or links electronic ink data with other features of an electronic document can also be used to create valuable, flexible and natural ink annotations in an electronic document. For example, aspects of the invention can be used to create annotations through electronic inks that dynamically move and / or otherwise change based on the changes made to the underlying annotated elements of the document. Users typically annotate documents in many different ways, for example, they can circle, underline, highlight, or cross out words; write marginal notes; draw arrows or other pointers to annotations located in margins, etc. In addition, users make annotations on documents of various different types, including, for example, text, spreadsheets, drawings, slide presentations, tables, charts, graphs, flowcharts, etc.

Гладкое встраивание аннотаций электронных чернил в электронный документ требует того, чтобы аннотации изменялись соответствующим образом, когда по какой-либо причине изменяется базовый электронный документ. Например, если пользователь обводит слово в электронном документе (в качестве аннотации) и затем добавляет текст где-то в документе перед данным словом, то это может вызвать перемещение обведенного слова. В данном случае аннотация в виде обведения должна перемещаться и оставаться со словом. В качестве другого примера, если пользователь добавляет или удаляет знаки из обведенного слова или иным образом изменяет его размер любым образом, аннотация в виде обведения должна вытягиваться или сжиматься для адаптации к новому размеру слова. Предпочтительно, когда по любой причине происходит переформатирование текста нижележащего электронного документа и/или обновление положений его составляющих элементов (абзацев, рисунков, колонок и т.д.) относительно друг друга и/или страницы, то аннотации, выполненные посредством электронных чернил, также перемещаются и остаются правильно расположенными относительно базового текста или другой информации. Если аннотации не будут изменяться таким образом относительно текста базового электронного документа, то становится нецелесообразным редактирование или совместное использование активных электронных документов после аннотирования, и распечатка на бумаге будет все же самым простым и наиболее применимым методом аннотирования.The smooth incorporation of electronic ink annotations into an electronic document requires that the annotations change accordingly when, for any reason, the underlying electronic document changes. For example, if a user encircles a word in an electronic document (as an annotation) and then adds text somewhere in the document before the given word, this may cause the circled word to move. In this case, the annotation in the form of a circle should move and remain with the word. As another example, if the user adds or removes characters from the circled word or otherwise resizes it in any way, the annotation in the form of a circle should be stretched or compressed to adapt to the new word size. Preferably, when for any reason the text of the underlying electronic document is reformatted and / or the provisions of its constituent elements (paragraphs, figures, columns, etc.) are updated relative to each other and / or the page, the annotations made by electronic ink also move and remain correctly positioned relative to the base text or other information. If the annotations are not changed in this way relative to the text of the underlying electronic document, then it becomes inappropriate to edit or share active electronic documents after annotation, and printing on paper will still be the simplest and most applicable annotation method.

Определение того, как изменить соответствующим образом аннотацию, будет зависеть от различных факторов, относящихся к аннотации и электронному документу. Например, соответствующее изменение аннотации в случае переформатирования текста может зависеть, например, от возможностей вычислительной системы (например, средства синтаксического разбора) в отношении: (а) идентификации электронных чернил в качестве аннотации; (b) идентификации типа аннотации, выполненной посредством электронных чернил; и (с) идентификации зависимости электронных чернил от конкретного элемента в базовом электронном документе. Хотя можно запросить у пользователя некоторую или всю информацию данного типа, такие системы потребовали бы от пользователя значительно более обременительные действия, чем аннотирование на бумаге. Следовательно, в соответствии с различными аспектами изобретения вышеупомянутая информация может быть получена из: (1) самих электронных чернил и (2) содержимого базового документа, включая пространственное положение различных элементов в документе относительно электронных чернил.Determining how to modify the annotation accordingly will depend on various factors related to the annotation and the electronic document. For example, a corresponding change in the annotation in case of reformatting the text may depend, for example, on the capabilities of the computing system (for example, parsing tools) with respect to: (a) identification of electronic ink as an annotation; (b) identifying the type of annotation made by electronic ink; and (c) identifying the dependence of electronic ink on a particular element in a basic electronic document. Although it is possible to request some or all of this type of information from the user, such systems would require significantly more onerous actions from the user than annotating on paper. Therefore, in accordance with various aspects of the invention, the above information can be obtained from: (1) the electronic ink itself and (2) the contents of the base document, including the spatial position of the various elements in the document relative to electronic ink.

Так как определение значения аннотаций, выполненных посредством чернил, может быть сложным и трудным, то крайне нецелесообразно ожидать, что каждая программа приложения, документ которой пользователь может захотеть аннотировать, будет индивидуальным образом реализовывать логику идентификации аннотации. Скорее было бы предпочтительным создать многократно используемый компонент, обеспечивающий данную функцию аннотирования, который легко может быть интегрирован в любую программу приложения. Например, поскольку операционная система вычислительной системы на основе перьевого ввода обеспечивает компоненты для сбора и воспроизведения электронных чернил, было бы предпочтительным, чтобы эта операционная система могла обеспечить компонент, который определяет значение аннотаций, выполненных посредством чернил (также называемый «средством синтаксического разбора аннотаций»), который достаточно эффективно работать с рассматриваемыми чернилами.Since determining the value of annotations made by ink can be complicated and difficult, it is extremely impractical to expect that each application program, a document of which the user may want to annotate, will individually implement the annotation identification logic. Rather, it would be preferable to create a reusable component that provides this annotation function, which can easily be integrated into any application program. For example, since the operating system of a pen-based computing system provides components for collecting and reproducing electronic ink, it would be preferable for this operating system to provide a component that determines the value of annotations made by ink (also called “annotation parser”) which is quite effective to work with the ink in question.

Идентификация содержимого базового электронного документа, однако, ставит существенные трудности при обеспечении возможностей «интеллектуальной» аннотации. Например, всевозможные различные программы приложений имеют в значительной степени несопоставимые способы хранения, управления и переформатирования документов. Настоящее изобретение обеспечивает многократно используемое средство синтаксического разбора аннотаций, способное определять зависимость возможных аннотаций, выполненных посредством чернил, от всевозможных различных типов электронных документов. Более конкретно, в соответствии с некоторыми аспектами настоящего изобретения обеспечивается механизм со средством синтаксического разбора аннотаций, который выполняет обратный вызов к программе приложения для получения соответствующей информации, относящейся к чернилам, подвергаемым синтаксическому разбору, (например, информации, относящейся к электронному документу в пространственной области, соответствующей аннотации чернил, для получения «контекста» к аннотации чернил). Этот механизм достаточно прост для его практического интегрирования в любое основанное на документе приложение, и он достаточно эффективен для работы с очень большими документами (которые могут обрабатываться частями, такими как страницы и т.п.).The identification of the contents of a basic electronic document, however, poses significant difficulties in providing the capabilities of “intellectual” annotation. For example, all kinds of different application programs have largely incomparable ways to store, manage, and reformat documents. The present invention provides a reusable annotation parser capable of determining the dependence of possible annotations made by ink on various types of electronic documents. More specifically, in accordance with some aspects of the present invention, there is provided a mechanism with parsing annotations that calls back to an application program to obtain relevant information related to parsed inks (e.g., information related to an electronic document in a spatial domain corresponding to the ink annotation to obtain a “context” to the ink annotation). This mechanism is simple enough for its practical integration into any document-based application, and it is effective enough to work with very large documents (which can be processed in parts, such as pages, etc.).

Методики обработки чернил в соответствии с различными примерами изобретения, таким образом, позволяют различным программным приложениям выполнять многочисленные процессы над электронными чернилами при помощи инструментального средства анализа чернил. Кроме того, программное приложение, использующее приведенные методики, может продолжать свою нормальную работу во время процесса анализа, включая прием нового ввода электронных чернил, без необходимости признания недействительными результатов процессов анализа.Ink processing techniques in accordance with various examples of the invention thus allow various software applications to perform numerous processes on electronic ink using an ink analysis tool. In addition, a software application using the above methods can continue its normal operation during the analysis process, including accepting a new input of electronic ink, without the need to invalidate the results of the analysis processes.

Перечень фигур чертежейList of drawings

Вышеупомянутые и другие задачи, признаки и преимущества настоящего изобретения очевидны и полностью понятны из последующего подробного описания, рассматриваемого совместно с прилагаемыми чертежами, на которых:The above and other objects, features and advantages of the present invention are obvious and fully understood from the following detailed description, taken in conjunction with the accompanying drawings, in which:

фиг.1 - схематическое представление цифровой вычислительной среды общего назначения, в которой могут быть реализованы некоторые аспекты настоящего изобретения;1 is a schematic representation of a general purpose digital computing environment in which some aspects of the present invention may be implemented;

фиг.2 - среда персонального компьютера (ПК) с перьевым вводом, в которой могут быть реализованы некоторые аспекты настоящего изобретения;figure 2 - the environment of a personal computer (PC) with a pen input, which can be implemented some aspects of the present invention;

фиг.3 и 4 - разнообразные признаки примерных реализаций аспектов изобретения, относящихся к аннотированию электронных документов;3 and 4 are various features of exemplary implementations of aspects of the invention related to the annotation of electronic documents;

фиг.5 - общие признаки синтаксического разбора чернил электронного документа;figure 5 - General features of parsing ink electronic document;

фиг.6А-6I - примерные структуры данных, применимые при осуществлении по меньшей мере некоторых аспектов настоящего изобретения;6A-6I are exemplary data structures applicable in the implementation of at least some aspects of the present invention;

фиг.7А-12В - примерные электронные документы и связанные с ними примерные структуры данных, применимые при обработке выполненных посредством электронных чернил аннотаций электронных документов;7A-12B are exemplary electronic documents and related exemplary data structures applicable to processing annotations of electronic documents made by electronic ink;

фиг.13А-14В - примерные электронные документы и связанные с ними примерные структуры данных, применимые при обработке признаков электронных блок-схем в электронных документах;13A-14B are exemplary electronic documents and associated exemplary data structures applicable to processing features of electronic block diagrams in electronic documents;

фиг.15А-15С - примерные электронные документы и связанные с ними примерные структуры данных, применимые при обработке признаков электронных таблиц в электронных документах;figa-15C - exemplary electronic documents and related exemplary data structures applicable to the processing of signs of spreadsheets in electronic documents;

фиг.16А-16D - способ обработки электронных чернил в соответствии с различными примерами изобретения;figa-16D is a method of processing electronic ink in accordance with various examples of the invention;

фиг.17, 19-21 и 23-26 - иллюстрации переноса объектов данных во время примерных процессов анализа чернил в соответствии с различными примерами изобретения;17, 19-21 and 23-26 illustrate the transfer of data objects during exemplary ink analysis processes in accordance with various examples of the invention;

фиг.18 и 22 - простые деревья данных, которыми можно манипулировать в соответствии с различными примерами изобретения;Figs. 18 and 22 are simple data trees that can be manipulated in accordance with various examples of the invention;

фиг.27 - схема последовательности операций, изображающая способ согласования результатов анализа с текущим состоянием документа; иFig. 27 is a flowchart depicting a method for matching analysis results with the current state of a document; and

фиг.28 - средство асинхронного анализа электронных чернил в соответствии с другими примерами изобретения.Fig - means for the asynchronous analysis of electronic ink in accordance with other examples of the invention.

Подробное описание чертежейDetailed Description of Drawings

ТерминыTerms

В настоящем описании изобретения используются следующие термины и, если не указано иначе или явно не следует из контекста, термины имеют значение, приведенное ниже:In the present description of the invention, the following terms are used and, unless otherwise specified or clearly follows from the context, the terms have the meaning given below:

«Воспроизводить», или «воспроизведенный», или «воспроизведение» - процесс определения того, каким образом информация (включая текст, графики и/или электронные чернила) должна отображаться, например, на экране, печататься или выводиться некоторым другим образом.“Play,” or “reproduced,” or “reproduction” is the process of determining how information (including text, graphics, and / or electronic ink) should be displayed, for example, on a screen, printed, or printed in some other way.

«Машиночитаемый компьютером носитель» - любой доступный носитель, к которому пользователь на компьютерной системе может осуществить доступ. В качестве примера, а не ограничения, «машиночитаемый носитель» может включать в себя носитель данных компьютера и среду передачи данных. «Носитель данных компьютера» включает в себя энергозависимые и энергонезависимые, съемные и несъемные носители, выполненные любым способом или по любой технологии для хранения информации, такой как машиночитаемые компьютером инструкции, структуры данных, программные модули или другие данные. «Носитель данных компьютера» включает в себя, но не ограничительном смысле, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое программируемое ПЗУ (EEPROM), флэш-память или память другой технологии; компакт диск, цифровой многофункциональный диск (DVD) или другие оптические запоминающие устройства; магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства; или любой другой носитель, который может быть использован для хранения требуемой информации и к которому компьютер может осуществить доступ. «Среда передачи данных» обычно воплощает машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном данными сигнале, таком как несущая волна или другой транспортный механизм, и включает в себя любую среду доставки информации. Термин «модулированный данными сигнал» означает сигнал, одна или несколько характеристик которого установлены или изменены так, что обеспечивается кодирование кодируют информации в этом сигнале. В качестве примера, а не ограничения, среда передачи данных включает в себя проводные среды, такие как проводную сеть или непосредственное проводное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Комбинации любых из вышеперечисленных носителей данных и сред передачи также охватываются понятием «машиночитаемый носитель».“Computer-readable media” is any accessible medium that a user can access on a computer system. By way of example, and not limitation, a “computer readable medium” may include a computer storage medium and a data medium. A “computer storage medium” includes volatile and non-volatile, removable and non-removable media made in any way or by any technology for storing information such as computer-readable instructions, data structures, program modules or other data. “Computer storage medium” includes, but is not limited to, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other technology memory; compact disc, digital multifunctional disc (DVD) or other optical storage devices; magnetic cassettes, magnetic tape, magnetic disk storage devices or other magnetic storage devices; or any other medium that can be used to store the required information and to which the computer can access. A “data medium” typically embodies machine-readable instructions, data structures, program modules or other data in a data-modulated signal, such as a carrier wave or other transport mechanism, and includes any information delivery medium. The term "modulated data signal" means a signal, one or more of whose characteristics are set or changed so that encoding is provided to encode information in this signal. By way of example, and not limitation, a communication medium includes wired media such as a wired network or a direct wired connection, and wireless media such as acoustic, radio frequency, infrared, and other wireless media. Combinations of any of the above storage media and transmission media are also encompassed by the term “computer readable medium”.

ОбзорOverview

В соответствии с различными примерами изобретения свойства элемента в документе (или файле другого типа) могут включать в себя информацию, относящуюся к пространственному положению данного элемента в документе. Таким образом, как штрих электронных чернил, так и машинописный текст могут быть описаны на основе одной системы пространственных координат для документа и/или на основе пространственной взаимосвязи или другой взаимосвязи с другими элементами в документе. Кроме того, связанные элементы в документе могут быть идентифицированы просто посредством идентификации пространственной области документа, содержащей эти элементы и/или посредством связывания этих элементов.In accordance with various examples of the invention, the properties of an element in a document (or other type of file) may include information regarding the spatial position of the element in the document. Thus, both a stroke of electronic ink and typewritten text can be described based on one spatial coordinate system for a document and / or based on a spatial relationship or other relationship with other elements in the document. In addition, related elements in a document can be identified simply by identifying the spatial area of the document containing these elements and / or by linking these elements.

Используя упомянутую пространственную взаимосвязь между различными элементами документа, программное приложение может создавать и поддерживать структуру данных, которая описывает другие взаимосвязи между элементами документа. Например, программное приложение может поддерживать структуру данных, такую как дерево данных, которая определяет класс для различных элементов в документе. Таким образом, узел в структуре данных может соответствовать рукописному слову или рисунку, содержащему один или несколько штрихов чернил, и данные, хранимые в узле, могут дополнительно означать положение данного слова на странице. Любые другие подходящие или стандартные обычно хранимые данные, относящиеся к штриху чернил и/или слову электронных чернил, также могут хранится в узле слова.Using the aforementioned spatial relationship between the various elements of the document, the software application can create and maintain a data structure that describes other relationships between the elements of the document. For example, a software application may support a data structure, such as a data tree, that defines a class for various elements in a document. Thus, the node in the data structure can correspond to a handwritten word or drawing containing one or more strokes of ink, and the data stored in the node can additionally indicate the position of the word on the page. Any other suitable or standard commonly stored data related to the ink stroke and / or the word electronic ink can also be stored in the word node.

Структура данных этого типа также может ассоциативно связывать элементы документа (такие как отдельные штрихи чернил или знаки машинописного текста) в значимые группы, такие как слова, строки слов, предложения, абзацы и т.п. Таким образом, если программное приложение поддерживает древовидную структуру документа, которая описывает абзац рукописных электронных чернил, концевые узлы структуры данных могут включать в себя данные, относящиеся к отдельным штрихам электронных чернил, и один или несколько штрихов могут быть ассоциативно связаны вместе в структуру данных в качестве узлов слова, соответствующих словам в абзаце (например, словам, определенным средство синтаксического разбора и/или средством распознавания). Древовидная структура затем может ассоциативно связывать узлы слова с узлами строки, соответствующими строкам в абзаце. Каждый узел строки дополнительно может быть ассоциативно связан с узлом, соответствующим абзацу. Далее, программное приложение может поддерживать дерево или другую структуру данных, которая ассоциативно связывает узел, соответствующий штриху электронных чернил и/или некоторой другой группировке электронных чернил, с другим узлом, соответствующим нечернильному элементу документа, такому как изображение; чернильный рисунок; машинописный знак, слово, строка, абзац или т.п. Приведенные структуры данных, таким образом, могут быть использованы для определения зависимостей между ассоциированными штрихами электронных чернил, чтобы отличать штрихи электронных чернил, образующих рукописный текст, от штрихов электронных чернил, аннотирующих нечернильные элементы документа, и/или связывать штрихи электронных чернил с другими элементами документа.A data structure of this type can also associatively link document elements (such as single ink strokes or typewriter characters) into meaningful groups such as words, lines of words, sentences, paragraphs, etc. Thus, if the software application supports a tree structure of a document that describes a paragraph of handwritten electronic ink, the end nodes of the data structure may include data related to individual strokes of electronic ink, and one or more strokes may be associated together in the data structure as word nodes corresponding to words in a paragraph (for example, words defined by parser and / or recognition tool). The tree structure can then associatively associate the word nodes with the line nodes corresponding to the lines in the paragraph. Each line node can additionally be associated with a node corresponding to a paragraph. Further, the software application may support a tree or other data structure that associatively associates a node corresponding to a stroke of electronic ink and / or some other grouping of electronic ink with another node corresponding to a non-ink element of a document, such as an image; ink drawing; typewriter character, word, line, paragraph or the like The given data structures can thus be used to determine the relationships between the associated strokes of electronic ink, to distinguish strokes of electronic ink forming a handwritten text from strokes of electronic ink annotating non-ink elements of a document, and / or to associate strokes of electronic ink with other elements of a document .

Как подробно описано ниже, эти структуры данных могут быть использованы с инструментальным средством анализа чернил в соответствии с различными примерами изобретения для анализа электронных чернил в документе. В соответствии с различными примерами изобретения программное приложение может провести анализ электронных чернил в документе посредством создания сначала структуры данных для документа. Эта структура данных описывает взаимосвязь между элементами документа, которые уже были проанализированы (если они есть), и, таким образом, обеспечивает контекст, в котором будут анализироваться любые новые электронные чернила. Упомянутая структура данных или «объект контекста анализа» также включает в себя любые новые электронные чернила, которые не были проанализированы. Т.е. объект контекста анализа также включает в себя электронные чернила, для которых еще не была установлена взаимосвязь с другими элементами документа. Для некоторых примеров изобретения программное приложение создает свой собственный объект контекста анализа. В соответствии с другими примерами изобретения, однако, программное приложение использует инструментальное средство анализа чернил или другое инструментальное средство для создания объекта контекста анализа.As described in detail below, these data structures can be used with an ink analysis tool in accordance with various examples of the invention to analyze electronic ink in a document. According to various examples of the invention, a software application can analyze electronic ink in a document by first creating a data structure for the document. This data structure describes the relationship between document elements that have already been analyzed (if any), and thus provides the context in which any new electronic ink will be analyzed. Said data structure or “analysis context object” also includes any new electronic ink that has not been analyzed. Those. The analysis context object also includes electronic ink, for which interconnection with other elements of the document has not yet been established. For some examples of the invention, the software application creates its own analysis context object. According to other examples of the invention, however, the software application uses an ink analysis tool or other tool to create an analysis context object.

После того как программное приложение предоставило объект контекста анализа инструментальному средству анализа чернил (или инструментальное средство анализа чернил создало объект контекста анализа), инструментальное средство анализа чернил делает копию или извлекает информацию, относящуюся по меньшей мере к части объекта контекста анализа, содержащего непроанализированные электронные чернила. Посредством выполнения копии или приема информации, относящейся к требуемой части объекта контекста анализа, инструментальное средство анализа чернил создает структуру данных, которая впоследствии может быть проанализирована без изменения объекта контекста анализа, поддерживаемого программным приложением. Т.е. копия не зависит от фактического электронного документа, используемого в программном приложении, и, таким образом, может упоминаться ниже как «независимый от документа» объект контекста анализа.After the software application has provided the analysis context object to the ink analysis tool (or the ink analysis tool has created the analysis context object), the ink analysis tool makes a copy or retrieves information related to at least a part of the analysis context object containing unanalyzed electronic ink. By making a copy or receiving information related to the desired part of the analysis context object, the ink analysis tool creates a data structure that can subsequently be analyzed without changing the analysis context object supported by the software application. Those. the copy is independent of the actual electronic document used in the software application, and thus may be referred to below as a “document-independent” analysis context object.

Как только инструментальное средство анализа чернил создает независимый от документа объект контекста анализа, инструментальное средство анализа чернил предоставляет данный независимый от документа объект контекста анализа одному или нескольким процессам анализа. Например, если распознавание рукописного текста должно выполняться в отношении непроанализированных электронных чернил в документе, то тогда инструментальное средство анализа чернил может предоставить независимый от документа объект контекста анализа процессам классификации и/или анализа компоновки для классификации чернил на штрихи текста и рисунка (если необходимо, или если требуется) и затем группирования штрихов текста непроанализированных электронных чернил в ассоциированные группировки, на основе компоновки чернил. В то время, как процессы классификации и/или анализа компоновки анализируют независимый от документа объект контекста анализа, программное приложение может продолжать свою обычную работу. В частности, программное приложение может продолжать принимать новый ввод электронных чернил и/или любые другие данные в электронном документе, выполняемом программой приложения.Once the ink analysis tool creates a document-independent analysis context object, the ink analysis tool provides this document-independent analysis context object to one or more analysis processes. For example, if handwriting recognition is to be performed with respect to unanalyzed electronic ink in a document, then the ink analysis tool can provide a document-independent context analysis object to the classification and / or layout analysis processes to classify ink into strokes of text and drawing (if necessary, or if required) and then grouping the strokes of the text of the unanalyzed electronic ink into associated groups, based on the layout of the ink. While the classification and / or layout analysis processes analyze a document-independent analysis context object, the software application can continue its normal operation. In particular, the software application may continue to accept new electronic ink input and / or any other data in the electronic document executed by the application program.

Когда процесс анализа, такой как процесс синтаксического разбора, завершает свой анализ независимого от документа объекта контекста анализа, он возвращает результаты анализа инструментальному средству анализа чернил. Более конкретно, процесс синтаксического разбора (который может включать в себя, в частности, процессы классификации и анализа компоновки, как описано выше) возвратит модифицированную версию независимого от документа объекта контекста анализа, изображающего новые взаимосвязи для ранее непроанализированных электронных чернил. Хотя программное приложение может свободно принимать новый ввод электронных чернил и/или любые другие данные для документа во время вышеописанной операции синтаксического разбора, однако, текущая версия объекта контекста анализа для документа (т.е. версия, поддерживаемая приложением) может отличаться как от независимого от документа объекта контекста анализа, первоначально предоставленного инструментальному средству анализа чернил, так и от результатов синтаксического разбора, предоставленных процессом синтаксического разбора.When an analysis process, such as a parsing process, completes its analysis of a document-independent analysis context object, it returns the analysis results to the ink analysis tool. More specifically, the parsing process (which may include, in particular, the processes of classifying and analyzing the layout as described above) will return a modified version of the document-independent analysis context object depicting new relationships for previously unanalyzed electronic ink. Although the software application is free to accept new electronic ink input and / or any other data for the document during the parsing operation described above, however, the current version of the analysis context object for the document (i.e., the version supported by the application) may be different from being independent of an analysis context object document originally provided to the ink analysis tool, and from the parsing results provided by the parsing process.

Следовательно, в соответствии с некоторыми примерами изобретения инструментальное средство анализа чернил может получать текущую версию объекта контекста анализа от программного приложения и согласовывать результаты синтаксического разбора с текущей версией объекта контекста анализа. Во время данного процесса согласования инструментальное средство анализа чернил обновляет текущую версию объекта контекста анализа для отражения результатов процесса синтаксического разбора. Инструментальное средство анализа чернил затем передает согласованные данные от текущего объекта контекста анализа процессу распознавания рукописного текста для распознавания. В соответствии с другими примерами изобретения, однако, инструментальное средство анализа чернил может пропустить процесс согласования и, вместо этого, передать результаты синтаксического разбора непосредственно процессу распознавания рукописного текста.Therefore, in accordance with some examples of the invention, the ink analysis tool may receive the current version of the analysis context object from the software application and match the parsing results with the current version of the analysis context object. During this matching process, the ink analysis tool updates the current version of the analysis context object to reflect the results of the parsing process. The ink analysis tool then transmits the agreed data from the current analysis context object to the handwriting recognition process for recognition. According to other examples of the invention, however, the ink analysis tool may skip the matching process and, instead, pass the parsing results directly to the handwriting recognition process.

Как только результаты синтаксического разбора согласованы с текущей версией объекта контекста анализа, программное приложение может снова возвратиться к своей обычной работе, и, таким образом, оно может продолжать принимать новый ввод электронных чернил и/или любые другие данные, относящиеся к документу. Тем временем, процесс распознавания анализирует согласованные данные от текущего объекта контекста анализа (или, альтернативно, результаты синтаксического разбора). После того как процесс распознавания завершит свой анализ согласованных данных (или результатов синтаксического разбора), он возвращает свои результаты распознавания инструментальному средству анализа чернил. Опять же, так как программное приложение, может быть, приняло новый ввод электронных чернил и/или любые другие данные для документа во время работы процесса распознавания, инструментальное средство анализа чернил получает текущую версию объекта контекста анализа от программного приложения. Инструментальное средство анализа чернил затем согласовывает результаты процесса распознавания с текущей версией объекта контекста анализа для обновления текущей версии объекта контекста анализа результатами распознавания.Once the parsing results are consistent with the current version of the analysis context object, the software application can return to its usual work again, and thus it can continue to accept new electronic ink input and / or any other data related to the document. In the meantime, the recognition process analyzes consistent data from the current analysis context object (or, alternatively, parsing results). After the recognition process completes its analysis of the agreed data (or parsing results), it returns its recognition results to the ink analysis tool. Again, since the software application may have received a new input of electronic ink and / or any other data for the document during the recognition process, the ink analysis tool receives the current version of the analysis context object from the software application. The ink analysis tool then matches the results of the recognition process with the current version of the analysis context object to update the current version of the analysis context object with recognition results.

Примерное операционное окружениеExemplary Operating Environment

На фиг.1 изображено схематическое представление цифровой вычислительной среды общего назначения, которая может быть использована для реализации различных аспектов настоящего изобретения. На фиг.1 компьютер 100 включает в себя блок 110 обработки данных, системную память 120 и системную шину 130, которая соединяет различные компоненты системы, включая системную память 120, с блоком 110 обработки данных. Системная шина 130 может быть любой из шинных структур нескольких видов, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из разнообразных шинных архитектур. Системная память 120 может включать в себя постоянное запоминающее устройство (ПЗУ) 140 и оперативное запоминающее устройство (ОЗУ) 150.1 is a schematic representation of a general-purpose digital computing environment that can be used to implement various aspects of the present invention. 1, a computer 100 includes a data processing unit 110, a system memory 120, and a system bus 130 that connects various system components, including a system memory 120, to a data processing unit 110. The system bus 130 may be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. System memory 120 may include read only memory (ROM) 140 and random access memory (RAM) 150.

Базовая система 160 ввода-вывода (BIOS), содержащая базовые процедуры, которые способствуют передаче информации между элементами в компьютере 100, например, во время запуска, хранится в ПЗУ 140. Компьютер 100 также может включать в себя накопитель 170 на жестких магнитных дисках для считывания и записи на жесткий диск (не показан), дисковод 180 для магнитного диска для считывания или записи на съемный магнитный диск 190 и дисковод 191 для оптического диска для считывания или записи на съемный оптический диск 192, такой как компакт-диск или другие оптические носители. Накопитель 170 на жестких магнитных дисках, дисковод 180 для магнитного диска и дисковод 191 для оптического диска подсоединены к системной шине 130 посредством интерфейса 192 накопителя на жестких магнитных дисках, интерфейса 193 дисковода для магнитного диска и интерфейса 194 дисковода для оптического диска, соответственно. Данные дисководы и накопители и связанные с ними машиночитаемые носители обеспечивают энергонезависимое хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для персонального компьютера 100. Для специалиста в данной области техники очевидно, что в примерной операционной среде также могут быть использованы другие типы машиночитаемых носителей, которые могут хранить данные, к которым компьютер может осуществить доступ, такие как магнитные кассеты, карты флэш-памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ) и т.п.A basic input / output system (BIOS) 160 comprising basic procedures that facilitate transferring information between elements in a computer 100, for example, during startup, is stored in a ROM 140. The computer 100 may also include a hard disk drive 170 for reading and writing to a hard disk (not shown), a magnetic disk drive 180 for reading or writing to a removable magnetic disk 190, and an optical disk drive 191 for reading or writing to a removable optical disk 192, such as a compact disk or other optical carriers. A hard disk drive 170, a magnetic disk drive 180, and an optical disk drive 191 are connected to the system bus 130 via a hard disk drive interface 192, a magnetic disk drive interface 193, and an optical disk drive interface 194, respectively. These drives and drives and related computer-readable media provide non-volatile storage of computer-readable instructions, data structures, program modules and other data for a personal computer 100. For a person skilled in the art, it will be appreciated that other types of computer-readable media may also be used in an exemplary operating environment. that can store data that the computer can access, such as magnetic tapes, flash memory cards, digital video discs, cartridges Ulli, random access memories (RAMs), read only memories (ROM), etc.

Несколько программных модулей могут храниться на накопителе 170 на жестких магнитных дисках, магнитном диске 190, оптическом диске 192, в ПЗУ 140 или ОЗУ 150, включая операционную систему 195, одну или несколько программ 196 приложений, другие программные модули 197 и данные 198 программ. Пользователь может ввести команды и информацию в компьютер 100 при помощи устройств ввода, таких как клавиатура 101 и указательное устройство 102 (такое как мышь). Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой планшет, антенну спутниковой связи, сканер и т.п. Приведенные и другие устройства ввода часто подключены к блоку 110 обработки данных через интерфейс 106 последовательного порта, который подсоединен к системной шине 130, но они также могут быть подсоединены при помощи других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB) и т.п. Далее, приведенные устройства могут быть подсоединены непосредственно к системной шине 130 через соответствующий интерфейс (не показан).Several software modules may be stored on a hard disk drive 170, magnetic disk 190, optical disk 192, in ROM 140 or RAM 150, including operating system 195, one or more application programs 196, other program modules 197, and program data 198. The user can enter commands and information into the computer 100 using input devices such as a keyboard 101 and a pointing device 102 (such as a mouse). Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, and the like. The above and other input devices are often connected to the data processing unit 110 via the serial port interface 106, which is connected to the system bus 130, but they can also be connected using other interfaces, such as a parallel port, a game port, or a universal serial bus (USB) etc. Further, the above devices can be connected directly to the system bus 130 through an appropriate interface (not shown).

Монитор 107 или устройство отображения другого типа также может быть подсоединено к системной шине 130 через интерфейс, такой как видеоадаптер 108. В дополнение к монитору 107 персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры. В одном примере предусмотрены цифровой преобразователь 165 перьевого ввода и сопровождающая его ручка или перо 166 для цифрового ввода данных от руки. Хотя на фиг.1 показано соединение между цифровым преобразователем 165 перьевого ввода и интерфейсом 106 последовательного порта, на практике цифровой преобразователь 165 перьевого ввода может быть непосредственно соединен с блоком 110 обработки данных, или он может быть подсоединен к блоку 110 обработки данных любым подходящим образом, например при помощи параллельного порта или другого интерфейса и системной шины 130, что известно из уровня техники. Кроме того, хотя цифровой преобразователь 165 показан отдельно от монитора 107 на фиг.1, используемая область ввода цифрового преобразователя 165 может иметь совместную пространственную протяженность с областью отображения монитора 107. Далее, цифровой преобразователь 165 может быть встроен в монитор 107, или он может существовать в виде отдельного устройства, наложенного или иным образом присоединенного к монитору 107.A monitor 107 or other type of display device may also be connected to the system bus 130 via an interface, such as a video adapter 108. In addition to the monitor 107, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. In one example, a pen input digitizer 165 and an accompanying pen or pen 166 are provided for hand-held digital input. Although FIG. 1 shows the connection between the pen input 165 and the serial port interface 106, in practice, the pen input 165 can be directly connected to the data processing unit 110, or it can be connected to the data processing unit 110 in any suitable manner, for example, using a parallel port or other interface and system bus 130, as is known in the art. In addition, although the digital converter 165 is shown separately from the monitor 107 in FIG. 1, the usable input region of the digital converter 165 may have a spatial extension with the display area of the monitor 107. Further, the digital converter 165 may be integrated in the monitor 107, or it may exist in the form of a separate device, superimposed or otherwise attached to the monitor 107.

Компьютер 100 может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 109. Удаленным компьютером 109 может быть сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой общий узел сети, и он обычно включает в себя многие или все из элементов, описанных выше в отношении компьютера 100, хотя для простоты только устройство 111 хранения данных изображено на фиг.1. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (ЛС, LAN) 112 и глобальную сеть (ГС, WAN) 113. Такие сетевые среды являются общепринятыми в офисах, компьютерных сетях масштаба предприятия, интрасетях и Интернете, используя как проводные, так и беспроводные соединения.Computer 100 may operate in a network environment using logical connections to one or more remote computers, such as remote computer 109. Remote computer 109 may be a server, router, network PC, peer device, or other common network node, and it typically includes many or all of the elements described above with respect to the computer 100, although for simplicity only the data storage device 111 is shown in FIG. The logical connections shown in FIG. 1 include a local area network (LAN) 112 and a wide area network (WAN) 113. Such network environments are common in offices, enterprise-wide computer networks, intranets, and the Internet, using both wired and wireless connections.

При использовании в сетевой среде ЛС компьютер 100 подсоединен к локальной сети 112 посредством сетевого интерфейса или адаптера 114. При использовании в сетевом окружении ГС персональный компьютер 100 обычно включает в себя модем 115 или другое средство для установления линии связи по глобальной сети 113, такой как Интернет. Модем 115, который может быть внутренним или внешним для компьютера 100, может подключаться к системной шине 130 через интерфейс 106 последовательного порта. В сетевом окружении программные модули, описанные в отношении персонального компьютера 100 или его частей, могут храниться на удаленном устройстве хранения данных.When used in a LAN network environment, the computer 100 is connected to the local area network 112 via a network interface or adapter 114. When used in a network environment, the personal computer 100 typically includes a modem 115 or other means for establishing a communication link over a wide area network 113, such as the Internet . The modem 115, which may be internal or external to the computer 100, may be connected to the system bus 130 via the serial port interface 106. In a networked environment, program modules described with respect to a personal computer 100 or parts thereof may be stored on a remote data storage device.

Следует понимать, что показанные сетевые соединения являются примерными и могут быть использованы другие методики для установления линии связи между компьютерами. Предполагается существование любых из различных общеизвестных протоколов, таких как протокол управления передачей/протокол Интернет (TCP/IP), Ethernet, протокол передачи файлов (FTP), протокол передачи гипертекста (HTTP), протокол передачи дейтаграмм пользователя (UDP) и т.п., и система может работать в конфигурации “пользователь-сервер”, позволяя пользователю извлекать Web-страницы с Web-сервера. Могут быть использованы любые из различных обычных Web-браузеров для отображения и управления данными на Web-страницах.It should be understood that the network connections shown are exemplary and other techniques may be used to establish a communication link between computers. Any of various well-known protocols are supposed to exist, such as Transmission Control Protocol / Internet Protocol (TCP / IP), Ethernet, File Transfer Protocol (FTP), Hypertext Transfer Protocol (HTTP), User Datagram Protocol (UDP), etc. , and the system can operate in a user-server configuration, allowing the user to retrieve Web pages from a Web server. Any of various conventional web browsers can be used to display and manage data on web pages.

Хотя среда по фиг.1 изображает примерную среду, понятно, что также могут быть использованы другие вычислительные среды. Например, один или несколько примеров настоящего изобретения могут использовать среды, имеющие меньшее количество, чем все из различных аспектов, показанных на фиг.1 и описанных выше, и указанные аспекты могут проявляться в различных комбинациях и субкомбинациях, которые очевидны для специалиста в данной области техники.Although the environment of FIG. 1 depicts an exemplary environment, it is understood that other computing environments may also be used. For example, one or more examples of the present invention can use media having a smaller amount than all of the various aspects shown in FIG. 1 and described above, and these aspects can manifest themselves in various combinations and subcombinations that are obvious to a person skilled in the art .

На фиг.2 изображен персональный компьютер (ПК) 201 с перьевым вводом, который может использоваться в соответствии с различными аспектами настоящего изобретения. Любой или все признаки, подсистемы и функции в системе по фиг.1 могут быть включены в компьютер по фиг.2. Система 201 персонального компьютера с перьевым вводом включает в себя большую поверхность 202 отображения, например, преобразующий в цифровую форму дисплей с плоским экраном, такой как экран жидкокристаллического дисплея (ЖКД, LCD), на котором отображается множество окон 203. Используя перо 204, пользователь может выбрать, выделить и записать на преобразующей в цифровую форму области отображения. Примеры подходящих преобразующих в цифровую форму панелей отображения включают в себя электромагнитные цифровые преобразователи с перьевым вводом, таким образом цифровые преобразователи с перьевым вводом, поставляемые компанией Mutoh Co. (теперь известной как FinePoint Innovations Co.) или Wacom Technology Co. Также могут быть использованы другие типы цифровых преобразователей с перьевым вводом, например, оптические цифровые преобразователи и сенсорные цифровые преобразователи. Вычислительная система 201 с перьевым вводом интерпретирует жесты, сделанные с использованием пера 204, для манипуляции данными, ввода текста и выполнения обычных задач компьютерного приложения, таких как создание, редактирование и изменение электронных таблиц, программ обработки текстов и т.п.Figure 2 shows a personal computer (PC) 201 with a pen input, which can be used in accordance with various aspects of the present invention. Any or all of the signs, subsystems, and functions in the system of FIG. 1 may be included in the computer of FIG. 2. The pen input personal computer system 201 includes a large display surface 202, for example, a digitizing flat screen display, such as a liquid crystal display (LCD) screen, on which a plurality of windows 203 are displayed. Using the pen 204, a user can Select, highlight, and record on the digitizing display area. Examples of suitable digitizing display panels include pen-type electromagnetic digital converters, thus pen-type digital converters supplied by Mutoh Co. (now known as FinePoint Innovations Co.) or Wacom Technology Co. Other types of pen-type digital converters may also be used, for example, optical digital converters and touch-sensitive digital converters. Pen-based computing system 201 interprets gestures made using pen 204 to manipulate data, enter text, and perform common computer application tasks, such as creating, editing, and editing spreadsheets, word processing programs, and the like.

Перо 204 может быть оснащено кнопками или другими признаками, чтобы дополнять его возможности. В одном примере перо 204 может быть выполнено в виде «карандаша» или «ручки», в которых один конец составляет пишущую часть, и другой конец составляет конец «ластика», и который при движении по дисплею указывает части электронных чернил на дисплее, которые должны быть стерты. Также могут быть использованы другие типы устройств ввода, такие как мышь, шаровой манипулятор, клавиатура или т.п. Дополнительно, собственный палец пользователя может использоваться для выбора или указания частей отображаемого изображения на сенсорном или бесконтактном дисплее. Следовательно, термин «устройство ввода пользователем», используемый в настоящей заявке, как предполагается, имеет широкое определение и охватывает многие варианты общеизвестных устройств ввода.Pen 204 may be equipped with buttons or other features to complement its capabilities. In one example, the pen 204 can be in the form of a “pencil” or “pen”, in which one end makes up the writing part, and the other end makes up the end of the “eraser”, and which when moving along the display indicates the parts of electronic ink on the display that should to be erased. Other types of input devices may also be used, such as a mouse, trackball, keyboard, or the like. Additionally, the user's own finger can be used to select or indicate portions of the displayed image on a touch or non-contact display. Therefore, the term “user input device” used in this application is intended to be broadly defined and encompasses many variations of well-known input devices.

В различных примерах система обеспечивает платформу обработки чернил в виде комплекта служб модели компонентных объектов (COM), которые программа приложения может использовать для сбора, управления и хранения чернил. Платформа обработки чернил также может включать в себя язык разметки, включая язык, аналогичный расширяемому языку разметки (XML). Далее, система может использовать распределенную модель компонентных объектов (DCOM) в качестве другого варианта реализации. Могут быть использованы еще другие реализации, включающие в себя модель программирования Win32 и модель программирования.Net компании Microsoft Corporation. Упомянутые платформы имеются в продаже и известны в технике.In various examples, the system provides an ink processing platform in the form of a set of component object model (COM) services that the application program can use to collect, manage, and store ink. The ink processing platform may also include a markup language, including a language similar to Extensible Markup Language (XML). Further, the system can use the distributed component object model (DCOM) as another implementation option. Other implementations may be used, including the Win32 programming model and the Microsoft Corporation .Net programming model. Mentioned platforms are commercially available and known in the art.

В дополнение к использованию перьевых вычислительных систем с полными рабочими характеристиками или «планшетных ПК» (например, трансформируемых переносных компьютеров или планшетных ПК типа «грифельной доски») аспекты настоящего изобретения могут использоваться совместно с другими типами перьевых вычислительных систем и/или других устройств, которые принимают данные в виде электронных чернил и/или принимают ввод электронной ручкой или пером, такие как: ручные или карманные вычислительные системы; персональные цифровые информационные устройства; карманные персональные компьютеры; мобильные и сотовые телефоны, пейджеры и другие устройства связи; часы; электроприборы; и любые другие приборы или системы, которые включают в себя монитор или другое устройство отображения и/или цифровой преобразователь дигитайзер, который представляет отпечатанную или графическую информацию пользователям и/или позволяет производить ввод с использованием электронной ручки или пера, или которые могут обрабатывать электронные чернила, собранные другим устройством (например, обычный настольный компьютер, который может обрабатывать электронные чернила, собранные планшетным ПК).In addition to using full-performance pen computing systems or “tablet PCs” (eg, convertible laptops or slate type tablet PCs), aspects of the present invention can be used in conjunction with other types of pen computing systems and / or other devices that receive data in the form of electronic ink and / or accept input with an electronic pen or pen, such as: handheld or handheld computing systems; personal digital information devices; handheld personal computers; mobile and cell phones, pagers and other communication devices; clock; electrical appliances; and any other devices or systems that include a monitor or other display device and / or digitizer digitizer that presents printed or graphic information to users and / or allows input using an electronic pen or pen, or that can process electronic ink, collected by another device (such as a regular desktop computer that can process electronic ink collected by a tablet).

Изобретение ниже описывается в связи с остальными фигурами, на которых представлены различные примеры изобретения и информация, способствующая объяснению изобретения. Конкретные фигуры и информация, содержащаяся в настоящем подробном описании, не должны истолковываться как ограничивающие изобретение.The invention is described below in connection with the rest of the figures, which show various examples of the invention and information that helps explain the invention. The specific figures and information contained in this detailed description should not be construed as limiting the invention.

Обобщение пространственного вида документаGeneralization of the spatial appearance of the document

Как описано выше, некоторые аспекты настоящего изобретения относятся, в основном, к системам и способам предоставления более универсальных аннотаций с широкими возможностями, используя электронные чернила в электронных документах. Нижеследующее подробно описывает различные аспекты и примеры настоящего изобретения.As described above, some aspects of the present invention relate mainly to systems and methods for providing more versatile, high-powered annotations using electronic ink in electronic documents. The following describes in detail various aspects and examples of the present invention.

А. Общий обзор изобретенияA. Overview of the invention

На фиг.3 изображен, в общем виде, принцип действия систем и способов в соответствии по меньшей мере с некоторыми примерами настоящего изобретения. Конкретно, как изображено на фиг.3, пользователь может взаимодействовать некоторым образом с электронным документом 300 (документ «А» на фиг.3), например, посредством добавления электронных чернил к документу 300. В изображенном примере электронный документ 300 включает в себя электронный или машинописный текст 302 («Sample Text» (Образец текста) в изображенном примере) и рисунок 304 чернил (дом в изображенном примере). Конечно, электронный документ 300 может включать в себя любые данные или информацию, не выходя за рамки объема изобретения, такие как электронный текст, электронные чернила (рисунок или текст), изображения, графики, таблицы, диаграммы, другую графическую или электронную информацию и/или их комбинации. Для целей данного примера предположим, что исходный электронный документ 300 (также называемый «базовым документом» или «базовой частью» в настоящей заявке) включает в себя электронный машинописный текст 302 и рисунок 304 электронных чернил. Когда пользователь просматривает Документ А 300 в данном примере, он принимает решение включить аннотацию, выполненную посредством электронных чернил, в документ 300. Конкретно, в изображенном примере аннотация включает в себя обведение 306 вокруг некоторой части 308 электронного текста 302.Figure 3 shows, in General terms, the principle of operation of systems and methods in accordance with at least some examples of the present invention. Specifically, as shown in FIG. 3, the user can interact in some way with the electronic document 300 (document “A” in FIG. 3), for example, by adding electronic ink to the document 300. In the illustrated example, the electronic document 300 includes electronic or typescript 302 (“Sample Text” in the illustrated example) and ink drawing 304 (home in the illustrated example). Of course, the electronic document 300 may include any data or information without departing from the scope of the invention, such as electronic text, electronic ink (drawing or text), images, graphs, tables, charts, other graphic or electronic information and / or their combinations. For the purposes of this example, suppose that the original electronic document 300 (also called the “base document” or “base part” in this application) includes electronic typewriting text 302 and electronic ink drawing 304. When the user views Document A 300 in this example, he decides to include the annotation made by electronic ink in the document 300. Specifically, in the illustrated example, the annotation includes a circle 306 around some portion 308 of the electronic text 302.

В данном примере, после того как пользователь введет аннотацию, программа приложения вызывает программу 310 синтаксического разбора и запрашивает проведение синтаксического разбора вновь введенных данных электронных чернил (как отмечено выше, «синтаксический разбор» может включать в себя, например, классификацию электронных чернил на различные типы чернил (например, рисунки, текст, блок-схемы, музыка и т.д.) и/или анализ компоновки чернил (например, уточнение пространственных и позиционных зависимостей среди штрихов чернил и группирование их в соответствующие группировки), а также другие процессы анализа). Конкретно, программа приложения посылает введенные данные электронных чернил (представляющие аннотацию 306 в данном примере) средству 310 синтаксического разбора в виде данных неклассифицированных чернил. Вышеописанное изображается на фиг.3 стрелкой 312 ввода.In this example, after the user enters the annotation, the application program calls the parsing program 310 and requests parsing of the newly entered electronic ink data (as noted above, “parsing” may include, for example, classifying electronic ink into various types ink (e.g., drawings, text, flow charts, music, etc.) and / or analysis of ink layout (e.g., refinement of spatial and positional relationships among ink strokes and grouped e them to the appropriate groups) and other analysis processes). Specifically, the application program sends input electronic ink data (representing annotation 306 in this example) to parser 310 in the form of ungraded ink data. The above is depicted in FIG. 3 by an input arrow 312.

В необязательном порядке, в этот же или примерно в этот момент времени программа приложения может послать некоторые или все данные, относящиеся к базовому электронному документу 300, средству 310 синтаксического разбора. Упомянутые данные могут включать в себя, например, данные, относящиеся к пространственной компоновке информации в документе 300, например, положению электронного текста 302, рисунка 304 и т.д. Дополнительно, программа приложения может послать данные, показывающие иерархическую структуру данных в документе, которая подробно описывается ниже. В качестве другой альтернативы, как также описано более подробно ниже, средство 310 синтаксического разбора может осуществить обратный вызов программы приложения, запрашивая некоторые данные, относящиеся к электронному документу 300, такие как информация, относящаяся к электронному документу 300 в пространственной области, ассоциированной с новыми неклассифицированными чернилами (в упомянутом примере данные, представляющие машинописный текст и информацию, расположенные пространственно около аннотации 306). Упомянутые данные, вводимые в средство 310 синтаксического разбора, изображены на фиг.3 посредством стрелки 314 ввода. Конечно, как неклассифицированные чернила, так и ранее проанализированные данные могут быть одновременно посланы программе синтаксического разбора и/или сделаны доступны для нее без отступления от изобретения.Optionally, at the same or about this point in time, the application program may send some or all of the data related to the underlying electronic document 300 to the parser 310. Said data may include, for example, data related to a spatial arrangement of information in a document 300, for example, the position of electronic text 302, figure 304, etc. Additionally, the application program can send data showing the hierarchical structure of the data in the document, which is described in detail below. As another alternative, as also described in more detail below, the parser 310 may call back the application program by requesting some data related to the electronic document 300, such as information related to the electronic document 300 in the spatial domain associated with the new unclassified ink (in the aforementioned example, data representing typewritten text and information located spatially near annotation 306). Said data input to the parser 310 is depicted in FIG. 3 by an input arrow 314. Of course, both unclassified ink and previously analyzed data can be simultaneously sent to the parser and / or made available to it without deviating from the invention.

Средство 310 синтаксического разбора принимает введенные данные 314 электронного документа и введенные данные 312 неклассифицированных чернил и использует упомянутую информацию для классификации новых данных электронных чернил на типы чернил. Чернила можно классифицировать на всевозможные различные типы чернил без отступления от изобретения и ниже более подробно описываются различные примеры возможных типов чернил. Для настоящего примера, основываясь на введенных чернилах 306 и информации 302, содержащейся в базовом документе 300, программа 310 синтаксического разбора в соответствии с данным примером изобретения может определить и классифицировать введенные чернила 306 в качестве аннотации или даже более конкретно в качестве чернильного рисунка, соответствующего аннотации-контейнеру (например, обведению), который содержит определенный машинописный текст. Конечно, также возможны другие типы аннотаций, такие как аннотации выделением, аннотации с «указанием на», аннотации с «указанием от», аннотации с привязкой (например, без указания на или указания от), горизонтальный охват, вертикальный охват и т.п., и ниже подробно объяснены различные примеры.The parser 310 receives the input data 314 of the electronic document and the input data 312 of the ungraded ink and uses the information to classify the new electronic ink data into ink types. Ink can be classified into all kinds of different types of ink without departing from the invention and various examples of possible types of ink are described in more detail below. For the present example, based on the input ink 306 and the information 302 contained in the base document 300, the parser 310 in accordance with this example of the invention can determine and classify the input ink 306 as an annotation, or even more specifically as an ink drawing corresponding to the annotation - a container (for example, a circle) that contains a specific typescript. Of course, other types of annotations are also possible, such as highlight annotations, “pointing to” annotations, “pointing from” annotations, anchored annotations (for example, without pointing to or pointing from), horizontal coverage, vertical coverage, etc. ., and various examples are explained in detail below.

После синтаксического разбора данные, ассоциированные с аннотацией 306, могут быть включены в иерархическую структуру данных «дерева документа», ассоциированную с электронным документом 300 (или любую другую подходящую или требуемую структуру данных), и упомянутая структура данных (или инструкции для модифицирования существующей структуры данных, поддерживаемой программой приложения) может быть послана обратно программе приложения, как показано на фиг.3 стрелкой 316. Если требуется, то другие данные также могут быть возвращены из средства 310 синтаксического разбора программе приложения без отступления от изобретения. Например, как показано на фиг.3, данные, ассоциированные с результатами процесса анализа распознавания (такого как средство распознавания рукописного текста или другое средство распознавания), могут быть возвращены программе приложения, если действия средства 310 синтаксического разбора включали вызовы одного или нескольких модулей, компонентов и/или программ средства распознавания.After parsing, the data associated with annotation 306 can be included in the hierarchical data structure of the “document tree” associated with electronic document 300 (or any other suitable or required data structure) and said data structure (or instructions for modifying an existing data structure supported by the application program) can be sent back to the application program, as shown in figure 3 by arrow 316. If necessary, other data can also be returned from the tool 310 parsing an application program without departing from the invention. For example, as shown in FIG. 3, data associated with the results of a recognition analysis process (such as handwriting recognition tool or other recognition tool) can be returned to the application program if the actions of the parser 310 included calls to one or more modules, components and / or recognition software programs.

На фиг.4 изображен пример реализации 400 различных признаков, используемых в некоторых примерах настоящего изобретения. Как изображено, электронный документ (такой как Документ А 300 на фиг.3) генерируется, запоминается и/или поддерживается программой 400а приложения в качестве структуры данных или модели 402 документа. Упомянутой структурой 402 данных может быть иерархическая структура данных или любая другая требуемая или подходящая структура данных без отступления от изобретения. Программа 400а приложения включает в себя объект 404 «Analysis Context» (контекст анализа), который содержит зеркальную копию, селективную копию или другую соответствующую информацию, относящуюся к структуре 402 данных (например, объектом 404 Analysis Context может быть уровень «преобразования», на котором запросы на объект 404 Analysis Context преобразуются в запросы на структуру собственных режимов документа - таким образом технология синтаксического разбора в соответствии с аспектами настоящего изобретения может быть преобразована для использования со всевозможными различными собственными программами приложения). «Платформа» 400b или сторона операционной системы данной примерной реализации 400 включает в себя метод 406 «Ink Analyzer» (анализатор чернил), который вызывается программой 400а приложения. Программа 400а приложения вызывает метод 406 Ink Analyzer и передает ему ссылку на объект 404 Analysis Context. Метод 406 Ink Analyzer вызывает средство 408 синтаксического разбора (также часть платформы 400b в данном примере), которая классифицирует и анализирует компоновку введенных данных, как вкратце описано выше. Принцип действия примерной реализации в соответствии с изобретением ниже описывается более подробно в разделе «Анализ чернил». Если средство 408 синтаксического разбора завершает свой анализ и обработку, то платформа 400b может послать данные обратно программе 400а приложения, позволяя модели 402 документа и/или объекту 404 Analysis Context перестроить свою структуру данных, основываясь на обработке и результатах средства синтаксического разбора, как вкратце изображено стрелкой 410 на фиг.4.Figure 4 shows an example implementation of 400 various features used in some examples of the present invention. As shown, an electronic document (such as Document A 300 in FIG. 3) is generated, stored and / or maintained by the application program 400a as a data structure or document model 402. Said data structure 402 may be a hierarchical data structure or any other desired or suitable data structure without departing from the invention. The application program 400a includes an “Analysis Context” object 404 that contains a mirror copy, a selective copy, or other relevant information related to the data structure 402 (for example, the Analysis Context object 404 may be a “transform” level at which queries to the Analysis Context object 404 are converted to queries on the structure of the document’s native modes - thus, parsing technology in accordance with aspects of the present invention can be converted for use with all kinds of GOVERNMENTAL different own programs application). The "platform" 400b or the operating system side of this exemplary implementation 400 includes an Ink Analyzer method 406 that is invoked by the application program 400a. Application program 400a calls Ink Analyzer method 406 and passes it a reference to the Analysis Context object 404. Ink Analyzer method 406 calls parser 408 (also part of platform 400b in this example) that classifies and analyzes the layout of the input data, as briefly described above. The principle of operation of an exemplary implementation in accordance with the invention is described below in more detail in the section "Ink analysis". If the parser 408 completes its analysis and processing, then the platform 400b can send data back to the application program 400a, allowing the document model 402 and / or the Analysis Context object 404 to rebuild its data structure based on the processing and results of the parser, as briefly depicted arrow 410 in figure 4.

На фиг.5 в общем виде изображен пример структуры данных, который может быть использован для хранения данных электронного документа по меньшей мере в некоторых примерах настоящего изобретения, например, как часть объекта 404 «Analysis Context», как модель 402 документа или как структуры данных, сгенерированные и/или выводимые средством 408 синтаксического разбора. Конкретно, на фиг.5 изображен примерный электронный документ 500. При хранении в качестве объекта 502 Analysis Context или синтаксическом разборе структура данных может включать в себя различные элементы документа, классифицированные или размещенные в различных группировках или «узлах». Например, как изображено на фиг.5, электронный документ 500 включает в себя три абзаца 504, 506 и 508 электронного текста; один рисунок 510, выполненный посредством электронных чернил, и одну аннотацию 512, выполненную посредством электронных чернил. Примерная структура 502 данных Analysis Context для электронного документа 500 показана на фиг.5 в виде списка элементов верхнего уровня. Конкретно, элемент 504(а) узла соответствует абзацу 504 в электронном документе 500, элемент 506(а) узла соответствует абзацу 506 в электронном документе 500, элемент 508(а) узла соответствует абзацу 508 в электронном документе 500, элемент 510(а) узла соответствует чернильному рисунку 510 в электронном документе 500 и элемент 512(а) узла соответствует аннотации 512, выполненной посредством чернил, в электронном документе 500. Дополнительные узлы могут храниться в структуре данных (например, в виде иерархической схемы) как родительские узлы и/или дочерние узлы относительно узлов 504а, 506а, 508а, 510а и 512а верхнего уровня, изображенных на фиг.5, как подробно описано ниже.Figure 5 in General terms shows an example of a data structure that can be used to store data from an electronic document in at least some examples of the present invention, for example, as part of an Analysis Context object 404, as a document model 402, or as a data structure, generated and / or output by parser 408. Specifically, FIG. 5 shows an exemplary electronic document 500. When stored as an Analysis Context object 502 or parsed, the data structure may include various elements of the document, classified or located in different groupings or “nodes”. For example, as shown in FIG. 5, an electronic document 500 includes three paragraphs 504, 506, and 508 of electronic text; one drawing 510 made by electronic ink, and one annotation 512 made by electronic ink. An exemplary Analysis Context data structure 502 for an electronic document 500 is shown in FIG. 5 as a list of top-level elements. Specifically, node element 504 (a) corresponds to paragraph 504 in electronic document 500, node element 506 (a) corresponds to paragraph 506 in electronic document 500, node element 508 (a) corresponds to paragraph 508 in electronic document 500, node element 510 (a) corresponds to ink drawing 510 in electronic document 500 and node element 512 (a) corresponds to ink annotation 512 in electronic document 500. Additional nodes can be stored in the data structure (for example, as a hierarchical diagram) as parent nodes and / or child nodes rel regarding the nodes 504a, 506a, 508a, 510a, and 512a of the upper level shown in FIG. 5, as described in detail below.

В. Узлы контекста и иерархические структуры данныхB. Context nodes and hierarchical data structures

На фиг.6А-6I изображены различные примеры узлов контекста и структур данных, которые могут быть использованы при построении, анализе и синтаксическом разборе данных электронного документа, таких как объект Analysis Context, в соответствии с некоторыми примерами настоящего изобретения. На фиг.6А изображена примерная структура 600 данных, которая может быть использована для хранения данных неклассифицированных электронных чернил (например, чернил, вновь введенных пользователем, которые ранее не подвергались синтаксическому разбору). Упомянутая примерная структура 600 данных включает в себя корневой узел 602 (который может соответствовать всему электронному документу в программе приложения, определенной странице документа или любой подходящей или требуемой группировке данных, такой как группировка, используемая программой приложения). Любые подходящие или требуемые данные могут быть включены в корневой узел 602, такие как номер страницы, указатели на предыдущую страницу и следующую страницу, расположение или размеры полей и т.д. Каждый корневой узел 602 может включать в себя любое количество узлов 604 неклассифицированных чернил в качестве дочерних узлов, и каждый узел 604 неклассифицированных чернил дополнительно может включать в себя любое количество узлов 606 отдельных штрихов (последний узел в иерархической структуре (узел 606 штриха в данном примере) также может называться «концевым узлом» в настоящем описании изобретения). (Буква «n» на различных фигурах может представлять любое число, включая нуль.) Различные узлы структуры 600 данных могут включать в себя любые требуемые или подходящие данные, соответствующие узлу. Например, узлы 606 штриха могут включать в себя данные, представляющие: точки цифрового преобразователя или другие данные, идентифицирующие штрих электронных чернил; данные о положении или ориентации штриха; данные о цвете штриха; данные о нажатии при выполнении штриха; данные о временных характеристиках ввода штриха; данные об идентификаторе штриха и/или любые другие стандартные или полезные данные, используемые при хранении информации о штрихе в системах и способах, способных принимать электронные чернила. Аналогично, узел(узлы) 604 неклассифицированных чернил может включать в себя любые требуемые или подходящие данные, ассоциированные с чернилами или узлом, такие как данные, представляющие: размеры ограничивающего прямоугольника всех штрихов, содержащихся в узле; расположение ограничивающего прямоугольника; информацию о временных характеристиках ввода; геометрическую информацию для чернил (такую как, например, информацию о выпуклой оболочке) и/или любые другие стандартные или полезные данные, относящиеся к штрихам неклассифицированных чернил, включенных в узел. Альтернативно, если требуется, данные о штрихе, в основном, могут быть сохранены в качестве свойства другого узла (например, узла слова, узла таблицы или т.п.), а не в виде отдельного узла в дереве документа.6A-6I illustrate various examples of context nodes and data structures that can be used in constructing, analyzing, and parsing data from an electronic document, such as an Analysis Context object, in accordance with some examples of the present invention. FIG. 6A shows an exemplary data structure 600 that can be used to store data of unclassified electronic inks (eg, ink newly introduced by a user that has not previously been parsed). Said exemplary data structure 600 includes a root node 602 (which may correspond to an entire electronic document in an application program, a specific document page, or any suitable or desired data grouping, such as the grouping used by the application program). Any suitable or required data may be included in the root node 602, such as page number, pointers to the previous page and next page, location or size of fields, etc. Each root node 602 may include any number of ungraded ink nodes 604 as child nodes, and each ungraded ink node 604 may further include any number of individual strokes 606 (the last node in the hierarchical structure (stroke node 606 in this example) may also be referred to as an “end node” in the present description of the invention). (The letter “n” in various figures may represent any number, including zero.) The various nodes of the data structure 600 may include any required or suitable data corresponding to the node. For example, stroke units 606 may include data representing: points of a digital converter or other data identifying a stroke of electronic ink; data on the position or orientation of the stroke; bar color data; data on pressing when performing a stroke; data on the time characteristics of the stroke input; stroke identifier data and / or any other standard or useful data used in storing stroke information in systems and methods capable of receiving electronic ink. Similarly, the ungraded ink node (s) 604 may include any required or suitable data associated with the ink or node, such as data representing: the size of the bounding box of all the strokes contained in the node; location of the bounding box; information about the timing of input; geometric information for the ink (such as, for example, information about the convex hull) and / or any other standard or useful data related to the strokes of ungraded ink included in the node. Alternatively, if required, stroke data can basically be saved as a property of another node (for example, a word node, table node, etc.), and not as a separate node in the document tree.

Как только неклассифицированные чернила посланы на средство классифицирования, средство анализа компоновки, средство распознавания и/или другую систему синтаксического разбора, по меньшей мере некоторые части чернил могут быть ассоциативно связаны вместе и/или классифицированы на всевозможные различные типы, и структура данных, ассоциированная с чернилами, может быть изменена таким образом, чтобы соответствовать многочисленным ассоциациям и типам, на которые она была классифицирована. На фиг.6В изображена примерная структура 610 данных для электронных чернил, которая была классифицирована как текст, выполненный посредством чернил. Используя технологию синтаксического разбора, включающую обычные средства синтаксического разбора, известные и используемые в технике, может быть произведен синтаксический разбор и сохранение иерархическим образом введенных штрихов электронных чернил (например, данных электронных чернил, собранных между событием опускания пера и последующим во времени событием поднятия пера или некоторым другим образом), в которой связанные отдельные штрихи чернил могут быть сгруппированы вместе и сохранены как слова чернил, линейно размещенные чернильные слова могут быть сгруппированы вместе и сохранены как чернильные строки, связанные чернильные строки могут быть сгруппированы вместе и сохранены как чернильные абзацы, и связанные абзацы могут быть сохранены как электронные документы (например, в отдельных частях страницы, в качестве целых документов или в любых подходящих корневых группировках).Once unclassified ink is sent to a classification tool, layout analyzer, recognition tool, and / or other parsing system, at least some parts of the ink can be associated together and / or classified into all sorts of different types, and the data structure associated with the ink , can be modified in such a way as to correspond to the numerous associations and types into which it was classified. FIG. 6B depicts an exemplary electronic ink data structure 610 that has been classified as ink text. Using parsing technology including conventional parsing tools known and used in the art, parsing of electronic ink strokes can be parsed and stored hierarchically (for example, electronic ink data collected between a pen lowering event and a subsequent pen-raising event or in some other way), in which the associated individual ink strokes can be grouped together and saved as ink words linearly arranged across bold words can be grouped together and saved as ink lines, linked ink lines can be grouped together and saved as ink paragraphs, and linked paragraphs can be saved as electronic documents (for example, in separate parts of a page, as whole documents or in any suitable root groupings).

Примерная иерархическая структура 610 данных, соответствующая данным электронных чернил, обрабатываемых синтаксическим разбором и сохраняемых таким образом, как изображено на фиг.6В, может включать в себя корневой узел 612, который может соответствовать целому электронному документу, странице или другой группировке, используемой программой приложения. Каждый корневой узел 612 может содержать любое количество узлов 614, соответствующих абзацам или подобным группировкам штрихов электронных чернил. Узлы 614 абзаца могут содержать любое количество узлов 616 отдельных строк, которые, в свою очередь, могут включать в себя любое количество узлов 618 отдельных чернильных слов, которые далее могут содержать любое количество узлов 620 отдельных штрихов, соответствующих отдельным штрихам введенных данных электронных чернил. В необязательном порядке, как отмечено выше, данные штриха могут быть запомнены в качестве «свойства» ассоциированного узла слова, если требуется. Различные узлы 612, 614, 616, 618 и 620 могут хранить любые подходящие данные, относящиеся к различным отдельным штрихам или коллекциям штрихов, содержащихся в узле, подобно данным о пространственной ориентации или расположении и/или другим данным, аналогичным тем, которые описаны выше.An exemplary hierarchical data structure 610 corresponding to parsing electronic ink data and stored as shown in FIG. 6B may include a root node 612 that may correspond to an entire electronic document, page, or other grouping used by the application program. Each root node 612 may contain any number of nodes 614 corresponding to paragraphs or similar groupings of strokes of electronic ink. Paragraph nodes 614 can contain any number of separate line nodes 616, which, in turn, can include any number of individual ink word nodes 618, which can further comprise any number of separate strokes 620 corresponding to individual strokes of electronic ink input data. Optionally, as noted above, the stroke data can be stored as a “property” of the associated word node, if required. The various nodes 612, 614, 616, 618, and 620 may store any suitable data relating to various individual strokes or collections of strokes contained in the node, like spatial orientation or location data and / or other data similar to those described above.

Возможны другие типы данных и организации структур данных, соответствующие введенным штрихам электронных чернил, без отступления от изобретения. Например, технология классификации, анализа компоновки или средства распознавания может определить, что введенные электронные чернила образуют чернильный рисунок. На фиг.3 изображен примерный чернильный рисунок 304, который содержит несколько отдельных штрихов чернил. На фиг.6С и 6D изображены примерные иерархические структуры данных, которые могут быть использованы для группирования и хранения данных электронных чернил, определенных относящимися к чернильным рисункам. Как показано на фиг.6С, структура 630 данных включает в себя корневой узел 632 (который может соответствовать целому электронному документу, электронной странице или некоторой другой группировке данных, как описано выше). Каждый корневой узел 632 может включать в себя любое количество узлов 636 отдельных чернильных рисунков (например, так, что каждый отдельный рисунок имеет отдельный узел, хранящий данные, относящиеся, например, к ширине рисунка, высоте рисунка, положению рисунка, размеру ограничивающего прямоугольника и т.п.), и каждый узел 636 чернильного рисунка может включать в себя любое количество узлов 638 отдельных штрихов чернил (соответствующих отдельным штрихам чернил, составляющих рисунок). В необязательном порядке, данные штриха чернил могут храниться в качестве «свойства» их соответствующего узла чернильного рисунка (или другого узла).Other types of data and organization of data structures are possible, corresponding to the entered strokes of electronic ink, without departing from the invention. For example, a classification technology, layout analysis, or recognition tool may determine that the introduced electronic ink forms an ink pattern. Figure 3 shows an exemplary ink drawing 304, which contains several individual strokes of ink. 6C and 6D illustrate exemplary hierarchical data structures that can be used to group and store electronic ink data defined in relation to ink drawings. As shown in FIG. 6C, the data structure 630 includes a root node 632 (which may correspond to an entire electronic document, electronic page, or some other data grouping, as described above). Each root node 632 may include any number of nodes 636 of individual ink drawings (for example, so that each individual figure has a separate node that stores data relating, for example, to the width of the picture, the height of the picture, the position of the picture, the size of the bounding box, and t .p.), and each ink drawing unit 636 can include any number of nodes 638 of individual ink strokes (corresponding to the individual ink strokes making up the pattern). Optionally, ink stroke data may be stored as a “property” of their corresponding ink drawing unit (or other unit).

На фиг.6D изображена альтернативная структура 630а данных для электронных документов, содержащих один или несколько чернильных рисунков. В данном примере электронный документ, или страница, или другая группировка данных (представленная корневым узлом 632а) может включать в себя одну или несколько групп (представленных узлом 634а) рисунков, выполненных посредством электронных чернил, причем их данные ассоциативно связывают вместе и сохраняют иерархическим образом, описанным в связи с фиг.6С, (например, целый электронный документ (представленный корневым узлом 632а) может включать в себя несколько отдельных страниц (каждая представлена узлом 634а группы), и каждая отдельная страница может иметь один или несколько отдельных чернильных рисунков (каждый представлен узлом 636а чернильного рисунка), и каждый отдельный чернильный рисунок может содержать один или несколько отдельных штрихов чернил (каждый представлен узлом 638а штриха или в свойстве узла чернильного рисунка)). Необходимо отметить, что как группы, так и чернильные рисунки могут быть дочерними узлами одного и того же корневого узла или любого узла группы. Кроме того, если требуется, узел группы может содержать дополнительные узлы группы. Конечно, могут быть использованы другие подходящие структуры данных для хранения рисунков электронных чернил без отступления от настоящего изобретения.6D depicts an alternative data structure 630a for electronic documents containing one or more ink drawings. In this example, an electronic document, or a page, or another data grouping (represented by the root node 632a) may include one or more groups (represented by the node 634a) of drawings made by electronic ink, and their data is associatively linked together and stored in a hierarchical manner, described in connection with figs (for example, an entire electronic document (represented by the root node 632a) may include several separate pages (each represented by a group node 634a), and each individual page A ink can have one or more separate ink drawings (each represented by an ink drawing unit 636a), and each individual ink drawing can contain one or more separate ink strokes (each is represented by a stroke unit 638a or in the property of an ink drawing unit)). It should be noted that both groups and ink drawings can be child nodes of the same root node or any group node. In addition, if required, the group node may contain additional group nodes. Of course, other suitable data structures may be used to store electronic ink patterns without departing from the present invention.

Иерархические структуры данных, однако, не ограничиваются использованием с введенными данными электронных чернил. Введенный машинописный текст (например, с клавиатуры) также может быть ассоциирован на различные группы и сохранен в иерархической структуре данных. На фиг.6Е изображен пример такой структуры 640 данных. Упомянутая структура 640 данных может включать в себя корневой узел 642 (например, аналогично корневым узлам, описанным выше). Каждый корневой узел 642 может включать в себя любое количество узлов 644 абзаца текста (соответствующих абзацам текста), причем каждый узел 644 абзаца может включать в себя любое количество узлов 646 строки текста (или, альтернативно, узлов предложений текста), и каждый узел 646 строки далее может включать в себя любое количество узлов 648 отдельных слов текста. Если требуется, то слова текста могут быть дополнительно разбиты на узлы отдельных знаков текста и еще дополнительно могут быть разбиты на узлы отдельных признаков знака (относящиеся, например, к признакам базовой линии, засечке, надстрочного элемента, подстрочного элемента каждого знака) без отступления от изобретения. Различные узлы могут хранить любые подходящие данные, относящиеся к тексту, такие как пространственное положение, содержимое, размер абзаца, строки или слова и т.п.; поля страницы, размеры или размещение полей; количество страниц и т.д.Hierarchical data structures, however, are not limited to the use of electronic ink with the data entered. Typed text (for example, from the keyboard) can also be associated into various groups and stored in a hierarchical data structure. 6E shows an example of such a data structure 640. Said data structure 640 may include a root node 642 (for example, similarly to the root nodes described above). Each root node 642 may include any number of nodes 644 of a paragraph of text (corresponding to paragraphs of text), and each node 644 of a paragraph may include any number of nodes 646 of a line of text (or, alternatively, nodes of text sentences), and each node 646 of a line further may include any number of nodes 648 individual words of text. If required, the words of the text can be further divided into nodes of individual signs of the text and still further can be divided into nodes of individual signs of the sign (relating, for example, to baseline, serif, superscript, subscript of each character) without departing from the invention . Different nodes can store any suitable data related to the text, such as spatial position, content, paragraph size, line or word, etc .; page margins, sizes or placement of margins; number of pages, etc.

Различные структуры данных, описанные выше в связи с фиг.6А-6Е, изображают структуры данных, которые содержат исключительно только данные электронных чернил или только данные электронного машинописного текста. Технология синтаксического разбора может быть использована для анализа, объединения, ассоциирования и группирования упомянутых различных типов данных в единую структуру данных без отступления от изобретения. На фиг.6F изображена примерная структура 650 данных, в которой электронный документ или его часть (представленные корневым узлом 652) содержат один или несколько отдельных абзацев (представленных узлом 654 абзаца) и одну или несколько отдельных строк (представленных узлом 656 строки). Строки, потенциально, могут содержать как машинописный текст (представленный узлом 658 слова текста), так и текст, выполненный посредством электронных чернил (представленный узлом 660 чернильного слова и узлом 662 штриха чернил). Каждый отдельный узел абзаца, строки и слова (как машинописного текста, так и чернильных слов) содержит соответствующие независимые данные, зависящие от содержимого абзаца, строки и слова. Дополнительно или альтернативно, отдельные слова могут далее включать в себя как знаки чернил, так и машинописные знаки без отступления от изобретения.The various data structures described above in connection with FIGS. 6A-6E depict data structures that contain exclusively electronic ink data or electronic typewriter data only. Parsing technology can be used to analyze, combine, associate and group the various data types mentioned into a single data structure without departing from the invention. FIG. 6F shows an exemplary data structure 650 in which an electronic document or part thereof (represented by the root node 652) contains one or more separate paragraphs (represented by the paragraph node 654) and one or more separate lines (represented by the line node 656). The lines can potentially contain both typewritten text (represented by a text word unit 658) and text made by electronic ink (represented by an ink word unit 660 and an ink stroke unit 662). Each individual node of a paragraph, line and word (both typewritten text and ink words) contains the corresponding independent data, depending on the contents of the paragraph, line and word. Additionally or alternatively, individual words may further include both ink marks and typewritten characters without departing from the invention.

Другие электронные данные также могут быть включены в структуру данных электронного документа (включая иерархические структуры данных) без отступления от изобретения. Например, данные изображения (такие как цифровая фотография, графическая информация и т.п.) могут быть включены в структуру данных для электронного документа, например, как показано в структуре 664 данных по фиг.6G. Как изображено в данном примере, структура 664 данных включает в себя электронный документ или его часть (представленные корневым узлом 666), которая содержит одну или несколько отдельных группировок данных (представленных узлом 668 группы). Каждая группировка данных в данном примере дополнительно может включать в себя электронное изображение (представленное узлом 670 изображения), а также машинописный текст (представленный узлом 672 абзаца, узлом 674 строки и узлом 676 слова текста), как описано в общем виде выше в связи с фиг.6Е и 6F. Конечно, структура данных, аналогичная той, которая изображена на фиг.6G, также может содержать данные электронных чернил (например, аналогичные структурам данных, изображенным на фиг.6А-6D) или другие требуемые типы данных без отступления от изобретения.Other electronic data may 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 photography, graphic information, etc.) may be included in the data structure for an electronic document, for example, as shown in the data structure 664 of FIG. 6G. As depicted in this example, the data structure 664 includes an electronic document or part thereof (represented by the root node 666) that contains one or more separate data groups (represented by the group node 668). Each grouping of data in this example may further include an electronic image (represented by the image unit 670) as well as typewritten text (represented by the paragraph unit 672, line unit 674 and text word unit 676), as described in a general way above in connection with FIG. .6E and 6F. Of course, a data structure similar to that shown in FIG. 6G may also contain electronic ink data (for example, similar to the data structures shown in FIGS. 6A-6D) or other required data types without departing from the invention.

На фиг.6H изображен пример другой потенциальной структуры 680 данных, которая может быть использована в соответствии по меньшей мере с некоторыми примерами настоящего изобретения. Более конкретно, структура 680 данных по фиг.6Н соответствует электронному документу или его части (представленных корневым узлом 682), содержащих один или несколько списков (представленных узлом 684 списка). Список в электронном документе может содержать любое количество отдельных элементов списка (представленных узлом 686 элемента списка), и каждый элемент списка может содержать всевозможные различные виды электронной информации. Например, некоторые элементы списка, в необязательном порядке, могут включать маркер списка, который может состоять из машинописного маркера или маркера электронных чернил (узел 688 маркера чернил, включающий один или несколько соответствующих узлов 690 штриха чернил, изображен в примере по фиг.6Н). Кроме того, каждый элемент списка, в необязательном порядке, может включать в себя один или несколько абзацев электронных чернил (представленных цепочкой 692 узлов), один или несколько рисунков чернил (представленных цепочкой 694 узлов) и/или один или несколько машинописных абзацев (представленных цепочкой 696 узлов). Дополнительно (или альтернативно), каждый элемент списка, в необязательном порядке, может включать в себя одно или несколько изображений (представленных узлом 698 изображения) и/или одну или несколько группировок данных, таких как группировки, описанные выше в связи с фиг.6D и 6G, (представленные цепочкой 700 узлов группы). Так как различные узлы и/или цепочки 692, 694, 696, 698, 700 узлов могут, в общем случае, соответствовать примерным структурам данных, изображенным на фиг.6А-6G, а также подмножествам и/или группировкам упомянутых структур данных, то дальнейшее объяснение опускается. Если требуется, то по меньшей мере в некоторых случаях узел 686 отдельного элемента списка также сам может содержать список, имеющий структуру данных, аналогичную той, которая изображена на фиг.6Н.FIG. 6H shows an example of another potential data structure 680 that may be used in accordance with at least some examples of the present invention. More specifically, the data structure 680 of FIG. 6H corresponds to an electronic document or part thereof (represented by the root node 682) containing one or more lists (represented by the list node 684). The list in the electronic document may contain any number of individual list items (represented by the list item node 686), and each list item may contain all kinds of various kinds of electronic information. For example, some list items, optionally, may include a list marker, which may consist of a typewriter or electronic ink marker (ink marker assembly 688, including one or more corresponding ink stroke nodes 690, is shown in the example of FIG. 6H). In addition, each list item, optionally, may include one or more paragraphs of electronic ink (represented by a chain of 692 nodes), one or more ink drawings (represented by a chain of 694 nodes) and / or one or more typewritten paragraphs (represented by a chain 696 knots). Additionally (or alternatively), each list item, optionally, may include one or more images (represented by the image node 698) and / or one or more data groups, such as the groups described above in connection with FIG. 6D and 6G, (represented by a chain of 700 group nodes). Since the various nodes and / or chains 692, 694, 696, 698, 700 nodes can, in general, correspond to the exemplary data structures depicted in FIGS. 6A-6G, as well as subsets and / or groups of the mentioned data structures, then further explanation is omitted. If desired, at least in some cases, the node 686 of an individual list item may also itself contain a list having a data structure similar to that shown in Fig.6H.

На фиг.6I изображена другая примерная структура 710 данных, которая может быть использована по меньшей мере в некоторых примерах настоящего изобретения. Упомянутая примерная структура 710 данных соответствует электронным данным, анализированным, ассоциативно связанным вместе, сгруппированным и сохраненным в виде таблицы. В данном изображенном примере каждый электронный документ или его часть (представленные корневым узлом 712) могут включать в себя одну или несколько таблиц (представленных узлом 714 таблицы). Таблица в данном примере может состоять из одной или нескольких строк информации (представленных узлом 716 строки таблицы), и каждая строка таблицы может состоять из одной или нескольких отдельных ячеек (представленных узлом 718 ячейки). Отдельные ячейки могут содержать одну или несколько структур данных, включающих, например, любую из всевозможных различных структур данных, описанных выше. В изображенном примере, отдельные ячейки таблицы показаны как потенциально содержащие любое количество изображений (представленных узлом 720 изображения), любое количество абзацев машинописного текста (представленных цепочкой 722 узлов), любое количество группировок (представленных цепочкой 724 узлов), любое количество чернильных рисунков (представленных цепочкой 726 узлов), любое количество дополнительных таблиц (представленных цепочкой 728 узлов) и любое количество списков (представленных цепочкой 730 узлов). Конечно, любые другие подходящие или требуемые структуры данных могут быть включены в таблицу без отступления от настоящего изобретения, включая различные конкретные структуры данных, описанные выше, и/или комбинации и подмножества структур данных, например, аналогичных тем, которые описаны выше.6I shows another exemplary data structure 710 that can be used in at least some examples of the present invention. Said exemplary data structure 710 corresponds to electronic data analyzed, associatively linked together, grouped and stored in a table. In this illustrated example, each electronic document or part thereof (represented by the root node 712) may include one or more tables (represented by the table node 714). The table in this example may consist of one or more rows of information (represented by the node 716 rows of the table), and each row of the table may consist of one or more separate cells (represented by the node 718 cells). Individual cells may contain one or more data structures, including, for example, any of the various various data structures described above. In the illustrated example, individual cells of the table are shown as potentially containing any number of images (represented by the image node 720), any number of typescript paragraphs (represented by a chain of 722 nodes), any number of groupings (represented by a chain of 724 nodes), any number of ink drawings (represented by a chain 726 nodes), any number of additional tables (represented by a chain of 728 nodes) and any number of lists (represented by a chain of 730 nodes). Of course, any other suitable or required data structures may be included in the table without departing from the present invention, including various specific data structures described above and / or combinations and subsets of data structures, for example, similar to those described above.

Любые подходящие или требуемые данные могут храниться во всевозможных различных узлах, включая различные типы данных, описанных выше. Для использования с данными обработки, относящимися к аннотациям, может быть полезным по меньшей мере в некоторых примерах изобретения, чтобы различные узлы хранили данные, относящиеся к пространственному положению, ориентации или размещению узла в электронном документе, в необязательном порядке, так как упомянутая пространственная информация относится или связана с другими узлами в структуре данных электронного документа.Any suitable or required data may be stored in various various nodes, including the various types of data described above. For use with processing data related to annotations, it may be useful in at least some examples of the invention that various nodes store data related to the spatial position, orientation or placement of the node in an electronic document, optionally, since the spatial information referred to or linked to other nodes in the data structure of an electronic document.

Также могут быть использованы другие типы программ синтаксического разбора, средств классифицирования и/или средств распознавания и типы данных без отступления от изобретения. Например, средства распознавания могут быть использованы для анализа, распознавания, группирования и/или ассоциирования электрических или электронных символов (например, резисторов, источников напряжения, конденсаторов и т.д.); музыкальных символов; математических символов; элементов блок-схем; элементов круговой диаграммы и т.п. без отступления от изобретения.Other types of parsing programs, classification tools, and / or recognition tools and data types may also be used without departing from the invention. For example, recognition tools can be used to analyze, recognize, group, and / or associate electrical or electronic symbols (eg, resistors, voltage sources, capacitors, etc.); musical characters; mathematical symbols; block diagram elements; pie chart elements, etc. without departing from the invention.

Структуры данных, изображенные на фиг.6А-6I, являются просто примерами всевозможных структур данных, которые могут быть использованы в соответствии с аспектами настоящего изобретения. Для специалиста в данной области техники очевидно, что использованные конкретные структуры данных могут изменяться в широких пределах без отступления от изобретения. Например, могут быть использованы различные узлы, представляющие различные группировки компоновки, могут быть добавлены дополнительные типы узлов, или некоторые из описанных типов узлов могут быть исключены без отступления от изобретения (например, узлы столбца могут быть использованы вместо узлов строки таблицы в структуре данных таблицы). Дополнительно, вышеупомянутое описание оптимизировано для использования с языками и текстовыми представлениями, в которых знаки считываются слева направо и затем сверху вниз на странице. Могут быть использованы структуры данных, предназначенные для использования и соответствия другим языкам и размещению знаков, например, структур данных для обеспечения считывания и/или записи на языках справа налево, сверху вниз, снизу вверх и их комбинации без отступления от изобретения. Кроме того, если требуется (в частности, для некоторых языков, таких как азиатские языки), штрихи могут группироваться соответствующим образом в качестве знаков, которые затем могут группироваться в строки без использования промежуточного узла «слова», как описано выше. В качестве другого альтернативного варианта, может быть исключено использование узлов строки, и узлы слова могут группироваться вместе в качестве абзацев и/или в другие требуемые группировки. Могут быть использованы данные и другие разновидности в структуре данных, например, для согласования с характеристиками конкретного языка без отступления от изобретения.The data structures depicted in FIGS. 6A-6I are merely examples of all kinds of data structures that can be used in accordance with aspects of the present invention. It will be apparent to those skilled in the art that the particular data structures used can vary widely without departing from the invention. For example, different nodes representing different layout groups can be used, additional node types can be added, or some of the described node types can be excluded without departing from the invention (for example, column nodes can be used instead of table row nodes in the table data structure) . Additionally, the above description is optimized for use with languages and text representations in which characters are read from left to right and then from top to bottom on the page. Data structures designed to be used and consistent with other languages and character placement can be used, for example, data structures to allow reading and / or writing in languages from right to left, top to bottom, bottom to top, and combinations thereof without departing from the invention. In addition, if required (in particular for some languages, such as Asian languages), strokes can be grouped appropriately as characters, which can then be grouped into lines without using an intermediate “word” node, as described above. As another alternative, the use of line nodes may be eliminated, and the word nodes may be grouped together as paragraphs and / or other desired groupings. Data and other varieties in the data structure may be used, for example, to harmonize with the characteristics of a particular language without departing from the invention.

С. Применение аспектов изобретения к аннотациямC. Application of Aspects of the Invention to Annotations

Аспекты настоящего изобретения, включающие использование узлов контекста и иерархических структур данных, как описано выше, могут быть использованы для получения «интеллектуальных» аннотаций, выполненных посредством электронных чернил, в электронных документах. Как описано выше, одним желательным и выгодным использованием вычислительных систем с перьевым вводом является их использование при аннотировании электронных документов. Однако, для того чтобы они были особенно полезными и эффективными, аннотации, выполненные электронными чернилами в документах на вычислительной системе с перьевым вводом, должны быть достаточно гибкими, так что, если и когда характеристики, ассоциированные с различными элементами в базовом документе, по некоторым причинам изменяются (например, изменяются поля, изменяется размер отображения, изменяется шрифт, добавляется информация, удаляется информация и т.д.), то аннотации способны точно изменять положение и/или другие характеристики, основанные на изменениях аннотируемых элементов в базовом документе. Это может быть выполнено, например, связыванием по меньшей мере одного узла контекста, ассоциированного с аннотацией, с одним или несколькими узлами контекста, ассоциированными с базовым документом. По меньшей мере в некоторых случаях данные и/или характеристики, ассоциированные и хранящиеся относящимися к базовому документу, такие как данные, относящиеся к пространственным атрибутам, положению и/или размещению одного или нескольких элементов документа, могут быть использованы для управления размещением, видом и/или другими характеристиками аннотации.Aspects of the present invention, including the use of context nodes and hierarchical data structures, as described above, can be used to obtain “smart” annotations made by electronic ink in electronic documents. As described above, one desirable and advantageous use of pen-based computing systems is their use in annotating electronic documents. However, in order for them to be particularly useful and effective, annotations made by electronic ink in documents on a pen-based computing system must be flexible enough so that if and when the characteristics associated with various elements in the underlying document are for some reason are changed (for example, fields are changed, display size is changed, font is changed, information is added, information is deleted, etc.), then annotations are able to precisely change position and / or other characteristics, Based on changes to annotated elements in the base document. This can be accomplished, for example, by linking at least one context node associated with the annotation to one or more context nodes associated with the base document. In at least some cases, data and / or characteristics associated and stored related to the underlying document, such as data relating to spatial attributes, position and / or placement of one or more elements of the document, can be used to control the placement, appearance and / or other annotation features.

На фиг.7А и 7В изображен один пример аннотации, которая может быть нанесена на электронный документ при помощи электронных чернил. Как изображено на фиг.7А, электронный документ 750 включает в себя предложение «Today the sky is green» (Сегодня небо зеленое). Пользователь вычислительной системы с перьевым вводом аннотировал упомянутый документ 750, используя электронные чернила, подчеркнув слово «green» (аннотация подчеркиванием показана позицией 752). На фиг.7В изображена примерная иерархическая структура 760 данных, соответствующая упомянутому составному электронному документу 750 (целый электронный документ 750 представлен в структуре 760 данных корневым узлом 762). При полном синтаксическом разборе структура 760 данных включает в себя узлы контекста, показывающие структуру полного документа. Более конкретно, информацию, относящуюся к машинописному тексту в электронном документе 750, анализируют и ассоциативно связывают вместе для указания того, что электронный документ 750 содержит один абзац (узел 764 абзаца), абзац содержит строку (узел 766 строки), и строка содержит пять слов (один узел 768а-768е слова текста для каждого из слов «Today», «the», «sky», «is» и «green», соответственно). Кроме того, средство синтаксического разбора отмечает присутствие данных в электронном документе 750, относящихся к аннотации 752, и она классифицирует упомянутые данные в качестве рисунка, выполненного посредством электронных чернил (узел 770 чернильного рисунка). Кроме того, основываясь на размещении и положении штриха (штрихов) рисунка чернил относительно машинописного текста в базовом документе 750, средство синтаксического разбора распознает и классифицирует аннотацию в качестве аннотации «подчеркиванием» и генерирует узел 772 подчеркивания. Кроме того, средство синтаксического разбора сохраняет данные всех штрихов, соответствующие фактическому штриху(ам) чернил аннотации подчеркиванием, в одном или нескольких концевых узлах 774 штриха (в необязательном порядке, данные штрихов могут быть сохранены в качестве свойства узла 772 подчеркивания или другого соответствующего узла).On figa and 7B depicts one example of an annotation that can be applied to an electronic document using electronic ink. As shown in FIG. 7A, electronic document 750 includes the sentence “Today the sky is green”. A pen-based computing system user annotated the aforementioned document 750 using electronic ink, underlining the word “green” (underlining the annotation is shown at 752). FIG. 7B shows an exemplary hierarchical data structure 760 corresponding to said composite electronic document 750 (an entire electronic document 750 is represented in the data structure 760 by the root node 762). In full parsing, the data structure 760 includes context nodes showing the structure of the complete document. More specifically, information related to the typescript in electronic document 750 is analyzed and associatively linked together to indicate that the electronic document 750 contains one paragraph (paragraph node 764), the paragraph contains a line (line node 766), and the line contains five words (one node 768a-768e of the word text for each of the words "Today", "the", "sky", "is" and "green", respectively). In addition, the parser notes the presence of data in the electronic document 750 related to annotation 752, and it classifies the data as a pattern made by electronic ink (ink pattern unit 770). In addition, based on the location and position of the ink stroke (s) relative to the typescript in the base document 750, the parser recognizes and classifies the annotation as an underline annotation and generates an underline node 772. In addition, the parser stores the data of all strokes corresponding to the actual stroke (s) of the annotation ink underline in one or more stroke end nodes 774 (optionally, the stroke data may be stored as a property of the underline node 772 or another corresponding node) .

Дополнительно, для того чтобы сохранять штрих 752 подчеркивания электронных чернил с данным отдельным словом «green», где бы оно не появилось в электронном документе 750 (например, если слово будет перемещено по какой-либо причине), данные сохраняются в структуре 760 данных упомянутого примера, означая то, что узел 772 контекста подчеркивания (например, узел контекста «источника» в данном примере связывания) связан с узлом 768е слова текста для слова «green» (узел «контекста назначения» в данном примере), как изображено на фиг.7В стрелкой 776, и данные сохраняются, означая то, что узел 768е слова текста связан посредством узла 772 подчеркивания, как указано стрелкой 778. Упомянутое связывание «жестко привязывает» узел 772 подчеркивания к узлу 768е слова текста (например, связь типа «жесткого связывания»). Следовательно, если по какой-либо причине данные, хранимые в узле 768е контекста слова текста, означают, что в электронном документе изменилось положение слова «green», то связи 776 и 778 позволяют программе приложения обнаружить, что, если возможно, она должна переместить воспроизводимое представление аннотации подчеркиванием в местоположение и/или пространственное положение узла 768е контекста слова текста в измененном электронном документе. В качестве другого примера, если данные «ограничивающего прямоугольника», данные ширины слова или другие данные, хранимые в узле 768е контекста, означают то, что по какой-либо причине изменился размер или положение слова (например, вследствие изменения размера шрифта, добавления знаков, удаления знаков, изменения в знаках и т.п.), то программа приложения тогда может изменить размер воспроизводимого подчеркивания (например, удлиняя или укорачивая), если возможно, чтобы оно соответствовало новому размеру, ассоциированному со словом текста, представленным узлом 768е контекста. Если применимо, системы и способы в соответствии по меньшей мере с некоторыми примерами изобретения могут разорвать штрих(и) аннотации, чтобы она присутствовала более чем на одной строке, если изменения в базовом документе вызывают присутствие аннотируемого элемента документа на нескольких строках (например, из-за добавляемых слов, знака переноса или т.п.). Также может быть использована любая подходящая схема связывания между узлами или любые подходящие данные, представляющие связь, без отступления от изобретения.Additionally, in order to save the electronic ink underline stroke 752 with this separate word “green”, wherever it appears in the electronic document 750 (for example, if the word will be moved for some reason), the data is stored in the data structure 760 of the above example , meaning that the underscore context node 772 (for example, the "source" context node in this binding example) is associated with the text word node 768e for the word "green" (the "destination context" node in this example), as shown in Fig. 7B arrow 776, and data sah hurt, meaning that the text word node 768e is connected through the underline node 772, as indicated by arrow 778. The referenced binding “rigidly ties” the underline node 772 to the text word node 768 (for example, a “hard link” type relationship). Therefore, if for some reason the data stored in the text word context node 768e means that the position of the word “green” has changed in the electronic document, then the connections 776 and 778 allow the application program to detect that, if possible, it should move the reproduced submission of annotation by underlining the location and / or spatial position of the text word context node 768e of the text in the modified electronic document. As another example, if the data is a “bounding box”, word width data, or other data stored in the context node 768e, it means that for some reason the size or position of the word has changed (for example, due to a change in font size, adding characters, characters, changes in characters, etc.), then the application program can then change the size of the underline (for example, by lengthening or shortening), if possible, so that it matches the new size associated with the text word, etc. dstavlennym node 768e context. If applicable, systems and methods in accordance with at least some examples of the invention may break the bar (s) of the annotation so that it appears on more than one line if changes in the base document cause the annotated element of the document to appear on several lines (for example, for added words, a hyphen, or the like). Any suitable linking scheme between nodes or any suitable data representing a link may also be used without departing from the invention.

На фиг.8А и 8В изображен другой пример аннотирования. В данном примере, как изображено на фиг.8А, электронный документ 800 снова включает в себя предложение «Today the sky is green», но в данном случае пользователь перьевой вычислительной системы аннотировал документ 800, используя электронные чернила, зачеркнув слово «green» (зачеркивание показано позицией 802). На фиг.8В изображена примерная иерархическая структура 810 данных, соответствующая упомянутому составному электронному документу 800, когда он полностью синтаксически разобран (так как конкретные узлы контекста для большей части фиг.8В соответствуют узлам контекста, присутствующим на фиг.7В, то эти же позиции, что и присутствующие на фиг.7В, используются на фиг.8В, и опущено дублирующее объяснение). В данном случае средство синтаксического разбора отмечает присутствие данных в электронном документе 800, относящихся к аннотации 802, и оно классифицирует упомянутые данные в качестве рисунка, выполненного посредством электронных чернил (узел 812 чернильного рисунка). Кроме того, основываясь на размещении и положении штриха(ов) рисунка чернил относительно содержимого базового машинописного текста в документе 800 (например, зачеркивание охватывает в горизонтальном направлении слово текста) средство синтаксического разбора распознает и классифицирует аннотацию как аннотацию «зачеркиванием» и генерирует узел 814 зачеркивания. Кроме того, программа синтаксического разбора сохраняет все данные штрихов, соответствующие фактическому штриху(ам) чернил аннотации зачеркиванием, в одном или нескольких концевых узлах 816 штриха (или альтернативно, в качестве свойства в узле 814 зачеркивания или другом соответствующем узле).On figa and 8B depicts another example of annotation. In this example, as shown in FIG. 8A, the electronic document 800 again includes the sentence “Today the sky is green”, but in this case, the user of the pen computing system annotated the document 800 using electronic ink, striking out the word “green” (strikethrough shown at 802). FIG. 8B shows an exemplary hierarchical data structure 810 corresponding to said composite electronic document 800 when it is fully syntactically parsed (since the specific context nodes for most of FIG. 8B correspond to the context nodes present in FIG. 7B, these same positions, as those present in FIG. 7B are used in FIG. 8B, and a duplicate explanation is omitted). In this case, the parser notes the presence of data in the electronic document 800 related to annotation 802, and it classifies the data as a pattern made by electronic ink (ink pattern unit 812). In addition, based on the location and position of the ink drawing stroke (s) relative to the contents of the base typescript in document 800 (for example, strikethrough covers the horizontal word of the text), the parser recognizes and classifies the annotation as a strikethrough annotation and generates a strikethrough unit 814 . In addition, the parsing program stores all the stroke data corresponding to the actual stroke (s) of the annotation ink in strikethrough at one or more stroke end nodes 816 (or alternatively, as a property in strikethrough node 814 or another corresponding node).

Как и в случае с аннотацией подчеркиванием, описанной в отношении фиг.7А и 7В, аннотация зачеркиванием может сохраняться с данным отдельным словом «green», если по какой-либо причине слово будет перемещено. Снова это может быть выполнено, например, посредством сохранения данных в структуре 810 данных, означая то, что узел 814 контекста зачеркивания (в данном примере узел контекста «источника») связан с узлом 768е слова текста для слова «green» (в данном примере узлом контекста «назначения»), как изображено на фиг.8В стрелкой 818, и посредством сохранения данных в структуре данных, означая то, что узел 768е слова текста связан посредством узла 814 зачеркивания, что указано стрелкой 820. Тип связи в данном примере представляет собой тип связи «с горизонтальным охватом», который жестко привязывает узел 814 зачеркивания к узлу 768е слова текста. Следовательно, если по какой-либо причине данные, хранимые в узле 768е контекста слова текста, означают то, что в электронном документе 800 изменилось положение и/или размер слова «green» (или другого слова (слов), ассоциированного с узлом 768е), то связи 818 и 820 позволяют программе приложения обнаружить, что, если возможно, она должна скорректировать воспроизводимое представление зачеркивания и/или скорректировать его размер (если возможно) к размещению, пространственному положению и/или размеру слова, хранимого в узле 768е контекста в измененном электронном документе. Опять же, может быть использована любая подходящая схема связывания между узлами или любые подходящие данные, представляющие связь, без отступления от изобретения.As with the underscore annotation described with respect to FIGS. 7A and 7B, a strikethrough annotation can be saved with this single word “green” if for any reason the word is moved. Again, this can be accomplished, for example, by storing data in the data structure 810, meaning that the strikethrough context node 814 (in this example, the “source” context node) is associated with the text word node 768e for the word “green” (in this example, the node context of the “destination”), as shown in FIG. 8B by arrow 818, and by storing data in the data structure, meaning that the text word node 768e is connected through the strikeout node 814, which is indicated by arrow 820. The communication type in this example is a type connection "with horizontal coverage ", which rigidly binds the strikethrough node 814 to the text word node 768e. Therefore, if for some reason the data stored in the text word context node 768 e means that the position and / or size of the word “green” (or another word (s) associated with the node 768 e) has changed in the electronic document 800, then links 818 and 820 allow the application program to detect that, if possible, it should adjust the reproduced strikethrough representation and / or adjust its size (if possible) to the location, spatial position and / or size of the word stored in the context node 768e in the changed email electronic document. Again, any suitable linking scheme between nodes or any suitable data representing the link can be used without departing from the invention.

На фиг.9А и 9В изображен другой пример типа аннотации и дополнительно показаны ассоциирование или связывание аннотации с более чем одним словом текста. В данном примере, изображенном на фиг.9А и 9В, электронный документ 900 снова включает в себя предложение «Today the sky is green», но в данном случае пользователь вычислительной системы с перьевым вводом аннотировал документ 900, используя электронные чернила, обведя слова «is green» (обведение или аннотация типа «контейнера» показана позицией 902 на фиг.9А). На фиг.9В изображена примерная иерархическая структура 910 данных, соответствующая упомянутому составному электронному документу 900, когда он полностью синтаксически разобран (так как конкретные узлы контекста для большей части фиг.9В соответствуют узлам контекста, присутствующим на фиг.7В, то эти же позиции, что и присутствующие на фиг.7В, используются на фиг.9В, и опущено дублирующее объяснение). В данном случае средство синтаксического разбора снова отмечает присутствие данных в электронном документе 900, относящихся к аннотации 902, и оно классифицирует приведенные данные в качестве рисунка, выполненного посредством электронных чернил (узел 912 чернильного рисунка). Кроме того, основываясь на местоположении и позиции штриха(ов) чернильного рисунка относительно содержимого базового машинописного текста в документе 900, средство синтаксического разбора распознает и классифицирует аннотацию как аннотацию-«контейнер» и генерирует узел 914 контейнера чернил в структуре 910 данных. Кроме того, средство синтаксического разбора сохраняет все данные штрихов, соответствующие фактическому штриху(ам) чернил аннотации-контейнера, в одном или нескольких концевых узлах 916 штриха (или альтернативно, в качестве свойства в узле контейнера чернил или другом соответствующем узле).9A and 9B depict another example of an annotation type and further associate or associate an annotation with more than one word of text. In this example shown in FIGS. 9A and 9B, the electronic document 900 again includes the sentence “Today the sky is green”, but in this case, the pen-computer user annotated the document 900 using electronic ink, circling the words “is green ”(a circle or annotation of the“ container ”type is shown at 902 in FIG. 9A). FIG. 9B shows an exemplary hierarchical data structure 910 corresponding to said composite electronic document 900 when it is fully syntactically parsed (since the specific context nodes for most of FIG. 9B correspond to the context nodes present in FIG. 7B, these same positions, as those present in FIG. 7B are used in FIG. 9B, and a duplicate explanation is omitted). In this case, the parser again notes the presence of data in the electronic document 900 related to annotation 902, and it classifies the data as a drawing made by electronic ink (ink drawing unit 912). In addition, based on the location and position of the ink stroke (s) relative to the contents of the base typescript in document 900, the parser recognizes and classifies the annotation as a “container” annotation and generates an ink container assembly 914 in the data structure 910. In addition, the parser stores all the stroke data corresponding to the actual ink stroke (s) of the container annotation in one or more stroke end nodes 916 (or alternatively, as a property in the ink container node or other corresponding node).

Как и в случае с аннотациями подчеркиванием и зачеркиванием, описанными в отношении фиг.7А-8В, аннотация-контейнер может сохраняться со словами «is green», если по какой-либо причине упомянутые слова будут перемещены. Опять же, это может быть выполнено, например, сохранением данных в структуре 910 данных, означая то, что узел 914 контекста контейнера чернил (в данном примере узел контекста «источника») связан с каждым из узлов 768d и 768е слова текста для слов «is green» (в данном примере узлами контекста «назначения»), как изображено на фиг.9В стрелками 918а и 918b. Кроме того, данные могут быть сохранены в структуре 910 данных, означая то, что узлы 768d и 768е слова текста связаны посредством узла 914 контейнера, что указано стрелками 920а и 920b на фиг.9В. Данная связь представляет собой связь типа «контейнера». Следовательно, если по какой-либо причине данные, хранимые в узлах 768d и 768е контекста слова текста, означают, что в электронном документе 900 изменилось положение и/или размер слов «is green» (или другого слова (слов), ассоциированного с данными узлами контекста), то связи 918а, 918b, 920а и 920b позволяют программе приложения обнаружить, что, если возможно, она должна скорректировать воспроизводимое представление аннотации-контейнера и/или ее размер к размещению, пространственному положению и/или размеру слов, хранимых в узлах 768d и 768е контекста в измененном электронном документе. Кроме того, если пользователь добавляет слова между словами «is» и «green», или если слова или знаки удалены или изменены любым образом, то программа приложения может изменить размер и/или размещение аннотации-контейнера для согласования с упомянутыми изменениями. Опять же, может быть сохранена другая схема связи или данные, означающие связь, без отступления от изобретения.As with the underlining and strikethrough annotations described with respect to FIGS. 7A-8B, the container annotation can be saved with the words “is green” if for some reason the words are moved. Again, this can be accomplished, for example, by storing data in the data structure 910, meaning that the ink container context node 914 (in this example, the “source” context node) is associated with each of the text word nodes 768d and 768e for the words “is green "(in this example, the nodes of the context of the" destination "), as shown in figv arrows 918a and 918b. In addition, data can be stored in the data structure 910, meaning that the text word nodes 768d and 768e are connected by the container node 914, as indicated by arrows 920a and 920b in FIG. 9B. This relationship is a container type relationship. Therefore, if for some reason the data stored in the text word context nodes 768d and 768e means that the position and / or size of the words “is green” (or another word (s) associated with these nodes has changed in the electronic document 900 context), then links 918a, 918b, 920a and 920b allow the application program to find that, if possible, it should adjust the reproduced representation of the annotation container and / or its size to the location, spatial position and / or size of words stored in nodes 768d and 768e context in treason Mr electronic document. In addition, if the user adds words between the words “is” and “green”, or if the words or characters are deleted or changed in any way, the application program can resize and / or place the annotation container to accommodate the changes. Again, another communication scheme or data indicating communication can be stored without departing from the invention.

На фиг.10А и 10В изображен другой тип широко используемой аннотации, а именно, аннотации типа «комментарий на полях». В данном примере, как изображено на фиг.10А, пользователь аннотировал электронный документ 1000, содержащий предложение «Today the sky is green», комментарием 1002 на полях, выполненным посредством электронных чернил, утверждающим: «it's not green!» (оно не зеленое). В данном случае необходимо заметить, что, как показано на фиг.10В, была изменена структура 1010 данных, ассоциированная с машинописным текстом, так как упомянутый текст присутствует на двух строках в электронном документе 1000 (а не на одной строке, показанной на фиг.7А, 8А и 9А). Следовательно, структура 1010 данных имеет два узла 1012 и 1014 строки, и первый узел 1012 строки включает в себя узлы 768а и 768b слова текста (ассоциированные со словами «Today» и «the»), и второй узел 1014 строки включает в себя узлы 768с, 768d и 768е слова текста (ассоциированные со словами «sky», «is» и «green»).On figa and 10B depicts another type of commonly used annotations, namely annotations such as "comment on the margin." In this example, as shown in FIG. 10A, the user annotated an electronic document 1000 containing the sentence “Today the sky is green”, with a comment 1002 on the margins made by electronic ink stating: “it's not green!” (It is not green) . In this case, it should be noted that, as shown in FIG. 10B, the data structure 1010 associated with the typewritten text has been changed since the text is present on two lines in the electronic document 1000 (and not on one line shown in FIG. 7A 8A and 9A). Therefore, the data structure 1010 has two line nodes 1012 and 1014, and the first line node 1012 includes text word nodes 768a and 768b (associated with the words “Today” and “the”), and the second line node 1014 includes the nodes 768c , 768d and 768e are words of the text (associated with the words “sky”, “is” and “green”).

Если составной электронный документ 1000 полностью синтаксически разобран, то средство синтаксического разбора распознает аннотацию 1002 как содержащую текст, выполненный посредством электронных чернил, и она классифицирует данную аннотацию (например, вследствие ее размещения на полях документа 1000) как аннотацию типа «комментарий на полях». Следовательно, программа синтаксического разбора генерирует соответствующий узел 1016 контекста для комментария на полях. Так как данный комментарий 1002 на полях содержит только текст электронных чернил, то программа синтаксического разбора далее генерирует узел 1018 абзаца, два узла 1020 и 1022 строки и соответствующие узлы 1024, 1026, 1028 чернильного слова и узлы 1030, 1032 и 1034 штриха, ассоциированные с иерархической структурой электронных чернил (как ранее отмечено, в необязательном порядке и в качестве альтернативы, данные штриха чернил могут сохраняться в качестве свойств узла(ов) чернильного слова, и/или узлы строки могут быть исключены из структуры 1010 данных).If the composite electronic document 1000 is fully syntactically parsed, the parser recognizes the annotation 1002 as containing text made by electronic ink, and it classifies the annotation (for example, due to its placement on the margins of the document 1000) as an annotation of the "marginal comment" type. Therefore, the parser generates a corresponding context node 1016 for commenting on the margins. Since this marginal comment 1002 contains only electronic ink text, the parser further generates the paragraph node 1018, two line nodes 1020 and 1022, and the corresponding ink word nodes 1024, 1026, 1028 and the stroke nodes 1030, 1032 and 1034 associated with hierarchical structure of electronic ink (as previously noted, optionally and alternatively, ink stroke data can be stored as properties of an ink word node (s) and / or line nodes can be excluded from data structure 1010).

Другое отношение связывания изображено в примере на фиг.10А и 10В. Конкретно, в данном примере, основываясь на размещении и ориентации комментария 1002 на полях относительно полей страницы и содержимого базового документа, средство синтаксического разбора сохраняет данные в структуре 1010 данных, означая то, что узел 1018 абзаца, ассоциированный с комментарием 1002 на полях (узел контекста «источника» в данном примере), связан с узлом 764 абзаца, ассоциированным с машинописным текстом (узлом контекста «назначения» в данном примере), как изображено на фиг.10В стрелкой 1036. Кроме того, средство синтаксического разбора сохраняет данные в структуре 1010 данных, означая то, что узел 764 абзаца, ассоциированный с машинописным текстом, связан посредством узла 1018 абзаца комментария 1002 на полях, как изображено стрелкой 1038. Вышеприведенное представляет собой схему связи типа “жесткого связывания”, при котором абзац чернил жестко привязывается к абзацу текста. Таким образом, куда бы ни перемещался абзац машинописного текста в электронном документе 1000, связи 1036 и 1038 позволяют программе приложения обнаруживать, что, если возможно, она должна переместить комментарий 1002 на полях, чтобы он оставался на полях рядом со связанным машинописным абзацем, даже если, в необязательном порядке, дополнительные строки и/или слова будут добавлены к абзацу, и/или если строки и/или слова будут удалены из абзаца, и/или если другие изменения будут выполнены в абзаце или электронном документе 1000. Конечно, могут быть сохранены другие схемы связывания или данные, ассоциированные со связями, без отступления от изобретения. Например, узел 1016 комментария на полях может быть связан с одним или несколькими узлами отдельных слов текста машинописного абзаца, таким как первый узел 768а слова текста.Another binding relationship is depicted in the example of FIGS. 10A and 10B. Specifically, in this example, based on the placement and orientation of the marginal comment 1002 relative to the page margins and the contents of the base document, the parser stores the data in the data structure 1010, meaning that the paragraph node 1018 associated with the marginal comment 1002 (context node "Source" in this example) is associated with the paragraph node 764 associated with the typewritten text (the "destination" context node in this example), as shown in FIG. 10B by arrow 1036. In addition, the parser stores the data in the data structure 1010, meaning that the paragraph unit 764 associated with the typewritten text is connected by the field unit 1018 of the comment paragraph 1002 in the margin, as shown by arrow 1038. The above is a “hard link” type communication scheme in which the ink paragraph rigidly attached to a paragraph of text. Thus, wherever a paragraph of typewritten text in electronic document 1000 moves, links 1036 and 1038 allow the application to detect that, if possible, it should move the comment 1002 in the margins so that it remains in the margins next to the associated typewritten paragraph, even if optionally, additional lines and / or words will be added to the paragraph, and / or if the lines and / or words are deleted from the paragraph, and / or if other changes are made to the paragraph or electronic document 1000. Of course, there can be Aneny other linking scheme or data associated with communications, without departing from the invention. For example, the marginal comment node 1016 may be associated with one or more nodes of the individual typescript text words, such as the first text word node 768a.

На фиг.11А и 11В изображен в некоторой степени более сложный пример аннотации, распознаваемой системами и способами в соответствии по меньшей мере с некоторыми примерами настоящего изобретения. В изображенном примере электронный документ 1100 снова включает в себя фразу «Today the sky is green», но в данном случае пользователь аннотировал электронный документ 1100, используя комбинацию различных типов аннотации. Конкретно, пользователь нарисовал аннотацию 1102 типа контейнера, обводящую слово «green», аннотацию 1104 типа комментария на полях, содержащую слово электронных чернил «Blue!» (синее!), и аннотацию 1106 типа соединителя (например, стрелки в данном примере), направленную от аннотации 1102 типа контейнера на аннотацию 1104 типа комментария на полях.11A and 11B depict to some extent a more complex example of an annotation recognized by systems and methods in accordance with at least some examples of the present invention. In the illustrated example, the electronic document 1100 again includes the phrase “Today the sky is green”, but in this case, the user annotated the electronic document 1100 using a combination of various types of annotations. Specifically, the user drew a container type annotation 1102 encircling the word “green”, a marginal comment type annotation 1104 containing the electronic ink word “Blue!” (Blue!), And a connector type annotation 1106 (for example, arrows in this example) directed from annotation 1102 of the type of container to annotation 1104 of the type of marginal comment.

Вследствие относительного положения и пространственной ориентации различных типов аннотации относительно базового документа, текста машинописного документа и полей документа система синтаксического разбора в соответствии по меньшей мере с некоторыми примерами настоящего изобретения распознает различные типы аннотаций, их содержимое и их взаимосвязь друг с другом и с машинописным текстом электронного документа, как в общих чертах описано выше. На фиг.11В показана примерная иерархическая структура 1110 данных для электронного документа 1100, сгенерированная средством синтаксического разбора. Так как иерархическая структура для машинописного текста аналогична структуре, описанной выше на фиг.7В, одинаковые позиции используются для упомянутой структуры на фиг.11В, и опускается подробное объяснение. Также, как изображено на фиг.11В, цепочка 1112 узлов для аннотации 1102 типа контейнера чернил аналогична цепочке, изображенной на фиг.9В, и цепочка 1114 узлов для аннотации 1104 типа комментария на полях аналогична цепочке, изображенной на фиг.10В. Следовательно, не включается подробное описание приведенных цепочек узлов.Due to the relative position and spatial orientation of the various types of annotations with respect to the base document, typewritten text and document fields, the parsing system in accordance with at least some examples of the present invention recognizes various types of annotations, their contents and their relationship with each other and with electronic typescript document, as outlined above. 11B shows an exemplary hierarchical data structure 1110 for an electronic document 1100 generated by a parser. Since the hierarchical structure for typewritten text is similar to the structure described above in FIG. 7B, the same reference numbers are used for the structure in FIG. 11B, and a detailed explanation is omitted. Also, as shown in FIG. 11B, the node chain 1112 for the ink container type annotation 1102 is similar to the chain shown in FIG. 9B, and the node chain 1114 for the annotation type annotation 1104 is similar to the chain shown in FIG. 10B. Therefore, a detailed description of the given chains of nodes is not included.

Для того, чтобы сохранить пространственное положение аннотаций с соответствующей частью и пространственным размещением базового текста, различные связи между узлами аннотаций и с соответствующим узлом текста обеспечиваются программой синтаксического разбора и сохраняются в структуре 1110 данных. В изображенном примере узел 1116 контейнера чернил (в данном случае узел контекста «источника») связан с узлом 768е слова текста для слова, которое он содержит (т.е. узлом «назначения», соответствующим слову «green» в данном примере), как изображено на фиг.11В стрелкой 1118. Аналогично, данные сохраняются в структуре 1110 данных, означая то, что узел 768е слова текста связан посредством узла 1116 контейнера чернил, как указано на фиг.11В стрелкой 1120. Вышеприведенное представляет собой схему связывания типа «контейнера».In order to preserve the spatial position of the annotations with the corresponding part and the spatial arrangement of the base text, various relationships between the annotation nodes and the corresponding text node are provided by the parsing program and stored in the data structure 1110. In the illustrated example, the ink container assembly 1116 (in this case, the “source” context node) is associated with the text word node 768e for the word that it contains (ie, the “destination” node corresponding to the word “green” in this example), as 11B is shown by arrow 1118. Similarly, the data is stored in the data structure 1110, meaning that the text word node 768e is connected by the ink container assembly 1116, as indicated in FIG. 11B by the arrow 1120. The above is a “container” type coupling scheme .

Как отмечено выше, средство синтаксического разбора в соответствии с данным примером изобретения дополнительно распознает, что электронный документ 1100 включает в себя чернильный рисунок 1106, соответствующий чернильному соединителю (т.е. стрелке между аннотацией-контейнером 1102 и аннотацией 1104 типа комментария на полях в данном примере). Данная аннотация-соединитель 1106 сохраняется в структуре 1110 данных в качестве чернильного рисунка (представляемого узлом 1122 чернильного рисунка), который содержит узел, указывающий тип аннотации (узел 1124 чернильного соединителя в данном примере), который дополнительно включает в себя данные, означающие штрих или штрихи, составляющие соединитель (например, в узле(ах) 1126 штриха или в свойстве, ассоциированном с узлом 1124 чернильного соединителя (или другим подходящим узлом)). Кроме того, информация сохраняется в структуре 1110 данных, означая то, что узел 1124 чернильного соединителя (узел «назначения» в данном примере) указывает от узла 1116 контейнера чернил (узла «источника» в данном примере). Данная связь (связь типа «указания от») представлена на фиг.11В стрелкой 1128. Кроме того, структура 1110 данных дополнительно включает в себя данные, означающие то, что узел 1124 чернильного соединителя (узел контекста «источника» в данном примере) связан с узлом 1132 чернильного слова (узлом контекста «назначения» в данном примере). Упомянутая связь (связь типа «указания на») представлена на фиг.11В стрелкой 1134. Альтернативно, узел 1124 чернильного соединителя может быть связан с любым одним узлом из узла чернильной строки, узла чернильного абзаца или узла комментария на полях из состава цепочки 1114 узлов без отступления от изобретения. С конкретными связями, описанными выше, структура 1110 данных означает то, что чернильный соединитель 1106 указывает от рисунка 1102 обведением и указывает на чернильное слово, как изображено на фиг.11А. Упомянутые различные связи позволяют программе приложения обнаружить ассоциацию между базовым документом и различными компонентами аннотации. Затем, если возможно, программа приложения может переместить элементы аннотации так, чтобы они надлежащим образом соответствовали перемещениям в базовом документе. Может быть использована любая подходящая схема связывания или данные, ассоциированные со связью, без отступления от изобретения.As noted above, the parser in accordance with this example of the invention further recognizes that the electronic document 1100 includes an ink drawing 1106 corresponding to an ink connector (i.e., the arrow between the annotation container 1102 and the annotation type annotation 1104 in the margins in this example). This annotation connector 1106 is stored in the data structure 1110 as an ink drawing (represented by the ink drawing node 1122), which contains a node indicating the type of annotation (ink connector node 1124 in this example), which further includes data indicating a stroke or strokes constituting the connector (for example, in the block (s) 1126 of the stroke or in the property associated with the node 1124 of the ink connector (or other suitable node)). In addition, information is stored in the data structure 1110, meaning that the ink connector assembly 1124 (the “destination” node in this example) points from the ink container assembly 1116 (the “source” node in this example). This relationship (“pointing from” type relationship) is represented in FIG. 11B by arrow 1128. In addition, the data structure 1110 further includes data meaning that the ink connector assembly 1124 (the “source” context node in this example) is associated with the ink word node 1132 (the “destination” context node in this example). Said link (“pointing to” type link) is shown in FIG. 11B by arrow 1134. Alternatively, the ink connector assembly 1124 may be connected to any one node from the ink line assembly, the ink paragraph assembly, or the commentary node in the margins of the chain 1114 nodes without deviations from the invention. With the specific relationships described above, the data structure 1110 means that the ink connector 1106 points from a circle around drawing 1102 and points to an ink word, as shown in FIG. 11A. Mentioned various relationships allow the application program to detect the association between the underlying document and the various components of the annotation. Then, if possible, the application program can move the annotation elements so that they correspond appropriately to the movements in the underlying document. Any suitable linking scheme or data associated with the link can be used without departing from the invention.

На фиг.12А и 12В изображен другой пример обычно используемого признака аннотации. В данном примере, как изображено на фиг.12А, электронный документ 1200 снова включает в себя предложение «Today the sky is green», но в данном случае пользователь вычислительной системы с перьевым вводом аннотировал документ 1200, используя электронные чернила для размещения звезды или звездочки около первого слова предложения (аннотация показана позицией 1202). На фиг.12В изображена примерная иерархическая структура 1210 данных, соответствующая упомянутому составному электронному документу 1200, когда он полностью синтаксически разобран (так как узлы контекста для большей части фиг.12В соответствуют узлам контекста, присутствующим на фиг.7В, то позиции, одинаковые с позициями, которые присутствуют на фиг.7В, используются на фиг.12В, и исключено дублирующее объяснение). В данном случае средство синтаксического разбора отмечает присутствие данных электронных чернил, относящихся к аннотации, и она классифицирует упомянутые данные как чернильный рисунок (узел 1212 рисунка чернил). Кроме того, основываясь на форме штриха чернил, а также размещении и положении штриха(ов) чернил аннотации 1202 относительно содержимого базового документа 1200 (например, вдоль строки машинописного текста), программа синтаксического разбора распознает аннотацию в качестве «звездочки», «маркера» или аннотации типа “жесткого связывания” и генерирует узел 1214 звездочки. Кроме того, программа синтаксического разбора сохраняет все данные штрихов, соответствующие фактическому штриху(ам) чернил звездочки в одном или нескольких концевых узлах 1216 штриха или в свойстве узла звездочки (или некоторого другого узла).12A and 12B depict another example of a commonly used annotation feature. In this example, as shown in FIG. 12A, the electronic document 1200 again includes the “Today the sky is green” sentence, but in this case, the pen-computer user annotated the document 1200 using electronic ink to place a star or asterisk near the first word of the sentence (abstract shown at 1202). FIG. 12B depicts an exemplary hierarchical data structure 1210 corresponding to said composite electronic document 1200 when it is fully parsed (since the context nodes for most of FIG. 12B correspond to the context nodes present in FIG. 7B, the positions are the same with those which are present in FIG. 7B are used in FIG. 12B, and a duplicate explanation is excluded). In this case, the parser notes the presence of electronic ink data related to the annotation, and it classifies the data as an ink drawing (ink drawing unit 1212). In addition, based on the shape of the ink stroke, as well as the location and position of the ink stroke (s) of the annotation 1202 relative to the contents of the base document 1200 (for example, along a typewriter line), the parser recognizes the annotation as a “star”, “marker” or “hard-link” type annotations and generates an asterisk node 1214. In addition, the parsing program saves all the stroke data corresponding to the actual stroke (s) of the asterisk ink in one or more stroke end nodes 1216 or in the property of the asterisk node (or some other node).

В данном примере аннотация 1202 типа звездочки может сохраняться со всей строкой машинописного текста, где бы ни появилась упомянутая строка в электронном документе 1200, если по какой-либо причине машинописный текст будет перемещен. Это может быть выполнено, например, сохранением данных в структуре 1210 данных, что означает то, что узел 1214 контекста звездочки (узел контекста «источника» в данном примере) связан с узлом 766 строки текста (узлом контекста «назначения» в данном примере), как изображено на фиг.12В стрелкой 1218, и сохранением данных, означая то, что узел 766 строки текста связан посредством узла 1214 звездочки, как указано стрелкой 1220. Следовательно, если по какой-либо причине данные, хранимые в узле 766 контекста строки текста, означают то, что в электронном документе 1200 изменилось положение или размещение строки, то связи 1218 и 1220 позволяют программе приложения обнаружить, что, если возможно, она должна скорректировать воспроизводимое представление звездочки к размещению и/или пространственному положению, соответствующему воспроизведению данных, ассоциированных с узлом 766 контекста, в измененном электронном документе. Альтернативно, если требуется, средство синтаксического разбора может связать узел 1214 звездочки (или любой подходящий узел, ассоциированный с аннотацией звездочкой) с узлом 764 абзаца или одним из узлов отдельных слов (например, узлом 768а слова) без отступления от изобретения. Также, если требуется, узел 1212 чернильного рисунка может быть узлом источника, привязанным к узлу 766 строки (или другому подходящему узлу, соответствующему машинописному тексту в данном примере). Может быть использована любая подходящая схема связывания или данные, представляющие связь, без отступления от изобретения.In this example, an asterisk-type annotation 1202 can be saved with the entire line of typescript wherever the line appears in electronic document 1200 if for some reason the typescript is moved. This can be done, for example, by storing data in the data structure 1210, which means that the asterisk context node 1214 (the “source” context node in this example) is associated with the text line node 766 (the “destination” context node in this example), as shown in FIG. 12B by arrow 1218, and storing data, meaning that the text line node 766 is connected by an asterisk node 1214, as indicated by arrow 1220. Therefore, if for some reason the data stored in the text line context node 766 is mean that in electronic document 1200 if the position or placement of the line has changed, then the links 1218 and 1220 allow the application program to detect that, if possible, it should adjust the reproduced representation of the asterisk to the placement and / or spatial position corresponding to the reproduction of the data associated with the context node 766 in the modified electronic document. Alternatively, if required, the parser may associate an asterisk node 1214 (or any suitable node associated with an asterisk annotation) with a paragraph node 764 or one of the individual word nodes (eg, word node 768a) without departing from the invention. Also, if desired, the ink drawing assembly 1212 may be a source assembly mapped to a string assembly 766 (or another suitable assembly corresponding to the typescript in this example). Any suitable binding scheme or data representing the link may be used without departing from the invention.

Связанная аннотация типа «блок-схемы» изображена на фиг.13А и 13В. В данном примере электронный документ 1300 включает в себя блок-схему, которая, в необязательном порядке, может быть включена в качестве части аннотации в полном большем электронном документе. Как изображено на фиг.13А, аннотация или блок-схема включает в себя первый элемент 1302 чернил (буква «А» в данном примере), обведенный или охватываемый первой аннотацией-контейнером 1304, и второй элемент 1306 чернил, обведенный или охватываемый второй аннотацией-контейнером 1308. Кроме того, аннотация-соединитель 1310 (стрелка в данном примере) проходит от первой аннотации-контейнера 1304 до второй аннотации-контейнера 1308. Необходимо понять, однако, что взаимосвязи между элементами документа могут быть представлены альтернативным образом, отличным от связей. Например, упомянутые взаимосвязи могут быть представлены в структуре самого дерева данных при помощи, например, использования узлов контейнера, которые содержат ассоциированные элементы документа.A related annotation of the “block diagram” type is depicted in FIGS. 13A and 13B. In this example, the electronic document 1300 includes a block diagram, which, optionally, may be included as part of the annotation in the entire larger electronic document. As shown in FIG. 13A, the annotation or block diagram includes a first ink element 1302 (the letter “A” in this example), circled or covered by the first annotation container 1304, and a second ink element 1306, circled or covered by the second annotation - container 1308. In addition, connector annotation 1310 (arrow in this example) extends from the first annotation-container 1304 to the second annotation-container 1308. It must be understood, however, that the relationships between elements of a document can be represented in an alternative way, different from t connections. For example, the mentioned relationships can be represented in the structure of the data tree itself by, for example, using container nodes that contain the associated elements of the document.

На фиг.13В изображена примерная структура 1320 данных, которая может быть ассоциирована с аннотацией типа блок-схемы электронного документа 1300 на фиг.13А, если произведен ее полный синтаксический разбор. В упомянутой примерной структуре 1320 данных корневой узел 1322, который может соответствовать всему электронному документу 1300 или его некоторой части, обеспечен в качестве родительского узла для узлов в аннотации типа блок-схемы. Первым узлом контекста, относящимся к конкретным структурам аннотации, является узел 1324 рисунка чернил, соответствующий контейнеру 1304 чернил. Узел 1326 контейнера чернил предусмотрен в качестве дочернего узла для узла 1324 рисунка чернил, и конкретный штрих(и), ассоциированный с аннотацией-контейнером 1304 чернил, сохраняется в концевом узле(ах) 1328 или в качестве свойств для узла 1326 контейнера чернил (или другого узла).FIG. 13B illustrates an exemplary data structure 1320 that may be associated with a block diagram type annotation of the electronic document 1300 in FIG. 13A if it has been parsed completely. In said exemplary data structure 1320, a root node 1322, which may correspond to the entire electronic document 1300 or some part thereof, is provided as the parent node for the nodes in a block diagram type annotation. The first context node related to specific annotation structures is the ink drawing node 1324 corresponding to the ink container 1304. An ink container assembly 1326 is provided as a child node for the ink drawing assembly 1324, and the specific stroke (s) associated with the ink container annotation 1304 is stored in the end assembly (s) 1328 or as properties for the ink container assembly 1326 (or another node).

Как отмечено выше в отношении фиг.13А, аннотация дополнительно включает в себя текст, выполненный посредством электронных чернил, соответствующий букве «А» 1302. Подобно другому тексту, выполненному посредством электронных чернил, описанному выше, электронные чернила, ассоциированные с упомянутым текстом, выполненным посредством чернил, сохраняются в иерархической структуре 1320 данных в качестве узла 1330 абзаца, который содержит узел 1332 строки, который содержит узел 1334 чернильного слова, который, в необязательном порядке, содержит один или несколько концевых узлов 1336, соответствующих отдельным штрихам в аннотации текста, выполненного посредством чернил, или свойству, включающему данные штриха. Информация, хранимая в структуре 1320 данных, показывает, что узел 1326 контейнера чернил аннотации-контейнера 1304 (узел «источника») связан с узлом 1330 абзаца буквы «А» (узлом контекста «назначения»), как изображено на фиг.13В стрелкой 1338. Альтернативно, если требуется, узел 1334 чернильного слова или узел 1332 строки может служить в качестве узла назначения. Кроме того, информация, хранимая в структуре 1320 данных, также показывает, что узел 1330 абзаца связан посредством узла 1326 контейнера чернил, как обозначено на фиг.13В стрелкой 1340. Так как структура данных для контейнера 1308 чернил и буква «В» 1306 аннотации в данном примере совместно используют одну и ту же общую структуру, что и для контейнера 1304 чернил и буквы «А» 1302, включая эту же общую структуру связывания, то различные узлы в структуре 1320 данных для буквы «В» 1306 и ассоциированный с ней контейнер 1308 совместно используют эти же позиции, что и ассоциированные с буквой «А» и ее контейнером, но буква «b» повторяет ссылочные позиции для контейнера 1308 чернил и слова 1306 чернил на фиг.13В. Конечно, различные иерархические схемы и структуры связывания или данные связывания могут отличаться от тех, которые конкретно описаны выше, без отступления от изобретения.As noted above with respect to FIG. 13A, the annotation further includes electronic ink text corresponding to the letter “A” 1302. Like other electronic ink text described above, electronic ink associated with said text executed by ink, stored in the hierarchical data structure 1320 as a paragraph node 1330, which contains the line node 1332, which contains the ink word node 1334, which, optionally, contains one or ultiple end nodes 1336 corresponding to the individual strokes in text annotations made by means of ink or property comprising stroke data. The information stored in the data structure 1320 indicates that the ink container assembly 1326 of the annotation container 1304 (the “source” node) is associated with the paragraph “A” paragraph node 1330 (the “destination” context node), as shown in FIG. 13B by arrow 1338 Alternatively, if desired, the ink word node 1334 or the line node 1332 may serve as a destination node. In addition, the information stored in the data structure 1320 also indicates that the paragraph assembly 1330 is connected through the ink container assembly 1326, as indicated by arrow 1340 in FIG. 13B. Since the data structure for the ink container 1308 and the letter “B” 1306 annotations in In this example, they share the same general structure as for the ink container 1304 and the letter “A” 1302, including the same general binding structure, the different nodes in the data structure 1320 for the letter “B” 1306 and the associated container 1308 share the same positions as ass of dissociated with the letter "A" and its container, but the letter "b" follows the reference numerals for the container 1308 and ink word 1306 ink 13B. Of course, various hierarchical binding patterns and structures or binding data may differ from those specifically described above without departing from the invention.

Аннотация дополнительно включает в себя аннотацию-соединитель 1310, представленную в структуре 1320 данных посредством узла 1342 чернильного рисунка. Как описано выше в связи с фиг.11В, структура данных для рисунка чернил, представляющего аннотацию-контейнер чернил, дополнительно может включать в себя узел 1344 чернильного соединителя, который дополнительно может включать в себя одно или несколько свойств или концевой узел(ы) 1346, который включает в себя данные, ассоциированные с конкретным штрихом(ами), который составляет соединитель 1310. Для завершения структуры данных аннотации упомянутого примера данные, ассоциированные с аннотацией-контейнером 1310 чернил (узлом источника), связаны с данными, ассоциированными с двумя аннотациями-контейнерами 1304 и 1308 (узлами назначения). Конкретно, как показано в примере на фиг.13В, информация хранится в структуре 1320 данных, означая то, что узел 1326 контейнера чернил связан с узлом 1344 соединителя чернил (представленным стрелкой 1348) в качестве аннотации типа «указание от». Кроме того, информация хранится в структуре 1320 данных, означая то, что узел 1344 соединителя чернил связан с узлом 1326b контейнера чернил (представленным стрелкой 1352) в качестве аннотации типа «указание на». Таким образом хранимые данные, относящиеся к связям, означают то, что соединитель 1310 указывает от контейнера 1304 обведения на контейнер 1308 обведения, как изображено на фиг.13А. Таким образом, существование различных связей позволяет другим частям аннотации отслеживать перемещение одной части аннотации в электронном документе 1300, тем самым сохраняя аннотацию целой, даже если электронный документ 1300 некоторым образом изменяется. Конечно, эта вся структура также может быть связана с некоторым элементом базового документа, как описано выше, без отступления от изобретения.The abstract further includes a connector annotation 1310 represented in the data structure 1320 by the ink drawing unit 1342. As described above in connection with FIG. 11B, the data structure for an ink pattern representing an ink container annotation may further include an ink connector assembly 1344, which may further include one or more properties or an end assembly (s) 1346, which includes data associated with the particular stroke (s) that make up the connector 1310. To complete the annotation data structure of the above example, the data associated with the ink annotation container 1310 (source node) is associated with yes GOVERNMENTAL associated with two annotations-containers 1304 and 1308 (destination nodes). Specifically, as shown in the example of FIG. 13B, the information is stored in the data structure 1320, meaning that the ink container assembly 1326 is connected to the ink connector assembly 1344 (represented by arrow 1348) as an “tip off” annotation. In addition, information is stored in the data structure 1320, meaning that the ink connector assembly 1344 is associated with the ink container assembly 1326b (represented by arrow 1352) as an “pointing to” annotation. Thus, the stored data related to the links means that the connector 1310 points from the container 1304 encirclement container 1308 encirclement, as shown in figa. Thus, the existence of various relationships allows the other parts of the annotation to track the movement of one part of the annotation in the electronic document 1300, thereby preserving the annotation intact, even if the electronic document 1300 changes in some way. Of course, this entire structure can also be associated with some element of the underlying document, as described above, without departing from the invention.

Аналогично, аннотация может включать в себя два охватывателя, соединенных посредством соединителя с письменным комментарием, таким как, например, «поменять их!». Если одна часть аннотации перемещается, то может потребоваться независимое перемещение другой части аннотации, например, когда слова вводятся между двумя охватывателями. Связи между узлами контекста, представляющими аннотации электронных чернил, и узлами, представляющими нечернильное содержимое, могут быть использованы программным приложением для перемещения частей аннотаций и затем обратного их связывания вместе, когда будет завершена операция размещения.Similarly, the annotation may include two captors connected via a connector to a written comment, such as, for example, “change them!”. If one part of the annotation moves, then it may be necessary to independently move the other part of the annotation, for example, when words are entered between two captors. Links between context nodes representing annotations of electronic ink and nodes representing non-ink content can be used by the software application to move parts of the annotations and then link them back together when the placement operation is completed.

На фиг.14А и 14В изображен другой пример электронного документа 1400, имеющего аннотацию или структуру чернил типа блок-схемы. В данном примере аннотация, выполненная посредством электронных чернил, для буквы «А» 1402 соединена с аннотациями, выполненными посредством электронных чернил, для букв «В» 1404 и «С» 1406, причем соединители 1408 и 1410, выполненных посредством электронных чернил, расположены между буквами «А» и «В», и «А» и «С» соответственно.On figa and 14B depicts another example of an electronic document 1400 having an annotation or ink structure such as a block diagram. In this example, the annotation made by electronic ink for the letter “A” 1402 is connected to the annotations made by electronic ink for the letters “B” 1404 and “C” 1406, with the connectors 1408 and 1410 made by electronic ink being located between letters "A" and "B", and "A" and "C", respectively.

На фиг.14В изображена примерная структура 1420 данных для электронного документа 1400 после синтаксического разбора. Данные, относящиеся ко всему электронному документу или некоторой его части, могут быть сохранены в родительском корневом узле 1422. Данные, соответствующие словам «А», «В» и «С» электронных чернил, имеют одинаковую структуру узла (1424а, 1424b, 1424с) абзаца, узла (1426а, 1426b, 1426с) строки, узла (1428а, 1428b, 1428с) чернильного слова и узла(ов) (1430а, 1430b, 1430с) штриха, что и используемая на нескольких фигурах, описанных выше. Опускается повторное описание упомянутых узлов. Аналогично, чернильные соединители имеют структуру узла (1432а, 1432b) чернильного рисунка, узла (1434а, 1434b) контейнера чернил и узла(ов) (1436а, 1436b) штриха, используемую на вышеописанных фиг.11В и 13В, так что опускается повторное описание. Конечно, могут быть использованы разновидности в упомянутых конкретных структурах данных, включая возможные описанные выше разновидности, без отступления от изобретения.FIG. 14B shows an exemplary data structure 1420 for an electronic document 1400 after parsing. Data related to the entire electronic document or some part of it can be stored in the parent root node 1422. Data corresponding to the words “A”, “B” and “C” of electronic ink have the same node structure (1424a, 1424b, 1424c) paragraph, node (1426a, 1426b, 1426c) of the line, node (1428a, 1428b, 1428c) of the ink word and the node (s) (1430a, 1430b, 1430c) of the stroke, as used in several of the figures described above. A repeated description of the nodes is omitted. Similarly, ink connectors have the structure of an ink drawing assembly (1432a, 1432b), ink container assembly (1434a, 1434b), and a stroke assembly (s) (1436a, 1436b) used in the above-described FIGS. 11B and 13B, so that a repeated description is omitted. Of course, varieties can be used in the specific data structures mentioned, including the possible varieties described above, without departing from the invention.

Для того чтобы завершить структуру данных аннотации упомянутого примера, данные, ассоциированные с аннотацией-соединителем 1408 чернил, связаны с данными, ассоциированными с двумя аннотациями 1402 и 1404 в виде чернильных слов, которые она соединяет, и данные, ассоциированные с аннотацией-соединителем 1410 чернил, связаны с данными, ассоциированными с двумя аннотациями 1402 и 1406 в виде чернильных слов, которые она соединяет. Конкретно, как показано в примере на фиг.14В, информация хранится в структуре 1420 данных, означая то, что узел 1432а чернильного рисунка (узел «источника») «указывает на» узлы 1428а и 1428b чернильного слова (представленные стрелками 1438 и 1440, соответственно). Аналогично, информация хранится в структуре 1420 данных, означая то, что узел 1432b чернильного рисунка (узел «источника») «указывает на» узлы 1428а и 1428с чернильного слова (представленные стрелками 1442 и 1444, соответственно). Узлы 1428а, 1428b и 1428с чернильного слова служат в качестве узлов «назначения». Благодаря различным связям, перемещение одной части аннотации в электронном документе 1400 может отслеживаться другими частями аннотации, тем самым сохраняя аннотацию целой или связанной, даже если электронный документ 1400 некоторым образом будет изменен. Также данная аннотация может быть связана с одним или несколькими другими элементами в электронном документе, такими как машинописный текст, рисунки, изображения и т.п., без отступления от изобретения.In order to complete the annotation data structure of the above example, the data associated with the ink annotation connector 1408 is associated with the data associated with the two ink annotations 1402 and 1404 in the form of ink words that it connects, and the data associated with the ink annotation connector 1410 , are associated with data associated with the two annotations 1402 and 1406 in the form of ink words that it connects. Specifically, as shown in the example of FIG. 14B, the information is stored in the data structure 1420, meaning that the ink drawing unit 1432a (the “source” node) “points to” the ink word nodes 1428a and 1428b (represented by arrows 1438 and 1440, respectively ) Similarly, information is stored in the data structure 1420, meaning that the ink drawing unit 1432b (the “source” node) “points to” the ink word nodes 1428a and 1428c (represented by arrows 1442 and 1444, respectively). The ink word nodes 1428a, 1428b, and 1428c serve as “destination” nodes. Due to various relationships, the movement of one part of the annotation in the electronic document 1400 can be tracked by the other parts of the annotation, thereby keeping the annotation intact or related, even if the electronic document 1400 is modified in some way. Also, this annotation may be associated with one or more other elements in an electronic document, such as typewritten text, drawings, images, etc., without departing from the invention.

На фиг.15А-15С изображены примеры электронного документа 1500 и примерные структуры данных, которые включают в себя, выполненную посредством электронных чернил аннотацию в виде таблицы, имеющей множество строк и столбцов. Конкретно, как изображено в примере на фиг.15А, электронный документ 1500 включает в себя таблицу 1502 с двумя строками и двумя столбцами (образуя в итоге четыре ячейки), и каждая ячейка таблицы составлена из границ, выполненных посредством электронных чернил, и содержит входные данные в виде текста, выполненного посредством электронных чернил.FIGS. 15A-15C illustrate examples of an electronic document 1500 and exemplary data structures that include electronic table annotation in the form of a table having a plurality of rows and columns. Specifically, as shown in the example of FIG. 15A, the electronic document 1500 includes a table 1502 with two rows and two columns (forming four cells as a result), and each cell of the table is composed of borders made by electronic ink and contains input data in the form of text made by electronic ink.

На фиг.15В показана примерная структура 1510 данных для таблицы 1502, выполненной посредством электронных чернил, изображенной на фиг.15А, после полного синтаксического разбора. В данном примере структура 1510 данных включает в себя корневой узел 1512, который может соответствовать всему электронному документу 1500 или некоторой его части. Под корневым узлом 1512 в узле 1514 таблицы хранятся соответствующие данные, относящиеся к таблице. Они могут включать в себя, например, данные, определяющие размер таблицы, положение таблицы, количество строк таблицы, количество столбцов, размеры ограничивающего прямоугольника и т.п. Под узлом 1514 таблицы обеспечены узлы отдельных строк таблицы для каждой строки таблицы (в данном примере, как изображено на фиг.15В, обеспечены два узла 1516 и 1518 строки таблицы). Каждый узел строки таблицы приведенной примерной структуры данных дополнительно включает в себя один или несколько узлов ячейки (в изображенном примере узел 1516 строки таблицы включает два узла 1520 и 1522 ячейки, тогда как узел 1518 строки таблицы включает в себя два узла 1524 и 1526 ячейки). Так как каждая ячейка данного примера содержит данные текста, выполненного посредством электронных чернил, то остальная часть упомянутой примерной иерархической структуры 1510 данных имеет обычный узел абзаца, узел строки, узел чернильного слова и узел(ы) штриха, описанные подробно выше. Конечно, ячейки таблицы могут содержать данные одного или нескольких других типов в дополнение к и/или вместо данных электронных чернил, включая, например, данные машинописного текста и/или любые из различных типов данных, описанных подробно выше в отношении фиг.6I, без отступления от настоящего изобретения. В качестве другой альтернативы, вместо узлов 1516 и 1518 строки таблицы структура данных может включать в себя узлы столбца, которые тогда могут включать в себя узлы ячейки, узлы абзаца и т.д., как показано на фиг.15В. Штрихи чернил, которые составляют фактическую таблицу, могут быть сохранены, например, в качестве части узла 1514 таблицы (например, в качестве свойств, ассоциированных с данным узлом), в качестве узла чернильного рисунка, который зависит от узла 1514 таблицы (с ассоциированными штрихами, сохраненными под ним) и/или в любом другом подходящем местоположении в структуре 1510 данных.FIG. 15B shows an exemplary data structure 1510 for the electronic ink table 1502 shown in FIG. 15A after parsing. In this example, the data structure 1510 includes a root node 1512, which may correspond to the entire electronic document 1500 or some part thereof. Under the root node 1512 in the table node 1514, corresponding data relating to the table is stored. They may include, for example, data determining the size of the table, the position of the table, the number of rows in the table, the number of columns, the size of the bounding box, and the like. Under the table node 1514, nodes of individual table rows are provided for each table row (in this example, as shown in FIG. 15B, two table row nodes 1516 and 1518 are provided). Each table row node of the exemplary data structure further includes one or more cell nodes (in the example shown, the table row node 1516 includes two cell nodes 1520 and 1522, while the table row node 1518 includes two cell nodes 1524 and 1526). Since each cell of this example contains electronic ink text data, the rest of said exemplary hierarchical data structure 1510 has a regular paragraph node, line node, ink word node and stroke node (s) described in detail above. Of course, the cells of the table may contain data of one or more other types in addition to and / or instead of electronic ink data, including, for example, typewritten data and / or any of the various types of data described in detail above with respect to FIG. from the present invention. As another alternative, instead of table row nodes 1516 and 1518, the data structure may include column nodes, which then may include cell nodes, paragraph nodes, etc., as shown in FIG. 15B. The ink strokes that make up the actual table can be saved, for example, as part of a table node 1514 (for example, as properties associated with this node), as an ink drawing node that depends on table node 1514 (with associated strokes, stored below it) and / or at any other suitable location in the data structure 1510.

На фиг.15С показана альтернативная примерная структура 1530 данных для электронного документа 1500, включающего таблицу 1502. В данном примере корневой узел 1512; узел 1514 таблицы; узлы 1516 и 1518 строки таблицы и узлы 1520, 1522, 1524 и 1526 ячейки являются теми же самыми, что и изображенные на фиг.15В. Однако, вместо того чтобы включать в себя данные текста, выполненного посредством электронных чернил, в качестве дочерних узлов под различными узлами 1520, 1522, 1524 и 1526 ячейки, узлы 1528а, 1528b, 1528с, 1528d абзаца данных текста, выполненного посредством электронных чернил, (или любой другой подходящей или требуемой структуры данных) связаны с их соответствующими узлами 1520, 1522, 1524 и 1526 ячейки, как показано на фиг.15С стрелками 1530а, 1530b, 1530с и 1530d, соответственно. Узлы ячейки в данном примере могут служить в качестве узлов «источника» типа контейнера для чернильных слов, содержащихся в них, и узлы абзаца, строки или чернильные слова служат в качестве узлов контекста «назначения». Благодаря различным связям перемещение одной части аннотации-таблицы в электронном документе 1500 может отслеживаться другими частями аннотации, тем самым сохраняя аннотацию-таблицу целой или связанной, даже если электронный документ 1500 некоторым образом будет изменен. Таблица также может быть связана с некоторыми другими присутствующими узлами, основываясь на базовом электронном документе. Опять же, в качестве альтернативы, узлы 1516 и 1518 строки таблицы могут быть заменены узлами столбца, которые содержат различные узлы ячейки, без отступления от изобретения. Также штрихи чернил, которые составляют фактическую таблицу, могут храниться в любом местоположении без отступления от изобретения, например, в качестве части узла 1514 таблицы (например, в качестве свойств, ассоциированных с данным узлом), в качестве узла чернильного рисунка, который зависит от узла 1514 таблицы (с ассоциированными штрихами, хранимыми под ним) и/или в любом другом подходящем местоположении в структуре 1510 данных.FIG. 15C shows an alternative exemplary data structure 1530 for an electronic document 1500 including table 1502. In this example, the root node 1512; table node 1514; table row nodes 1516 and 1518 and cell nodes 1520, 1522, 1524 and 1526 are the same as those shown in FIG. However, instead of including text data made by electronic ink as child nodes under various cell nodes 1520, 1522, 1524, and 1526, nodes 1528a, 1528b, 1528c, 1528d of a paragraph of text data made by electronic ink, ( or any other suitable or desired data structure) are associated with their respective cell nodes 1520, 1522, 1524 and 1526, as shown in FIG. 15C with arrows 1530a, 1530b, 1530c and 1530d, respectively. The cell nodes in this example can serve as “source” nodes of a container type for the ink words contained in them, and paragraph nodes, lines, or ink words serve as “destination” context nodes. Due to various relationships, the movement of one part of the annotation table in the electronic document 1500 can be tracked by the other parts of the annotation, thereby keeping the annotation table whole or linked, even if the electronic document 1500 is modified in some way. The table may also be associated with some other nodes present based on a basic electronic document. Again, as an alternative, table row nodes 1516 and 1518 can be replaced with column nodes that contain different cell nodes, without departing from the invention. Also, the ink strokes that make up the actual table can be stored at any location without departing from the invention, for example, as part of a table node 1514 (for example, as properties associated with a given node), as an ink drawing unit, which depends on the node 1514 tables (with associated strokes stored underneath) and / or at any other suitable location in the data structure 1510.

Конечно, различные фигуры, относящиеся к различным примерным типам аннотации, описанным выше, описывают просто примеры возможных типов аннотации, использование аннотаций и информацию, которая может быть включена в аннотации. Для специалиста в данной области очевидно, что могут быть выполнены многочисленные модификации и изменения без отступления от изобретения. Например, аннотации могут содержать многочисленные различные типы данных (такие как выполненные посредством электронных чернил текст, рисунки, машинописный текст и изображения и т.д.) во многих различных комбинациях и перестановках без отступления от изобретения.Of course, various figures relating to the various exemplary types of annotation described above merely describe examples of possible types of annotation, the use of annotations, and information that may be included in annotations. It will be apparent to those skilled in the art that numerous modifications and changes can be made without departing from the invention. For example, annotations may contain numerous different types of data (such as electronic ink text, drawings, typescript and images, etc.) in many different combinations and permutations without departing from the invention.

Кроме того, различные схемы связывания описаны в связи с различными описанными выше структурами данных. Такие схемы или методики связывания являются просто примерами того, как различные узлы данных могут быть связаны вместе. Любая подходящая схема связывания или данные, ассоциированные со связью, могут быть сохранены без отступления от изобретения. Например, возможно представление каждого узла отдельным идентификатором (таким как «глобальный уникальный идентификатор», или GUID) и представление связей с использованием двух (или более) GUID. В качестве другой альтернативы, единственная связь может быть использована для связывания узлов, а не двойная схема связывания, описанная в отношении некоторых вышеописанных примеров. В качестве другой возможной альтернативы, если необходимо или если требуется, узел может быть связан с самим собой (самосвязывание, например, когда узел источника и узел назначения представляют собой один и тот же узел). Для специалиста в данной области очевидно, что может быть использован любой подходящий способ связывания или ассоциирования различных наборов данных друг с другом без отступления от изобретения.In addition, various binding schemes are described in connection with the various data structures described above. Such binding schemes or techniques are merely examples of how different data nodes can be linked together. Any suitable linking scheme or data associated with the link may be stored without departing from the invention. For example, it is possible to represent each node as a separate identifier (such as a “global unique identifier”, or GUID) and to represent links using two (or more) GUIDs. As another alternative, a single bond can be used to bind the nodes, rather than the double binding scheme described in relation to some of the above examples. As another possible alternative, if necessary or if required, the node can be connected to itself (self-binding, for example, when the source node and the destination node are the same node). It will be apparent to those skilled in the art that any suitable method of linking or associating different data sets with each other can be used without departing from the invention.

Анализ чернилInk analysis

Ниже описываются различные примерные методики анализа электронных чернил в электронном документе в соответствии с примерами изобретения. В частности, на фиг.16А-16Е изображена блок-схема, показывающая шаги анализа документа в соответствии с различными примерами изобретения. На фиг.17-26 изображены взаимосвязи между различными компонентами, используемыми во время процесса анализа.The following describes various exemplary methods for analyzing electronic ink in an electronic document in accordance with examples of the invention. In particular, FIGS. 16A-16E are a flowchart showing steps of analyzing a document in accordance with various examples of the invention. On Fig-26 depicts the relationship between the various components used during the analysis process.

На фиг.17 изображено программное приложение 1701. Программное приложение 1701 поддерживает документ 1703, который может включать в себя как данные 1705 электронных чернил, так и нечернильные данные 1707, такие как машинописные знаки или изображения. Как подробно описано выше, свойства как данных 1705 электронных чернил, так и нечернильных данных 1707 могут быть описаны иерархической структурой данных, такой как дерево. Для того чтобы начать анализ электронных чернил, на шаге 1601 программное приложение 1701 создает такую структуру данных, идентифицированную как объект 1709 контекста анализа на фиг.17.17 depicts a software application 1701. The software application 1701 supports a document 1703, which may include both electronic ink data 1705 and non-ink data 1707, such as typewritten characters or images. As described in detail above, the properties of both electronic ink data 1705 and non-ink data 1707 can be described by a hierarchical data structure such as a tree. In order to begin the analysis of electronic ink, at step 1601, the software application 1701 creates such a data structure identified as the analysis context object 1709 in FIG.

На фиг.18 изображено примерное дерево 1801 типа, который может быть включен в объект 1709 контекста анализа. Дерево 1801 включает в себя корневой узел 1803 и узел 1805 абзаца. Узел 1805 абзаца соответствует абзацу текста электронных чернил, который, например, возможно, ранее был идентифицирован в процессе более раннего анализа. Узел 1805 абзаца соединен с двумя узлами 1807 и 1809 строки, которые представляют две строки в абзаце текста электронных чернил. Узел 1807 строки, в свою очередь, ассоциирован с двумя узлами 1811 и 1813 слова. Каждый узел 1811 и 1813 слова соответствует слову в строке текста, выполненного посредством электронных чернил и представленного узлом 1807 строки. Узел 1811 слова содержит данные 1815 штриха чернил и данные 1817 штриха чернил. Таким образом, данные 1815 и 1817 штриха соответствуют штрихам текста, выполненного посредством электронных чернил, составляющим слово, представленное узлом 1811 слова. Аналогично, узел 1813 слова содержит данные 1819 штриха чернил и данные 1821 штриха чернил, которые соответствуют штрихам текста, выполненного посредством электронных чернил, составляющим слово, представленное узлом 1813 слова. Дерево 1801 также включает в себя данные 1823-1827 штриха, которые ассоциированы только с корневым узлом 1803. Упомянутые данные 1823-1827 чернил представляют новые штрихи чернил, которые не были классифицированы или ассоциированы с другим штрихом чернил или другим элементом документа.On Fig shows an exemplary tree 1801 type, which can be included in the object 1709 context analysis. Tree 1801 includes a root node 1803 and a paragraph node 1805. The paragraph assembly 1805 corresponds to a paragraph of electronic ink text that, for example, may have been previously identified in an earlier analysis. The paragraph node 1805 is connected to two line nodes 1807 and 1809, which represent two lines in a paragraph of electronic ink text. The line node 1807, in turn, is associated with two word nodes 1811 and 1813. Each word node 1811 and 1813 corresponds to a word in a line of text made by electronic ink and represented by a line node 1807. The word node 1811 contains ink stroke data 1815 and ink stroke data 1817. Thus, the stroke data 1815 and 1817 correspond to strokes of the text made by electronic ink constituting the word represented by the word unit 1811. Similarly, the word node 1813 contains ink stroke data 1819 and ink stroke data 1821 that correspond to strokes of text made by electronic ink constituting the word represented by the word node 1813. Tree 1801 also includes stroke data 1823-1827 that is associated only with root node 1803. Said ink data 1823-1827 represents new ink strokes that have not been classified or associated with another ink stroke or other document element.

Таким образом, вместо хранения штрихов в узлах отдельных штрихов различные узлы могут иметь ассоциированное свойство «штрихов», которое хранит данные, соответствующие штрихам, ассоциированным с узлом. Например: (а) узлы неклассифицированного контекста могут содержать одно или несколько свойств «штрихов», имеющих один или несколько штрихов, которые необходимо проанализировать; (b) узлы чернильного слова могут содержать одно или несколько свойств «штрихов», содержащих один или несколько штрихов, которые составляют чернильное слово; (с) узлы рисунка могут содержать одно или несколько свойств «штрихов», содержащих один или несколько штрихов, которые составляют рисунок и (d) узлы маркера могут содержать одно или несколько свойств «штрихов», содержащих один или несколько штрихов, которые составляют маркер в элементе списка. Конечно, в соответствии с альтернативными вариантами реализации изобретения могут быть использованы узлы отдельных штрихов в дереве данных для представления отдельных штрихов электронных чернил вместо ассоциирования штрихов чернил, например, с узлом слова или узлом рисунка.Thus, instead of storing strokes in nodes of individual strokes, different nodes can have an associated property of strokes, which stores data corresponding to strokes associated with a node. For example: (a) nodes of an unclassified context may contain one or more properties of “strokes” having one or more strokes that need to be analyzed; (b) the nodes of the ink word may contain one or more properties of “strokes” containing one or more strokes that make up the ink word; (c) the nodes of the drawing can contain one or more properties of the "strokes" containing one or more strokes that make up the picture; and (d) the nodes of the marker can contain one or more properties of the "strokes" containing one or more strokes that make up the marker in list item. Of course, in accordance with alternative embodiments of the invention, nodes of individual strokes in the data tree can be used to represent individual strokes of electronic ink instead of associating ink strokes, for example, with a word node or a drawing node.

Хотя дерево 1801, показанное на фиг.18, включает в себя штрихи чернил, которые уже организованы в слова, строки и абзацы, необходимо понять, что дерево 1801 может содержать только новые штрихи чернил, которые не были классифицированы или ассоциированы с другим штрихом чернил или элементом документа. Например, когда пользователь первоначально вводит электронные чернила в документ 1705, то упомянутые первоначальные штрихи чернил не проанализированы. Также необходимо понять, что дерево 1801 является только показательным, и оно упрощено для облегчения понимания различных аспектов изобретения. Например, узел строки обычно ассоциируется со множеством узлов слова, и каждый узел слова может содержать данные штриха для нескольких штрихов чернил. Также необходимо отметить, что, хотя дерево 1801 включает в себя только относящиеся к чернилам узлы, объект 1709 контекста анализа может включать в себя узлы, представляющие нечернильные элементы документа, такие как изображения и машинописный текст, как подробно описано выше.Although the tree 1801 shown in FIG. 18 includes ink strokes that are already organized into words, lines, and paragraphs, it should be understood that the tree 1801 can only contain new ink strokes that have not been classified or associated with another ink stroke or document element. For example, when a user initially enters electronic ink into a document 1705, said initial ink strokes are not analyzed. You must also understand that the tree 1801 is only indicative, and it is simplified to facilitate understanding of various aspects of the invention. For example, a line node is usually associated with a plurality of word nodes, and each word node may contain stroke data for several ink strokes. It should also be noted that, although the tree 1801 includes only ink-related nodes, the analysis context object 1709 may include nodes representing non-ink elements of the document, such as images and typewritten text, as described in detail above.

Возвращаясь теперь к фиг.17, в соответствии с некоторыми примерами изобретения программное приложение 1701 создает и поддерживает свой собственный объект 1709 контекста анализа. Для упомянутых программных приложений 1701 программное приложение 1701 может просто обеспечить ссылку на объект 1709 анализа. Для упомянутых программных приложений 1701, однако, приложение 1701 должно включать в себя механизмы, необходимые для создания, заполнения и поддержания объекта анализа. Некоторые разработчики программного обеспечения, однако, не хотят брать на себя труд создавать такие механизмы в приложении 1701.Returning now to FIG. 17, in accordance with some examples of the invention, the software application 1701 creates and maintains its own analysis context object 1709. For said software applications 1701, software application 1701 may simply provide a reference to an analysis object 1709. For the mentioned software applications 1701, however, application 1701 must include the mechanisms necessary to create, populate and maintain the object of analysis. Some software developers, however, do not want to take the trouble to create such mechanisms in application 1701.

Следовательно, в соответствии с другими примерами изобретения программное приложение 1701 может реализовать другой объект для создания объекта 1709 контекста анализа. Например, программное приложение 1701 может использовать инструментальное средство анализа чернил или другой объект для создания и/или поддержания объекта 1709 контекста анализа. Например, программное приложение 1701 может идентифицировать или предоставить данные непроанализированных чернил инструментальному средству анализа чернил. В зависимости от инструкций от программного приложения 1701 инструментальное средство анализа чернил затем может создать объект 1709 контекста анализа, представляющий весь документ 1703, или, альтернативно, только конкретную область (или области) документа, которая содержит непроанализированные чернила, идентифицированные программным приложением 1701. В соответствии с некоторыми программными приложениями 1701 программное приложение 1701 может после этого поддерживать и обновлять объект 1709 контекста анализа либо само, либо используя службы, обеспеченные инструментальным средством анализа чернил или другим объектом. В соответствии с другими программными приложениями 1701 программное приложение 1701 может не поддерживать объект 1709 документа анализа, но вместо этого инструментальное средство анализа чернил или другой объект создает новый объект 1709 документа анализа, когда необходимо.Therefore, in accordance with other examples of the invention, software application 1701 may implement another object to create an analysis context object 1709. For example, software application 1701 may use an ink analysis tool or other object to create and / or maintain an analysis context object 1709. For example, a software application 1701 can identify or provide unprocessed ink data to an ink analysis tool. Depending on the instructions from the software application 1701, the ink analysis tool can then create an analysis context object 1709 representing the entire document 1703, or, alternatively, only a specific area (or areas) of the document that contains the unanalyzed ink identified by the software application 1701. In accordance with some software applications 1701, the software application 1701 can then maintain and update the analysis context object 1709 either by itself or by using services, both liver ink analysis tool or other object. According to other software applications 1701, the software application 1701 may not support the analysis document object 1709, but instead the ink analysis tool or other object creates a new analysis document object 1709 when necessary.

Обычно объект 1709 контекста анализа содержит информацию об элементах документа для всего документа 1703. Также необходимо заметить, однако, что в соответствии с некоторыми примерами изобретения объект 1709 контекста анализа может содержать информацию для элементов документа только в части документа 1703. Т.е. объект 1709 контекста анализа может представлять только элементы документа в пространственной зоне документа, содержащей новые или «невысохшие» чернила или другие данные. Если все элементы документа в зоне документа, включающей электронные чернила, были уже проанализированы, то тогда ранее проанализированные элементы документа не могут быть включены в объект 1709 контекста анализа. В качестве другой альтернативы, программа приложения может поддерживать отдельный объект 1709 контекста анализа для каждой страницы или другого поднабора данных, относящихся ко всему электронному документу 1703.Typically, the analysis context object 1709 contains information about the document elements for the entire document 1703. It should also be noted, however, that in accordance with some examples of the invention, the analysis context object 1709 can contain information for the document elements only in part of the document 1703. That is, an analysis context object 1709 can only represent document elements in the spatial zone of a document containing new or “dry” ink or other data. If all elements of the document in the document area, including electronic ink, have already been analyzed, then previously analyzed elements of the document cannot be included in the analysis context object 1709. As another alternative, the application program may support a separate analysis context object 1709 for each page or other subset of data related to the entire electronic document 1703.

Если программное приложение 1701 создало объект 1709 контекста анализа, то на шаге 1603 инструментальное средство 1901 анализа чернил копирует по меньшей мере часть объекта 1709 контекста анализа, как показано на фиг.19. Более конкретно, если объект 1709 контекста анализа не ограничивается областями, содержащими новые чернила и/или другие данные, как описано выше, то тогда программное приложение 1701 обозначает области документа 1703, которые содержат новые чернила и/или другие данные, которые должны быть проанализированы. Программное приложение 1701 затем вызывает инструментальное средство 1901 анализа чернил для копирования части объекта 1709 контекста анализа, соответствующей обозначенной области документа 1703. (Конечно, если объект 1709 контекста анализа уже ограничен описанием областей, которые содержат новые чернила, то тогда инструментальное средство 1901 анализа чернил может копировать весь объект 1709 контекста анализа.)If the software application 1701 created the analysis context object 1709, then in step 1603, the ink analysis tool 1901 copies at least a portion of the analysis context object 1709, as shown in FIG. More specifically, if the analysis context object 1709 is not limited to areas containing new ink and / or other data, as described above, then software application 1701 designates areas of a document 1703 that contain new ink and / or other data that needs to be analyzed. The software application 1701 then calls the ink analysis tool 1901 to copy a portion of the analysis context object 1709 corresponding to the designated area of the document 1703. (Of course, if the analysis context object 1709 is already limited to describing areas that contain new ink, then the ink analysis tool 1901 may copy the entire analysis context object 1709.)

Хотя программе 1701 приложения известно, какие чернила ранее не были проанализированы, ей может быть не известно, какая часть(и) упомянутого электронного документа 1703 (например, ранее проанализированные чернила, базовые данные в структуре документа и т.д.) оказывает влияние на новые чернила (и, следовательно, какая часть(и) подлежит представлению инструментальному средству 1901 анализа чернил). Поэтому по меньшей мере в некоторых примерах изобретения программа 1701 приложения делает доступными большие разделы электронного документа 1703 для инструментального средства 1901 анализа чернил при помощи объекта 1709 контекста анализа. Программа 1701 приложения оставляет инструментального средства 1901 анализа чернил в рамках ответственности определение информации, фактически необходимой от программы 1701 приложения при помощи объекта 1709 контекста анализа.Although the application program 1701 knows which ink has not been previously analyzed, it may not know which part (s) of the electronic document 1703 mentioned above (for example, previously analyzed ink, basic data in the document structure, etc.) influences new ink (and therefore which part (s) is to be presented to the ink analysis tool 1901). Therefore, in at least some examples of the invention, the application program 1701 makes available large sections of the electronic document 1703 for the ink analysis tool 1901 using the analysis context object 1709. The application program 1701 leaves the ink analysis tool 1901 as part of the responsibility of determining the information actually needed from the application program 1701 using the analysis context object 1709.

В ответ на вызов для анализа новых данных инструментальное средство 1901 анализа чернил выполняет различные обратные вызовы объекта 1709 контекста анализа, если необходимо, для получения информации от объекта 1709 контекста анализа, необходимой для анализа новых чернил и/или других данных в области, обозначенной программным приложением 1701. Например, в дополнение к новым чернилам и/или другим данным инструментальное средство 1901 анализа чернил может запросить у объекта 1709 контекста анализа информацию, касающуюся чернил и/или других данных в обозначенной области, которые уже были проанализированы, или информацию, касающуюся нечернильных элементов документа в обозначенной области. «Обозначенная область» может, по меньшей мере в некоторых примерах изобретения, соответствовать данным в пространственной зоне и/или около зоны, содержащей новые чернила или другие данные, подлежащие анализу.In response to a challenge to analyze new data, the ink analysis tool 1901 performs various callbacks of the analysis context object 1709, if necessary, to obtain information from the analysis context object 1709 necessary to analyze new ink and / or other data in the area indicated by the software application 1701. For example, in addition to new ink and / or other data, the ink analysis tool 1901 may request information from the analysis context object 1709 regarding ink and / or other data about The values of the areas that have already been analyzed, or information concerning nechernilnyh elements of the document in the designated area. A “designated area” may, in at least some examples of the invention, correspond to data in a spatial zone and / or near a zone containing new ink or other data to be analyzed.

Как ранее проанализированные чернила, так и нечернильные элементы документа, в частности, те элементы, которые расположены около вновь введенных данных, подлежащих анализу, могут предоставить контекст, который улучшит анализ непроанализированных чернил иди других данных. Так как инструментальное средство 1901 анализа чернил получает требуемую информацию от объекта 1709 контекста анализа, то инструментальное средство 1901 анализа чернил создает независимый от документа объект 1903 контекста анализа с помощью полученной информации. Таким образом, независимый от документа объект 1903 контекста анализа содержит по меньшей мере поднабор информации, содержащейся в объекте 1709 контекста анализа, но он не зависит от документа 1703. Использование данного приема «обратного вызова» в основанном на запросе методе пространственной абстракции, описанном выше, делает возможным для инструментального средства 1901 анализа чернил эффективное получение и анализ необходимых данных, даже для больших документов. Необходимо заметить, однако, что приложение 1701 может все же ограничить содержимое в независимом от документа объекте 1903 контекста анализа, просто не открывая содержимое инструментальному средству анализа при запросе.Both previously analyzed ink and non-ink elements of a document, in particular those elements that are located near newly entered data to be analyzed, can provide a context that will improve the analysis of unanalyzed ink or other data. Since the ink analysis tool 1901 receives the required information from the analysis context object 1709, the ink analysis tool 1901 creates a document-independent analysis context object 1903 using the obtained information. Thus, the document-independent analysis context object 1903 contains at least a subset of the information contained in the analysis context object 1709, but it does not depend on the document 1703. Using this “callback” technique in the query-based spatial abstraction method described above, makes it possible for the ink analysis tool 1901 to efficiently obtain and analyze the necessary data, even for large documents. It should be noted, however, that application 1701 can still restrict content to a document-independent analysis context object 1903 by simply not opening the content to the analysis tool upon request.

Также необходимо заметить, что, хотя инструментальное средство 1901 анализа чернил создает независимый от документа объект 1903 контекста анализа, программное приложение 1701 не должно изменять объект 1709 контекста анализа (и оно не может позволить другим потокам в программе приложения и/или другим программам изменить объект 1709 контекста анализа в течение данного периода времени). Т.е. программное приложение 1701 не должно вводить новых данных в документ 1703 в течение данного периода времени, и оно не должно разрешать делать это другим потокам и/или программам приложения. Процесс создания независимого от документа объекта 1903 контекста анализа относительно быстрый, однако и обычно, он не оказывает значительного влияния на работу программного приложения 1701. Если потребуется, однако, попытки ввода данных в документ 1703 могут быть кэшированы и введены в систему после создания независимого от документа объекта 1903 контекста анализа.It should also be noted that although the ink analysis tool 1901 creates a document-independent analysis context object 1903, the software application 1701 must not modify the analysis context object 1709 (and it cannot allow other threads in the application program and / or other programs to change the object 1709 analysis context for a given period of time). Those. software application 1701 should not enter new data into document 1703 within a given period of time, and it should not allow other threads and / or programs of the application to do so. The process of creating an object of analysis context object 1903 independent of the document is relatively quick, but usually it does not significantly affect the operation of software application 1701. If you need to, however, attempts to enter data into document 1703 can be cached and entered into the system after creating the document independent object 1903 context analysis.

Как только создан независимый от документа объект 1903 контекста анализа, весь последующий анализ непроанализированных чернил и/или других данных может быть выполнен в отношении независимого от документа объекта 1903 контекста анализа, а не в отношении объекта 1709 контекста анализа, позволяя программному приложению 1701 продолжать свою нормальную работу без задержки или останова в результате анализа непроанализированных чернил и/или других данных. Программное приложение 1701 может даже вводить новые данные 1705 электронных чернил в документ 1703 (и в объект 1709 контекста анализа), не создавая помех анализу непроанализированных чернил в независимом от документа объекте 1903 контекста анализа.Once a document-independent analysis context object 1903 has been created, all subsequent analysis of the unanalyzed ink and / or other data can be performed with respect to the document-independent analysis context object 1903 and not with the analysis context object 1709, allowing the software application 1701 to continue its normal work without delay or stop as a result of the analysis of unanalyzed ink and / or other data. Software application 1701 can even enter new electronic ink data 1705 into a document 1703 (and into an analysis context object 1709) without interfering with the analysis of unanalyzed ink in a document-independent analysis context object 1903.

Следовательно, после создания независимого от документа объекта 1903 контекста анализа на шаге 1605 инструментальное средство 1901 анализа чернил создает отдельный поток анализа для анализа чернил в независимом от документа объекте 1903 контекста анализа. Следовательно, на шаге 1607 программное приложение 1701 может возобновить управление основным потоком обработки и может продолжить свою нормальную работу. Затем на шаге 1609 инструментальное средство 1901 анализа чернил предоставляет независимый от документа объект 1903 контекста анализа процессу первого анализа для анализа. Например, как показано на фиг.20, инструментальное средство 1901 анализа чернил может передать независимый от документа объект 1903 контекста анализа процессу 2001 синтаксического разбора для синтаксического разбора с использованием потока анализа. Процесс синтаксического разбора дополнительно может включать в себя один или несколько процессов классификации без отступления от изобретения (например, для классификации чернил и/или других данных на всевозможные различные типы, такие как чернильный текст, чернильные рисунки, таблицы, диаграммы, графики, изображения, музыка, математика, рисунки, содержащие специальные символы (такие как электрические схемы с резисторами, конденсаторами и т.п.) и т.д.). Необходимо отметить, что в соответствии с некоторыми примерами изобретения инструментальное средство 1901 анализа чернил может выполнить копию независимого от документа объекта 1903 контекста анализа. Как подробно описано ниже, копия исходной формы независимого от документа объекта 1903 контекста анализа может быть использована для согласования результатов анализа процесса анализа с текущим состоянием документа 1703.Therefore, after creating the document-independent analysis context object 1903 in step 1605, the ink analysis tool 1901 creates a separate analysis flow for analyzing ink in the document-independent analysis context object 1903. Therefore, at step 1607, the software application 1701 can resume control of the main processing flow and can continue its normal operation. Then, in step 1609, the ink analysis tool 1901 provides a document-independent analysis context object 1903 to the first analysis process for analysis. For example, as shown in FIG. 20, the ink analysis tool 1901 may transfer a document-independent parser object 1903 to the parsing process 2001 for parsing using the parsing stream. The parsing process may additionally include one or more classification processes without departing from the invention (for example, for classifying ink and / or other data into all kinds of different types, such as ink text, ink drawings, tables, charts, graphs, images, music , mathematics, drawings containing special characters (such as electrical circuits with resistors, capacitors, etc.), etc.). It should be noted that in accordance with some examples of the invention, the ink analysis tool 1901 can make a copy of the document-independent analysis context object 1903. As described in detail below, a copy of the original form of the analysis context-independent object 1903 can be used to reconcile the results of the analysis of the analysis process with the current state of the document 1703.

После того как процесс первого анализа проанализирует чернила и/или другие данные в независимом от документа объекте 1903 контекста анализа, процесс первого анализа возвращает результаты анализа инструментальному средству 1901 анализа чернил, которое, в свою очередь, информирует программное приложение 1701 на шаге 1611 о результатах анализа. Например, как показано на фиг.21, если процессом первого анализа является процесс 2001 синтаксического разбора, то процесс синтаксического разбора возвращает результаты 2101 синтаксического разбора инструментальному средству 1901 анализа чернил, которое затем может передать ссылку на результаты 2101 анализа программному приложению 1701 (например, посредством активизации события).After the first analysis process analyzes the ink and / or other data in a document-independent analysis context object 1903, the first analysis process returns the analysis results to the ink analysis tool 1901, which, in turn, informs the software application 1701 in step 1611 of the analysis results . For example, as shown in FIG. 21, if the parsing process is a parsing process 2001, the parsing process returns the parsing results 2101 to the ink analysis tool 1901, which can then pass a link to the parsing results 2101 to the software application 1701 (e.g., by activation of the event).

Как подробно описано ниже, с некоторыми примерами изобретения результатами 2101 анализа может быть независимый от документа объект 1903 контекста анализа, первоначально представленный процессу анализа, но модифицированный для включения новой информации, созданной процессом первого анализа (например, результатов синтаксического разбора в данном примере). В соответствии с другими примерами изобретения, однако, результатами 2101 анализа может быть модифицированная копия независимого от документа объекта 1903 контекста анализа. Посредством включения новой информации, созданной процессом первого анализа, в копию независимого от документа объекта 1903 контекста анализа, исходный независимый от документа объект 1903 контекста анализа может быть сохранен для использования, например, средством согласования и/или в других процессах анализа, как отмечено ранее.As described in detail below, with some examples of the invention, the analysis result 2101 may be a document-independent analysis context object 1903, initially presented to the analysis process, but modified to include new information generated by the first analysis process (for example, parsing results in this example). In accordance with other examples of the invention, however, the analysis results 2101 may be a modified copy of the document-independent analysis context object 1903. By including the new information created by the first analysis process in a copy of the document-independent analysis context object 1903, the original document-independent analysis context object 1903 can be stored for use, for example, by means of coordination and / or other analysis processes, as noted earlier.

На фиг.22 изображен пример того, как процесс синтаксического разбора, такой как процесс 2001 синтаксического разбора, может модифицировать дерево 1801 данных, чтобы показать изменения компоновки, созданные операцией синтаксического разбора. Как видно на данной фигуре, процесс 2001 синтаксического разбора определил, что штрих непроанализированных чернил, представленный данными 1823 штриха, является частью слова, представленного посредством узла 1813 слова. Следовательно, процесс синтаксического разбора разъединил данные 1823 штриха от корневого узла 1803 и вместо этого ассоциировал их с узлом 1813 слова.FIG. 22 shows an example of how a parsing process, such as a parsing process 2001, can modify a data tree 1801 to show layout changes created by a parsing operation. As can be seen in this figure, the parsing process 2001 determined that the stroke of the unparsed ink represented by the stroke data 1823 is part of the word represented by the word node 1813. Therefore, the parsing process disconnected the stroke data 1823 from the root node 1803 and instead associated it with the word node 1813.

Процесс синтаксического разбора также определил, что штрихи чернил, представленные данными 1825 и 1827 непроанализированных штрихов, являются частью нового слова в строке, представленной узлом 1809 строки, который ранее не был идентифицирован. Следовательно, процесс 2001 синтаксического разбора создал новый узел 2201 слова и ассоциировал данный узел 2201 слова с узлом 1809 строки. Процесс 2001 синтаксического разбора затем ассоциировал данные 1825 и 1827 штрихов с новым узлом 2201 слова. Таким образом, результаты 2101 синтаксического разбора описывают зависимости между штрихами ранее непроанализированных чернил и другими штрихами чернил (или другими элементами документа), идентифицированными процессом 2001 синтаксического разбора. Также, в дополнение к изображению изменений зависимостей, определенных процессом 2001 синтаксического разбора, результаты 2101 синтаксического разбора также могут включать в себя информацию о классификации, определенную процессом 2001 синтаксического разбора. Например, каждый экземпляр данных 1823-1827 штрихов чернил может быть модифицирован для классификации его соответствующего штриха чернил в качестве штриха чернил текста, а не штриха чернил рисунка. По меньшей мере в некоторых примерах изобретения, если потребуется, результаты 2101 синтаксического разбора могут быть представлены в независимом от документа объекте 1903 контекста анализа.The parsing process also determined that the ink strokes represented by the unparsed strokes data 1825 and 1827 are part of a new word in a line represented by a line node 1809 that was not previously identified. Therefore, parsing process 2001 created a new word node 2201 and associated this word node 2201 with line node 1809. The parsing process 2001 then associated the data 1825 and 1827 strokes with the new node 2201 words. Thus, parsing results 2101 describe dependencies between strokes of previously unanalyzed ink and other strokes of ink (or other elements of a document) identified by the parsing process 2001. Also, in addition to depicting the dependency changes determined by the parsing process 2001, the parsing results 2101 may also include classification information determined by the parsing process 2001. For example, each instance of ink stroke data 1823-1827 can be modified to classify its corresponding ink stroke as a stroke of text ink, rather than a stroke of ink of a drawing. In at least some examples of the invention, if required, parsing results 2101 can be presented in a document-independent analysis context object 1903.

Как отмечено ранее, программное приложение 1701 может вводить в документ 1703 новые данные, включая как новые данные 1705 электронных чернил, так и новые нечернильные данные 1707, в то время как процесс первого анализа анализирует независимый от документа объект 1903 контекста анализа. Следовательно, результаты процесса первого анализа больше не могут быть применимы к текущему состоянию документа 1703. Например, в то время как процесс синтаксического разбора может определить, что штрих чернил ассоциирован со словом, пользователь может быть совсем удалить штрих чернил из документа 1703 (например, вместе со всем ассоциированным словом или в большем объеме). Следовательно, результаты 2101 анализа должны быть согласованы с текущим состоянием документа 1703 на шаге 1613. Примерный процесс согласования изображен в общем виде на фиг.23, и он подробно описывается ниже.As noted earlier, the software application 1701 can introduce new data into the document 1703, including both new electronic ink data 1705 and new non-ink data 1707, while the first analysis process analyzes the analysis context-independent object 1903. Therefore, the results of the first analysis process can no longer be applied to the current state of document 1703. For example, while the parsing process can determine that an ink stroke is associated with a word, the user can completely remove the ink stroke from document 1703 (for example, together with all associated words or to a larger extent). Therefore, the results of the analysis 2101 must be consistent with the current state of the document 1703 in step 1613. An exemplary approval process is depicted in a general way in FIG. 23, and is described in detail below.

В соответствии с некоторыми примерами изобретения программное приложение 1701 может неавтоматизированным образом согласовать результаты 2101 анализа с текущим состоянием документа 1703. Т.е. программное приложение 1701 может выполнить сортировку при помощи результатов 2101 анализа для определения того, какие из результатов имеют отношение к элементам документа, находящимися в настоящее время в документе 1703. В соответствии с другими примерами изобретения, однако, инструментальное средство 1901 анализа чернил может обеспечивать функцию согласования для согласования результатов 2101 анализа с текущим объектом 1709 контекста анализа (т.е. объектом 1709 контекста анализа, отражающим текущее состояние документа 1703). Как подробно описано ниже, функция согласования различных примеров изобретения идентифицирует конфликты или «коллизии» между результатами 2101 анализа процесса первого анализа и объекта 1709 контекста анализа для текущего состояния документа 1703. Инструментальное средство 1901 анализа чернил затем обновляет объект 1709 контекста анализа, основываясь на результатах анализа, на шаге 1615 и создает новый независимый от документа объект 1903 контекста анализа из согласованных результатов анализа в объекте 1709 контекста анализа на шаге 1617.In accordance with some examples of the invention, the software application 1701 can automatically match the results of the analysis 2101 with the current state of the document 1703. That is, software application 1701 can sort using analysis results 2101 to determine which of the results are related to document elements currently in document 1703. According to other examples of the invention, however, ink analysis tool 1901 can provide a matching function to reconcile the results of the analysis 2101 with the current analysis context object 1709 (i.e., the analysis context object 1709 reflecting the current state of the document 1703). As described in detail below, the matching function of various examples of the invention identifies conflicts or “collisions” between the analysis results of the first analysis process 2101 and the analysis context object 1709 for the current state of the document 1703. The ink analysis tool 1901 then updates the analysis context object 1709 based on the analysis results , in step 1615, and creates a new document-independent analysis context object 1903 from the agreed analysis results in the analysis context object 1709 in step 1617.

Необходимо заметить, что, в то время как инструментальное средство 1901 анализа чернил согласовывает результаты 2101 анализа с текущим объектом 1709 контекста анализа, программное приложение 1701 не должно изменять объект 1709 контекста анализа (и оно не должно разрешать объекту 1709 контекста анализа изменяться посредством других потоков в программе приложения и/или любой другой программы приложения). Т.е. программное приложение 1701 не должно вводить новые данные в документ 1703, и/или оно не должно разрешать другим потокам и/или программе приложения вводить новые данные в документ 1703 до тех пор, пока не завершится согласование. Подобно процессу первоначального создания независимого от документа объекта 1903 контекста анализа процесс согласования относительно быстрый и обычно не оказывает существенного влияния на работу программного приложения 1701. Если потребуется, однако, предпринимаемый пользователем ввод может быть кэширован и введен после завершения процесса согласования.It should be noted that while the ink analysis tool 1901 matches the results of the analysis 2101 with the current analysis context object 1709, the software application 1701 should not modify the analysis context object 1709 (and it should not allow the analysis context object 1709 to change through other threads in application program and / or any other application program). Those. software application 1701 should not enter new data into document 1703, and / or it should not allow other threads and / or application program to enter new data into document 1703 until negotiation is complete. Similar to the process of initially creating a document-independent context object 1903, the reconciliation process is relatively quick and usually does not significantly affect the operation of the software application 1701. If required, however, user input can be cached and entered after the completion of the reconciliation process.

После того как инструментальное средство 1901 анализа чернил согласует результаты 2101 анализа с объектом 1709 контекста анализа для текущего состояния документа 1703, инструментальное средство 1901 анализа чернил, в необязательном порядке, может предоставить согласованные результаты анализа процессу второго анализа для дополнительного анализа. Например, как показано на фиг.24, инструментальное средство 1901 анализа чернил может предоставить согласованные результаты 2401 синтаксического разбора процессу 2003 распознавания чернил для распознавания (например, для распознавания рукописного текста, музыки, математической информации или других типов специальных данных). В частности, инструментальное средство 1901 анализа чернил снова создает отдельный поток анализа для выполнения процесса второго анализа на шаге 1619. Так как инструментальное средство 1901 анализа чернил создает данный отдельный поток для выполнения процесса второго анализа, то программное приложение 1701 снова может возобновить свою нормальную работу на шаге 1621, и оно даже может принимать новые введенные данные, включая новые данные 1705 электронных чернил.After the ink analysis tool 1901 matches the analysis results 2101 with the analysis context object 1709 for the current state of the document 1703, the ink analysis tool 1901 optionally can provide consistent analysis results to the second analysis process for further analysis. For example, as shown in FIG. 24, the ink analysis tool 1901 can provide consistent parsing results 2401 to an ink recognition process 2003 for recognition (eg, for recognizing handwritten text, music, mathematical information, or other types of special data). In particular, the ink analysis tool 1901 again creates a separate analysis flow for performing the second analysis process in step 1619. Since the ink analysis tool 1901 creates this separate flow for performing the second analysis process, the software application 1701 can resume its normal operation again step 1621, and it may even receive new input data, including new electronic ink data 1705.

Затем на шаге 1623 инструментальное средство 1901 анализа чернил предоставляет согласованные результаты 2401 процесса первого анализа процессу второго анализа. После того как начался процесс второго анализа, приложение 1701 может запустить другое выполнение процесса первого анализа в отношении новых непроанализированных чернил. Таким образом, одновременно могут выполняться многочисленные процессы анализа, так что, в то время как процесс второго анализа работает над результатами процесса первого анализа, приложение 1701 может повторно запустить процесс первого анализа для подготовки следующего набора результатов анализа.Then, in step 1623, the ink analysis tool 1901 provides consistent results 2401 of the first analysis process to the second analysis process. After the second analysis process has begun, application 1701 may start another execution of the first analysis process for new unanalyzed ink. Thus, multiple analysis processes can be performed simultaneously, so that while the second analysis process is working on the results of the first analysis process, application 1701 can restart the first analysis process to prepare the next set of analysis results.

Является выгодным то, что параллельное выполнение процессов анализа может улучшить работу программного приложения 1701. Например, процесс анализа синтаксического разбора обычно быстрый относительно процесса анализа распознавания, и результаты анализа синтаксического разбора могут быть использованы для реализации правильного поведения при выборе и поведения при вставлении промежутков без использования результатов анализа распознавания. Таким образом, так как различные процессы анализа могут выполняться параллельно, то новым чернилам, которые добавлены к документу 1703, не придется ожидать завершения процесса анализа распознавания в отношении данных более ранних чернил, до того как они могут быть правильно выбраны или правильно введены промежутки в них. Далее, различные примеры изобретения выполняют асинхронный анализ чернил, чтобы оградить разработчиков приложения, а также разработчиков алгоритмов для средств синтаксического разбора и распознавания от проблем многопоточной обработки, улучшая удобство сопровождения и упрощая процесс разработки для обоих групп, и допускают изменения во взаимодействии между процессами анализа без изменений в приложении.It is advantageous that parallel execution of the analysis processes can improve the performance of the 1701 software application. For example, the parsing analysis process is usually quicker than the recognition analysis process, and the results of the parsing analysis can be used to implement the correct selection behavior and insertion behavior without using recognition analysis results. Thus, since various analysis processes can be performed in parallel, new inks that are added to document 1703 will not have to wait until the recognition analysis process for the data of earlier inks is completed before they can be correctly selected or spaces are entered correctly in them . Further, various examples of the invention perform asynchronous ink analysis to protect application developers as well as developers of algorithms for parsing and recognition from multithreaded processing problems, improving maintainability and simplifying the development process for both groups, and allow changes in the interaction between analysis processes without changes to the application.

Как отмечено выше, инструментальное средство 1901 анализа чернил может предоставить согласованные результаты анализа посредством создания нового независимого от документа объекта 1903 контекста анализа из объекта 1703 документа анализа, после того как он будет обновлен с целью включения соответствующих частей результатов 2101 анализа. В соответствии с другими примерами изобретения, однако, инструментальное средство 1901 анализа чернил может просто обновлять исходный независимый от документа объект 1903 контекста анализа результатами 2101 анализа, чтобы отражать текущее состояние документа 1703. Далее, инструментальное средство 1901 анализа чернил может просто предоставлять соответствующие данные чернил, подлежащие анализу, дополнительно процессу второго анализа.As noted above, the ink analysis tool 1901 can provide consistent analysis results by creating a new document-independent analysis context object 1903 from the analysis document object 1703 after it has been updated to include relevant parts of the analysis results 2101. According to other examples of the invention, however, the ink analysis tool 1901 can simply update the original document-independent analysis object 1903 with analysis results 2101 to reflect the current state of the document 1703. Further, the ink analysis tool 1901 can simply provide the corresponding ink data. subject to analysis, additionally to the second analysis process.

Таким образом, различные примеры изобретения согласовывают результаты процесса предыдущего анализа с текущим состоянием документа 1703 перед выполнением процесса последующего анализа. Необходимо понять, однако, что упомянутый промежуточный шаг согласования может быть исключен в некоторых примерах изобретения. Более конкретно, в соответствии с некоторыми примерами изобретения результаты процесса более раннего анализа могут быть непосредственно предоставлены процессу последующего анализа без согласования упомянутых результатов с текущим состоянием документа 1703. Например, если процесс средства классифицирования чернил предусмотрен отдельно от процесса средства анализа компоновки чернил, то тогда чернила, классифицированные в качестве рукописного текста, могут быть предоставлены процессу средства анализа компоновки чернил без промежуточного шага согласования.Thus, various examples of the invention align the results of the previous analysis process with the current state of document 1703 before performing the subsequent analysis process. You must understand, however, that the mentioned intermediate step coordination can be excluded in some examples of the invention. More specifically, in accordance with some examples of the invention, the results of an earlier analysis process can be directly provided to the subsequent analysis process without reconciling the results with the current state of document 1703. For example, if the ink classification tool process is provided separately from the ink composition analysis tool, then ink classified as handwritten text can be provided to the ink composition analysis tool process without intermediate step of approval.

При любой схеме, после того как процесс 2003 второго анализа завершит анализ согласованных результатов 2401 процесса первого анализа, процесс 2003 второго анализа возвращает свои результаты 2501 инструментальному средству 1901 анализа чернил, как показано на фиг.25. Инструментальное средство 1901 анализа чернил затем информирует программное приложение 1701 о результатах 2501 второго анализа на шаге 1625.In any design, after the second analysis process 2003 completes the analysis of the agreed results 2401 of the first analysis process, the second analysis process 2003 returns its results 2501 to the ink analysis tool 1901, as shown in FIG. 25. The ink analysis tool 1901 then informs the software application 1701 of the results of the second analysis 2501 in step 1625.

Как ранее отмечено, программное приложение 1701 может вводить в документ 1703 новые данные, включая новые данные 1705 электронных чернил, в то время как процесс второго анализа анализирует согласованные результаты 2401 процесса первого анализа. Результаты 2501 процесса второго анализа, таким образом, больше не могут быть применимыми к текущему состоянию документа 1703. Следовательно, результаты 2501 процесса 2003 второго анализа также должны быть согласованы с текущим состоянием документа 1703 на шаге 1627. Примерный процесс согласования изображен, в основном, на фиг.26, и он подробно описывается ниже.As previously noted, the software application 1701 can introduce new data into the document 1703, including new electronic ink data 1705, while the second analysis process analyzes the consistent results 2401 of the first analysis process. The results 2501 of the second analysis process, therefore, can no longer be applied to the current state of document 1703. Therefore, the results 2501 of the second analysis process 2003 must also be consistent with the current state of document 1703 in step 1627. An exemplary approval process is depicted mainly in Fig.26, and it is described in detail below.

Опять же, в соответствии с некоторыми примерами изобретения программное приложение 1701 может неавтоматизированным образом согласовать результаты 2501 второго анализа с текущим состоянием документа 1703. Альтернативно, в соответствии с другими примерами изобретения инструментальное средство 1901 анализа чернил может предоставить функцию согласования для согласования результатов 2101 анализа с текущим объектом 1709 контекста анализа. Упомянутая функция согласования идентифицирует конфликты или «коллизии» между результатами 2501 анализа процесса второго анализа и объектом 1709 контекста анализа для текущего состояния документа 1703, и инструментальное средство 1901 анализа чернил затем обновляет объект 1709 контекста анализа, основываясь на результатах анализа на шаге 1629. Данный процесс затем может быть повторен по мере необходимости для анализа нового ввода чернил или чернил, которые были изменены во время процессов анализа.Again, in accordance with some examples of the invention, the software application 1701 can automatically reconcile the results of the second analysis 2501 with the current state of the document 1703. Alternatively, in accordance with other examples of the invention, the ink analysis tool 1901 can provide a matching function for reconciling the results of the 2101 analysis with the current object 1709 context analysis. Said matching function identifies conflicts or “collisions” between the analysis results of the second analysis process 2501 and the analysis context object 1709 for the current state of the document 1703, and the ink analysis tool 1901 then updates the analysis context object 1709 based on the analysis results in step 1629. This process then it can be repeated as necessary to analyze new ink or ink input that has been changed during the analysis processes.

Из вышеприведенного описания очевидно, что методики анализа чернил в соответствии с различными примерами изобретения позволяют проводить анализ электронных чернил асинхронно относительно программного приложения 1701, позволяя программному приложению 1701 во время процессов анализа продолжать принимать вводимые данные, включая новые электронные чернила. Необходимо отметить, что, хотя выше описаны только два процесса анализа, одновременно может выполняться любое количество параллельных процессов анализа. Например, различные варианты реализации изобретения могут использовать процесс первого синтаксического разбора, процесс второго синтаксического разбора и процесс распознавания. Таким образом, если завершается процесс каждого анализа, то его результаты могут быть переданы процессу следующего анализа, и процесс первого анализа может снова выполняться одновременно и параллельно в отношении вновь введенных чернил.From the foregoing description, it is apparent that ink analysis techniques in accordance with various examples of the invention allow electronic ink analysis to be performed asynchronously with respect to software application 1701, allowing software application 1701 to continue to receive input, including new electronic ink, during analysis processes. It should be noted that although only two analysis processes are described above, any number of parallel analysis processes can be performed simultaneously. For example, various embodiments of the invention may utilize a first parsing process, a second parsing process, and a recognition process. Thus, if the process of each analysis is completed, its results can be transferred to the process of the next analysis, and the process of the first analysis can again be performed simultaneously and in parallel with respect to the newly introduced ink.

Далее, в соответствии с различными примерами изобретения один или несколько процессов анализа могут выполняться последовательно. Например, в соответствии с некоторыми программными приложениями пользователь может определить конкретный язык для штриха чернил или коллекции штрихов, такой как английский или японский. Данное определение языка затем может быть включено в объект 1709 контекста анализа и независимый от документа объект 1903 контекста анализа. Основываясь на определении языка, инструментальное средство 1901 анализа чернил может направить электронные чернила, определенные как первый язык, в процесс распознавания, разработанный для упомянутого первого языка, и впоследствии направить электронные чернила, определенные как второй язык, в другой процесс распознавания, разработанный для упомянутого второго языка. Таким же образом введенные данные, классифицированные и/или определенные как другие конкретные типы, могут посылаться на другие специализированные средства распознавания, такие как средства распознавания музыки, электрических символов, математических символов, признаков блок-схем, графических элементов и т.д.Further, in accordance with various examples of the invention, one or more analysis processes may be performed sequentially. For example, in accordance with some software applications, a user can define a specific language for a ink stroke or a collection of strokes, such as English or Japanese. This language definition can then be included in the analysis context object 1709 and the document-independent analysis context object 1903. Based on the definition of the language, the ink analysis tool 1901 can direct the electronic ink defined as the first language to a recognition process designed for the first language and subsequently direct the electronic ink defined as the second language to another recognition process designed for the second language. In the same way, entered data, classified and / or defined as other specific types, can be sent to other specialized recognition tools, such as recognition tools for music, electrical symbols, mathematical symbols, features of flowcharts, graphic elements, etc.

Кроме того, так как процессы анализа необязательно должны быть частью программного приложения 1701, то любой требуемый процесс анализа может быть использован для анализа электронных чернил в программном приложении 1701. Например, разработчик программного приложения может разработать и использовать процесс синтаксического разбора или процесс распознавания, который специально подходит для анализа ввода электронных чернил, предполагаемого программным приложением 1701.In addition, since analysis processes do not have to be part of a software application 1701, any required analysis process can be used to analyze electronic ink in a software application 1701. For example, a software application developer can develop and use a parsing process or a recognition process that specifically suitable for analysis of electronic ink input as proposed by 1701 software application.

Еще другие разновидности этих методик могут быть использованы различными вариантами реализации изобретения. Например, в некоторых ситуациях может быть нежелательным, чтобы программное приложение 1701 поддерживало внутреннее дерево документа, отражающее взаимосвязи между различными элементами документа в документе 1703. Вместо этого программное приложение 1701 может быть предназначено только для использования простой информации о состоянии, касающейся ввода электронных чернил. В соответствии с упомянутыми программными приложениями 1701 программное приложение 1701 может исключить создание объекта 1709 контекста анализа, который отражает текущее состояние всего документа 1703. Скорее программное приложение 1701 может создать объект 1709 контекста анализа с конкретным назначением, который содержит информацию, соответствующую только конкретному вводу чернил, который программное приложение 1701 собирается проанализировать. Посредством использования объекта 1709 контекста анализа с конкретным назначением программное приложение 1701 может исключить сложность поддержки внутренней структуры данных, соответствующей состоянию документа 1703, в то же самое время имея возможность использовать требуемые процессы анализа для анализа чернил в документе.Still other varieties of these techniques may be used in various embodiments of the invention. For example, in some situations, it may be undesirable for the software application 1701 to maintain an internal document tree that reflects the relationships between the various elements of the document in the document 1703. Instead, the software application 1701 can only be used to use simple status information regarding electronic ink input. According to the mentioned software applications 1701, the software application 1701 can eliminate the creation of an analysis context object 1709 that reflects the current state of the entire document 1703. Rather, the software application 1701 can create an analysis context object 1709 with a specific purpose that contains information that corresponds only to a specific ink input, which software application 1701 is about to analyze. By using the analysis context object 1709 for a specific purpose, the software application 1701 can eliminate the complexity of supporting the internal data structure corresponding to the state of the document 1703, while at the same time being able to use the required analysis processes to analyze the ink in the document.

Также, хотя выше приведено описание асинхронного анализа электронных чернил, необходимо заметить, что различные примеры изобретения могут дать возможность инструментальному средству 1901 анализа чернил проводить синхронный анализ чернил. Например, некоторые варианты реализации изобретения могут давать возможность программному приложению 1701 предписать инструментальному средству 1901 анализа чернил выполнение немедленного и синхронного анализа электронных чернил. Далее, синхронный анализ может выполняться только для чернил в конкретной области документа 1703 или для всего документа 1703.Also, although asynchronous analysis of electronic ink is described above, it should be noted that various examples of the invention may enable the ink analysis tool 1901 to perform synchronous ink analysis. For example, some embodiments of the invention may enable software application 1701 to instruct the ink analysis tool 1901 to perform an immediate and synchronous analysis of electronic ink. Further, synchronous analysis can be performed only for ink in a specific area of document 1703 or for the entire document 1703.

Инструментальное средство анализа чернилInk Analysis Tool

Как описано выше, инструментальное средство 1901 анализа чернил выполняет разнообразные функции, обеспечивающие обработку электронных чернил. Например, в соответствии с различными вариантами реализации изобретения инструментальное средство 1901 анализа чернил принимает информацию от программного приложения 1701, обозначающую одну или несколько областей в документе 1703 с данными чернил, подлежащими анализу, запрашивает программное приложение 1701 на получение информации, касающейся данных областей, и затем составляет независимый от документа объект 1903 контекста анализа, основываясь на упомянутой информации. Далее, инструментальное средство 1901 анализа чернил предоставляет независимый от документа объект 1903 контекста анализа одному или нескольким процессам анализа для анализа и затем согласовывает результаты процесса анализа с текущим состоянием документа 1703. Различные процессы могут выполняться с использованием отдельных потоков (как описано выше), при помощи пула потоков, в виде отдельных процессов, при помощи отдельных машин в кластере или любым другим подходящим или необходимым образом без отступления от изобретения.As described above, the ink analysis tool 1901 performs a variety of functions for processing electronic ink. For example, in accordance with various embodiments of the invention, the ink analysis tool 1901 receives information from a software application 1701 indicating one or more areas in a document 1703 with ink data to be analyzed, requests the software application 1701 to obtain information regarding these areas, and then constitutes an analysis context object 1903 independent of the document based on the information mentioned. Further, the ink analysis tool 1901 provides a document-independent analysis context object 1903 to one or more analysis processes for analysis and then reconciles the results of the analysis process with the current state of the document 1703. Various processes can be performed using separate streams (as described above) using a pool of threads, in the form of separate processes, using separate machines in a cluster or in any other suitable or necessary way without departing from the invention.

В соответствии с различными примерами изобретения разнообразные программные объекты и инструментальные средства могут быть использованы для реализации инструментального средства 1901 анализа чернил и выполнения данных функций. В соответствии с некоторыми примерами изобретения, однако, инструментальное средство 1901 анализа чернил реализовано в качестве интерфейса прикладного программирования (API). Более конкретно, в соответствии с некоторыми примерами изобретения инструментальное средство 1901 анализа чернил может быть реализовано в виде группы процедур программных объектов и связанной с ними информации, которые могут быть, по необходимости, вызваны программным приложением 1701 для анализа чернил в документе 1703.In accordance with various examples of the invention, a variety of software objects and tools can be used to implement the ink analysis tool 1901 and perform these functions. In accordance with some examples of the invention, however, the ink analysis tool 1901 is implemented as an application programming interface (API). More specifically, in accordance with some examples of the invention, the ink analysis tool 1901 may be implemented as a group of program object procedures and related information that may, if necessary, be invoked by the ink analysis software application 1701 in document 1703.

Для специалиста в данной области очевидно, что интерфейс прикладного программирования может быть организован в виде категорий или «классов», относящихся к программным объектам. «Объект» представляет собой коллекцию запоминаемых значений состояния и исполняемых поведений. Более конкретно, объект может поддерживать различные типы значений состояния, упоминаемых как «поля» и «свойства», которые могут быть ассоциированы с объектом или извлечены им. В отношении внешних программных приложений или другого программного объекта данные свойства могут быть только считаны (идентифицируются использованием терма «{get;}»), только записаны (идентифицируются использованием терма «{set;}») или считаны и записаны (идентифицируются как «{get; set}»). Объект также может исполнять задания или «методы», часто по запросу или «вызову» программного приложения или другого объекта. Таким образом, интерфейс прикладного программирования может включать в себя различные объекты, которые могут быть проинструктированы другим программным приложением на выполнение конкретных задач или предоставление конкретной информации по запросу.For a person skilled in the art it is obvious that the application programming interface can be organized in the form of categories or “classes” related to program objects. An “object” is a collection of memorized state values and executable behaviors. More specifically, an object can support various types of state values, referred to as “fields” and “properties,” which can be associated with or retrieved by the object. In relation to external software applications or another program object, these properties can only be read (identified using the term "{get;}"), only written (identified using the term "{set;}") or read and written (identified as "{get ; set} "). An object can also perform tasks or “methods”, often at the request or “call” of a software application or other object. Thus, the application programming interface can include various objects that can be instructed by another software application to perform specific tasks or provide specific information upon request.

Необходимо заметить, что различные примеры изобретения могут быть реализованы так, чтобы требовать от программного приложения 1701 предоставления только минимального объема информации, необходимой для завершения требуемого процесса анализа. По этой причине некоторые из свойств, описанных подробно ниже, могут быть описаны только как свойства только для чтения (т.е. «{get;}») или только для записи (т.е. «{set;}»), но могут быть как считываемыми, так и записываемыми для различных альтернативных вариантов реализации изобретения. Например, свойство, которое определяет «подсказки», которые должны использоваться процессом анализа для анализа электронных чернил, может быть идентифицировано как свойство только для чтения для ситуаций, когда программное приложение 1701 не предполагает использовать подсказки. Это позволяет объекту, созданному посредством Ink Analyzer, по меньшей мере считывать данное свойство и определять, что значением данного свойства является значение по умолчанию, равное нулю (т.е. «подсказки» не требуются программному приложению 1701). Если, однако, программное приложение 1701 собирается использовать подсказки для анализа чернил, то тогда данное свойство будет как считываемым, так и записываемым, позволяя программному приложению 1701 изменять значение данного свойства с нулевого значения, чтобы задавать требуемые подсказки.It should be noted that various examples of the invention can be implemented so as to require the software application 1701 to provide only the minimum amount of information necessary to complete the required analysis process. For this reason, some of the properties described in detail below can only be described as read-only properties (ie, "{get;}") or write-only properties (ie, "{set;}"), but can be both readable and writable for various alternative embodiments of the invention. For example, a property that defines “hints” that an analysis process should use to analyze electronic ink can be identified as a read-only property for situations where the 1701 software application does not intend to use hints. This allows the object created by Ink Analyzer to at least read this property and determine that the value of this property is the default value of zero (that is, "hints" are not required by the 1701 software application). If, however, the software application 1701 intends to use prompts for ink analysis, then this property will be both readable and writable, allowing the software application 1701 to change the value of this property from zero to specify the desired prompts.

В соответствии с различными примерами изобретения API, воплощающий реализацию инструментального средства 1901 анализа чернил, (упоминаемый ниже как API анализа чернил) может содержать два основных класса. Первый класс упоминается как класс «Analysis Context» и вторым классом является класс «Ink Analyzer». Компоненты класса «Analysis Context» используются для создания объекта 1709 контекста анализа. Следовательно, в соответствии с различными вариантами реализации изобретения, для которых программное приложение 1701 создает и поддерживает свой собственный объект 1701 контекста анализа, один или несколько компонентов в данном классе могут быть исключены из инструментального средства анализа чернил. Вместо этого, один или несколько из этих компонентов могут быть реализованы самим программным приложением 1701.In accordance with various examples of the invention, an API embodying an implementation of an ink analysis tool 1901 (referred to below as an ink analysis API) may comprise two main classes. The first class is referred to as the Analysis Context class and the second class is the Ink Analyzer class. The components of the Analysis Context class are used to create the analysis context object 1709. Therefore, in accordance with various embodiments of the invention, for which the software application 1701 creates and maintains its own analysis context object 1701, one or more components in this class can be excluded from the ink analysis tool. Instead, one or more of these components may be implemented by the 1701 software application itself.

Компоненты класса «Ink Analyzer» тогда используются для создания и применения объекта, который предоставляет независимый от документа объект 1903 контекста анализа процессу анализа, определения того, когда были сгенерированы результаты анализа, и согласования результатов анализа с текущим состоянием документа 1703. Ниже подробно описываются эти и другие классы, которые могут быть включены в API анализа чернил в соответствии с различными примерами изобретения.The components of the Ink Analyzer class are then used to create and use an object that provides a document-independent context object 1903 for analyzing the analysis process, determining when the analysis results were generated, and matching the analysis results with the current state of the document 1703. These and details are described below. other classes that may be included in the ink analysis API in accordance with various examples of the invention.

Обращаясь сначала к классу Analysis Context, данный класс реализуется ведущим приложением 1701 для создания объекта 1703 контекста анализа, который служит в качестве вида-посредника на внутреннее дерево документа программного приложения 1701. Альтернативно, как отмечено ранее, если приложение реализует свой собственный объект контекста анализа, то тогда один или несколько компонентов в данном классе могут быть исключены из инструментального средства 1901 анализа чернил. Как описано ранее, объект 1703 контекста анализа содержит все данные непроанализированных чернил, и объект 1703 контекста анализа используется для идентификации того, какие данные непроанализированных чернил должны быть проанализированы. Объект 1703 контекста анализа также содержит информацию о ранее проанализированных чернилах. Упомянутые ранее проанализированные чернила могут быть использованы для принятия решения в отношении того, как должны анализироваться непроанализированные в настоящее время чернила, и сами могут быть модифицированы в ходе анализа непроанализированных чернил. Далее, объект 1703 содержимого анализа содержит информацию о нечернильном содержимом документа 1703, которая используется для правильной классификации чернил в качестве аннотаций для нечернильного содержимого.Turning first to the Analysis Context class, this class is implemented by the host application 1701 to create an analysis context object 1703, which serves as an intermediary view of the internal document tree of the software application 1701. Alternatively, as noted earlier, if the application implements its own analysis context object, then one or more components in this class can be excluded from the ink analysis tool 1901. As described previously, the analysis context object 1703 contains all the unanalyzed ink data, and the analysis context object 1703 is used to identify which unanalyzed ink data should be analyzed. The analysis context object 1703 also contains information on previously analyzed ink. Mentioned previously analyzed ink can be used to decide on how to analyze currently unanalyzed ink, and themselves can be modified during the analysis of unanalyzed ink. Further, the analysis content object 1703 contains information about the non-ink content of the document 1703, which is used to correctly classify ink as annotations for the non-ink content.

В соответствии с различными примерами изобретения класс Analysis Context включает в себя конструктор, который, когда он вызывается программным приложением 1701, создает объект 1709 контекста анализа. Данный класс также может включать в себя разнообразные свойства для объекта 1709 контекста анализа, включая свойство с именем «Dirty Region {get;}». Свойство Dirty Region определяет часть документа (и, таким образом, часть объекта 1709 контекста анализа), которая содержит данные непроанализированных чернил. В соответствии с различными примерами изобретения Dirty Region может определять несовместную зону. Dirty Region задается как AnalysisRegion, которая подробно описывается ниже, но которая просто может быть коллекцией прямоугольных зон в документе. Если Dirty Region пустая, то анализа не происходит. Данный класс дополнительно может включать в себя свойство для объекта 1703 контекста анализа с именем «Margins {get;}», которое объявляет зоны страницы в документе 1703, которые считаются полями. Процесс анализа, который, например, анализирует компоновку и определяет классификацию электронных чернил, может использовать данное свойство, способствующее определению классификации электронных чернил, которые аннотируют нечернильное содержимое (например, чернила на полях).In accordance with various examples of the invention, the Analysis Context class includes a constructor that, when called by software application 1701, creates an analysis context object 1709. This class may also include a variety of properties for the analysis context object 1709, including a property named "Dirty Region {get;}". The Dirty Region property determines the part of the document (and, thus, the part of the analysis context object 1709) that contains the data of unanalyzed ink. In accordance with various examples of the invention, the Dirty Region may define an incompatible zone. The Dirty Region is defined as AnalysisRegion, which is described in detail below, but which simply can be a collection of rectangular zones in a document. If the Dirty Region is empty, then no analysis occurs. This class may further include a property for the analysis context object 1703 named “Margins {get;}”, which declares page zones in document 1703 that are considered fields. An analysis process that, for example, analyzes the layout and determines the classification of electronic ink, can use this property to help determine the classification of electronic ink that annotate non-ink content (for example, marginal ink).

Далее, класс Analysis Context может включать в себя свойство с именем «Rootnode {get;}», которое идентифицирует самый верхний или корневой узел контекста в объекте 1709 контекста анализа. Как подробно описано выше, данный корневой узел контекста содержит, в качестве дочерних узлов контекста, все другие объекты узлов контекста для данного объекта 1709 контекста анализа. Необходимо заметить, что в соответствии с различными примерами изобретения корневой узел контекста должен быть узлом контекста типа «Root». Также необходимо отметить, что в соответствии с примерами изобретения, где приложение 1701 реализует свой собственный объект 1709 контекста анализа, объект 1709 контекста анализа может иметь другие узлы контекста в качестве сестринских узлов корневого узла контекста, но компоненты класса Ink Analyzer могут ограничиваться рассмотрением узлов контекста, которые содержит корневой узел контекста.Further, the Analysis Context class may include a property named “Rootnode {get;}” that identifies the topmost or root context node in the analysis context object 1709. As described in detail above, this context root node contains, as child context nodes, all other context node objects for this analysis context object 1709. It should be noted that in accordance with various examples of the invention, the root context node must be a “Root” type context node. It should also be noted that in accordance with examples of the invention, where the application 1701 implements its own analysis context object 1709, the analysis context object 1709 may have other context nodes as sister nodes of the root context node, but the components of the Ink Analyzer class may be limited to considering context nodes, which contains the context root node.

Класс Analysis Context может дополнительно включать в себя свойство «Analysis Hints {get;}», которое возвращает массив объектов подсказок анализа, установленных программным приложением 1701. Как подробно описано ниже, объекты подсказок анализа могут содержать любой тип информации, которая может способствовать процессу анализа. Упомянутая информация может включать в себя, например, фактоиды, наставления или списки слов. Она также может включать в себя информацию, устанавливающую язык, который необходимо использовать для анализа, информацию, обозначающую непроанализированные чернила в качестве только рукописного текста или только рисунка, или предоставляющую любой вид наставления для процесса синтаксического разбора, такого как идентификация чернил в качестве списков, таблиц, форм, блок-схем, соединителей, контейнеров и т.п.The Analysis Context class may further include the “Analysis Hints {get;}” property, which returns an array of analysis hint objects set by the 1701 software application. As described in more detail below, analysis hint objects can contain any type of information that can facilitate the analysis process. Mentioned information may include, for example, factoids, exhortations, or lists of words. It may also include information establishing the language that you want to use for analysis, information denoting unanalyzed ink as handwritten text or just a picture, or providing any kind of instruction for parsing, such as identifying ink as lists, tables , forms, block diagrams, connectors, containers, etc.

В дополнение к этим свойствам класс Analysis Context также может включать в себя разнообразные методы, которые могут быть вызваны, например, программным приложением 1701 для выполнения задачи объектом 1709 контекста анализа. Например, класс Analysis Context может включать в себя метод с именем «FindNode (Guid id)». Каждый узел в объекте 1709 контекста анализа имеет глобальный уникальный идентификатор (или GUID), и данный метод определяет местоположение узла, заданного в вызове, где угодно в объекте 1709 контекста анализа. Данный метод поиска должен быть реализован наиболее эффективным образом, так как данный метод может быть вызван из многих критических во времени операций.In addition to these properties, the Analysis Context class can also include a variety of methods that can be invoked, for example, by a software application 1701 to perform a task by an analysis context object 1709. For example, the Analysis Context class may include a method called "FindNode (Guid id)." Each node in the analysis context object 1709 has a globally unique identifier (or GUID), and this method determines the location of the node specified in the call, anywhere in the analysis context object 1709. This search method should be implemented in the most efficient way, since this method can be called from many time-critical operations.

Подобно классу Analysis Context класс Ink Analyzer также определяет открытый конструктор, который позволяет программному приложению 1701 создавать экземпляр класса (т.е. объект анализатора чернил) вместе с разнообразными свойствами. Например, он может содержать свойство с именем «User Interface Context {get; set;}», которое определяет поток обработки, к которому возвращаются результаты процесса анализа. Данное свойство позволяет результатам синхронизироваться с другим объектом. Например, если он установлен на основную форму, то результаты программы синтаксического разбора будут активизироваться по основному потоку приложения. Он также может содержать свойство «AnalysisOptions AnalysisOptions {get; set;}», которое задает различные критерии, которые могут быть использованы для процесса анализа. Данные критерии могут включать в себя, например, разрешение распознавания текста, разрешение использования таблиц, разрешение использования списков, разрешение использования аннотаций и разрешение использование соединителей и контейнеров.Like the Analysis Context class, the Ink Analyzer class also defines an open constructor that allows the 1701 application to instantiate the class (i.e., an ink analyzer object) along with a variety of properties. For example, it may contain a property named “User Interface Context {get; set;} ", which defines the processing flow to which the results of the analysis process return. This property allows the results to be synchronized with another object. For example, if it is installed on the main form, then the results of the parsing program will be activated on the main flow of the application. It may also contain the property “AnalysisOptions AnalysisOptions {get; set;} ”, which sets various criteria that can be used for the analysis process. These criteria may include, for example, permission to recognize text, permission to use tables, permission to use lists, permission to use annotations, and permission to use connectors and containers.

Класс Ink Analyzer включает в себя различные методы. Например, данный класс может включать в себя метод с именем «AnalysisRegion Analyze ()». Этот метод запускает процесс синхронного анализа. Данные элементов документа передаются этому методу, который описывает текущее состояние документа 1703 и указывает, какие чернила в документе 1703 должны быть проанализированы. В соответствии с некоторыми вариантами реализации изобретения данные элементов документа могут быть представлены в качестве объекта 1709 контекста анализа (т.е. AnalysisRegion Analyze (Analysis Context)), как отмечено выше. Альтернативно, отдельные штрихи чернил могут быть переданы процессу анализа, либо используя ссылку на штрихи (т.е. AnalysisRegion Analyze (Strokes)), либо ссылаясь в качестве свойства объекта Ink Analyzer (например, InkAnalyzer.Strokes {get;set}) без передачи свойств методу Analyze.The Ink Analyzer class includes various methods. For example, a given class may include a method called “AnalysisRegion Analyze ()”. This method starts the synchronous analysis process. The data of the document elements is transmitted to this method, which describes the current state of the document 1703 and indicates which ink in the document 1703 should be analyzed. In accordance with some embodiments of the invention, data from document elements may be represented as an analysis context object 1709 (i.e., AnalysisRegion Analyze (Analysis Context)), as noted above. Alternatively, individual ink strokes can be passed to the analysis process, either by using a reference to the strokes (ie AnalysisRegion Analyze (Strokes)), or by referencing as a property of an Ink Analyzer object (for example, InkAnalyzer.Strokes {get; set}) without passing properties to the Analyze method.

После завершения процесса анализа данный метод возвращает ссылку на независимый от документа объект контекста анализа, который был модифицирован для того, чтобы содержать результаты процесса анализа. Метод также возвращает значение AnalysisRegion (подробно описанное ниже), описывающее зону в документе, где были рассчитаны результаты.After the analysis process is completed, this method returns a link to the document-independent object of the analysis context, which has been modified to contain the results of the analysis process. The method also returns an AnalysisRegion value (described in detail below) that describes the area in the document where the results were calculated.

Класс Ink Analyzer также может включать в себя метод с именем «AnalysisRegion Analyze(AnalysisContext, waitRegion)». Данный метод аналогичен синхронному методу Analysis Region Analyze (), описанному выше, но он анализирует чернила только если требуются результаты в заданной зоне waitRegion. Более конкретно, вызов данного метода идентифицирует объект 1709 контекста анализа для документа 1703 и область объекта 1709 контекста анализа (упоминаемую как «waitRegion»), для которой процесс анализа должен выполнять анализ синхронно. В соответствии с различными примерами изобретения все другие области объекта 1709 контекста анализа будут игнорироваться, если только процессу анализа не потребуется провести анализ содержимого в упомянутых областях, чтобы завершить свой анализ waitRegion. Как описано выше, объект 1709 контекста анализа, переданный этому методу, содержит свойство с именем «DirtyRegion», которое описывает зоны документа 1703, которые требуют анализа. Посредством задания конкретной waitRegion программное приложение 1701 может получить результаты анализа быстрее для одной заданной области, представляющей интерес, а не анализировать все данные чернил в документе 1703.The Ink Analyzer class can also include a method called "AnalysisRegion Analyze (AnalysisContext, waitRegion)." This method is similar to the synchronous Analysis Region Analyze () method described above, but it analyzes ink only if results are required in the specified waitRegion zone. More specifically, a call to this method identifies the analysis context object 1709 for the document 1703 and the region of the analysis context object 1709 (referred to as “waitRegion”) for which the analysis process must perform the analysis synchronously. In accordance with various examples of the invention, all other areas of the analysis context object 1709 will be ignored unless the analysis process needs to analyze the contents in these areas in order to complete its waitRegion analysis. As described above, the analysis context object 1709 passed to this method contains a property called “DirtyRegion” that describes areas of the document 1703 that require analysis. By setting a specific waitRegion, software application 1701 can obtain analysis results faster for one given area of interest, rather than analyzing all ink data in document 1703.

Когда вызывается любой из этих методов Analyze, то будет выполняться каждый доступный процесс анализа. Также, так как эти методы Analyze представляют собой синхронные вызовы, то нет необходимости выполнять процесс согласования при их завершении и не будет активизироваться событие, если он завершен.When any of these Analyze methods is called, each available analysis process will be executed. Also, since these Analyze methods are synchronous calls, there is no need to carry out the coordination process at their completion and the event will not be triggered if it is completed.

Класс Ink Analyzer также может включать в себя метод с именем «BackgroundAnalyze(AnalysisContext)». Данный метод запускает заданную операцию анализа, но делает это в отдельном фоновом потоке анализа. Таким образом, данный метод возвращает управление основному потоку обработки почти мгновенно, в то время как фактическая операция анализа завершается в фоновом потоке. В частности, данный метод возвращает значение «истина», если был успешно запущен процесс анализа. Опять же, значение AnalysisContext, переданное методу, идентифицирует объект 1709 контекста анализа для документа 1703 и указывает, какие чернила в документе 1703 требуют анализа. Как только операция анализа завершится в фоновом потоке, устанавливается событие Results, позволяющее программному приложению 1701 получить доступ к результатам. Событие содержит результаты и метод согласования, который используется для встраивания результатов обратно в объект 1709 контекста анализа для текущего состояния документа 1703, когда результаты возвращаются.The Ink Analyzer class can also include a method called "BackgroundAnalyze (AnalysisContext)." This method starts the specified analysis operation, but does it in a separate background analysis stream. Thus, this method returns control to the main processing thread almost instantly, while the actual analysis operation completes in the background thread. In particular, this method returns true if the analysis process was successfully started. Again, the AnalysisContext value passed to the method identifies the analysis context object 1709 for the document 1703 and indicates which ink in the document 1703 needs analysis. As soon as the analysis operation completes in the background thread, the Results event is set, allowing the 1701 software application to access the results. The event contains the results and a matching method that is used to embed the results back into the analysis context object 1709 for the current state of the document 1703 when the results are returned.

Необходимо отметить, что каждый из этих трех методов Analyze, в свою очередь, вызывает метод «Clone» в классе «Analysis Region», который подробно описывается ниже. Используя метод «Clone», эти методы Analyze создают независимый от документа объект контекста анализа, который впоследствии модифицируется процессом анализа, чтобы показать результаты анализа.It should be noted that each of these three Analyze methods, in turn, calls the Clone method in the Analysis Region class, which is described in detail below. Using the Clone method, these Analyze methods create a document-independent analysis context object, which is subsequently modified by the analysis process to show the results of the analysis.

Класс Ink Analyzer также может включать в себя метод с именем «Reconcile (AnalysisContext current, AnalysisResultsEventArgs resultArgs)», который программное приложение 1701 вызывает после приема события результатов, которое было обусловлено вызовом метода BackgroundAnalyze(AnalysisContext). Метод Reconcile сравнивает результаты анализа, содержащиеся в независимом от документа объекте контекста анализа, с текущей версией объекта 1709 контекста анализа, поддерживаемого программным приложением 1701. Данный метод идентифицирует узлы, которые необходимо добавить и удалить из текущей версии объекта 1709 контекста анализа, и идентифицирует, изменились ли какие-нибудь из следующих свойств существующего узла: его результаты распознавания, его размещение, штрихи чернил, ассоциированные с узлом, или любые другие данные, ассоциированные с результатами операции анализа. Данный метод также записывает упомянутые идентифицированные изменения в текущую версию объекта 1709 контекста анализа. Данный метод чувствителен к порядку расположения узлов контекста, такому как порядок узлов контекста слов на узле контекста строк.The Ink Analyzer class can also include a method called “Reconcile (AnalysisContext current, AnalysisResultsEventArgs resultArgs),” which the 1701 application calls after receiving a result event that was caused by a call to the BackgroundAnalyze (AnalysisContext) method. The Reconcile method compares the analysis results contained in a document-independent analysis context object with the current version of the analysis context object 1709 supported by the software application 1701. This method identifies nodes that need to be added and removed from the current version of the analysis context object 1709, and identifies changed whether any of the following properties of an existing node: its recognition results, its placement, ink strokes associated with the node, or any other data associated with res ltatami analysis operation. This method also writes the identified identified changes to the current version of the analysis context object 1709. This method is sensitive to the order of the location of the context nodes, such as the order of the word context nodes on the line context node.

Результаты анализа (т.е. значение свойства AnalysisResultsEventArgs) передаются обратно с помощью этого метода, так как они содержат открытую структуру результатов и закрытую структуру результатов. Возвращается открытая структура, так что программное приложение 1701 может предварительно просмотреть изменения, которые будут иметь место на этапе согласования. Закрытая структура включена для того, чтобы предотвратить изменение программным приложением 1701 любого результата анализа перед процессом согласования.Analysis results (i.e., the value of the AnalysisResultsEventArgs property) are passed back using this method because they contain an open result structure and a closed result structure. An open structure is returned so that the software application 1701 can preview the changes that will take place during the reconciliation phase. A closed structure is included in order to prevent software application 1701 from changing any analysis result before the approval process.

Класс Ink Analyzer также может включать в себя методы с именами «Recognizers RecognizersPriority()» и «SetHighestPriorityRecognizer(recognizer)». Когда чернила необходимо распознать, то используется соответствующее средство распознавания, основываясь на языке и возможностях. Следовательно, метод Recognizers RecognizersPriority() возвращает процессы распознавания в порядке, в котором они оцениваются объектом Ink Analyzer. Порядок определяется согласно системе, в зависимости от доступных процессов распознавания, но может быть переопределен для программного приложения 1701 вызовом SetHighestPriorityRecognizer(recognizer) в отношении объекта Ink Analyzer. InkAnalyzer перечисляет данный упорядоченный список, пока не будет обнаружено соответствующее средство распознавания. Метод SetHighestPriorityRecognizer(recognizer) устанавливает приоритет процесса распознавания. Посредством установки приоритета конкретного процесса распознавания данный процесс распознавания будет использоваться, если он соответствует требуемому языку и возможностям текущей операции распознавания. По существу, SetHighestPriorityRecognizer(recognizer) проталкивает обозначенный процесс распознавания в верхнюю часть списка, возвращаемого методом RecognizersPriority.The Ink Analyzer class can also include methods with the names "Recognizers RecognizersPriority ()" and "SetHighestPriorityRecognizer (recognizer)". When ink needs to be recognized, an appropriate recognition tool is used based on language and capabilities. Therefore, the Recognizers RecognizersPriority () method returns the recognition processes in the order in which they are evaluated by the Ink Analyzer. The order is determined according to the system, depending on the recognition processes available, but can be redefined for the 1701 application by calling SetHighestPriorityRecognizer (recognizer) in relation to the Ink Analyzer object. InkAnalyzer lists this ordered list until the appropriate recognition tool is found. The SetHighestPriorityRecognizer (recognizer) method sets the priority of the recognition process. By prioritizing a particular recognition process, this recognition process will be used if it matches the desired language and capabilities of the current recognition operation. Essentially, the SetHighestPriorityRecognizer (recognizer) pushes the designated recognition process to the top of the list returned by the RecognizersPriority method.

Класс Ink Analyzer также может содержать метод с именем «AnalysisRegion Abort(), который может использовать объект контекста анализа в качестве параметра. Данный метод обеспечивает возможность раннего завершения операции высокоприоритетного или фонового анализа. Данный метод возвращает область анализа, которая описывает зону, которая анализировалась перед преждевременным прекращением. Таким образом, если программное приложение 1701 собирается позднее продолжить операцию анализа, то упомянутая область может быть объединена с DirtyRegion объекта 1709 контекста анализа для текущего состояния документа 1703. Далее, класс Ink Analyzer может включать в себя событие с именем «AnalysisResultsEventHandler», которое запускается для объекта InkAnalyzer настолько часто, насколько это целесообразно. Более конкретно, данное событие может запускаться между процессами анализа и по меньшей мере каждые 5 секунд. Данное событие может использоваться для предоставления приложению 1701 обновления в отношении состояния проходящего асинхронного процесса (или процессов) анализа.The Ink Analyzer class may also contain a method called “AnalysisRegion Abort (), which can use the analysis context object as a parameter. This method provides the possibility of early completion of the operation of high priority or background analysis. This method returns the area of analysis that describes the area that was analyzed before premature termination. Thus, if the software application 1701 intends to continue the analysis operation later, then this area can be combined with the DirtyRegion of the analysis context object 1709 for the current state of the document 1703. Further, the Ink Analyzer class may include an event called “AnalysisResultsEventHandler” that is fired for InkAnalyzer objects as often as appropriate. More specifically, this event can be fired between analysis processes and at least every 5 seconds. This event can be used to provide application 1701 with updates regarding the status of a passing asynchronous analysis process (or processes).

API анализа чернил также может включать в себя классы в дополнение к классу Analysis Context и классу Ink Analyzer. Например, API анализа чернил в соответствии с различными примерами изобретения может включать в себя класс Context Node. Данный класс может включать в себя различные компоненты, относящиеся к узлам контекста, которые составляют объект 1709 контекста анализа и независимый от документа объект контекста анализа, такие как свойство с именем «ContextNodeType Type {get;}». Для специалиста в данной области техники очевидно, что каждый узел контекста имеет тип, и существует заданный набор правил, которых должен придерживаться каждый тип. Они включают в себя правила, такие как, например, какие типы дочерних узлов контекста разрешены и могут ли или нет штрихи непосредственно быть ассоциированы с узлом контекста или только через его дочерние узлы контекста.The ink analysis API can also include classes in addition to the Analysis Context class and Ink Analyzer class. For example, an ink analysis API in accordance with various examples of the invention may include a Context Node class. This class may include various components related to the context nodes that make up the analysis context object 1709 and a document-independent analysis context object, such as a property named “ContextNodeType Type {get;}”. It will be apparent to those skilled in the art that each context node has a type, and there is a predetermined set of rules that each type must adhere to. They include rules, such as, for example, what types of child context nodes are allowed and whether or not strokes can directly be associated with a context node or only through its child context nodes.

Возможные типы узлов контекста могут быть определены в перечислении ContextNodeTypes и могут включать в себя (но не в ограничительном смысле), например, следующие типы: узел InkAnnotation, который представляет данные чернил, аннотирующие нетекстовые данные; узел InkDrawing, который представляет данные чернил, формирующие рисунок; узел InkWord, который представляет данные чернил, формирующие слово; узел Line, который содержит один или несколько узлов InkWord и/или узлов TextWord для слов, формирующих строку текста; узел ListItem, который может содержать узлы Paragraph, Image или подобные им, предполагаемые в списке; и узел List, который содержит один или несколько узлов ListItem, причем каждый описывает элемент в списке. Типы узлов также могут включать в себя узел NonInkDrawing, представляющий изображение нечернильного рисунка; узел Object, представляющий данные, не охватываемые другими значениями перечисления ContextNodeType; узел Paragraph, который содержит один или несколько узлов Line, соответствующих строкам, формирующим абзац; узел Picture или Image, представляющий изображение рисунка; узел Root, который служит в качестве самого верхнего узла в объекте контекста анализа; узел Table, который содержит узлы, представляющие элементы, составляющие таблицу; узел TextBox представляющий текстовое окно; узел TextWord и узел UnclassifiedInk, соответствующий данным чернил, которые еще не были классифицированы. Типы узлов также могут включать в себя узел Group для групп других узлов, узел InkBullet для элементов маркера, узел Row для элементов документа, представленных в строке таблицы, и узел Cell для элементов документа, представленных в ячейке таблицы.Possible types of context nodes can be defined in the ContextNodeTypes enumeration and can include (but not in a restrictive sense), for example, the following types: InkAnnotation node, which represents ink data annotating non-text data; an InkDrawing node that represents ink data forming a pattern; an InkWord node that represents ink data forming a word; Line node, which contains one or more InkWord nodes and / or TextWord nodes for words forming a line of text; ListItem node, which may contain Paragraph, Image nodes, or the like, assumed in the list; and a List node that contains one or more ListItem nodes, each describing an item in a list. Types of nodes may also include a NonInkDrawing node representing an image of a non-ink drawing; An Object node representing data not covered by other values of the ContextNodeType enumeration; a Paragraph node that contains one or more Line nodes corresponding to the lines forming the paragraph; a Picture or Image node representing the image of the picture; Root node, which serves as the topmost node in the analysis context object; a Table node that contains nodes representing the elements that make up the table; TextBox node representing the text box; a TextWord node and an UnclassifiedInk node corresponding to ink data that has not yet been classified. Types of nodes can also include a Group node for groups of other nodes, an InkBullet node for marker elements, a Row node for document elements presented in a table row, and a Cell node for document elements presented in a table cell.

Класс Context Node также может включать в себя свойство с именем «GUID Id {get;}», которое представляет собой глобальный уникальный идентификатор для текущего узла контекста. Для того, чтобы получить доступ к любому требуемому узлу контекста, каждый узел контекста в отдельном объекте контекста анализа всегда должен иметь уникальный идентификатор. Данный класс также может включать в себя свойство с именем «AnalysisRegion Location {get;}», которое определяет размещение в пространстве документа, где фактически расположен соответствующий узел контекста. Как отмечено ранее, AnalysisRegion представляет собой двухмерную структуру, группирующую вместе одну или несколько возможно непересекающихся структур подобных прямоугольнику. Данный класс также может включать в себя свойство с именем «StrokeCollection Strokes {get;}», которое идентифицирует штрихи чернил, ассоциированные с соответствующим узлом контекста. В соответствии с различными примерами изобретения только концевым узлам контекста (таким как узлы Word, Drawing и Bullet) разрешено API анализа чернил иметь штрихи. Программное приложение 1701 может использовать данное свойство для ссылки на штрихи на уровне концевых узлов всеми узлами-предками контекста (например, корневой узел содержит ссылку на штрихи на все штрихи в соответствующем объекте контекста анализа).The Context Node class can also include a property called "GUID Id {get;}", which is a globally unique identifier for the current context node. In order to access any desired context node, each context node in a separate analysis context object must always have a unique identifier. This class may also include a property with the name “AnalysisRegion Location {get;}”, which determines the location in the document space where the corresponding context node is actually located. As noted earlier, AnalysisRegion is a two-dimensional structure that groups together one or more possibly disjoint structures like a rectangle. This class can also include a property called "StrokeCollection Strokes {get;}" that identifies ink strokes associated with the corresponding context node. In accordance with various examples of the invention, only context end nodes (such as Word, Drawing, and Bullet nodes) are allowed to have ink analysis APIs with strokes. Software application 1701 can use this property to refer to strokes at the end node level by all ancestor nodes of the context (for example, the root node contains a link to strokes to all strokes in the corresponding analysis context object).

Далее, данный класс может включать в себя свойство с именем «ContextNode ParentNode {get;}», которое идентифицирует родительский узел контекста, содержащий соответствующий узел контекста. В соответствии с различными примерами изобретения узлы контекста всегда создаются с зависимостью от родительского узла контекста, причем узел контекста Root является статическим членом объекта контекста анализа. Данный класс также может включать в себя свойство «ContextNode[] SubNodes {get;}», которое идентифицирует все узлы контекста, которые являются непосредственными дочерними узлами соответствующего узла контекста. Т.е. данное свойство идентифицирует только те дочерние узлы контекста, которые находятся на один уровень ниже в объекте контекста анализа. Например, значение данного свойства для узла контекста Paragraph идентифицирует только узлы контекста строки, содержащиеся в узле Paragraph, а не узлы контекста слова, которые являются дочерними узлами узла контекста строки.Further, this class may include a property with the name “ContextNode ParentNode {get;}”, which identifies the parent context node containing the corresponding context node. In accordance with various examples of the invention, context nodes are always created depending on the parent context node, wherein the Root context node is a static member of the analysis context object. This class may also include the “ContextNode [] SubNodes {get;}” property, which identifies all context nodes that are immediate child nodes of the corresponding context node. Those. this property identifies only those child context nodes that are one level lower in the analysis context object. For example, the value of this property for a Paragraph context node identifies only the line context nodes contained in the Paragraph node, and not the word context nodes, which are child nodes of the line context node.

Данный класс также может включать в себя свойство с именем «RecognitionResult RecognitionResult {get;}», которое предоставляет результат распознавания, вычисленный соответствующим процессом или процессами анализа распознавания, так как RecognitionResult может представлять более одной строки текста с более чем одного языка. Recognition Result доступен для каждого узла контекста в независимом от документа объекте контекста анализа, даже если свойство RecognitionData (описанное подробно ниже), которое устанавливается процессом анализа распознавания и используется для создания объекта RecognitionResult, может устанавливаться только на одном уровне дерева узлов контекста, чтобы исключить дублирование данных. Если узел не имеет RecognitionData, ассоциированное с ним, то он либо объединяет результаты распознавания всех своих подузлов, либо извлекает результат распознавания из своего родительского узла. Данный класс также может включать в себя свойство с именем «Stream RecognitionData {get; set;}», которое представляет собой постоянную форму значения RecognitionResult. Опять же, процесс анализа распознавания создает значение Stream RecognitionData, которое устанавливается на соответствующем узле контекста. Объект RecognitionResult затем строится на основе упомянутого значения.This class may also include a property called “RecognitionResult RecognitionResult {get;}”, which provides the recognition result calculated by the corresponding recognition analysis process or processes, since RecognitionResult can represent more than one line of text from more than one language. Recognition Result is available for each context node in a document-independent context for the analysis, even if the RecognitionData property (described in detail below), which is set by the recognition analysis process and used to create the RecognitionResult object, can be set only at one level of the context node tree to avoid duplication data. If the node does not have the RecognitionData associated with it, then it either combines the recognition results of all its subnodes or extracts the recognition result from its parent node. This class may also include a property called Stream RecognitionData {get; set;} ”, which is a constant form of the value of RecognitionResult. Again, the recognition analysis process creates a Stream RecognitionData value that is set on the corresponding context node. The RecognitionResult object is then constructed based on the value mentioned.

Класс Context Node дополнительно может включать в себя свойство с именем «ContextLink[] Links {get;}», которое обеспечивает массив объектов ContextLink. Объект ContextLink описывает альтернативную взаимосвязь между двумя узлами контекста. Хотя узлы контекста обычно имеют взаимосвязь вида “родительский узел - дочерний узел” с другими узлами контекста, ContextLink учитывает альтернативную зависимость между узлами контекста. Например, ContextLink может учитывать соединение между двумя узлами контекста, жесткую привязку одного узла контекста к другому узлу контекста, встраивание одного узла контекста в другой узел контекста или требуемый тип связи, определяемый программным приложением 1701. ContextLinks может быть добавлен к данному массиву посредством вызова метода AddLink, подробно описанного ниже. Аналогично, ContextLinks может быть удален из данного массива посредством вызова метода DeleteLink, который также подробно описан ниже.The Context Node class can additionally include a property called “ContextLink [] Links {get;}”, which provides an array of ContextLink objects. The ContextLink object describes an alternative relationship between two context nodes. Although context nodes typically have a parent-child relationship with other context nodes, ContextLink allows for an alternative relationship between context nodes. For example, ContextLink can take into account the connection between two context nodes, tight binding of one context node to another context node, embedding of one context node in another context node, or the required type of communication defined by the 1701 application. ContextLinks can be added to this array by calling the AddLink method described in detail below. Similarly, ContextLinks can be removed from this array by calling the DeleteLink method, which is also described in detail below.

Далее, данный класс может включать в себя свойства «IsContainer {get;}» и «IsInkLeaf {get;}». Свойство IsContainer {get;} имеет значение «истина», если соответствующий узел контекста не является концевым узлом контекста (т.е., если соответствующий узел контекста содержит дочерние узлы контекста и, таким образом, считается узлом контекста контейнера) и имеет значение «ложь» в противном случае. Свойство IsInkLeaf {get;} имеет значение «истина», если текущим узлом контекста не является узел контекста контейнера и имеет значение «ложь» в противном случае. Т.е., если текущий узел контекста не содержит никаких дочерних узлов контекста, то он считается концевым узлом контекста. Также необходимо заметить, что с различными примерами изобретения, как ожидается, узел контекста InkLeaf содержит ссылки на данные штрихов, тогда как узлы контекста контейнера не имеют упомянутого ограничения. Узлы контекста контейнера могут ссылаться на данные штрихов или могут не ссылаться на них, что определяется программным приложением 1701.Further, this class may include the properties "IsContainer {get;}" and "IsInkLeaf {get;}". The IsContainer {get;} property is true if the corresponding context node is not a context end node (that is, if the corresponding context node contains child context nodes and is therefore considered to be a container context node) and false " otherwise. The IsInkLeaf {get;} property is true if the current context node is not a container context node and false otherwise. That is, if the current context node does not contain any child context nodes, then it is considered the end context node. It should also be noted that with various examples of the invention, it is expected that the InkLeaf context node contains references to stroke data, while container context nodes do not have the mentioned limitation. Container context nodes may or may not refer to stroke data, as determined by software application 1701.

Класс Context Node также может содержать свойство «Rect RotatedBoundingBox {get; set;}». Значение данного свойства вычисляется процессом анализа компоновки и классификации. Если данные чернил, ассоциированные с соответствующим узлом контекста, записываются под углом, то тогда границы узла контекста все же будут выровнены горизонтально. Значение свойства RotatedBoundingBox, однако, будет выровнено с углом, под которым были записаны данные чернил, ассоциированные с соответствующим узлом контекста. Далее, данный класс может включать в себя свойство «ReClassifiable {get;}», которое информирует InkAnalyzer о том, разрешено ли ему модифицировать значения соответствующего узла контекста.The Context Node class may also contain the property "Rect RotatedBoundingBox {get; set;} ". The value of this property is calculated by the process of layout analysis and classification. If the ink data associated with the corresponding context node is recorded at an angle, then the boundaries of the context node will still be aligned horizontally. The value of the RotatedBoundingBox property, however, will be aligned with the angle at which the ink data associated with the corresponding context node was recorded. Further, this class may include the “ReClassifiable {get;}” property, which informs InkAnalyzer whether it is allowed to modify the values of the corresponding context node.

В дополнение к этим свойствам класс Context Node также может включать в себя различные методы. Например, данный класс может включать в себя метод с именем «ContextNode CreateSubNode(ContextNodeType type)». Данный метод позволяет создавать дочерний узел контекста конкретного типа. В соответствии с различными примерами изобретения данный метод может разрешать создание только допустимых типов дочерних узлов соответствующего узла контекста, тем самым предотвращая создание искаженных структур данных. Например, данный метод может разрешать узлу контекста Line создавать только дочерние узлы контекста InkWord и TextWord. Данный класс также может содержать метод с именем «void DeleteSubNode(ContextNode node)», который удаляет дочерний узел контекста, на который сделана ссылка, из соответствующего объекта контекста анализа. Необходимо заметить, однако, что в соответствии с различными примерами изобретения, если узел контекста, на который сделана ссылка, все еще содержит штрихи или дочерние узлы контекста, то тогда данный метод должен завершиться неуспешно. Также, если узел контекста, на который сделана ссылка, не является непосредственным дочерним узлом соответствующего узла контекста, то тогда данный метод должен завершиться неуспешно. Необходимо заметить, что если программное приложение 1701 реализует свой собственный объект 1709 контекста анализа и, в свою очередь, использует данный метод, он не удаляет непустые узлы контекста или узлы контекста, которые не являются непосредственными дочерними узлами соответствующего узла контекста, для предотвращения искаженных структур данных в объекте 1709 контекста анализа.In addition to these properties, the Context Node class can also include various methods. For example, this class may include a method called “ContextNode CreateSubNode (ContextNodeType type)”. This method allows you to create a child context node of a specific type. In accordance with various examples of the invention, this method may allow the creation of only valid types of child nodes of the corresponding context node, thereby preventing the creation of distorted data structures. For example, this method may allow the Line context node to create only child InkWord and TextWord context nodes. This class may also contain a method called “void DeleteSubNode (ContextNode node)”, which removes the child context node to which the link is made from the corresponding analysis context object. It should be noted, however, that according to various examples of the invention, if the context node to which the reference is made still contains strokes or child context nodes, then this method should fail. Also, if the referenced context node is not a direct child of the corresponding context node, then this method should fail. It should be noted that if a software application 1701 implements its own analysis context object 1709 and, in turn, uses this method, it does not delete nonempty context nodes or context nodes that are not immediate child nodes of the corresponding context node to prevent distorted data structures in object 1709 context analysis.

Далее, данный класс может включать в себя метод «ContextNode[] HitTestSubNodes(AnalysisRegion region)», который возвращает массив узлов контекста, которые расположены в заданной области. Необходимо заметить, однако, что возвращаются только непосредственные дочерние узлы данного элемента, а не все узлы-потомки. Область определяется объектом AnalysisRegion, который, как ранее отмечено, может быть коллекцией из одного или нескольких прямоугольников. В соответствии с различными примерами изобретения, если любая часть размещения узла контекста пересекает заданную область, то тогда данный узел контекста будет возвращен в массиве. Данный метод используется, например, для создания независимого от документа объекта контекста анализа и для согласования результатов анализа с объектом контекста анализа, соответствующим текущему состоянию документа 1703. Таким образом, данный метод часто вызывается и должен быть оптимизирован для быстрого многократного доступа со стороны объекта InkAnalyzer.Further, this class may include the “ContextNode [] HitTestSubNodes (AnalysisRegion region)” method, which returns an array of context nodes that are located in a given area. It should be noted, however, that only the immediate child nodes of this element are returned, and not all descendant nodes. A region is defined by an AnalysisRegion object, which, as previously noted, can be a collection of one or more rectangles. In accordance with various examples of the invention, if any part of the location of the context node intersects a given area, then this context node will be returned in the array. This method is used, for example, to create an analysis context object independent of the document and to coordinate the analysis results with the analysis context object corresponding to the current state of document 1703. Thus, this method is often called and should be optimized for quick multiple access from the InkAnalyzer object.

Класс Context Node также может содержать метод с именем «MoveStroke(Stroke stroke, ContextNode destination)». Данный метод перемещает ассоциацию штриха с одного концевого узла контекста на другой. В соответствии с различными примерами изобретения данный метод используется только между концевыми узлами контекста. Он также может включать в себя метод с именем «MoveSubNodeToPosition(int OldIndex, int NewIndex)», который переупорядочивает соответствующий узел контекста относительно его сестринских узлов контекста. Например, если документ 1703 имеет три слова в строке, например, слово 1, слово 2 и слово 3, то тогда их порядок является следствием массива подузлов, возвращаемых от родительского узла контекста. Данный метод позволяет изменить их порядок, так что относительно соответствующего родительского узла контекста слово 1 задается последним словом в строке посредством перемещения узла контекста для слова 1 из положения один в положение три.The Context Node class may also contain a method named "MoveStroke (Stroke stroke, ContextNode destination)." This method moves the stroke association from one end context node to another. In accordance with various examples of the invention, this method is used only between the end nodes of the context. It may also include a method called “MoveSubNodeToPosition (int OldIndex, int NewIndex)”, which reorders the corresponding context node relative to its sister context nodes. For example, if document 1703 has three words per line, for example, word 1, word 2, and word 3, then their order is the result of an array of subnodes returned from the parent context node. This method allows you to change their order, so that relative to the corresponding parent context node, word 1 is set by the last word in the line by moving the context node for word 1 from position one to position three.

Далее, данный класс может включать в себя метод с именем «AddLink(ContextLink link)», который добавляет новый объект ContextLink к текущему узлу контекста. В соответствии с различными примерами изобретения объект ContextLink должен содержать ссылку на соответствующий узел контекста, чтобы ContextLink был успешно добавлен к массиву ContextLinks, ассоциированному с соответствующим узлом контекста. Он также может содержать метод с именем «DeleteLink(ContextLink link)». Данный метод ликвидирует или удаляет заданный объект ContextLink из массива ContextLinks для соответствующего узла контекста. Необходимо заметить, что в соответствии с различными примерами изобретения данный вызов метода всегда завершается успешно, даже если ContextLink не существует в массиве ContextLinks, ассоциированном с соответствующим узлом контекста.Further, this class may include a method called “AddLink (ContextLink link)”, which adds a new ContextLink object to the current context node. In accordance with various examples of the invention, the ContextLink object must contain a reference to the corresponding context node so that the ContextLink is successfully added to the ContextLinks array associated with the corresponding context node. It may also contain a method called “DeleteLink (ContextLink link)”. This method eliminates or removes the specified ContextLink object from the ContextLinks array for the corresponding context node. It should be noted that in accordance with various examples of the invention, this method call always succeeds, even if ContextLink does not exist in the ContextLinks array associated with the corresponding context node.

API анализа чернил также может включать в себя класс Analysis Hint. Как и в случае многих из ранее описанных классов класс Analysis Hint может включать в себя конструктор с именем «AnalysisHint()», который инициализирует объект Analysis Hint в пустое состояние. Данный класс также может включать в себя ряд свойств, включая свойство с именем «AnalysisRegion Location {get;}». Данное свойство задает местоположение в документе 1703 (в качестве AnalysisRegion), к которому применим AnalysisHint. Например, если документ 1703 представляет собой узел свободной формы с разделом заголовка в верхней части страницы, то тогда приложение 1701 может установить, что AnalysisHint для области заголовка задает, что горизонтальная чернильная строка предполагается в упомянутой области. Этот Analysis Hint будет способствовать повышению точности процесса анализа.The ink analysis API may also include the Analysis Hint class. As with many of the previously described classes, the Analysis Hint class can include a constructor named “AnalysisHint ()” that initializes the Analysis Hint to an empty state. This class can also include a number of properties, including a property named “AnalysisRegion Location {get;}”. This property sets the location in document 1703 (as AnalysisRegion) to which AnalysisHint applies. For example, if document 1703 is a free form node with a title section at the top of the page, then application 1701 can establish that AnalysisHint for the title area specifies that a horizontal ink line is assumed in said area. This Analysis Hint will help improve the accuracy of the analysis process.

Данный класс также может включать в себя свойство с именем «string Factoid {get; set;}», который задает конкретный «фактоид», который должен использоваться для размещения в документе 1703, к которому применим AnalysisHint. Как известно специалисту в данной области техники, фактоиды обеспечивают подсказки процессу распознавания в отношении ожидаемого использования данных чернил (например, в качестве обыкновенного текста, цифр, почтовых кодов, имен файлов и унифицированных указателей ресурса (URL) «Всемирной паутины» (Web)). Данный класс также может включать в себя свойства с именами «RecognizerGuide Guide {get; set;}» и «OverrideLanguageId {get; set;}». Свойство RecognizerGuide Guide {get; set;} задает наставление записи, которое должно применяться к местоположению в документе 1703, к которому применимо AnalysisHint. Наставления записи, например, могут способствовать повышению точности процесса анализа средства распознавания посредством указания пользователю и информирования процесса анализа распознавателя о том, где пользователь будет записывать строки или знаки. Свойство OverrideLanguageId {get; set;} задает Language Hint для документа 1703, к которому применим AnalysisHint. Установка Language Hint вызывает использование объектом InkAnalyzer обозначенного языка вместо языка, заданного узлом контекста.This class may also include a property called “string Factoid {get; set;} ", which specifies the specific" factoroid "that should be used for placement in document 1703, to which AnalysisHint applies. As a person skilled in the art knows, factoids provide clues to the recognition process regarding the expected use of ink data (for example, as plain text, numbers, postal codes, file names, and Unified Resource Locators (URLs) of the World Wide Web). This class may also include properties with the names "RecognizerGuide Guide {get; set;} "and" OverrideLanguageId {get; set;} ". RecognizerGuide Guide Property {get; set;} specifies the record guidance to apply to the location in document 1703 to which AnalysisHint applies. Recording instructions, for example, can help improve the accuracy of the recognition tool analysis process by indicating to the user and informing the recognizer analysis process where the user will record lines or characters. Property OverrideLanguageId {get; set;} sets the Language Hint for document 1703 to which AnalysisHint applies. Setting the Language Hint causes the InkAnalyzer to use the designated language instead of the language specified by the context node.

Данный класс также может включать в себя свойство с именем «PrefixText {get; set;}», которое задает текст, который записывается или печатается перед строкой чернил, которые должны быть распознаны. Далее, данный класс может включать в себя свойство с именем «RecognitionModes RecognitionFlags {get; set;}», которое задает конкретный тип режимов, которые процесс распознавания должен соблюдать в размещении в документе 1703, к которому применим AnalysisHint. Далее, данный класс может включать в себя свойство с именем «SuffixText {get; set;}», которое задает текст, который записывается или печатается после чернильной строки, которые должны быть распознаны, и свойство с именем «WordList WordList {get; set;}», которое задает конкретный набор слов, которые должны использоваться процессом анализа распознавания. Списки слов могут использоваться, когда известны ожидаемые результаты распознавания, до того как пользователь фактически запишет вводимые данные, такие как список медицинских терминов, которые, как ожидается, будут записываться в медицинской карте.This class may also include a property named “PrefixText {get; set;} ", which sets the text that is written or printed before the line of ink that should be recognized. Further, this class may include a property named “RecognitionModes RecognitionFlags {get; set;} ”, which sets the specific type of modes that the recognition process must observe in the placement in document 1703, to which AnalysisHint applies. Further, this class may include a property named “SuffixText {get; set;} ", which sets the text that is written or printed after the ink line to be recognized, and a property named" WordList WordList {get; set;} ”, which defines a specific set of words that should be used by the recognition analysis process. Word lists can be used when the expected recognition results are known before the user actually records the input data, such as a list of medical terms that are expected to be recorded on the medical record.

Далее, данный класс может включать в себя свойство с именем «WordMode {get; set;}». Если упомянутым значением является «истина», то тогда процесс анализа настраивает себя на возвращение одного слова для всей области анализа. Он также может включать в себя свойство с именем «Coerce {get; set;}», которое, если его значением является «истина», заставляет процесс анализа ограничить свой результат любым фактоидом или значением списка слов, установленным в соответствующей подсказке. Данный класс также может включать в себя свойство с именем «AllowPartialDictionaryTerms {get; set;}». Если значением данного свойства является «истина», то тогда процессу анализа распознавания разрешается возвратить части слова из его словаря распознавания.Further, this class may include a property named “WordMode {get; set;} ". If the said value is “truth,” then the analysis process adjusts itself to return one word for the entire field of analysis. It may also include a property called “Coerce {get; set;} ”, which, if its value is true, forces the analysis process to limit its result to any factoid or word list value set in the corresponding prompt. This class may also include a property named “AllowPartialDictionaryTerms {get; set;} ". If the value of this property is “true,” then the recognition analysis process is allowed to return parts of the word from its recognition dictionary.

В соответствии с различными примерами изобретения API анализа чернил может дополнительно включать в себя класс Analysis Region. Данный класс может включать в себя, например, множество конструкторов для построения объекта AnalysisRegion. Например, он может содержать первый конструктор для построения объекта AnalysisRegion, имеющего любую область, второй конструктор для построения объекта AnalysisRegion, основанного на параметрах для двухмерного прямоугольника, и третий конструктор для построения объекта AnalysisRegion, основанного на четырех пространственных координатах. Конструктор по умолчанию, например, может создавать пустую область. Данный класс также может включать в себя ряд свойств. Например, данный класс может включать в себя свойство с именем «Rectangle Bounds {get;}», которое извлекает ограничивающий прямоугольник для AnalysisRegion, свойство с именем «IsEmpty {get;}», которое указывает на то, имеет ли соответствующий объект AnalysisRegion пустую внутреннюю часть, и свойство с именем «IsInfinite {get;}», которое указывает, установлен ли AnalysisRegion на бесконечность или нет.In accordance with various examples of the invention, the Ink Analysis API may further include an Analysis Region class. This class may include, for example, many constructors for constructing an AnalysisRegion object. For example, it may contain a first constructor for constructing an AnalysisRegion object that has any area, a second constructor for constructing an AnalysisRegion object based on parameters for a two-dimensional rectangle, and a third constructor for constructing an AnalysisRegion object based on four spatial coordinates. The default constructor, for example, can create an empty area. This class may also include a number of properties. For example, this class may include a property named “Rectangle Bounds {get;}” that retrieves the bounding box for AnalysisRegion, a property named “IsEmpty {get;}” that indicates whether the corresponding AnalysisRegion has an empty inner part, and a property called "IsInfinite {get;}" that indicates whether AnalysisRegion is set to infinity or not.

Данный класс также может включать в себя ряд методов, таких как метод с именем «AnalysisRegion Clone()», который клонирует соответствующий объект AnalysisRegion. Данный класс также может включать в себя метод с именем «Equals(AnalysisRegion otherRegion)», который проверяет, идентичен ли заданный объект AnalysisRegion (упоминаемый как otherRegion) соответствующему объекту AnalysisRegion. Данный метод возвращает значение «истина», если внутренняя часть заданного объекта Analysis Region идентична внутренней части соответствующего объекта Analysis Region, и, в противном случае, возвращает значение «ложь».This class may also include a number of methods, such as a method called “AnalysisRegion Clone (),” which clones the corresponding AnalysisRegion object. This class may also include a method called “Equals (AnalysisRegion otherRegion)”, which checks if the specified AnalysisRegion object (referred to as otherRegion) is identical to the corresponding AnalysisRegion object. This method returns true if the inside of the specified Analysis Region is identical to the inside of the corresponding Analysis Region, and otherwise returns false.

Данный класс может дополнительно включать в себя метод «Intersect(AnalysisRegion regionToIntersect)», который обрезает соответствующий объект AnalysisRegion до заданной области анализа. Таким образом, результирующий объект AnalysisRegion включает в себя только зоны, которые перекрывают или пересекают заданную область анализа. Данный класс также может включать в себя метод с именем «Intersect(Rectangle rectangle)», который обрезает соответствующий объект AnalysisRegion до заданного прямоугольника. Опять же, результирующий объект AnalysisRegion будет включать в себя только зоны, которые перекрывают или пересекают заданный прямоугольник. Он может также включать в себя метод с именем «MakeEmpty()», который инициализирует соответствующий объект AnalysisRegion до пустой внутренней части, и способ с именем «MakeInfinite()», который устанавливает зону, занимаемую соответствующим AnalysisRegion, равной бесконечности. Он дополнительно может включать в себя различные методы для объединения или разъединения различно определенных зон, такие как метод с именем «Union(AnalysisRegion regionToUnion)», который задает объединение или добавление объекта AnalysisRegion к соответствующему объекту AnalysisRegion, и метод с именем «Union(Rectangle rectangle)», который объединяет заданный прямоугольник с соответствующим объектом Analysis Region. С помощью данного метода прямоугольник может быть задан в значениях пространства координат для соответствующего объекта AnalysisRegion. Конечно, данный класс может включать в себя множество других методов для объединения зон или извлечения одной зоны из другой, основываясь на любом требуемом определении для зон.This class may optionally include the Intersect (AnalysisRegion regionToIntersect) method, which truncates the corresponding AnalysisRegion object to the specified analysis area. Thus, the resulting AnalysisRegion object includes only zones that overlap or intersect the specified analysis area. This class may also include a method called "Intersect (Rectangle rectangle)" that trims the corresponding AnalysisRegion to the specified rectangle. Again, the resulting AnalysisRegion will only include zones that overlap or intersect the specified rectangle. It can also include a method called “MakeEmpty ()” that initializes the corresponding AnalysisRegion to an empty part, and a method called “MakeInfinite ()” that sets the zone occupied by the corresponding AnalysisRegion to infinity. It may additionally include various methods for combining or disconnecting variously defined zones, such as a method named “Union (AnalysisRegion regionToUnion)”, which defines the combination or addition of an AnalysisRegion object to the corresponding AnalysisRegion object, and a method named “Union (Rectangle rectangle ) ”, Which combines the specified rectangle with the corresponding Analysis Region object. Using this method, a rectangle can be specified in the coordinate space values for the corresponding AnalysisRegion object. Of course, this class can include many other methods for combining zones or extracting one zone from another, based on any desired definition for the zones.

API анализа чернил также может иметь класс Recognition Result. Как и в случае с многочисленными ранее описанными классами, класс Recognition Result может включать в себя один или несколько конструкторов. Например, данный класс может включать в себя конструктор с именем «RecognitionResult(Stream lattice)», который строит объект RecognitionResults из заданной решетки распознавания. В соответствии с различными примерами изобретения решетка распознавания представляет собой последовательную форму результатов процесса распознавания. Данный метод, например, может задавать решетку распознавания в качестве байтового массива, подлежащего использованию для построения соответствующего объекта RecognitionResult. Он также может включать в себя конструктор с именем «RecognitionResult(ContextNode node)», который строит объект RecognitionResults из заданного узла контекста. Он также может включать в себя конструктор с именем «RecognitionResult(string Text, int StrokeCount)», который строит объект RecognitionResults из заданного значения текста, которое, в свою очередь, ассоциировано с заданным количеством штрихов и может использоваться для коррекции, если процесс распознавания не выработает значение распознавания альтернативы, соответствующее фактическим данным рукописных чернил. Далее, данный класс может включать в себя конструктор с именем «RecognitionResult(RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)», который строит объект RecognitionResults объединением вместе двух существующих объектов Recognition Results.The ink analysis API can also have a Recognition Result class. As with the many classes previously described, the Recognition Result class can include one or more constructors. For example, this class may include a constructor named “RecognitionResult (Stream lattice)”, which constructs a RecognitionResults object from a given recognition lattice. In accordance with various examples of the invention, the recognition grid is a sequential form of the results of the recognition process. This method, for example, can set the recognition lattice as a byte array to be used to construct the corresponding RecognitionResult object. It can also include a constructor named “RecognitionResult (ContextNode node)”, which constructs a RecognitionResults object from a given context node. It can also include a constructor named “RecognitionResult (string Text, int StrokeCount)”, which builds a RecognitionResults object from a given text value, which, in turn, is associated with a given number of strokes and can be used for correction if the recognition process does not will generate an alternate recognition value corresponding to the actual ink data. Further, this class may include a constructor named “RecognitionResult (RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)”, which constructs a RecognitionResults object by combining two existing Recognition Results objects together.

Класс Recognition Result также может включать в себя один или несколько свойств, таких как свойство с именем «StrokeCollection StrokeCollection {get;}», которое обеспечивает массив индексов штрихов, представляющих коллекцию штрихов, которые содержатся в отдельном объекте чернил, и свойство с именем «RecognitionAlternate TopAlternate {get;}», которое обеспечивает наилучшую альтернативу результата распознавания. Данный класс также может включать в себя свойство с именем «RecognitionConfidence RecognitionConfidence {get;}», которое обеспечивает уровень уверенности (например, сильная, промежуточная или слабая) в выбранной наилучшей альтернативе для текущих результатов процесса анализа распознавания, и свойства с именем «string TopString {get;}», которое возвращает строку наилучшего результата из результатов анализа процесса анализа распознавания.The Recognition Result class can also include one or more properties, such as a property named "StrokeCollection StrokeCollection {get;}", which provides an array of stroke indices representing a collection of strokes that are contained in a separate ink object, and a property called "RecognitionAlternate TopAlternate {get;} ”, which provides the best alternative to a recognition result. This class may also include a property with the name “RecognitionConfidence RecognitionConfidence {get;}”, which provides a level of confidence (for example, strong, intermediate or weak) in the selected best alternative for the current results of the recognition analysis process, and a property with the name “string TopString {get;} ”, which returns the string of the best result from the analysis of the recognition analysis process.

Класс Recognition Results также может включать в себя ряд методов, таких как метод с именем «public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, selectionLength, maximumAlternates)», который задает коллекцию альтернатив из выбранного фрагмента внутри строки наилучшего результата из результатов анализа процесса анализа распознавания, где каждая альтернатива соответствует только одному сегменту чернил. Входные параметры для данного метода могут включать в себя, например, значение, которое задает начало выбранного фрагмента текста, из которого возвращается коллекция альтернатив, значение, которое задает длину выбранного фрагмента текста, из которого возвращается коллекция альтернатив, и значение, которое задает максимальное количество альтернатив для возврата. Данный метод может затем возвратить коллекцию RecognitionAlternateCollection альтернатив из выбранного фрагмента внутри строки наилучшего результата из результата распознавания.The Recognition Results class can also include a number of methods, such as a method called “public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, selectionLength, maximumAlternates)”, which sets up a collection of alternatives from the selected fragment within the best result row from the analysis results of the recognition analysis process, where each alternative matches only one ink segment. Input parameters for this method may include, for example, a value that sets the beginning of the selected text fragment from which the collection of alternatives is returned, a value that sets the length of the selected text fragment from which the collection of alternatives is returned, and a value that sets the maximum number of alternatives for refund. This method can then return a collection of RecognitionAlternateCollection of alternatives from the selected fragment within the row of the best result from the recognition result.

Класс Recognition Results дополнительно может включать в себя метод с именем «RecognitionResult Merge(RecognitionResult left, string separator, RecognitionResult right)». Данный метод может использоваться для создания нового объекта RecognitionResult из одной строки, приводящей к плоской решетке, присоединения одной строки к началу или концу существующего объекта RecognitionResult или сцепления одной строки между двумя существующими объектами RecognitionResult. Данный класс также может включать в себя метод с именем «ModifyTopAlternate(RecognitionAlternate alternate), который задает модифицирование результата распознавания с помощью известной альтернативы. В соответствии с некоторыми вариантами выполнения изобретения по умолчанию строка наилучшего результата из результатов процесса анализа распознавания соответствует наилучшей альтернативе. Однако данный метод может использоваться для задания того, что альтернативы, отличные от наилучшей альтернативы, используются в результатах процесса анализа распознавания. Если новая наилучшая альтернатива приводит к сегментации, отличной от предыдущей, то метод ModifyTopAlternate будет автоматически обновлять узлы контекста, чтобы отражать изменения. Необходимо отметить, что для того, чтобы извлечь альтернативы, которые могут быть использованы для модификации результата распознавания, данный метод вызывает метод GetAlternatesFromSelection, подробно описанный ниже. Данный класс также может иметь метод с именем «Stream Save()», который постоянно поддерживает соответствующий объект RecognitionResults в виде решетки распознавания. Решетка распознавания представляет собой сериализованный формат, используемый для выражения результатов процесса распознавания.The Recognition Results class may further include a method called “RecognitionResult Merge (RecognitionResult left, string separator, RecognitionResult right)”. This method can be used to create a new RecognitionResult object from a single row leading to a flat grid, attach one line to the beginning or end of an existing RecognitionResult object, or concatenate one line between two existing RecognitionResult objects. This class may also include a method called “ModifyTopAlternate (RecognitionAlternate alternate), which sets the modification of the recognition result using a well-known alternative. In accordance with some embodiments of the invention, by default, the line of best result from the results of the recognition analysis process corresponds to the best alternative. 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 leads to segmentation different from the previous one, then the ModifyTopAlternate method will automatically update the context nodes to reflect the changes. It should be noted that in order to extract alternatives that can be used to modify the recognition result, this method calls the GetAlternatesFromSelection method, described in detail below. This class may also have a method called “Stream Save ()”, which constantly supports the corresponding RecognitionResults object in the form of a recognition lattice. The recognition lattice is a serialized format used to express the results of the recognition process.

API анализа чернил также может иметь перечислимый тип Analysis Options. Упомянутый тип может содержать одно или несколько полей, которые задают то, как данные чернил будут анализироваться процессом анализа, такие как поле с именем «const AnalysisOptions Default», которое разрешает все доступные опции для процесса анализа. Упомянутое поле, например, может разрешить распознавание текста, использование таблиц, использование списков, использование аннотаций, использование соединителей и контейнеров и использование промежуточных результатов. Упомянутый тип также может включать в себя поле с именем «const AnalysisOptions EnableAnnotations», которое разрешает и запрещает обнаружение аннотаций, поле с именем «const AnalysisOptions EnableConnectorsAndContainers», которое разрешает и запрещает обнаружение соединителей и контейнеров, и поле с именем «const AnalysisOptions EnableIntermediateResults» разрешает и запрещает возврат результатов анализа программному приложению 1701 между использованием различных последовательных процессов анализа (например, между процессом синтаксического разбора и последующим процессом распознавания). Упомянутый тип также может иметь поле с именем «const AnalysisOptions EnableLists», которое разрешает и запрещает обнаружение списков, и поле с именем «const AnalysisOptions EnableTables», которое разрешает и запрещает обнаружение таблиц. Упомянутый перечислимый тип может дополнительно включать в себя поле с именем «const AnalysisOptions EnableTextRecognition», которое разрешает и запрещает процесс анализа распознавания текста. Необходимо заметить, однако, что если доступны дополнительные процессы анализа (или различные варианты одного и того же процесса анализа), то тогда данный тип может включать в себя, следовательно, дополнительный AnalysisOptions.The ink analysis API can also be an enumerated type of Analysis Options. This type may contain one or more fields that specify how the ink data will be analyzed by the analysis process, such as a field called “Const AnalysisOptions Default”, which allows all available options for the analysis process. The mentioned field, for example, can allow text recognition, the use of tables, the use of lists, the use of annotations, the use of connectors and containers, and the use of intermediate results. The type may also include a field called “const AnalysisOptions EnableAnnotations” that enables and disables the detection of annotations, a field called “const AnalysisOptions EnableConnectorsAndContainers” that allows and disables the detection of connectors and containers, and a field called “const AnalysisOptions EnableIntermediateResults” enables and disables the return of analysis results to software application 1701 between using various sequential analysis processes (for example, between parsing and the subsequent recognition process). The type mentioned may also have a field called const AnalysisOptions EnableLists, which enables and disables the discovery of lists, and a field called const AnalysisOptions EnableTables, which enables and disables table discovery. Said enumerated type may further include a field called “Const AnalysisOptions EnableTextRecognition”, which enables and disables the text recognition analysis process. It should be noted, however, that if additional analysis processes are available (or different versions of the same analysis process), then this type may include, therefore, additional AnalysisOptions.

Далее, API анализа чернил может включать в себя класс AnalysisResultsEventArgs. Данный класс может иметь конструктор с именем «public AnalysisResultsEventArgs()», который создает структуру данных, которая содержит результаты анализа, и возвращает программному приложению 1701, когда устанавливается событие AnalysisResults. Данный класс также может включать в себя свойство с именем «InkAnalyzer InkAnalyzer {get;}», которое идентифицирует объект InkAnalyzer, который выполнял процесс анализа.Further, the ink analysis API may include an AnalysisResultsEventArgs class. This class may have a constructor named “public AnalysisResultsEventArgs ()” that creates a data structure that contains the results of the analysis and returns to the 1701 application when the AnalysisResults event is set. This class may also include a property named "InkAnalyzer InkAnalyzer {get;}", which identifies the InkAnalyzer object that performed the analysis process.

API также может иметь класс Line, который может применяться с некоторыми типами операционных систем, которые распознают использование объекта «Line», представляющего геометрическую линию. Данный класс может включать в себя конструктор, такой как конструктор с именем «public Line(Point beginPoint, Point endPoint)», который создает объект Line. Данный класс также может включать в себя различные свойства, такое как свойство с именем «public Point BeginPoint {get; set;}», которое представляет начальную точку объекта линии, и свойство с именем «public Point EndPoint {get; set;}», которое представляет конечную точку объекта линии.The API can also have a Line class that can be used with some types of operating systems that recognize the use of a Line object that represents a geometric line. This class may include a constructor, such as a constructor named "public Line (Point beginPoint, Point endPoint)", which creates the Line object. This class may also include various properties, such as a property called "public Point BeginPoint {get; set;} ", which represents the starting point of the line object, and a property named" public Point EndPoint {get; set;} ”, which represents the endpoint of a line object.

В дополнение к данным классам API анализа чернил также может содержать класс Recognition Alternate. Данный класс может включать в себя элементы, представляющие возможные соответствия слов для сегментов чернил, которые сравниваются со словарем средства распознавания. Например, данный класс может включать в себя свойство с именем «Line Ascender {get;}», которое предоставляет линию надстрочного элемента объекта RecognitionAlternate, который существует на одной линии (причем линия представляется в виде двух точек), свойство с именем «public Line Baseline {get;}», которое предоставляет Baseline объекта RecognitionAlternate, который существует на одной линии, и свойство с именем «Line Descender {get;}», которое предоставляет линию подстрочного элемента объекта RecognitionAlternate, который существует на одной линии. Данный класс также может включать в себя свойство с именем «RecognitionResult Extract {get;}», которое предоставляет объект RecognitionResults для текущего объекта RecognitionAlternate. Данное свойство может быть использовано, например, для извлечения объекта RecognitionResult для слова из объекта RecognitionResult для строки, содержащей данное слово.In addition to these classes, the Ink Analysis API may also contain the Recognition Alternate class. This class may include elements representing possible word matches for ink segments that are compared with a dictionary of recognition tools. For example, this class may include a property with the name “Line Ascender {get;}”, which provides the line of the superscript element of the RecognitionAlternate object that exists on one line (moreover, the line is represented as two dots), a property with the name “public Line Baseline {get;} ”, which provides the Baseline of the RecognitionAlternate object that exists on the same line, and a property called“ Line Descender {get;} ”, which provides the line of the subscript of the RecognitionAlternate object that exists on the same line. This class may also include a property called "RecognitionResult Extract {get;}", which provides a RecognitionResults object for the current RecognitionAlternate object. This property can be used, for example, to retrieve the RecognitionResult object for a word from the RecognitionResult object for a string containing the given word.

Он также может включать в себя свойство с именем «Line Midline {get;}», которое предоставляет среднюю линию для объекта RecognitionAlternate, который существует на одной линии, свойство с именем «StrokeCollection Stroke {get;}», которое предоставляет коллекцию штрихов, содержащихся в объекте чернил (т.е. оно предоставляет StrokeCollection, представляющую штрихи, которые ассоциированы с RecognitionResult), и свойство с именем «StrokeCollection[] StrokesArray {get;}», которое предоставляет коллекцию штрихов, содержащихся в одном или нескольких объектах чернил, представляющих штрихи, которые ассоциированы с RecognitionResult. Данный класс также может включать в себя свойство с именем «RecognitionConfidence RecognitionConfidence {get;}», которое предоставляет уровень уверенности (например, сильная, промежуточная или слабая), которую процесс анализа распознавания определил при распознавании объекта RecognitionAlternate или жеста. Для нестрочных узлов возвращается самая слабая RecognitionConfidence дочерних узлов соответствующих узлов контекста. Он также может содержать свойство с именем «string RecognizedString {get;}», которое задает строку результата альтернативы. Таким образом, для любого узла контекста над узлом контекста слова строка результатов сцепляется вместе посредством данного метода. Например, узел строки содержит строку результатов, которая, в свою очередь, содержит результаты всех ее дочерних узлов или узлов слова. Узел абзаца тогда содержит строку результатов, которая содержит результаты всех ее дочерних узлов или узлов строки.It can also include a property called “Line Midline {get;}” that provides a midline for a RecognitionAlternate object that exists on the same line, a property called “StrokeCollection Stroke {get;}” that provides a collection of strokes contained in the ink object (that is, it provides a StrokeCollection representing the strokes that are associated with the RecognitionResult) and a property named "StrokeCollection [] StrokesArray {get;}" that provides a collection of strokes contained in one or more ink objects representing strokes that are associated with RecognitionResult. This class may also include a property called “RecognitionConfidence RecognitionConfidence {get;}” that provides the level of confidence (for example, strong, intermediate, or weak) that the recognition analysis process determines when the RecognitionAlternate object or gesture is recognized. For non-line nodes, the weakest RecognitionConfidence of the child nodes of the corresponding context nodes is returned. It can also contain a property called "string RecognizedString {get;}" that sets the string of the alternative result. Thus, for any context node above the word context node, the result string is concatenated together using this method. For example, a line node contains a result line, which, in turn, contains the results of all its child nodes or word nodes. The paragraph node then contains a result row that contains the results of all its child nodes or line nodes.

Класс Recognition Alternate также может содержать один или несколько методов, включающих, например, метод с именем «StrokeCollection[] GetStrokesArrayFromTextRange(int selectionstart, selectionlength)», который задает StrokeCollection из каждого объекта чернил, который соответствует известной области текста. Данный класс также может содержать метод с именем «StrokeCollection[] GetStrokesFromStrokesArrayRanges(StrokeCollection[] strokesArray)», который задает наименьшую коллекцию штрихов, которая содержит известную введенную коллекцию штрихов и для которой средство распознавания может обеспечить альтернативы. Более конкретно, штрихи возвращаются посредством массива объектов чернил, причем каждый содержит массив индексов штрихов для коллекции. Необходимо заметить, что коллекция штрихов чернил, возвращаемая данным методом, может соответствовать введенной коллекции, или она может быть больше, если введенная коллекция соответствует только части наименьшего результата распознавания, который включает в себя все введенные штрихи. Данный класс может дополнительно включать в себя метод с именем «StrokeCollection GetStrokesFromStrokesRanges(StrokeCollection strokes)», который задает наименьшую коллекцию штрихов, которая содержит известную введенную коллекцию штрихов и для которой средство распознавания может обеспечить альтернативы, и метод с именем «StrokeCollection GetStrokesFromTextRange(int selectionstart, int selectionlength)», который задает StrokeCollection, который соответствует известной области текста.The Recognition Alternate class can also contain one or more methods, including, for example, a method called "StrokeCollection [] GetStrokesArrayFromTextRange (int selectionstart, selectionlength)", which sets the StrokeCollection from each ink object that corresponds to a known region of text. This class may also contain a method called "StrokeCollection [] GetStrokesFromStrokesArrayRanges (StrokeCollection [] strokesArray)", which defines the smallest stroke collection that contains the known stroke collection and for which the recognition tool can provide alternatives. More specifically, strokes are returned by an array of ink objects, each containing an array of stroke indices for the collection. It should be noted that the collection of ink strokes returned by this method may correspond to the entered collection, or it may be larger if the entered collection matches only part of the smallest recognition result, which includes all entered strokes. This class may additionally include a method called "StrokeCollection GetStrokesFromStrokesRanges (StrokeCollection strokes)", which defines the smallest stroke collection that contains the known stroke collection and for which the recognition tool can provide alternatives, and a method called "StrokeCollection GetStrokesFromTextRange int selection , int selectionlength) ”, which sets the StrokeCollection that matches the known area of the text.

Данный класс может дополнительно включать в себя метод с именем «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[] GetPropertyValue(GUID propertyType)», который задает значение известного свойства альтернативы, такого как уверенность распознавателя в альтернативе. Не все процессы анализа распознавания, однако, предоставляют значение для всех типов свойств. Таким образом, данный метод предоставляет данные для типов, поддерживаемых соответствующим процессом анализа распознавания.This class may additionally include a method called “void GetTextRangeFromStrokes (ref int selectionstart, ref int selectionend, StrokeCollection strokes)”, which sets the smallest area of recognizable text for which the recognition tool can return an alternative that contains a known set of strokes, and a method named "void GetTextRangeFromStrokesArray (ref int selectionstart, ref int selectionend, StrokeCollection [] strokesarray)", which sets the smallest area of recognizable text for which the recognition tool can return an alternative that contains a known set of strokes. It may also have a method called “RecognitionAlternateCollection SplitWithConstantPropertyValue (GUID propertyType)”, which returns a collection of alternatives that represent the section of the alternative for which this method is called. Each alternative in the collection contains adjacent recognition segments that have the same property value for the property passed to the method. For example, this method can be used to obtain alternatives that divide the initial alternative by the level of confidence boundaries (strong, intermediate, or weak) as a result of recognition, line boundaries, or segment boundaries. It may additionally include a method called “byte [] GetPropertyValue (GUID propertyType)”, which sets the value of a known alternative property, such as recognizer confidence in the alternative. Not all recognition analysis processes, however, provide value for all types of properties. Thus, this method provides data for types supported by the corresponding recognition analysis process.

API анализа чернил также может включать в себя класс Recognition Alternate Collection. Подобно многим описанным выше классам данный класс может включать в себя конструктор с именем «RecognitionAlternateCollection()» для создания объекта RecognitionAlternateCollection. Данный класс также может включать в себя ряд свойств, таких как свойство с именем «Count {get;}», которое предоставляет количество объектов или коллекций, содержащихся в коллекции значений распознавания альтернатив, свойство с именем «IsSynchronized {get;}», которое предоставляет значение, указывающее, синхронизирован ли доступ к коллекции значений распознавания альтернатив с программным приложением 1701 (т.е. «надежность потока»), и свойство с именем «SyncRoot {get;}», которое предоставляет объект, который может использоваться для синхронизации доступа к коллекции значений распознавания альтернатив.The ink analysis API can also include the Recognition Alternate Collection class. Like many of the classes described above, this class can include a constructor named “RecognitionAlternateCollection ()” to create the RecognitionAlternateCollection object. This class may also include a number of properties, such as a property with the name “Count {get;}” that provides the number of objects or collections contained in the collection of alternative recognition values, a property with the name “IsSynchronized {get;}” that provides a value indicating whether access to the collection of alternate recognition values is synchronized with software application 1701 (ie, “thread reliability”), and a property named “SyncRoot {get;}” that provides an object that can be used to synchronize access to count projection alternatives recognition values.

Данный класс также может содержать один или несколько методов, таких как метод с именем «virtual void CopyTo(Array array, int index)», который копирует все элементы текущей коллекции значений распознавания альтернатив в заданный одномерный массив, начинающийся с заданным индексом массива назначения, и метод с именем «IEnumerator IEnumerable.GetEnumerator()», который представляет собой стандартную реализацию IEnumerable, который разрешает вызывающей стороне использовать для каждого построения, чтобы перечислять каждый RecognitionAlternate в коллекции значений распознавания альтернатив. Данный класс также может включать в себя метод с именем «RecognitionAlternateCollectionEnumerator GetEnumerator()», который возвращает RecognitionAlternateCollectionEnumerator, который содержит все объекты внутри коллекции значений распознавания альтернатив. Данный метод может использоваться, например, для извлечения каждого объекта в коллекции значений распознавания альтернатив.This class may also contain one or more methods, such as a method called “virtual void CopyTo (Array array, int index)”, which copies all the elements of the current collection of alternative recognition values to a given one-dimensional array, starting at a given index of the destination array, and a method called "IEnumerator IEnumerable.GetEnumerator ()", which is a standard implementation of IEnumerable that allows the caller to use for each construction to list each RecognitionAlternate in the collection of alternate recognition values. This class may also include a method called “RecognitionAlternateCollectionEnumerator GetEnumerator ()”, which returns a RecognitionAlternateCollectionEnumerator that contains all the objects inside the collection of alternative recognition values. This method can be used, for example, to retrieve each object in a collection of alternative recognition values.

API анализа чернил может дополнительно включать в себя перечисление Recognition Confidence и перечисление Recognition Mode, каждое из которых может содержать одно или несколько полей, относящихся к процессу анализа распознавания. Например, класс Recognition Confidence может содержать множество полей, таких как поле с именем «Intermediate», указывающих, что процесс анализа распознавания уверен в том, что правильный результат находится в списке предоставленных значений распознавания альтернатив, поле с именем «Poor», которое указывает, что анализ распознавания не уверен в том, что результат находится в списке предоставленных значений распознавания альтернатив, и поле с именем «Strong», которое указывает, что процесс анализа распознавания уверен в том, что наилучшая альтернатива в значениях распознавания альтернатив является правильной.The ink analysis API may further include a Recognition Confidence enumeration and a Recognition Mode enumeration, each of which may contain one or more fields related to the recognition analysis process. For example, the Recognition Confidence class may contain many fields, such as a field named “Intermediate”, indicating that the recognition analysis process is sure that the correct result is in the list of provided alternate recognition values, a field called “Poor”, which indicates that the recognition analysis is not sure that the result is in the list of provided alternate recognition values, and a field with the name “Strong”, which indicates that the recognition analysis process is sure that the best alternative is recognition of alternatives is correct.

Аналогично, класс Recognition Mode может включать в себя поля, которые задают то, как процесс анализа распознавания интерпретирует данные электронных чернил и, таким образом, определяет строку результатов распознавания. Например, данный класс может включать в себя поле с именем «Coerce», которое задает, что процесс анализа распознавания предписывает результату распознавания быть основанным на фактоиде, который был задан для контекста, и поле с именем «Line», которое задает, что процесс анализа распознавания рассматривает данные электронных чернил в виде одной строки. Данный класс также может включать в себя поле с именем «None», которое задает, что процесс анализа распознавания не применяет режим распознавания, и поле с именем «Segment», которое задает, что процесс анализа распознавания рассматривает данные электронных чернил как формирующие одно слово или знак. Далее, данный класс может включать в себя поле с именем «TopInkBreaksOnly», которое запрещает многократную сегментацию.Similarly, the Recognition Mode class may include fields that specify how the recognition analysis process interprets electronic ink data and thus defines a string of recognition results. For example, this class may include a field called “Coerce”, which specifies that the recognition analysis process requires the recognition result to be based on the factoid that was specified for the context, and a field named “Line”, which specifies that the analysis process recognition recognizes electronic ink data as a single line. This class may also include a field with the name "None", which specifies that the recognition analysis process does not apply the recognition mode, and a field with the name "Segment", which determines that the recognition analysis process considers the electronic ink data as forming one word or sign. Further, this class may include a field named "TopInkBreaksOnly", which prohibits multiple segmentation.

Далее, API анализа чернил может включать в себя класс Context Link, который определяет, как два узла контекста могут быть связаны вместе. Объект ContextLink сам по себе представляет то, какие два узла контекста связаны, направление связи и тип связи. Данный класс может включать в себя свойство с именем «ContextNode SourceNode{get;}», которое задает узел контекста источника, который связывается с другим узлом контекста, свойство с именем «ContextLinkType LinkType{get;}», которое задает тип отношения связи, которая существует между узлами контекста источника и назначения, и свойство с именем «CustomLinkType{get;}», которое задает, что используется нестандартная связь. Упомянутая ситуация может иметь место тогда, когда приложение принимает решение использовать систему связывания API анализатора чернил, чтобы представить связи, характерные для приложения, сверх того что API может распознать.Further, the ink analysis API may include a Context Link class that defines how two context nodes can be linked together. The ContextLink object itself represents which two context nodes are connected, the direction of communication and the type of communication. This class may include a property with the name “ContextNode SourceNode {get;}”, which defines the source context node that is associated with another context node, a property with the name “ContextLinkType LinkType {get;}”, which sets the type of communication relationship that exists between the source and destination context nodes, and a property named "CustomLinkType {get;}" that specifies that a non-standard relationship is used. This situation may occur when the application decides to use the ink analyzer API binding system to represent the relationships specific to the application, in addition to what the API can recognize.

Данный класс также может включать в себя свойство с именем «ContextNode DestinationNode {get;}», которое задает узел контекста назначения, который связывается от другого узла контекста. Могут быть два конструктора, доступных для данного класса, которые создают взаимосвязь между существующими узлами контекста источника и назначения.This class may also include a property called “ContextNode DestinationNode {get;}”, which defines the destination context node that is bound from another context node. There can be two constructors available for a given class that create a relationship between existing source and destination context nodes.

Данный класс также может включать в себя перечисление с именем «ContextLinkType enum», которое определяет тип взаимосвязи, совместно используемой двумя узлами контекста. Упомянутые различные типы связи могут включать в себя, например, тип «AnchorsTo», который описывает, что один узел жестко привязан к другому узлу. Оба узла могут использовать свойство SourceNode или DestinationNode, основываясь на ситуации с синтаксическим разбором. Типы связи также могут включать в себя тип «Contains», который описывает, что один узел содержит другой узел. В соответствии с упомянутой взаимосвязью узел контейнера может упоминаться как SourceNode, тогда как узел содержимого контейнера может упоминаться как DestinationNode. Типы связи дополнительно могут включать в себя тип «PointsTo», который описывает, что один узел указывает на другой узел. Для упомянутой взаимосвязи узел, выполняющий указывание, может упоминаться как SourceNode, тогда как узел, на который производится указывание, может упоминаться как DestinationNode. Далее, типы связи могут иметь тип «PointsFrom», который описывает, что один узел указывает от другого узла. При упомянутой взаимосвязи узел, указывающий от другого узла, может упоминаться как SourceNode, тогда как узел, на который указывают, может упоминаться как DestinationNode.This class may also include an enumeration with the name “ContextLinkType enum”, which defines the type of relationship shared between two context nodes. Mentioned various types of communication may include, for example, the type of "AnchorsTo", which describes that one node is rigidly attached to another node. Both nodes can use the SourceNode or DestinationNode property, based on the parsing situation. Communication types may also include the “Contains” type, which describes that one node contains another node. According to the relationship, the container node may be referred to as a SourceNode, while the container content node may be referred to as a DestinationNode. Communication types may further include a PointsTo type, which describes that one node points to another node. For the relationship, the pointing node may be referred to as a SourceNode, while the node being referred to may be referred to as a DestinationNode. Further, communication types can be of the type “PointsFrom”, which describes what one node points from another node. With this relationship, a node pointing from another node may be referred to as a SourceNode, while a node pointed to may be referred to as a DestinationNode.

Типы связей дополнительно могут включать в себя тип «SpansHorizontally», который описывает, что один узел проходит по длине в горизонтальном направлении другого узла, и тип «SpansVertically», который описывает, что один узел проходит по длине в вертикальном направлении другого узла. Для данных типов узел, покрывающий (зачеркивание, подчеркивание, черта на полях) другой узел, обычно записанный последним, может упоминаться как SourceNode, тогда как узел, который является перекрываемым, может упоминаться как DestinationNode. Типы связей также могут включать в себя тип «Custom», который описывает, что используется тип нестандартной связи. Когда используется упомянутое значение, свойство «CustomLinkType» объекта ContextLink может предоставлять больше подробностей в отношении назначения упомянутой связи.Types of links can additionally include the type “SpansHorizontally”, which describes that one node runs along the length in the horizontal direction of the other node, and the type “SpansVertically”, which describes that one node runs along the length in the vertical direction of the other node. For these types of nodes, the node covering (strikethrough, underlining, dash line) another node, usually written last, may be referred to as SourceNode, while a node that is overlapping may be referred to as DestinationNode. Link types can also include a “Custom” type, which describes that a custom link type is being used. When the value is used, the “CustomLinkType” property of the ContextLink object can provide more details regarding the purpose of the link.

Следовательно, API анализатора чернил предоставляет разнообразные функции и службы для асинхронного анализа электронных чернил в документе и затем, впоследствии, согласования результатов процесса анализа с текущим состоянием документа, как подробно описано выше. Далее, необходимо понять, что различные классы, описанные выше, могут быть применены к разнообразным операционным системам и средам, таким как операционная среда Microsoft Windows, операционная среда Microsoft COM, операционная среда Unix или Linux или любая другая подходящая операционная среда компьютера. Кроме того, следует понимать, что интерфейс прикладного программирования в соответствии с различными вариантами реализации изобретения может исключать один или несколько компонентов класса, описанных выше, или может включать в себя дополнительные компоненты для получения требуемой службы или функциональных возможностей.Therefore, the Ink Analyzer API provides a variety of functions and services for asynchronously analyzing electronic ink in a document and then subsequently matching the results of the analysis process with the current state of the document, as described in detail above. Further, you need to understand that the various classes described above can be applied to a variety of operating systems and 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 the application programming interface in accordance with various embodiments of the invention may exclude one or more of the components of the class described above, or may include additional components to obtain the desired service or functionality.

СогласованиеMatching

Как подробно описано выше, различные примеры изобретения позволяют программному приложению 1701 продолжать свою работу, в то время как непроанализированные электронные чернила в документе 1703 анализируются посредством фонового процесса анализа. Вследствие этого программное приложение 1701 может модифицировать документ 1703 различными путями, которые будут конфликтовать с результатами процесса анализа. Например, программное приложение 1701 может ввести новые данные 1705 электронных чернил в документ 1703 или удалить существующие данные 1705 электронных чернил из документа 1703. Далее, программное приложение 1701 может редактировать существующие данные 1705 электронных чернил, например, перемещением положения существующих данных 1705 электронных чернил или изменением свойств существующих данных 1705 электронных чернил. Далее, программное приложение 1701 может добавлять, удалять или модифицировать нечернильные элементы 1707 документа таким образом, который влияет на существующие данные 1705 электронных чернил. Например, программное приложение 1701 может удалить машинописный текст, который был аннотирован данными 1705 электронных чернил.As described in detail above, various examples of the invention allow software application 1701 to continue to operate, while unanalyzed electronic ink in document 1703 is analyzed by a background analysis process. As a result, software application 1701 may modify document 1703 in various ways that will conflict with the results of the analysis process. For example, software application 1701 can enter new electronic ink data 1705 into document 1703 or delete existing electronic ink data 1705 from document 1703. Further, software application 1701 can edit existing electronic ink data 1705, for example, by moving the position of existing electronic ink data 1705 or by changing properties of existing 1705 electronic ink data. Further, software application 1701 can add, remove, or modify non-ink elements 1707 of a document in a manner that affects existing electronic ink data 1705. For example, software application 1701 may remove typewritten text that has been annotated with electronic ink data 1705.

Программное приложение 1701 может дополнительно «закрепить» существующие данные 1705 электронных чернил, для того чтобы запретить их изменение процессом анализа. Например, если пользователь вручную задает компоновку или классификацию для группы штрихов чернил, то тогда программное приложение 1701 может обозначить, что данные штрихи чернил остаются в упомянутой конкретной компоновке или с упомянутой классификацией независимо от результатов, полученных процессом синтаксического разбора. Аналогично, пользователь может задать конкретный результат распознавания для группы штрихов чернил независимо от результатов, полученных процессом распознавания.Software application 1701 can optionally “pin” existing electronic ink data 1705 in order to prevent it from being altered by the analysis process. For example, if the user manually sets the layout or classification for the group of ink strokes, then the software application 1701 may indicate that the ink strokes remain in the specified layout or with the classification, regardless of the results obtained by the parsing process. Similarly, the user can set a specific recognition result for a group of ink strokes, regardless of the results obtained by the recognition process.

Различные типы закрепления могут быть использованы в соответствии с различными вариантами реализации изобретения. Например, инструментальное средство 1901 анализа чернил может разрешить программному приложению 1701 «жестко» закреплять чернила. В соответствии с упомянутой схемой штрихи чернил не могут быть добавлены ни к какому из концевых узлов под закрепленным узлом, штрихи не могут быть удалены из каких-либо концевых узлов под закрепленным узлом, не разрешено ни добавление, ни удаление дочерних узлов, и не разрешено повторное образование родительских узлов для любого узла под закрепленным узлом. Альтернативно или дополнительно инструментальное средство 1901 анализа чернил может разрешить «жесткое» закрепление при помощи более поздних более штрихов, которое разрешает добавление более поздних штрихов при заданных условиях, запрещает удаление штрихов из любого концевого узла под закрепленным узлом, запрещает добавление или удаление дочерних узлов и запрещает повторное образование родительских узлов для любого узла под закрепленным узлом. Далее, инструментальное средство 1901 анализа чернил может разрешить программному приложению 1701, альтернативно или дополнительно, «мягко» закреплять чернила. В соответствии с упомянутой схемой штрихи не могут быть удалены из какого-либо концевого узла под закрепленным узлом, существуют заданные правила, разрешающие добавление штрихов (разрешается добавление поздних штрихов), и разрешены перегруппировка, добавление и удаление дочерних узлов. Необходимо заметить, что закрепление может быть удалено, и, если закрепление было удалено, то ранее закрепленные узлы и их дочерние узлы затем могут рассматриваться как «измененные» или требующие повторного анализа.Various types of fastening can be used in accordance with various embodiments of the invention. For example, the ink analysis tool 1901 may allow the software application 1701 to "fix" the ink. In accordance with the above scheme, ink strokes cannot be added to any of the end nodes under the fixed node, strokes cannot be removed from any end nodes under the fixed node, neither the addition nor deletion of child nodes is allowed, and repeated the formation of parent nodes for any node under the attached node. Alternatively or additionally, the ink analysis tool 1901 can enable “hard” pinning with later more strokes, which allows the addition of later strokes under specified conditions, prohibits the removal of strokes from any end node under the fixed node, prohibits the addition or removal of child nodes, and prohibits re-formation of parent nodes for any node under the attached node. Further, the ink analysis tool 1901 can enable the software application 1701, alternatively or additionally, to “gently” fix the ink. In accordance with the above scheme, strokes cannot be removed from any end node under a fixed node, there are predefined rules allowing the addition of strokes (adding late strokes is allowed), and rearrangement, addition and removal of child nodes are allowed. It should be noted that the pin can be removed, and if the pin was removed, then previously pinned nodes and their child nodes can then be considered as “changed” or require re-analysis.

Далее, процесс обработки чернил в соответствие с различными примерами изобретения может использовать многочисленные процессы анализа, как подробно описано выше. Следовательно, результаты процесса более раннего анализа могут модифицировать данные 1705 электронных чернил, в то время как выполняется последующий процесс второго анализа. Следовательно, результаты процесса анализа должны быть согласованы с текущим состоянием документа 1703, так что только те результаты, которые являются действительными для текущего состояния документа 1703, применяются к его объекту 1709 контекста анализа. Т.е. модифицируется текущий объект 1709 контекста анализа (и, в некоторых случаях, результаты процесса анализа), чтобы исключить расхождения или «коллизии» между результатами процесса анализа и текущим состоянием документа 1703.Further, the ink processing process in accordance with various examples of the invention may utilize numerous analysis processes, as described in detail above. Therefore, the results of an earlier analysis process may modify the electronic ink data 1705, while the subsequent second analysis process is being performed. Therefore, the results of the analysis process must be consistent with the current state of the document 1703, so that only those results that are valid for the current state of the document 1703 are applied to its analysis context object 1709. Those. the current analysis context object 1709 (and, in some cases, the results of the analysis process) is modified to eliminate discrepancies or “conflicts” between the results of the analysis process and the current state of the document 1703.

Необходимо заметить, что для того, чтобы результаты процесса согласования были действительными, состояние документа 1703 не должно изменяться во время процесса согласования. Процесс согласования, таким образом, может выполняться с использованием первичного потока, в котором выполняется программное приложение 1701, и выполнение процесса согласования может временно остановить работу программного приложения 1701. Альтернативно, другие методики, такие как блокирование структуры данных, могут быть использованы для обеспечения того, что состояние документа 1703 не меняется во время процесса согласования. Следовательно, желательно, чтобы процесс согласования выполнялся как можно быстрее, для того чтобы исключить неудовлетворенность пользователя рабочими характеристиками программного приложения 1701. Другим вопросом процесса согласования, требующим рассмотрения, является его влияние на рабочие характеристики процесса анализа, выполняемого в отдельном фоновом потоке анализа. Если расхождения между текущим объектом 1709 контекста анализа (т.е. объектом 1709 контекста анализа, отражающим текущее состояние документа 1703) и результатами анализа определены слишком широко, то тогда большие количества электронных чернил будут повторно анализироваться без необходимости. Конечно, могут быть использованы другие пути защиты целостности документа во время согласования без отступления от изобретения.It should be noted that in order for the results of the approval process to be valid, the status of document 1703 should not change during the approval process. The matching process may thus be performed using the primary thread in which the software application 1701 is executed, and the execution of the matching process may temporarily stop the operation of the software application 1701. Alternatively, other techniques, such as blocking the data structure, may be used to ensure that the state of document 1703 does not change during the approval process. Therefore, it is desirable that the reconciliation process be performed as quickly as possible in order to eliminate user dissatisfaction with the performance of software application 1701. Another issue in the reconciliation process that needs to be considered is its effect on the performance of the analysis process running in a separate background analysis flow. If the discrepancies between the current analysis context object 1709 (i.e., the analysis context object 1709 reflecting the current state of the document 1703) and the analysis results are too broadly defined, then large amounts of electronic ink will be re-analyzed without need. Of course, other ways of protecting the integrity of the document during approval can be used without departing from the invention.

В соответствии с различными примерами изобретения процесс анализа и процесс согласования могут придерживаться одного или нескольких следующих соглашений, для того чтобы повысить эффективность и удобство процесса согласования. Во-первых, процесс анализа может, насколько возможно, повторно использовать узлы для элемента документа в независимом от документа объекте 1903 контекста анализа. Т.е. коллизии не должны аннулироваться посредством создания новых несвязанных узлов для элементов документа. Кроме того, процесс согласования должен соблюдать «закрепление», обозначенное программным приложением 1701. Хотя данный процесс анализа обычно соблюдает обозначения закрепления программного приложения 1701, программное приложение 1701 может закрепить данные 1705 электронных чернил во время выполнения процесса анализа. Далее, процесс согласования должен обеспечить, чтобы не оставалось пустых узлов в текущем объекте 1709 контекста анализа после завершения процесса согласования. Необходимо заметить, однако, что одно или несколько из упомянутых соглашений могут быть опущены и могут не выполняться согласно альтернативным варианты реализации изобретения. Например, некоторые вариантам реализации изобретения могут разрешить объекту 1709 анализа содержать пустые узлы.In accordance with various examples of the invention, the analysis process and the matching process may adhere to one or more of the following conventions in order to increase the efficiency and convenience of the matching process. First, the analysis process can, as far as possible, reuse nodes for a document element in a document-independent analysis context object 1903. Those. Collisions should not be canceled by creating new unrelated nodes for document elements. In addition, the matching process must adhere to the “pinning” indicated by the software application 1701. Although this analysis process usually follows the pinning labels of the software application 1701, the software application 1701 can pin the electronic ink data 1705 during the analysis process. Further, the approval process should ensure that there are no empty nodes in the current analysis context object 1709 after the approval process is completed. It should be noted, however, that one or more of the above agreements may be omitted and may not be performed according to alternative embodiments of the invention. For example, some embodiments of the invention may allow the analysis object 1709 to contain empty nodes.

В дополнение к этим соглашениям процесс согласования должен обычно соблюдать правила интерфейса, диктуемые объектом 1709 контекста анализа. Например, в соответствии с некоторыми вариантами реализации изобретения объект 1709 контекста анализа может не разрешать удаление узла для элемента документа за исключением того случая, когда он не имеет дочерних узлов.In addition to these conventions, the reconciliation process should typically comply with the interface rules dictated by the analysis context object 1709. For example, in accordance with some embodiments of the invention, the analysis context object 1709 may not allow the removal of a node for a document element, unless it has no child nodes.

Как ранее отмечено, коллизии имеют место тогда, когда процесс анализа выполняет изменение в независимом от документа объекте 1903 контекста анализа, который конфликтует некоторым образом с изменением в объекте 1709 контекста анализа, которое было сделано после инициирования процесса анализа. Коллизии могут быть разделены на два типа: обязательные коллизии и дискреционные коллизии.As previously noted, collisions occur when the analysis process makes a change in the document-independent analysis context object 1903, which conflicts in some way with the change in the analysis context object 1709 that was made after the analysis process was initiated. Collisions can be divided into two types: mandatory collisions and discretionary collisions.

Обязательные коллизии имеют место тогда, когда нельзя применить изменение, сделанное процессом анализа в независимом от документа объекте 1903 контекста анализа, к объекту 1709 контекста анализа для текущего состояния документа 1703. Обязательная коллизия имеет место тогда, когда, например, программное приложение 1701 «закрепило» или зафиксировало узел в объекте 1709 контекста анализа, и процесс анализа изменил соответствующий узел в независимом от документа объекте 1903 контекста анализа. Обязательная коллизия также имеет место тогда, когда процесс анализа сделал изменение любого вида узла в независимом от документа объекте 1903 контекста анализа, но программное приложение 1701 удалило соответствующий узел из объекта 1709 контекста анализа, и когда программное приложение 1701 добавило штрихи или дочерние узлы к узлу в объекте 1709 контекста анализа, когда процесс анализа удалил соответствующий узел в независимом от документа объекте 1903 контекста анализа. Далее, обязательная коллизия имеет место тогда, когда программное приложение 1701 удалило узел в объекте 1709 контекста анализа, когда процесс анализа переупорядочил или создал связь с соответствующим узлом в независимом от документа объекте 1903 контекста анализа.Mandatory collisions occur when you cannot apply the change made by the analysis process in the document independent of the analysis context object 1903 to the analysis context object 1709 for the current state of the document 1703. Mandatory collision occurs when, for example, the software application 1701 “fixed” or fixed the node in the analysis context object 1709, and the analysis process changed the corresponding node in the document-independent analysis context object 1903. Mandatory collision also occurs when the analysis process made a change of any kind of node in the document context analysis object 1903, but the application 1701 removed the corresponding node from the analysis context object 1709, and when the program 1701 added dashes or child nodes to the node in the analysis context object 1709 when the analysis process deleted the corresponding node in the document-independent analysis context object 1903. Further, a mandatory collision occurs when the software application 1701 deleted a node in the analysis context object 1709, when the analysis process reordered or created a connection with the corresponding node in the document-independent analysis context object 1903.

Дискреционная коллизия имеет место тогда, когда программное приложение 1701 изменило значение в объекте 1709 контекста анализа, которое связано со значением, измененным процессом анализа в независимом от документа объекте 1903 контекста анализа, но ограничения закрепления, ограничения повторного использования элемента и присущие ограничения интерфейса для объекта 1709 контекста анализа все же могут разрешить применение изменения, сделанного процессом анализа в объекте 1709 контекста анализа. Дискреционная коллизия все же может быть применена в качестве изменения объекта 1709 контекста анализа или аннулирована. Далее, процесс согласования просто может совсем проигнорировать некоторые типы дискреционных коллизий.Discretionary conflict occurs when the software application 1701 changes the value in the analysis context object 1709, which is associated with the value changed by the analysis process in the analysis context object 1903 independent of the document, but the constraints of pinning, restrictions on reuse of the element and the inherent limitations of the interface for object 1709 the analysis context can still allow the application of the change made by the analysis process in the analysis context object 1709. Discretionary conflict can still be applied as a change to the analysis context object 1709 or canceled. Further, the reconciliation process may simply completely ignore some types of discretionary collisions.

Один графический пример дискреционной коллизии имеет место тогда, когда исходный узел как в объекте 1709 контекста анализа, так и в независимом от документа объекте 1903 контекста анализа имеет дочерние узлы А и В для штрихов А и В чернил. Программное приложение 1701 может тогда добавить третий дочерний узел С для штриха С чернил в объекте 1709 контекста анализа, в то время как процесс анализа добавляет третий дочерний узел D для штриха D чернил к независимому от документа объекту 1903 контекста анализа. В соответствии с различными вариантами выполнения изобретения процесс согласования может добавить дочерний узел D к родительскому узлу в объекте 1709 контекста анализа, основываясь на результатах анализа. Хотя данное изменение родительского узла в объекте 1709 контекста анализа не запрещено, однако, оно все же изменяет характеристики родительского узла таким образом, который может быть нежелательным для программного приложения 1701. Например, чернила, ассоциированные с родительским узлом, могут, впоследствии, считаться проанализированными и повторно могут не анализироваться, чтобы принять во внимание влияние чернил С на группу штрихов чернил. Далее, результаты распознавания для родительского узла теперь могут ссылаться на неправильные дочерние узлы или штрихи, и это также никогда не может быть снова скорректировано.One graphic example of discretionary collision occurs when the source node, both in the analysis context object 1709 and in the analysis context object 1903 independent of the document, has child nodes A and B for ink strokes A and B. Software application 1701 can then add a third child node C for ink stroke C in the analysis context object 1709, while the analysis process adds a third child node D for ink stroke D to the document-independent analysis context object 1903. In accordance with various embodiments of the invention, the reconciliation process may add a child node D to the parent node in the analysis context object 1709 based on the analysis results. Although this change of the parent node in the analysis context object 1709 is not prohibited, it nevertheless changes the characteristics of the parent node in a way that may not be desirable for the 1701 software application. For example, the ink associated with the parent node may subsequently be considered analyzed and may not be reanalyzed to take into account the effect of ink C on a group of ink strokes. Further, recognition results for the parent node can now refer to incorrect child nodes or strokes, and this can never be adjusted again.

Следовательно, различные примеры изобретения не применяют изменения для дискреционной коллизии при обновлении объекта 1709 контекста анализа, основываясь на результатах процесса анализа. Хотя упомянутые критерии могут потребовать дополнительной обработки для идентификации и блокирования изменений, основываясь на дискреционных коллизиях, упомянутый критерий относительно просто реализовать и просто поддерживать. Конечно, другие примеры изобретения могут выполнять изменения, соответствующие дискреционным коллизиям согласно другим критериям. Более конкретно, данные альтернативные примеры могут осуществлять изменения из дискреционных коллизий, которые не создают постоянных логически несовместимых взаимосвязей в объекте 1709 контекста анализа.Therefore, various examples of the invention do not apply changes to discretionary conflict when updating the analysis context object 1709 based on the results of the analysis process. Although the criteria may require additional processing to identify and block changes based on discretionary conflicts, the criteria is relatively simple to implement and simple to maintain. Of course, other examples of the invention may make changes corresponding to discretionary collisions according to other criteria. More specifically, these alternative examples may implement changes from discretionary collisions that do not create permanent, logically incompatible relationships in the analysis context object 1709.

Также необходимо заметить, что коллизии могут иметь транзитивный эффект, заключающийся в том, что одна коллизия может создавать другую. Например, процесс анализа может создать узел L для строки и затем создать узел W для слова в качестве дочернего узла для узла L. Если создание узла L не применялось к объекту 1709 контекста анализа вследствие коллизии любого вида, то тогда создание узла W будет представлять собой обязательную коллизию.It should also be noted that collisions can have a transitive effect, namely that one collision can create another. For example, the analysis process can create a node L for a string and then create a node W for the word as a child node for node L. If the creation of node L was not applied to the analysis context object 1709 due to a collision of any kind, then the creation of node W will be mandatory collision.

Различные примеры изобретения могут использовать основанный на протоколировании подход для согласования результатов процесса анализа с текущим состоянием документа 1703. В данном основанном на протоколировании подходе независимый от документа объект 1903 контекста анализа включает в себя протокол изменений в независимом от документа объекте 1903 контекста анализа, сделанных процессом анализа. Протокол может быть в виде, например, списка записей изменений. Каждая запись изменения, тогда, может включать в себя тип изменения, которое было сделано (посредством идентификации, например, метода, который был вызван для изменения независимого от документа объекта 1903 контекста анализа), элемент документа, в котором было сделано изменение (посредством идентификации, например, узла в независимом от документа объекте 1903 контекста анализа, для которого был вызван метод), и любую информацию, необходимую для повторного создания аргументов для вызова метода. Выгодно, так как независимый от документа объект 1903 контекста анализа осуществляется инструментальным средством 1901 анализа чернил и процессами анализа, чтобы протокол изменений мог быть невидимым для программного приложения 1701 (хотя протокол, альтернативно, может быть открыт приложению 1701, если потребуется).Various examples of the invention may use a logging-based approach to align the results of the analysis process with the current state of document 1703. In this logging-based approach, the document-independent analysis context object 1903 includes a protocol of changes to the document-independent analysis context object 1903 made by the analysis process . The protocol may be in the form of, for example, a list of change records. Each change record, then, may include the type of change that was made (by identifying, for example, the method that was called to change the analysis context object 1903 independent of the document), the document element in which the change was made (by identifying, for example, a node in an analysis context object 1903 independent of the document for which the method was called), and any information needed to re-create the arguments to invoke the method. It is advantageous because the document-independent context object 1903 is performed by the ink analysis tool 1901 and the analysis processes so that the change protocol can be invisible to the software application 1701 (although the protocol can alternatively be opened to application 1701 if necessary).

Для того чтобы выполнить процесс согласования с использованием подхода протоколирования изменений, инструментальное средство 1901 анализа чернил исследует каждую запись изменения в хронологическом порядке изменений. Т.е. инструментальное средство 1901 анализа чернил идентифицирует каждое изменение, сделанное в независимом от документа объекте 1903 контекста анализа. Для каждого изменения инструментальное средство 1901 анализа чернил может выполнить процесс, изображенный на фиг.27. Сначала, на шаге 2701 инструментальное средство 1901 анализа чернил предпринимает попытку доступа к соответствующим узлам в текущем объекте 1709 контекста анализа, к которым необходимо применить изменение. Необходимо заметить, что данный шаг извлечения может завершиться неуспешно, если программное приложение 1701 удалило один или несколько необходимых узлов из объекта 1709 контекста анализа, приводя к обязательной коллизии.In order to complete the reconciliation process using the change logging approach, the ink analysis tool 1901 examines each change record in a chronological order of changes. Those. the ink analysis tool 1901 identifies each change made to a document-independent analysis context object 1903. For each change, the ink analysis tool 1901 can perform the process depicted in FIG. First, in step 2701, the ink analysis tool 1901 attempts to access the corresponding nodes in the current analysis context object 1709 to which the change needs to be applied. It should be noted that this extraction step may not succeed if the software application 1701 deleted one or more necessary nodes from the analysis context object 1709, leading to a mandatory collision.

Затем на шаге 2703 инструментальное средство 1901 анализа чернил определяет, создает ли изменение обязательную или дискреционную коллизию. Процедура выполнения данного определения подробно объясняется ниже. На шаге 2705 инструментальное средство 1901 анализа чернил либо делает изменение, либо запрещает изменение, если оно создает обязательную коллизию или дискреционную коллизию, запрещенную критерием для процесса согласования. Например, если изменение создает обязательную коллизию или дискреционную коллизию, запрещенную критерием для процесса согласования, то тогда инструментальное средство 1901 анализа чернил может блокировать изменения узлов в объекте 1709 контекста анализа, представляющих соответствующую область документа 1703, в которой должно было быть сделано изменение. Если, с другой стороны, изменение применяется, то тогда инструментальное средство 1901 анализа чернил может вызвать соответствующий метод, чтобы сделать требуемое изменение необходимых узлов в объекте 1709 контекста анализа.Then, at step 2703, the ink analysis tool 1901 determines whether the change creates a mandatory or discretionary collision. The procedure for performing this definition is explained in detail below. In step 2705, the ink analysis tool 1901 either makes a change or prohibits the change if it creates a mandatory conflict or discretionary conflict that is prohibited by the criterion for the matching process. For example, if the change creates a mandatory conflict or discretionary conflict, which is prohibited by the criterion for the approval process, then the ink analysis tool 1901 can block changes to the nodes in the analysis context object 1709 representing the corresponding area of the document 1703 in which the change was to be made. If, on the other hand, the change is applied, then the ink analysis tool 1901 can invoke the appropriate method to make the desired change to the necessary nodes in the analysis context object 1709.

Если процесс анализа добавляет новый узел элемента к объекту 1709 контекста анализа, но затем не может переместить узлы штриха в новый узел, то тогда процесс анализа также не сделает попытку удалить узел элемента на том предположении, что узлы штриха были успешно перемещены в новые узлы. Таким образом, в независимом от документа объекте 1903 контекста анализа будет узел элемента, который соответствует пустому узлу в текущем объекте 1709 контекста анализа. Следовательно, если были обработаны все изменения в объекте 1709 контекста анализа, то на шаге 2707 инструментальное средство 1901 анализа чернил просматривает независимый от документа объект 1903 контекста анализа для удаления любых «пустых» узлов в объекте 1709 контекста анализа, которые соответствуют узлам в независимом от документа объекте 1903 контекста анализа. Данный шаг удаления пустых узлов является необязательным и может быть опущен без отступления от изобретения.If the analysis process adds a new element node to the analysis context object 1709, but then cannot move the stroke nodes to a new node, then the analysis process will also not attempt to delete the element node on the assumption that the stroke nodes were successfully moved to new nodes. Thus, in the document-independent analysis context object 1903, there will be an element node that corresponds to an empty node in the current analysis context object 1709. Therefore, if all changes to the analysis context object 1709 were processed, then at step 2707, the ink analysis tool 1901 scans the document-independent analysis context object 1903 to remove any “empty” nodes in the analysis context object 1709 that correspond to nodes in the document-independent object 1903 context analysis. This step of removing empty nodes is optional and may be omitted without departing from the invention.

Необходимо заметить, что независимый от документа объект 1903 контекста анализа не должен содержать никаких пустых узлов, и процесс согласования должен запретить создание пустых узлов в независимом от документа объекте 1903 контекста анализа. Также необходимо заметить, что данный шаг, как исключение, не предпринимает попытку удалить корневой узел объекта 1709 контекста анализа, даже если он пустой. Наконец, на шаге 2709 инструментальное средство 1901 анализа чернил идентифицирует любые коллизии между результатами анализа в независимом от документа объекте 1903 контекста анализа и текущем объекте 1709 контекста анализа для программного приложения 1701, так что программное приложение 1701 может включать области документа 1703, затронутые коллизиями, в последующий процесс анализа.It should be noted that the document-independent analysis context object 1903 should not contain any empty nodes, and the reconciliation process should prohibit the creation of empty nodes in the document-independent analysis context object 1903. It should also be noted that this step, as an exception, does not attempt to delete the root node of the analysis context object 1709, even if it is empty. Finally, in step 2709, the ink analysis tool 1901 identifies any collisions between the analysis results in the document-independent analysis context object 1903 and the current analysis context object 1709 for the software application 1701, so that the software application 1701 can include areas of the document 1703 affected by the collisions in subsequent analysis process.

Возвращаясь теперь к обнаружению коллизий на вышеупомянутом шаге 2703, если доступны все узлы в объекте 1709 контекста анализа, соответствующие изменениям в независимом от документа объекте 1903 контекста анализа, то все другие возможные обязательные коллизии для каждого узла в объекте 1709 контекста анализа могут быть обнаружены статически (или, альтернативно, отсутствие обязательной коллизии может быть обнаружено для каждого узла). Более конкретно, обязательные коллизии могут быть обнаружены, основываясь на правилах, обозначенных интерфейсом для объекта 1709 контекста анализа.Returning now to collision detection in the aforementioned step 2703, if all nodes in the analysis context object 1709 are available corresponding to changes in the document of the analysis context object 1903, then all other possible collisions for each node in the analysis context object 1709 can be detected statically ( or alternatively, the absence of a mandatory collision can be detected for each node). More specifically, mandatory collisions can be detected based on the rules indicated by the interface for the analysis context object 1709.

Дискреционные коллизии, однако, обычно не могут быть идентифицированы без дополнительной информации о состоянии в отношении документа 1703, так как данные изменения не уполномочены интерфейсом объекта 1709 контекста анализа, но, вместо этого, основываются на дискреционном выборе о разрешении изменений, сделанных программным приложением 1701, относительно изменений, сделанных процессом анализа, когда оба воздействовали на один и тот же узел в объекте 1709 контекста анализа. Эти коллизии, вместо этого, могут быть обнаружены сравнением текущего объекта 1709 контекста анализа с исходной версией независимого от документа объекта 1903 контекста анализа для определения того, какие узлы в объекте 1709 контекста анализа были изменены программным приложением 1701.Discretionary conflicts, however, usually cannot be identified without additional status information regarding document 1703, since these changes are not authorized by the interface of the analysis context object 1709, but, instead, are based on a discretionary decision about the authorization of changes made by software application 1701, regarding the changes made by the analysis process when both acted on the same node in the analysis context object 1709. Instead, these collisions can be detected by comparing the current analysis context object 1709 with the original version of the document-independent analysis context object 1903 to determine which nodes in the analysis context object 1709 have been changed by software application 1701.

Например, критерий согласования может определять, что добавление или удаление дочернего узла штриха из родительского узла программным приложением 1701 представляет собой дискреционную коллизию для данного родительского узла. Для определения того, произошло ли такое изменение, инструментальное средство 1901 анализа чернил может просмотреть дочерние узлы штриха, зависящие от узла в текущем объекте 1709 контекста анализа, и сравнить их количество и GUID (или другой уникальный идентификатор) с дочерними узлами штриха, зависящими от соответствующего узла в исходной версии независимого от документа объекта 1903 контекста анализа. Если дочерние узлы штриха согласуются в данных аспектах (и в любых других требуемых аспектах), то тогда инструментальное средство 1901 анализа чернил может применить изменения, сделанные процессом анализа, к родительскому узлу в объекте 1709 контекста анализа.For example, a matching criterion may determine that the addition or removal of a stroke child node from a parent node by software application 1701 constitutes a discretionary conflict for a given parent node. To determine whether such a change has occurred, the ink analysis tool 1901 can look at the child nodes of the stroke, depending on the node in the current object 1709 of the analysis context, and compare their number and GUID (or other unique identifier) with the child nodes of the stroke, depending on the corresponding node in the original version of the document-independent object 1903 analysis context. If the child nodes of the stroke are consistent in these aspects (and in any other required aspects), then the ink analysis tool 1901 can apply the changes made by the analysis process to the parent node in the analysis context object 1709.

Продолжая данный пример, следующее изменение в записи протокола может состоять из другого узла штриха, перемещаемого для зависимости от родительского узла в независимом от документа объекте 1903 контекста анализа. Если нет обязательных коллизий из-за данного изменения, то тогда инструментальному средству 1901 анализа чернил разрешается сделать соответствующее изменение в объекте 1709 контекста анализа. Когда инструментальное средство 1901 анализа чернил проверяет исходную версию независимого от документа объекта 1903 контекста анализа с целью определения того, существует ли дискреционная коллизия, однако, оно делает вывод о том, что родительский узел в текущем объекте 1709 контекста анализа имеет на один зависимый узел штриха больше, чем родительский узел в исходной версии независимого от документа объекта 1903 контекста анализа, так что оно ошибочно определит, что существует дискреционная коллизия (т.е. оно определит, что существует коллизия, основываясь на изменениях, которые оно сделало).Continuing this example, the next change in the protocol record may consist of another stroke node being moved to depend on the parent node in the document-independent analysis context object 1903. If there is no mandatory collision due to this change, then the ink analysis tool 1901 is allowed to make a corresponding change to the analysis context object 1709. When the ink analysis tool 1901 checks the original version of the document-independent analysis context object 1903 to determine if there is a discretionary conflict, however, it concludes that the parent node in the current analysis context object 1709 has one more dash node more than the parent node in the original version of the document-independent object 1903 of the analysis context, so that it will erroneously determine that there is a discretionary conflict (i.e. it will determine that there is a conflict based on the changes it made).

Следовательно, основанный на протоколировании процесс согласования должен исключать предыдущие изменения, сделанные в результате согласования, из сравнения между текущим объектом 1709 контекста анализа и исходной версией независимого от документа объекта 1903 контекста анализа. В соответствии с различными примерами изобретения данное исключение может быть сделано сравнением всех узлов в текущем объекте 1709 контекста анализа с их соответствующими узлами в исходной версии независимого от документа объекта 1903 контекста анализа перед исследованием любых элементов списка изменений и сохранением списка узлов, которые имеют коллизии.Therefore, the logging-based reconciliation process should exclude previous changes made as a result of the reconciliation from the comparison between the current analysis context object 1709 and the original version of the analysis context object 1903 independent of the document. In accordance with various examples of the invention, this exception can be made by comparing all nodes in the current analysis context object 1709 with their corresponding nodes in the original version of the document-independent analysis context object 1903 before examining any elements of the change list and saving the list of nodes that have collisions.

Альтернативно или дополнительно, различные примеры изобретения могут поддерживать кэш элементов в текущем объекте 1709 контекста анализа, соответствующих элементам в независимом от документа объекте контекста анализа с результатами анализа, которые используются всякий раз, когда извлекаются соответствующие элементы. Нет предварительной передачи, но кэш заполняется первый раз, когда определено, что соответствующий элемент свободен от дискреционных коллизий. В необязательном порядке, кэш также может отслеживать то, какие элементы в результатах имели дискреционные коллизии. Данный подход имеет лучшие рабочие характеристики, чем подход с передачей нахождения дискреционных коллизий, когда протокол изменений короткий, но может иметь худшие рабочие характеристики, если независимый от документа объект 1903 контекста анализа с результатами анализа содержит много узлов. Он также не сложнее, чем другой подход.Alternatively or additionally, various examples of the invention may maintain a cache of elements in a current analysis context object 1709 corresponding to elements in a document-independent analysis context object with analysis results that are used whenever appropriate elements are retrieved. There is no preliminary transfer, but the cache is populated for the first time when it is determined that the corresponding element is free from discretionary collisions. Optionally, the cache can also track which items in the results have discretionary collisions. This approach has better performance than the approach with the transfer of finding discretionary conflicts, when the change protocol is short, but can have worse performance if the document-independent analysis context object 1903 with the analysis results contains many nodes. It is also no more complicated than another approach.

Необходимо заметить, что родительские узлы контекста элементов в кэше также должны кэшироваться. Более конкретно, изменение дочернего узла контекста рассматривается как изменение свойств его родительского узла контекста. Таким образом, родительский узел контекста узла контекста, хранимого в кэше, также требует оценки в отношении изменений, сделанных программным приложением 1701 в данный момент. Кэширование родительских узлов для каждого узла контекста в кэше требует повторения вверх по дереву (например, от родительского узла к дедовскому узлу и к прадедовскому узлу), пока не будет пройден корневой узел или пока не будут обнаружены изменения. Во многих ситуациях, однако, такое повторение составляет только несколько узлов, так как дерево обычно не становится очень высоким.It should be noted that the parent nodes of the context of elements in the cache must also be cached. More specifically, a change in a child context node is considered as a change in the properties of its parent context node. Thus, the parent context node of the context node stored in the cache also needs to be evaluated with respect to the changes currently made by the 1701 software application. Caching the parent nodes for each context node in the cache requires repeating up the tree (for example, from the parent node to the grandfather node and to the great-grandfather node) until the root node is traversed or changes are detected. In many situations, however, this repetition is only a few nodes, since the tree usually does not get very tall.

Также необходимо заметить, что в соответствии с различными примерами изобретения исходная версия независимого от документа объекта 1903 контекста анализа используется только для обнаружения дискреционных коллизий. Если обнаружение дискреционных коллизий необязательно в соответствии с примером изобретения, то тогда может быть исключена как исходная версия независимого от документа объекта 1903 контекста анализа, так и кэш соответствующих элементов. Данный «основанный на протоколировании» подход может быть более легким для поддержки, чем «основанный на сравнении» подход, описанный ниже, так как он требует меньшего поиска для определения того, какие изменения были сделаны процессом анализа, и операции над независимым от документа объектом 1903 контекста анализа (такие как «удалить узел» или «создать узел») обрабатываются отдельно, так что добавление нового типа операции не имеет тенденции к оказанию влияния на другие операции.It should also be noted that, in accordance with various examples of the invention, the original version of the document-independent object 1903 of the analysis context is used only to detect discretionary collisions. If the detection of discretionary collisions is optional in accordance with an example of the invention, then both the original version of the document-independent analysis context object 1903 and the cache of the corresponding elements can be excluded. This “logging-based” approach may be easier to maintain than the “logging-based” approach described below, since it requires less search to determine what changes were made by the analysis process and operations on a document-independent object 1903 analysis contexts (such as “delete a node” or “create a node”) are processed separately, so adding a new type of operation does not tend to affect other operations.

Вместо «основанной на протоколировании» методики согласования результатов анализа с текущим состоянием документа 1703 различные примеры изобретения могут использовать для согласования «основанный на сравнении» подход. Основным отличительным признаком основанного на сравнении подхода является то, что не ведется протокол изменений, сделанных в независимом от документа объекте 1903 контекста анализа, так что упомянутая методика не собирает информацию о том, что процесс анализа делал иначе как посредством сравнения независимого от документа объекта 1903 контекста анализа, содержащего результаты анализа, с исходной версией независимого от документа объекта 1903 контекста анализа. Поэтому, в соответствии с упомянутым подходом всегда требуется исходная версия независимого от документа объекта 1903 контекста анализа независимо от любых оценок дискреционных коллизий.Instead of a “protocol-based” methodology for matching analysis results with the current state of document 1703, various examples of the invention may use a “comparison-based” approach to harmonize. The main distinguishing feature of the comparison-based approach is that there is no protocol for changes made to the document-independent analysis context object 1903, so the technique does not collect information about what the analysis process did otherwise than by comparing the document-independent context object 1903 analysis containing the results of the analysis, with the original version of the document-independent object 1903 of the analysis context. Therefore, in accordance with the mentioned approach, the initial version of the document-independent object 1903 of the analysis context is always required regardless of any estimates of discretionary conflicts.

Используя упомянутый подход инструментальное средство 1901 анализа чернил сначала строит карту штрихов. Т.е. для каждого концевого узла чернил в исходной версии независимого от документа объекта 1903 контекста анализа, если существует соответствующий узел в текущем объекте 1709 контекста анализа, то тогда концевой узел добавляется к хэш-таблице (или другой подходящей структуре данных). Таким образом, хэш-таблица отображает идентификаторы GUID (или другие уникальные идентификаторы узла) штриха в исходной версии независимого от документа объекта 1903 контекста анализа для ссылок на концевые узлы в текущем объекте 1709 контекста анализа.Using the above approach, the ink analysis tool 1901 first builds a stroke map. Those. for each ink end node in the original version of the document-independent analysis context object 1903, if there is a corresponding node in the current analysis context object 1709, then the end node is added to the hash table (or other suitable data structure). Thus, the hash table displays the GUIDs (or other unique node identifiers) of the stroke in the original version of the document-independent analysis context object 1903 for reference to end nodes in the current analysis context object 1709.

Затем инструментальное средство 1901 анализа чернил идентифицирует все узлы, которые программное приложение 1701 изменило в объекте 1709 контекста анализа. Это может быть сделано с использованием методик для определения дискреционных коллизий, подробно описанных выше. Для каждого узла в исходной версии независимого от документа объекта 1903 контекста анализа, если существует соответствующий узел в текущем объекте 1709 контекста анализа, и он отличается в некоторой степени существенным образом от узла в исходной версии независимого от документа объекта 1903 контекста анализа, то тогда инструментальное средство 1901 анализа чернил определяет, что данный узел был изменен приложением и представляет собой потенциальную коллизию. Ссылки на такие узлы сохраняются в первом списке, соответствующем узлам результатов анализа, которые не должны добавляться к объекту 1709 контекста анализа (ниже упоминаемому как список resultsNodesNotToAdd), и во втором списке узлов, которые создают дискреционные коллизии.Then, the ink analysis tool 1901 identifies all nodes that the software application 1701 has changed in the analysis context object 1709. This can be done using techniques for determining discretionary collisions, described in detail above. For each node in the original version of the document-independent analysis context object 1903, if there is a corresponding node in the current analysis context object 1709, and it differs to some extent significantly from the node in the original version of the document-independent analysis context object 1903, then the tool The 1901 ink analysis determines that a given node has been modified by the application and represents a potential collision. Links to such nodes are stored in the first list corresponding to the nodes of the analysis results, which should not be added to the analysis context object 1709 (hereinafter referred to as the list of resultsNodesNotToAdd ), and in the second list of nodes that create discretionary collisions.

Для каждого узла в исходной версии независимого от документа объекта 1903 контекста анализа инструментальное средство 1901 анализа чернил отыскивает соответствующие узлы как в независимом от документа объекте 1903 контекста анализа с результатами анализа, так и в текущем объекте 1709 контекста анализа. Для каждого узла в объекте 1709 контекста анализа инструментальное средство 1901 анализа чернил определяет, удалило ли программное приложение 1701 узел. Такие узлы существуют в исходной версии независимого от документа объекта 1903 контекста анализа, но не имеют соответствующего узла в объекте 1709 контекста анализа. Соответствующий узел в независимом от документа объекте 1903 контекста анализа с результатами анализа добавляется к списку resultsNodesNotToAdd, если он существует.For each node in the original version of the document-independent analysis context object 1903, the ink analysis tool 1901 searches for the corresponding nodes both in the document-independent analysis context object 1903 with the analysis results and in the current analysis context object 1709. For each node in the analysis context object 1709, the ink analysis tool 1901 determines whether the software application 1701 has deleted the node. Such nodes exist in the original version of the analysis context object 1903 independent of the document, but do not have a corresponding node in the analysis context object 1709. The corresponding node in the document-independent object 1903 of the analysis context with the analysis results is added to the list of resultsNodesNotToAdd , if it exists.

Затем инструментальное средство 1901 анализа чернил определяет, удалил ли процесс анализа узел из независимого от документа объекта 1903 контекста анализа. Это обнаруживается, когда существует соответствующий узел в текущем объекте 1709 контекста анализа, и он не изменился, но не существует соответствующего узла в независимом от документа объекте 1903 контекста анализа с результатами анализа. Узлы, удаленные процессом анализа, могут быть сохранены в списке удаленных узлов. Такой узел не добавляется к текущему объекту 1709 контекста анализа, но он не входит в список resultsNodesNotToAdd, потому что не существует соответствующего узла в независимом от документа объекте 1903 контекста анализа с результатами анализа.Then, the ink analysis tool 1901 determines whether the analysis process has removed a node from the document-independent analysis context object 1903. This is detected when there is a corresponding node in the current analysis context object 1709, and it has not changed, but there is no corresponding node in the document-independent analysis context object 1903 with the analysis results. Nodes deleted by the analysis process can be stored in the list of remote nodes. Such a node is not added to the current analysis context object 1709, but it is not included in the resultsNodesNotToAdd list because there is no corresponding node in the document-independent analysis context object 1903 with the analysis results.

Если программное приложение 1701 не удалило, не изменило узел, и процесс анализа не удалил узел, то тогда инструментальное средство 1901 анализа чернил может определить, изменил ли процесс анализа узел. Эти же методики, что и те, которые были описаны выше для использования при обнаружении изменений, сделанных программным приложением 1701, могут быть использованы для обнаружения изменений, сделанных процессом анализа. Узлы, которые были изменены процессом анализа, добавляются к списку resultsNodesNotToAdd, и изменения передаются посредством вызова соответствующих методов для узлов в объекте 1709 контекста анализа. Если ни программное приложение 1701, ни процесс анализа не изменили или не удалили узел, то тогда ничего не произошло с данным узлом, и инструментальное средство 1901 анализа чернил добавляет узел в список resultsNodesNotToAdd, так как узел существует в независимом от документа объекте 1903 контекста анализа с результатами анализа и не должен добавляться к объекту 1709 контекста анализа.If the software application 1701 did not delete, did not change the node, and the analysis process did not delete the node, then the ink analysis tool 1901 can determine if the analysis process has changed the node. The same techniques as those described above for use in detecting changes made by software application 1701 can be used to detect changes made by the analysis process. The nodes that have been modified by the analysis process are added to the resultsNodesNotToAdd list, and the changes are transferred by calling the appropriate methods for the nodes in the analysis context object 1709. If neither the software application 1701 nor the analysis process changed or deleted the node, then nothing happened with this node, and the ink analysis tool 1901 adds the node to the list of resultsNodesNotToAdd, since the node exists in the analysis context object 1903 with analysis results and should not be added to the analysis context object 1709.

Затем для каждого узла в независимом от документа объекте 1903 контекста анализа с результатами анализа, если узел не находится в списке resultsNodesNotToAdd, то тогда инструментальное средство 1901 анализа чернил может передавать любые изменения узлу при помощи процесса анализа посредством создания соответствующего узла в объекте 1709 контекста анализа. Обход узлов в результатах анализа может выполняться с использованием обхода в прямом порядке сверху вниз, так что гарантируется, что родительские узлы создаются перед дочерними узлами.Then, for each node in the document context analysis object 1903 with the analysis results, if the node is not in the resultsNodesNotToAdd list, then the ink analysis tool 1901 can transfer any changes to the node using the analysis process by creating the corresponding node in the analysis context object 1709. Crawl nodes in the analysis results can be performed using a crawl in the direct order from top to bottom, so that it is guaranteed that the parent nodes are created in front of the child nodes.

При создании нового концевого узла в объекте 1709 контекста анализа любые штрихи чернил, ассоциированные с узлом, которые содержатся в результатах анализа, также могут быть перемещены в новый узел из других узлов в объекте 1709 контекста анализа. Описанная выше карта штрихов затем может быть использована для идентификации элементов источника для перемещения штрихов. Штрихи чернил не перемещаются, если элемент источника не существует (создавая обязательную коллизию), или если элемент источника содержится в списке дискреционных коллизий, также отмеченном выше. Сохраняя необязательные вызовы к объекту 1709 контекста анализа, данное инструментальное средство 1901 анализа чернил может избежать вызова метода для создания дочернего узла контекста, если не существует по меньшей мере один неконфликтующий узел источника штриха. Эта же проверка источника штриха также выполняется на нечернильных концевых узлах, так что узел для строки не создается до тех пор, пока по меньшей мере одно из составляющих строку слов, например, не собирается содержать по меньшей мере один успешно перемещенный штрих.When creating a new end node in the analysis context object 1709, any ink strokes associated with the node contained in the analysis results can also be moved to a new node from other nodes in the analysis context object 1709. The stroke map described above can then be used to identify source elements for moving strokes. Ink strokes do not move if the source element does not exist (creating a mandatory collision), or if the source element is on the discretionary collisions list also noted above. By storing optional calls to the analysis context object 1709, this ink analysis tool 1901 can avoid invoking a method to create a child context node if at least one non-conflicting stroke source node does not exist. The same stroke source check is also performed on non-ink end nodes, so that a node for the line is not created until at least one of the words making up the line, for example, is going to contain at least one successfully moved stroke.

Затем другая информация также применяется к вновь созданному узлу, такая как решетка распознавания. Решетка распознавания все же применяется, даже если определенные штрихи не могут быть перемещены, создавая применяемую (т.е. неблокируемую) дискреционную коллизию, которая приводит к временной логической несовместимости. Однако, так как неуспешные перемещения штрихов отражаются в обозначении части объекта 1709 контекста анализа, соответствующей области документа, для которой изменения блокированы, несовместимость является временной, так как программное приложение 1701 уведомляется о повторном анализе блокированной области.Then other information is also applied to the newly created node, such as a recognition grid. The recognition lattice is nevertheless applied, even if certain strokes cannot be moved, creating an applicable (i.e., non-blocking) discretionary collision, which leads to temporary logical incompatibility. However, since unsuccessful strokes are reflected in the designation of the part of the analysis context object 1709 corresponding to the region of the document for which the changes are blocked, the incompatibility is temporary, since the software application 1701 is notified of the reanalysis of the blocked region.

Для каждого узла, подлежащего удалению из объекта 1709 контекста анализа, список инструментального средства 1901 анализа чернил проверяет, может ли фактически быть удален узел теперь, когда были выполнены все другие редактирования и добавления к объекту 1709 контекста анализа. Узлы, которые должны быть удалены и которые фактически являются свободными от всех дочерних узлов и штрихов, удаляются из объекта 1709 контекста анализа. Если такой узел удален, то все узлы-предки (вплоть до, но не включая, корневого узла) удаляются последовательно до тех пор, пока не встретится узел-предок с другими оставшимися дочерними узлами.For each node to be removed from the analysis context object 1709, the list of the ink analysis tool 1901 checks whether the node can actually be deleted now that all other edits and additions to the analysis context object 1709 have been completed. The nodes that should be deleted and which are actually free of all child nodes and strokes are removed from the analysis context object 1709. If such a node is deleted, then all ancestor nodes (up to, but not including, the root node) are deleted sequentially until an ancestor node meets the other remaining child nodes.

Наконец, инструментальное средство 1901 анализа чернил выполняет глобальное сравнение упорядочения узлов между независимым от документа объектом 1903 контекста анализа с результатами анализа и объектом 1709 контекста анализа, чтобы обнаружить и передать изменения процессом анализа объекту 1709 контекста анализа. Необходимо заметить, однако, что данное сравнение игнорирует исходную версию независимого от документа объекта 1903 контекста анализа, поэтому у него нет возможности обнаружить изменения в упорядочении, сделанные программным приложением 1701. Затем для каждого узла контейнера в результатах анализа, который имеет соответствующий узел в объекте 1709 контекста анализа, сравнивается упорядочение дочерних узлов для узлов контейнера. Если оба узла контейнера имеют одинаковый набор дочерних узлов, то тогда упорядочение в результатах анализа передается объекту 1709 контекста анализа посредством организации циклов по списку дочерних узлов контейнера в результатах анализа до тех пор, пока не будет найден узел в этом же положении в списке контейнера в объекте 1709 контекста анализа, который не имеет такой же GUID (или другой тип идентификатора) что и дочерний узел в результатах анализа. Когда обнаруживается такое несоответствие, то соответствующий узел должен быть найден ниже в списке дочерних узлов в объекте 1709 контекста анализа. Инструментальное средство 1901 анализа чернил затем производит поиск узла в остальной части списка дочерних узлов в объекте 1709 контекста анализа и вызывает метод для перемещения дочернего узла для коррекции порядка для данного узла в объекте 1709 контекста узла. Затем инструментальное средство 1901 анализа чернил продолжает организацию циклов по узлам в результатах анализа.Finally, the ink analysis tool 1901 performs a global comparison of the ordering of the nodes between the document-independent analysis context object 1903 with the analysis results and the analysis context object 1709 in order to detect and transmit changes in the analysis process to the analysis context object 1709. It should be noted, however, that this comparison ignores the original version of the analysis context object 1903, which is independent of the document, so it is not possible to detect changes in the ordering made by software application 1701. Then, for each container node in the analysis results, which has a corresponding node in object 1709 analysis context, compares the ordering of child nodes for container nodes. If both container nodes have the same set of child nodes, then the ordering in the analysis results is passed to the analysis context object 1709 by organizing loops on the list of container child nodes in the analysis results until a node in the same position is found in the container list in the object 1709 analysis context that does not have the same GUID (or other type of identifier) as the child node in the analysis results. When such a mismatch is detected, the corresponding node should be found below in the list of child nodes in the analysis context object 1709. The ink analysis tool 1901 then searches for the node in the rest of the list of child nodes in the analysis context object 1709 and calls a method to move the child node to correct the order for that node in the node context object 1709. Then, the ink analysis tool 1901 continues organizing the nodes in the analysis results.

Конечно, предположение об идентичных списках не является справедливым, так как либо список анализа, либо программное приложение 1701 может удалить или вставить узлы в любой список. Объект «средство отображения списка дочерних узлов» используется для имитирования предположения, являющегося справедливым, посредством представления «усеченных» списков, которые содержат только элементы, которые содержатся вместе. Описанная выше процедура затем выполняется над отображаемыми списками дочерних узлов, и перемещения преобразуются в реальные индексы и вызовы объектом - средством отображения списка.Of course, the assumption of identical lists is not fair, since either the analysis list or the 1701 software application can delete or insert nodes into any list. The "child list display mapper" object is used to simulate a valid assumption by presenting "truncated" lists that contain only elements that are contained together. The procedure described above is then performed on the displayed lists of child nodes, and the movements are converted into real indices and calls by the object - the list display tool.

Таким образом, методики согласования в соответствии с различными примерами изобретения, описанными выше, позволяют применять результаты процесса анализа к текущим элементам документа в документе, даже если содержимое документа изменилось с тех пор, как был инициирован процесс анализа. Данные методики согласования, поэтому, позволяют проводить анализ электронных чернил в документе асинхронно по отношению к работе программного приложения, являющегося ведущим по отношению к документу. Далее, данные методики согласования могут быть выгодно использованы разнообразными различными программными приложениями, включая существующие многопоточные программные приложения с существующей уникальной блокировкой или другими стратегиями синхронизации.Thus, the matching techniques in accordance with the various examples of the invention described above allow the results of the analysis process to be applied to the current elements of the document in the document, even if the contents of the document have changed since the analysis process was initiated. These matching techniques, therefore, allow the analysis of electronic ink in a document asynchronously with respect to the operation of a software application that is leading with respect to the document. Further, these matching techniques can be advantageously used by a variety of different software applications, including existing multi-threaded software applications with existing unique locking or other synchronization strategies.

Управляемая событием системаEvent driven system

Как описано выше, различные примеры изобретения создают «снимок» состояния документа посредством копирования независимого от документа объекта контекста анализа и затем асинхронно анализируют независимый от документа объект контекста анализа, в то время как программное приложение, являющееся ведущим по отношению к документу, продолжает свою работу. Альтернативно, различные примеры изобретения могут отказываться от использования независимого от документа объекта контекста анализа в пользу асинхронного анализа чернил. Вместо этого, данные примеры изобретения могут использовать изолированный компонент для хранения всех чернильных и семантических данных для документа. Более конкретно, данные примеры изобретения распознают два типа модификаций, которые могут быть сделаны в документе: чернильные события, такие как добавление, удаление или модифицирование штрихов; и структурные события, такие как группирование штрихов в слова, добавление семантических узлов или ассоциирование результатов распознавания текста со штрихами. Каждое событие содержит все данные, необходимые для полного описания события для внешнего слушателя. Например, событие «добавить штрих» включает в себя все данные штриха. С помощью данных событий с «широкими возможностями» слушатель может сохранять точный дубликат объекта чернил посредством применения событий в порядке, в котором они были приняты.As described above, various examples of the invention create a “snapshot” of a document’s state by copying a document-independent analysis context object and then asynchronously analyze the document-independent analysis context object, while the software application that is leading to the document continues to work. Alternatively, various examples of the invention may refuse to use a document-independent analysis context object in favor of asynchronous ink analysis. Instead, these examples of the invention may use an isolated component to store all ink and semantic data for a document. More specifically, these examples of the invention recognize two types of modifications that can be made in a document: ink events, such as adding, removing or modifying strokes; and structural events, such as grouping strokes into words, adding semantic nodes, or associating text recognition results with strokes. Each event contains all the data necessary to fully describe the event for an external listener. For example, the “add stroke” event includes all stroke data. With the help of event data with “wide possibilities”, the listener can keep an exact duplicate of the ink object by applying the events in the order in which they were received.

На фиг.28 изображен пример того, как может быть использована данная схема, в соответствии с различными примерами изобретения. Как видно на данной фигуре, приложение 2801 использует инструментальное средство 2803 анализа чернил. Инструментальное средство 2803 анализа чернил поддерживает данные 2805 чернил и структуру 2807 документа (например, такую как древовидная структура) для приложения 2801. Приложение также использует очередь 2809 событий, процесс 2811 синтаксического разбора и процесс 2817 распознавания. Процесс 2811 синтаксического разбора поддерживает клон 2813 данных 2805 чернил и клон 2815 структуры 2807 документа. Аналогично, процесс 2817 распознавания поддерживает клон 2819 данных 2805 чернил и клон 2821 структуры 2807 документа.On Fig shows an example of how this scheme can be used, in accordance with various examples of the invention. As can be seen in this figure, application 2801 uses the ink analysis tool 2803. Ink analysis tool 2803 supports ink data 2805 and document structure 2807 (eg, such as a tree structure) for application 2801. The application also uses event queue 2809, parsing process 2811, and recognition process 2817. The parsing process 2811 supports the clone 2813 of the ink data 2805 and the clone 2815 of the document structure 2807. Similarly, the recognition process 2817 supports the clone 2819 of the ink data 2805 and the clone 2821 of the document structure 2807.

Когда приложение генерирует данные чернил, то оно предоставляет данные чернил инструментальному средству 2803 анализа чернил посредством метода 2823. В ответ инструментальное средство 2803 анализа чернил генерирует событие, соответствующее изменению в данных чернил, добавляет ярлык (тег) к каждому событию и определяет требуемый процесс или процессы анализа в качестве компонентов, которые прослушивают события с заданными ярлыками. Например, все изменения пользователя в чернилах могут быть помечены ярлыком «UserChange», и событие 2825 с данным тегом посылается синхронно в очередь 2809 событий в ответ на изменение. В некоторый момент в будущем процесс 2811 синтаксического разбора и процесс 2817 распознавания извлекают помеченное ярлыком событие из очереди 2809 событий.When an application generates ink data, it provides ink data to the ink analysis tool 2803 by method 2823. In response, the ink analysis tool 2803 generates an event corresponding to a change in ink data, adds a label (tag) to each event, and defines the desired process or processes analysis as components that listen for events with specified labels. For example, all user changes in ink can be marked with the “UserChange” label, and event 2825 with this tag is sent synchronously to the 2809 event queue in response to the change. At some point in the future, the parsing process 2811 and the recognition process 2817 retrieve the tagged event from the event queue 2809.

Процесс первого анализа (например, процесс 2811 синтаксического разбора) затем прослушивает все события, выдаваемые инструментальным средством 2803 анализа чернил, и отвечает на те, которые помечены ярлыком UserChange. Процесс первого анализа затем применяет изменения, заданные событием, к его внутренней копии данных 2813 чернил и структуры 2815 документа, анализирует данные, описанные в событии, и затем создает и помечает события 2827, генерируемые их изменениями, ярлыком «Parser1Change». Эти события 2827 передаются инструментальным средством 2803 анализа чернил обратно в очередь 2809 событий. Процесс второго анализа (например, процесс 2817 распознавания рукописного текста) затем прослушивает события, помеченные тегом Parser1Change. В ответ он применяет изменения, заданные событием, к его внутренней копии данных 2819 чернил и структуре 2821 документа и в ответ анализирует данные, описанные в событиях. Второй анализатор затем создает и помечает событие 2829 с его результатами анализа тегом «HandwritingRecognitionChange». Так как инструментальное средство 2803 анализа чернил принимает события от процесса 2811 синтаксического разбора и процесса 2817 распознавания, то оно посылает события 2831 приложению 2801 для указания изменения в структуре 2807 документа.The first analysis process (e.g., parsing process 2811) then listens for all events emitted by the ink analysis tool 2803 and responds to those marked with a UserChange tag. The first analysis process then applies the changes specified by the event to its internal copy of the ink data 2813 and the document structure 2815, analyzes the data described in the event, and then creates and marks the events 2827 generated by their changes with the label “Parser1Change”. These events 2827 are sent by the ink analysis tool 2803 back to the event queue 2809. The second analysis process (eg, handwriting recognition process 2817) then listens for events tagged with Parser1Change. In response, he applies the changes specified by the event to his internal copy of the ink data 2819 and the document structure 2821, and in response analyzes the data described in the events. The second analyzer then creates and marks event 2829 with its analysis results with the “HandwritingRecognitionChange” tag. Since the ink analysis tool 2803 receives events from the parsing process 2811 and the recognition process 2817, it sends events 2831 to the application 2801 to indicate a change in the document structure 2807.

Эти варианты выполнения изобретения также могут поддерживать каждый процесс анализа прослушиванием событий с более, чем одним событием и помечать события на основании их изменений различными ярлыками, основываясь на внутренней обработке. Следовательно, эти альтернативные варианты реализации изобретения также могут предусматривать анализ электронных чернил в документе, который является асинхронным по отношению к работе программного приложения, являющегося ведущим по отношению к документу.These embodiments of the invention can also support each analysis process by listening to events with more than one event, and mark events based on their changes with various labels based on internal processing. Therefore, these alternative embodiments of the invention may also include the analysis of electronic ink in a document that is asynchronous to the operation of the software application that is leading to the document.

ЗаключениеConclusion

Хотя изобретение было описано в отношении конкретных примеров, включающих предпочтительные в настоящее время варианты осуществления изобретения, для специалиста в данной области техники очевидно, что существуют многочисленные разновидности и изменения вышеописанных систем и методик, которые находятся в рамках сущности и объема изобретения, изложенного в прилагаемой формуле изобретения.Although the invention has been described in relation to specific examples, including currently preferred embodiments of the invention, it will be apparent to those skilled in the art that there are numerous variations and variations of the above systems and methods that are within the spirit and scope of the invention set forth in the appended claims inventions.

Claims (19)

1. Интерфейс прикладного программирования для анализа электронных чернил, содержащий
объект контекста анализа, который поддерживает данные документа для документа, содержащего содержимое электронных чернил, который размещается в программном приложении, выполняющемся в первом потоке обработки, и
объект анализатора чернил, который
использует первый поток обработки для выполнения копии данных документа,
предоставляет копию данных документа процессу анализа электронных чернил и
возвращает управление первым потоком обработки программному приложению,
при этом программное приложение сконфигурировано для приема новых данных документа во время выполнения процесса анализа электронных чернил.
1. The application programming interface for the analysis of electronic ink, containing
an analysis context object that supports document data for a document containing electronic ink content that is hosted in a software application executing in the first processing stream, and
an ink analyzer object that
uses the first processing flow to make a copy of the document data,
provides a copy of the document data to the electronic ink analysis process and
returns control of the first processing flow to the software application,
however, the software application is configured to receive new document data during the electronic ink analysis process.
2. Интерфейс прикладного программирования по п.1, в котором объект анализатора чернил согласовывает результаты процесса анализа с текущими данными документа для документа.2. The application programming interface according to claim 1, in which the object of the ink analyzer coordinates the results of the analysis process with the current document data for the document. 3. Интерфейс прикладного программирования по п.1, в котором объект анализатора чернил выполняет вторую копию данных документа для использования при согласовании результатов процесса анализа с текущими данными документа для документа.3. The application programming interface according to claim 1, wherein the ink analyzer object performs a second copy of the document data for use in matching the results of the analysis process with the current document data for the document. 4. Интерфейс прикладного программирования, содержащий объект анализатора чернил, который
принимает данные документа для документа, содержащего содержимое электронных чернил, от программного приложения, вмещающего документ и выполняющегося в первом потоке обработки,
использует первый поток обработки для выполнения копии данных документа,
предоставляет копию данных документа процессу анализа электронных чернил,
возвращает управление первым потоком обработки программному приложению, при этом программное приложение сконфигурировано для приема новых данных документа во время выполнения процесса анализа электронных чернил, и
согласовывает результаты процесса анализа с текущими данными документа для документа.
4. An application programming interface containing an ink analyzer object that
receives document data for a document containing electronic ink contents from a software application containing the document and executed in the first processing stream,
uses the first processing flow to make a copy of the document data,
provides a copy of the document data to the electronic ink analysis process,
returns control of the first processing flow to the software application, wherein the software application is configured to receive new document data during the electronic ink analysis process, and
Coordinates the results of the analysis process with the current document data for the document.
5. Способ анализа электронных чернил, содержащий этапы, на которых принимают копию данных документа, причем для получения копии данных документа используют первый поток обработки, при этом копия данных документа включает в себя значение контекста анализа, идентифицирующее объект контекста анализа, причем объект контекста анализа включает в себя структуру данных, содержащую характеристические данные для одного или нескольких элементов документа,
в ответ на прием копии данных документа, выполняют анализ объекта контекста анализа, причем первый поток обработки принимает новые данные документа при выполнении анализа объекта контекста анализа, и предоставляют результаты анализа объекта контекста анализа.
5. A method of analyzing electronic ink, comprising the steps of receiving a copy of document data, the first processing stream being used to obtain a copy of document data, the copy of the document data including an analysis context value identifying the analysis context object, the analysis context object including a data structure containing characteristic data for one or more elements of the document,
in response to receiving a copy of the document data, an analysis context object is analyzed, the first processing stream receiving new document data when analyzing the analysis context object, and providing analysis results of the analysis context object.
6. Способ по п.5, дополнительно содержащий этапы, на которых принимают свойство пользовательского интерфейса, определяющее первый поток обработки,
в ответ на прием значения контекста анализа, проводят анализ идентифицированного объекта контекста анализа, используя второй поток
обработки, и
в ответ на прием свойства пользовательского интерфейса, предоставляют результаты анализа объекта контекста анализа первому потоку обработки.
6. The method according to claim 5, additionally containing stages, which take the property of the user interface that defines the first processing stream,
in response to receiving the value of the analysis context, analyze the identified object of the analysis context using the second stream
processing, and
in response to receiving the user interface properties, the results of the analysis of the analysis context object are provided to the first processing stream.
7. Способ по п.5, дополнительно содержащий этапы, на которых принимают свойство опций, задающее один или несколько критериев анализа для анализа объекта контекста анализа, и в ответ на прием значения контекста анализа, проводят анализ идентифицированного объекта контекста анализа, используя заданные критерии анализа.7. The method according to claim 5, further comprising the steps of adopting an option property that defines one or more analysis criteria for analyzing the analysis context object and, in response to receiving the analysis context value, analyzes the identified analysis context object using the specified analysis criteria . 8. Способ по п.7, в котором критерии анализа включают в себя один или несколько элементов из группы, состоящей из: разрешения распознавания текста, разрешения использования таблиц, разрешения использования списков, разрешения использования аннотаций и разрешения использования соединителей и контейнеров.8. The method according to claim 7, in which the analysis criteria include one or more elements from the group consisting of: permission to recognize text, permission to use tables, permission to use lists, permission to use annotations, and permission to use connectors and containers. 9. Способ по п.5, дополнительно содержащий этапы, на которых
в ответ на прием значения контекста анализа, проводят анализ идентифицированного объекта контекста анализа, используя фоновый процесс обработки, и
разрешают изменения в документе во время анализа документа.
9. The method according to claim 5, further comprising stages, in which
in response to receiving the value of the analysis context, analyze the identified object of the analysis context using the background processing process, and
allow changes to the document during the analysis of the document.
10. Способ по п.5, дополнительно содержащий этап, на котором предоставляют результаты анализа объекта контекста анализа посредством идентификации копии объекта документа анализа, модифицированного с целью включения результатов анализа объекта контекста анализа.10. The method according to claim 5, further comprising the step of providing the results of the analysis of the analysis context object by identifying a copy of the analysis document object modified to include the results of the analysis of the analysis context object. 11. Способ по п.5, в котором этап предоставления результатов анализа объекта контекста анализа включает в себя этап, на котором после завершения анализа объекта контекста анализа генерируют событие результатов, указывающее на завершение анализа объекта контекста анализа.11. The method according to claim 5, in which the step of providing the results of the analysis of the analysis context object includes a step on which, after the analysis of the analysis context object is completed, a result event is generated indicating the completion of the analysis of the analysis context object. 12. Способ по п.5, дополнительно содержащий этапы, на которых
принимают вызов на согласование результатов анализа объекта контекста анализа с текущим состоянием документа и
в ответ на прием вызова на согласование результатов анализа объекта контекста анализа с текущим состоянием документа, согласовывают результаты анализа объекта контекста анализа с текущим состоянием документа.
12. The method according to claim 5, further comprising stages, in which
take the call to reconcile the results of the analysis of the analysis context object with the current state of the document and
in response to receiving a call to reconcile the results of the analysis of the analysis context object with the current state of the document, coordinate the analysis results of the analysis context object with the current state of the document.
13. Способ по п.5, дополнительно содержащий этапы, на которых принимают вызов на синхронный анализ по меньшей мере части объекта контекста анализа,
в ответ на прием вызова, анализируют упомянутую по меньшей мере часть объекта контекста анализа и
запрещают изменения в документе до тех пор, пока упомянутая по меньшей мере часть объекта документа анализа не будет проанализирована.
13. The method according to claim 5, further comprising stages, which take a call for synchronous analysis of at least part of the object of the analysis context,
in response to receiving the call, analyzing said at least part of the analysis context object and
changes to the document are prohibited until the at least part of the object of the analysis document is analyzed.
14. Способ по п.13, дополнительно содержащий этапы, на которых принимают идентификацию области документа и
в ответ на прием идентификации области анализируют только часть объекта документа анализа, соответствующую идентифицированной области документа.
14. The method according to item 13, further comprising stages, which take the identification of the document area and
In response to receiving an area identification, only a part of the object of the analysis document corresponding to the identified area of the document is analyzed.
15. Способ создания объекта контекста анализа для использования при анализе документа, содержащий этапы, на которых
принимают вызов на создание объекта контекста анализа, соответствующего документу, и
в ответ на прием вызова на создание объекта контекста анализа, соответствующего документу, создают объект контекста анализа, который включает в себя структуру данных, содержащую характеристические данные для одного или нескольких элементов документа, при этом объект контекста анализа содержит подсказки для содействия процессу анализа документа.
15. A method of creating an analysis context object for use in analyzing a document, comprising the steps of:
take a call to create an analysis context object corresponding to the document, and
In response to receiving a call to create an analysis context object corresponding to the document, an analysis context object is created that includes a data structure containing characteristic data for one or more document elements, while the analysis context object contains hints to facilitate the document analysis process.
16. Способ по п.15, в котором объект контекста анализа включает в себя значение, определяющее часть объекта контекста анализа, подлежащую анализу во время процесса анализа документа.16. The method of claim 15, wherein the analysis context object includes a value defining a part of the analysis context object to be analyzed during the document analysis process. 17. Способ по п.15, в котором объект контекста анализа включает в себя значение, определяющее поля для документа.17. The method of claim 15, wherein the analysis context object includes a value defining fields for the document. 18. Способ по п.15, в котором объект контекста анализа включает в себя идентификатор, идентифицирующий корневой узел структуры данных.18. The method of claim 15, wherein the analysis context object includes an identifier identifying the root node of the data structure. 19. Способ по п.15, дополнительно содержащий этапы, на которых принимают вызов на предоставление идентифицированного узла структуры данных и
в ответ на прием вызова на предоставление идентифицированного узла структуры данных предоставляют идентифицированный узел структуры данных.
19. The method according to clause 15, further comprising stages, which take the call to provide an identified node of the data structure and
in response to receiving a call to provide an identified data structure node, an identified data structure node is provided.
RU2004119950/09A 2003-08-21 2003-08-21 Processing electronic ink RU2358308C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2004119950/09A RU2358308C2 (en) 2003-08-21 2003-08-21 Processing electronic ink

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2004119950/09A RU2358308C2 (en) 2003-08-21 2003-08-21 Processing electronic ink

Publications (2)

Publication Number Publication Date
RU2004119950A RU2004119950A (en) 2005-11-10
RU2358308C2 true RU2358308C2 (en) 2009-06-10

Family

ID=35865343

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004119950/09A RU2358308C2 (en) 2003-08-21 2003-08-21 Processing electronic ink

Country Status (1)

Country Link
RU (1) RU2358308C2 (en)

Also Published As

Publication number Publication date
RU2004119950A (en) 2005-11-10

Similar Documents

Publication Publication Date Title
US7502812B2 (en) Electronic ink processing
US7468801B2 (en) Electronic ink processing
US7533338B2 (en) Electronic ink processing
US7502805B2 (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
RU2351982C2 (en) Processing of electronic ink
RU2326435C2 (en) Electronic ink processing
RU2358308C2 (en) Processing electronic ink
RU2352981C2 (en) Processing of electronic ink
RU2485579C2 (en) Electronic ink processing
KR101045444B1 (en) Electronic ink processing
AU2003259957A1 (en) Electronic ink processing
KR20070010094A (en) Electronic ink processing

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20130822