RU2326435C2 - Electronic ink processing - Google Patents
Electronic ink processing Download PDFInfo
- Publication number
- RU2326435C2 RU2326435C2 RU2004119952/09A RU2004119952A RU2326435C2 RU 2326435 C2 RU2326435 C2 RU 2326435C2 RU 2004119952/09 A RU2004119952/09 A RU 2004119952/09A RU 2004119952 A RU2004119952 A RU 2004119952A RU 2326435 C2 RU2326435 C2 RU 2326435C2
- Authority
- RU
- Russia
- Prior art keywords
- analysis
- ink
- document
- node
- data
- Prior art date
Links
Images
Landscapes
- Stored Programmes (AREA)
- Character Discrimination (AREA)
Abstract
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 easy to 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 enhanced 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 ink of a text). Classification algorithms are also possible to identify other types of strokes. The layout analysis process typically 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 into 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 must stop working until the parsing process is completed, 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 typewritten text 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 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 the data of electronic ink strokes 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 various 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 make it possible to perform ink analysis processes asynchronously with the operation of 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, reconciliation 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 the 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 with 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 - схематическое представление цифровой вычислительной среды общего назначения, в которой могут быть реализованы некоторые аспекты настоящего изобретения;figure 1 is a schematic representation of a general-purpose digital computing environment in which some aspects of the present invention can 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 relating 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 are illustrations of transferring 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” - 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 computer medium" is any available 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. “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 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-like 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 optionally 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 a software application provides an analysis context object with an ink analysis tool (or an ink analysis tool creates an analysis context object), the ink analysis tool copies or retrieves information related to at least a part of the analysis context object that contains 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.
Как только инструментальное средство анализа чернил создает независимый от документа объект контекста анализа, инструментальное средство анализа чернил предоставляет данный независимый от документа объект контекста анализа одному или нескольким процессам анализа. Например, если распознавание рукописного текста должно выполняться в отношении непроанализированных электронных чернил в документе, то тогда инструментальное средство анализа чернил может предоставить независимый от документа объект контекста анализа процессам классификации и/или анализа компоновки для классификации чернил на штрихи текста и рисунка (если необходимо, или если требуется) и затем группирования штрихов текста непроанализированных электронных чернил в ассоциированные группировки, на основе компоновки чернил. В то время, как процессы классификации и/или анализа компоновки анализируют независимый от документа объект контекста анализа, программное приложение может продолжать свою обычную работу. В частности, программное приложение может продолжать принимать новый ввод электронных чернил и/или любые другие данные в электронном документе, выполняемом программой приложения.As soon as 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 for unparsed electronic ink in a document, then the ink analysis tool can provide a document-independent context analysis object to 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 passes consistent 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 the personal computer 100, or parts thereof, may be stored on a remote 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. It is assumed that any of various well-known protocols exists, 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. A pen input
Перо 204 может быть оснащено кнопками или другими признаками, чтобы дополнять его возможности. В одном примере перо 204 может быть выполнено в виде «карандаша» или «ручки», в которых один конец составляет пишущую часть, и другой конец составляет конец «ластика», и который при движении по дисплею указывает части электронных чернил на дисплее, которые должны быть стерты. Также могут быть использованы другие типы устройств ввода, такие как мышь, шаровой манипулятор, клавиатура или т.п. Дополнительно, собственный палец пользователя может использоваться для выбора или указания частей отображаемого изображения на сенсорном или бесконтактном дисплее. Следовательно, термин «устройство ввода пользователем», используемый в настоящей заявке, как предполагается, имеет широкое определение и охватывает многие варианты общеизвестных устройств ввода.
В различных примерах система обеспечивает платформу обработки чернил в виде комплекта служб модели компонентных объектов (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 Microsoft Corporation's 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, which presents printed or graphic information to users and / or allows input using an electronic pen or pen, or which 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
В данном примере, после того как пользователь введет аннотацию, программа приложения вызывает программу 310 синтаксического разбора и запрашивает проведение синтаксического разбора вновь введенных данных электронных чернил (как отмечено выше, «синтаксический разбор» может включать в себя, например, классификацию электронных чернил на различные типы чернил (например, рисунки, текст, блок-схемы, музыка и т.д.) и/или анализ компоновки чернил (например, уточнение пространственных и позиционных зависимостей среди штрихов чернил и группирование их в соответствующие группировки), а также другие процессы анализа). Конкретно, программа приложения посылает введенные данные электронных чернил (представляющие аннотацию 306 в данном примере) средству 310 синтаксического разбора в виде данных неклассифицированных чернил. Вышеописанное изображается на фиг.3 стрелкой 312 ввода.In this example, after the user enters the annotation, the application program calls the
В необязательном порядке, в этот же или примерно в этот момент времени программа приложения может послать некоторые или все данные, относящиеся к базовому электронному документу 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
Средство 310 синтаксического разбора принимает введенные данные 314 электронного документа и введенные данные 312 неклассифицированных чернил и использует упомянутую информацию для классификации новых данных электронных чернил на типы чернил. Чернила можно классифицировать на всевозможные различные типы чернил без отступления от изобретения, и ниже более подробно описываются различные примеры возможных типов чернил. Для настоящего примера, основываясь на введенных чернилах 306 и информации 302, содержащейся в базовом документе 300, программа 310 синтаксического разбора в соответствии с данным примером изобретения может определить и классифицировать введенные чернила 306 в качестве аннотации или даже более конкретно в качестве чернильного рисунка, соответствующего аннотации-контейнеру (например, обведению), который содержит определенный машинописный текст. Конечно, также возможны другие типы аннотаций, такие как аннотации выделением, аннотации с «указанием на», аннотации с «указанием от», аннотации с привязкой (например, без указания на или указания от), горизонтальный охват, вертикальный охват и т.п., и ниже подробно объяснены различные примеры.The
После синтаксического разбора данные, ассоциированные с аннотацией 306, могут быть включены в иерархическую структуру данных «дерева документа», ассоциированную с электронным документом 300 (или любую другую подходящую или требуемую структуру данных), и упомянутая структура данных (или инструкции для модифицирования существующей структуры данных, поддерживаемой программой приложения) может быть послана обратно программе приложения, как показано на фиг.3 стрелкой 316. Если требуется, то другие данные также могут быть возвращены из средства 310 синтаксического разбора программе приложения без отступления от изобретения. Например, как показано на фиг.3, данные, ассоциированные с результатами процесса анализа распознавания (такого как средство распознавания рукописного текста или другое средство распознавания), могут быть возвращены программе приложения, если действия средства 310 синтаксического разбора включали вызовы одного или нескольких модулей, компонентов и/или программ средства распознавания.After parsing, the data associated with
На фиг.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
На фиг.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
В. Узлы контекста и иерархические структуры данных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
Как только неклассифицированные чернила посланы на средство классифицирования, средство анализа компоновки, средство распознавания и/или другую систему синтаксического разбора, по меньшей мере некоторые части чернил могут быть ассоциативно связаны вместе и/или классифицированы на всевозможные различные типы, и структура данных, ассоциированная с чернилами, может быть изменена таким образом, чтобы соответствовать многочисленным ассоциациям и типам, на которые она была классифицирована. На фиг.6В изображена примерная структура 610 данных для электронных чернил, которая была классифицирована как текст, выполненный посредством чернил. Используя технологию синтаксического разбора, включающую обычные средства синтаксического разбора, известные и используемые в технике, может быть произведен синтаксический разбор и сохранение иерархическим образом введенных штрихов электронных чернил (например, данных электронных чернил, собранных между событием опускания пера и последующим во времени событием поднятия пера или некоторым другим образом), в которой связанные отдельные штрихи чернил могут быть сгруппированы вместе и сохранены как слова чернил, линейно размещенные чернильные слова могут быть сгруппированы вместе и сохранены как чернильные строки, связанные чернильные строки могут быть сгруппированы вместе и сохранены как чернильные абзацы, и связанные абзацы могут быть сохранены как электронные документы (например, в отдельных частях страницы, в качестве целых документов или в любых подходящих корневых группировках). Примерная иерархическая структура 610 данных, соответствующая данным электронных чернил, обрабатываемых синтаксическим разбором и сохраняемых таким образом, как изображено на фиг.6В, может включать в себя корневой узел 612, который может соответствовать целому электронному документу, странице или другой группировке, используемой программой приложения. Каждый корневой узел 612 может содержать любое количество узлов 614, соответствующих абзацам или подобным группировкам штрихов электронных чернил. Узлы 614 абзаца могут содержать любое количество узлов 616 отдельных строк, которые, в свою очередь, могут включать в себя любое количество узлов 618 отдельных чернильных слов, которые далее могут содержать любое количество узлов 620 отдельных штрихов, соответствующих отдельным штрихам введенных данных электронных чернил. В необязательном порядке, как отмечено выше, данные штриха могут быть запомнены в качестве «свойства» ассоциированного узла слова, если требуется. Различные узлы 612, 614, 616, 618 и 620 могут хранить любые подходящие данные, относящиеся к различным отдельным штрихам или коллекциям штрихов, содержащихся в узле, подобно данным о пространственной ориентации или расположении и/или другим данным, аналогичным тем, которые описаны выше.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). An exemplary hierarchical data structure 610 corresponding to parsing electronic ink data and stored as shown in FIG. 6B may include a
Возможны другие типы данных и организации структур данных, соответствующие введенным штрихам электронных чернил, без отступления от изобретения. Например, технология классификации, анализа компоновки или средства распознавания может определить, что введенные электронные чернила образуют чернильный рисунок. На фиг.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 separate 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
На фиг.6D изображена альтернативная структура 630а данных для электронных документов, содержащих один или несколько чернильных рисунков. В данном примере электронный документ, или страница, или другая группировка данных (представленная корневым узлом 632а) может включать в себя одну или несколько групп (представленных узлом 634а) рисунков, выполненных посредством электронных чернил, причем их данные ассоциативно связывают вместе и сохраняют иерархическим образом, описанным в связи с фиг.6С, (например, целый электронный документ (представленный корневым узлом 632а) может включать в себя несколько отдельных страниц (каждая представлена узлом 634а группы), и каждая отдельная страница может иметь один или несколько отдельных чернильных рисунков (каждый представлен узлом 636а чернильного рисунка), и каждый отдельный чернильный рисунок может содержать один или несколько отдельных штрихов чернил (каждый представлен узлом 638а штриха или в свойстве узла чернильного рисунка)). Необходимо отметить, что как группы, так и чернильные рисунки могут быть дочерними узлами одного и того же корневого узла или любого узла группы. Кроме того, если требуется, узел группы может содержать дополнительные узлы группы. Конечно, могут быть использованы другие подходящие структуры данных для хранения рисунков электронных чернил без отступления от настоящего изобретения.6D depicts an
Иерархические структуры данных, однако, не ограничиваются использованием с введенными данными электронных чернил. Введенный машинописный текст (например, с клавиатуры) также может быть ассоциирован на различные группы и сохранен в иерархической структуре данных. На фиг.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
Различные структуры данных, описанные выше в связи с фиг.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
Другие электронные данные также могут быть включены в структуру данных электронного документа (включая иерархические структуры данных) без отступления от изобретения. Например, данные изображения (такие как цифровая фотография, графическая информация и т.п.) могут быть включены в структуру данных для электронного документа, например, как показано в структуре 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
На фиг.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
На фиг.6I изображена другая примерная структура 710 данных, которая может быть использована по меньшей мере в некоторых примерах настоящего изобретения. Упомянутая примерная структура 710 данных соответствует электронным данным, анализированным, ассоциативно связанным вместе, сгруппированным и сохраненным в виде таблицы. В данном изображенном примере каждый электронный документ или его часть (представленные корневым узлом 712) могут включать в себя одну или несколько таблиц (представленных узлом 714 таблицы). Таблица в данном примере может состоять из одной или нескольких строк информации (представленных узлом 716 строки таблицы), и каждая строка таблицы может состоять из одной или нескольких отдельных ячеек (представленных узлом 718 ячейки). Отдельные ячейки могут содержать одну или несколько структур данных, включающих, например, любую из всевозможных различных структур данных, описанных выше. В изображенном примере, отдельные ячейки таблицы показаны как потенциально содержащие любое количество изображений (представленных узлом 720 изображения), любое количество абзацев машинописного текста (представленных цепочкой 722 узлов), любое количество группировок (представленных цепочкой 724 узлов), любое количество чернильных рисунков (представленных цепочкой 726 узлов), любое количество дополнительных таблиц (представленных цепочкой 728 узлов) и любое количество списков (представленных цепочкой 730 узлов). Конечно, любые другие подходящие или требуемые структуры данных могут быть включены в таблицу без отступления от настоящего изобретения, включая различные конкретные структуры данных, описанные выше, и/или комбинации и подмножества структур данных, например, аналогичных тем, которые описаны выше.6I shows another
Любые подходящие или требуемые данные могут храниться во всевозможных различных узлах, включая различные типы данных, описанных выше. Для использования с данными обработки, относящимися к аннотациям, может быть полезным по меньшей мере в некоторых примерах изобретения, чтобы различные узлы хранили данные, относящиеся к пространственному положению, ориентации или размещению узла в электронном документе, в необязательном порядке, так как упомянутая пространственная информация относится или связана с другими узлами в структуре данных электронного документа.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.
Также, могут быть использованы другие типы программ синтаксического разбора, средств классифицирования и/или средств распознавания и типы данных без отступления от изобретения. Например, средства распознавания могут быть использованы для анализа, распознавания, группирования и/или ассоциирования электрических или электронных символов (например, резисторов, источников напряжения, конденсаторов и т.д.); музыкальных символов; математических символов; элементов блок-схем; элементов круговой диаграммы и т.п. без отступления от изобретения.Also, other types of parsing programs, classification tools and / or recognition tools and data types may 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, various nodes representing different layout groups can be used, additional types of nodes can be added, or some of the described types of nodes 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 required 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 with 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, the display size is changed, the font is changed, information is added, information is deleted, etc.), then annotations are able to precisely change the 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,
Дополнительно, для того чтобы сохранять штрих 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
На фиг.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
Как и в случае с аннотацией подчеркиванием, описанной в отношении фиг.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
На фиг.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
Как и в случае с аннотациями подчеркиванием и зачеркиванием, описанными в отношении фиг.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
На фиг.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
Если составной электронный документ 1000 полностью синтаксически разобран, то средство синтаксического разбора распознает аннотацию 1002 как содержащую текст, выполненный посредством электронных чернил, и она классифицирует данную аннотацию (например, вследствие ее размещения на полях документа 1000) как аннотацию типа «комментарий на полях». Следовательно, программа синтаксического разбора генерирует соответствующий узел 1016 контекста для комментария на полях. Так как данный комментарий 1002 на полях содержит только текст электронных чернил, то программа синтаксического разбора далее генерирует узел 1018 абзаца, два узла 1020 и 1022 строки и соответствующие узлы 1024, 1026, 1028 чернильного слова и узлы 1030, 1032 и 1034 штриха, ассоциированные с иерархической структурой электронных чернил (как ранее отмечено, в необязательном порядке и в качестве альтернативы, данные штриха чернил могут сохраняться в качестве свойств узла(ов) чернильного слова, и/или узлы строки могут быть исключены из структуры 1010 данных).If the composite
Другое отношение связывания изображено в примере на фиг.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
На фиг.11А и 11В изображен в некоторой степени более сложный пример аннотации, распознаваемой системами и способами в соответствии по меньшей мере с некоторыми примерами настоящего изобретения. В изображенном примере электронный документ 1100 снова включает в себя фразу «Today the sky is green», но в данном случае пользователь аннотировал электронный документ 1100, используя комбинацию различных типов аннотации. Конкретно, пользователь нарисовал аннотацию 1102 типа контейнера, обводящую слово «green», аннотацию 1104 типа комментария на полях, содержащую слово электронных чернил «Blue!» (синее!), и аннотацию 1106 типа соединителя (например, стрелки в данном примере), направленную от аннотации 1102 типа контейнера на аннотацию 1104 типа комментария на полях.On figa and 11B depicts 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
Вследствие относительного положения и пространственной ориентации различных типов аннотации относительно базового документа, текста машинописного документа и полей документа, система синтаксического разбора в соответствии по меньшей мере с некоторыми примерами настоящего изобретения распознает различные типы аннотаций, их содержимое и их взаимосвязь друг с другом и с машинописным текстом электронного документа, как в общих чертах описано выше. На фиг.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 typewritten text electronic document, as outlined above. 11B shows an exemplary
Для того, чтобы сохранить пространственное положение аннотаций с соответствующей частью и пространственным размещением базового текста, различные связи между узлами аннотаций и с соответствующим узлом текста обеспечиваются программой синтаксического разбора и сохраняются в структуре 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
Как отмечено выше, средство синтаксического разбора в соответствии с данным примером изобретения дополнительно распознает, что электронный документ 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
На фиг.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
В данном примере аннотация 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-
Связанная аннотация типа «блок-схемы» изображена на фиг.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
На фиг.13В изображена примерная структура 1320 данных, которая может быть ассоциирована с аннотацией типа блок-схемы электронного документа 1300 на фиг.13А, если произведен ее полный синтаксический разбор. В упомянутой примерной структуре 1320 данных корневой узел 1322, который может соответствовать всему электронному документу 1300 или его некоторой части, обеспечен в качестве родительского узла для узлов в аннотации типа блок-схемы. Первым узлом контекста, относящимся к конкретным структурам аннотации, является узел 1324 рисунка чернил, соответствующий контейнеру 1304 чернил. Узел 1326 контейнера чернил предусмотрен в качестве дочернего узла для узла 1324 рисунка чернил, и конкретный штрих(и), ассоциированный с аннотацией-контейнером 1304 чернил, сохраняется в концевом узле(ах) 1328 или в качестве свойств для узла 1326 контейнера чернил (или другого узла).FIG. 13B illustrates an
Как отмечено выше в отношении фиг.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
Аннотация дополнительно включает в себя аннотацию-соединитель 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
Аналогично, аннотация может включать в себя два охватывателя, соединенные посредством соединителя с письменным комментарием, таким как, например, «поменять их!». Если одна часть аннотации перемещается, то может потребоваться независимое перемещение другой части аннотации, например, когда слова вводятся между двумя охватывателями. Связи между узлами контекста, представляющими аннотации электронных чернил, и узлами, представляющими нечернильное содержимое, могут быть использованы программным приложением для перемещения частей аннотаций и затем обратного их связывания вместе, когда будет завершена операция размещения.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
На фиг.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
Для того чтобы завершить структуру данных аннотации упомянутого примера, данные, ассоциированные с аннотацией-соединителем 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
На фиг.15А-15С изображены примеры электронного документа 1500 и примерные структуры данных, которые включают в себя, выполненную посредством электронных чернил аннотацию в виде таблицы, имеющей множество строк и столбцов. Конкретно, как изображено в примере на фиг.15А, электронный документ 1500 включает в себя таблицу 1502 с двумя строками и двумя столбцами (образуя в итоге четыре ячейки), и каждая ячейка таблицы составлена из границ, выполненных посредством электронных чернил, и содержит входные данные в виде текста, выполненного посредством электронных чернил.FIGS. 15A-15C illustrate examples of an
На фиг.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
На фиг.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
Конечно, различные фигуры, относящиеся к различным примерным типам аннотации, описанным выше, описывают просто примеры возможных типов аннотации, использование аннотаций и информацию, которая может быть включена в аннотации. Для специалиста в данной области очевидно, что могут быть выполнены многочисленные модификации и изменения без отступления от изобретения. Например, аннотации могут содержать многочисленные различные типы данных (такие как выполненные посредством электронных чернил текст, рисунки, машинописный текст и изображения и т.д.) во многих различных комбинациях и перестановках без отступления от изобретения.Of course, various figures relating to the various exemplary types of annotations described above describe simply examples of possible types of annotations, 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
На фиг.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
Таким образом, вместо хранения штрихов в узлах отдельных штрихов различные узлы могут иметь ассоциированное свойство «штрихов», которое хранит данные, соответствующие штрихам, ассоциированным с узлом. Например: (а) узлы неклассифицированного контекста могут содержать одно или несколько свойств «штрихов», имеющих один или несколько штрихов, которые необходимо проанализировать; (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
Возвращаясь теперь к фиг.17, в соответствии с некоторыми примерами изобретения программное приложение 1701 создает и поддерживает свой собственный объект 1709 контекста анализа. Для упомянутых программных приложений 1701 программное приложение 1701 может просто обеспечить ссылку на объект 1709 анализа. Для упомянутых программных приложений 1701, однако, приложение 1701 должно включать в себя механизмы, необходимые для создания, заполнения и поддержания объекта анализа. Некоторые разработчики программного обеспечения, однако, не хотят брать на себя труд создавать такие механизмы в приложении 1701.Returning now to FIG. 17, in accordance with some examples of the invention, software application 1701 creates and maintains its own
Следовательно, в соответствии с другими примерами изобретения программное приложение 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
Обычно объект 1709 контекста анализа содержит информацию об элементах документа для всего документа 1703. Также необходимо заметить, однако, что в соответствии с некоторыми примерами изобретения объект 1709 контекста анализа может содержать информацию для элементов документа только в части документа 1703. Т.е. объект 1709 контекста анализа может представлять только элементы документа в пространственной зоне документа, содержащей новые или «невысохшие» чернила или другие данные. Если все элементы документа в зоне документа, включающей электронные чернила, были уже проанализированы, то тогда ранее проанализированные элементы документа не могут быть включены в объект 1709 контекста анализа. В качестве другой альтернативы, программа приложения может поддерживать отдельный объект 1709 контекста анализа для каждой страницы или другого поднабора данных, относящихся ко всему электронному документу 1703.Typically, the
Если программное приложение 1701 создало объект 1709 контекста анализа, то на шаге 1603 инструментальное средство 1901 анализа чернил копирует по меньшей мере часть объекта 1709 контекста анализа, как показано на фиг.19. Более конкретно, если объект 1709 контекста анализа не ограничивается областями, содержащими новые чернила и/или другие данные, как описано выше, то тогда программное приложение 1701 обозначает области документа 1703, которые содержат новые чернила и/или другие данные, которые должны быть проанализированы. Программное приложение 1701 затем вызывает инструментальное средство 1901 анализа чернил для копирования части объекта 1709 контекста анализа, соответствующей обозначенной области документа 1703. (Конечно, если объект 1709 контекста анализа уже ограничен описанием областей, которые содержат новые чернила, то тогда инструментальное средство 1901 анализа чернил может копировать весь объект 1709 контекста анализа.)If the software application 1701 created the
Хотя программе 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
В ответ на вызов для анализа новых данных инструментальное средство 1901 анализа чернил выполняет различные обратные вызовы объекта 1709 контекста анализа, если необходимо, для получения информации от объекта 1709 контекста анализа, необходимой для анализа новых чернил и/или других данных в области, обозначенной программным приложением 1701. Например, в дополнение к новым чернилам и/или другим данным инструментальное средство 1901 анализа чернил может запросить у объекта 1709 контекста анализа информацию, касающуюся чернил и/или других данных в обозначенной области, которые уже были проанализированы, или информацию, касающуюся нечернильных элементов документа в обозначенной области. «Обозначенная область» может, по меньшей мере в некоторых примерах изобретения, соответствовать данным в пространственной зоне и/или около зоны, содержащей новые чернила или другие данные, подлежащие анализу.In response to a challenge to analyze new data, the
Как ранее проанализированные чернила, так и нечернильные элементы документа, в частности, те элементы, которые расположены около вновь введенных данных, подлежащих анализу, могут предоставить контекст, который улучшит анализ непроанализированных чернил иди других данных. Так как инструментальное средство 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
Также необходимо заметить, что, хотя инструментальное средство 1901 анализа чернил создает независимый от документа объект 1903 контекста анализа, программное приложение 1701 не должно изменять объект 1709 контекста анализа (и оно не может позволить другим потокам в программе приложения и/или другим программам изменить объект 1709 контекста анализа в течение данного периода времени). Т.е. программное приложение 1701 не должно вводить новых данных в документ 1703 в течение данного периода времени, и оно не должно разрешать делать это другим потокам и/или программам приложения. Процесс создания независимого от документа объекта 1903 контекста анализа относительно быстрый, однако и обычно, он не оказывает значительного влияния на работу программного приложения 1701. Если потребуется, однако, попытки ввода данных в документ 1703 могут быть кэшированы и введены в систему после создания независимого от документа объекта 1903 контекста анализа.It should also be noted that although the
Как только создан независимый от документа объект 1903 контекста анализа, весь последующий анализ непроанализированных чернил и/или других данных может быть выполнен в отношении независимого от документа объекта 1903 контекста анализа, а не в отношении объекта 1709 контекста анализа, позволяя программному приложению 1701 продолжать свою нормальную работу без задержки или останова в результате анализа непроанализированных чернил и/или других данных. Программное приложение 1701 может даже вводить новые данные 1705 электронных чернил в документ 1703 (и в объект 1709 контекста анализа), не создавая помех анализу непроанализированных чернил в независимом от документа объекте 1903 контекста анализа.Once a document-independent
Следовательно, после создания независимого от документа объекта 1903 контекста анализа на шаге 1605 инструментальное средство 1901 анализа чернил создает отдельный поток анализа для анализа чернил в независимом от документа объекте 1903 контекста анализа. Следовательно, на шаге 1607 программное приложение 1701 может возобновить управление основным потоком обработки и может продолжить свою нормальную работу. Затем на шаге 1609 инструментальное средство 1901 анализа чернил предоставляет независимый от документа объект 1903 контекста анализа процессу первого анализа для анализа. Например, как показано на фиг.20, инструментальное средство 1901 анализа чернил может передать независимый от документа объект 1903 контекста анализа процессу 2001 синтаксического разбора для синтаксического разбора с использованием потока анализа. Процесс синтаксического разбора дополнительно может включать в себя один или несколько процессов классификации без отступления от изобретения (например, для классификации чернил и/или других данных на всевозможные различные типы, такие как чернильный текст, чернильные рисунки, таблицы, диаграммы, графики, изображения, музыка, математика, рисунки, содержащие специальные символы (такие как электрические схемы с резисторами, конденсаторами и т.п.) и т.д.). Необходимо отметить, что в соответствии с некоторыми примерами изобретения инструментальное средство 1901 анализа чернил может выполнить копию независимого от документа объекта 1903 контекста анализа. Как подробно описано ниже, копия исходной формы независимого от документа объекта 1903 контекста анализа может быть использована для согласования результатов анализа процесса анализа с текущим состоянием документа 1703.Therefore, after creating the document-independent
После того как процесс первого анализа проанализирует чернила и/или другие данные в независимом от документа объекте 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
Как подробно описано ниже, с некоторыми примерами изобретения результатами 2101 анализа может быть независимый от документа объект 1903 контекста анализа, первоначально представленный процессу анализа, но модифицированный для включения новой информации, созданной процессом первого анализа (например, результатов синтаксического разбора в данном примере). В соответствии с другими примерами изобретения, однако, результатами 2101 анализа может быть модифицированная копия независимого от документа объекта 1903 контекста анализа. Посредством включения новой информации, созданной процессом первого анализа, в копию независимого от документа объекта 1903 контекста анализа, исходный независимый от документа объект 1903 контекста анализа может быть сохранен для использования, например, средством согласования и/или в других процессах анализа, как отмечено ранее.As described in detail below, with some examples of the invention, the
На фиг.22 изображен пример того, как процесс синтаксического разбора, такой как процесс 2001 синтаксического разбора, может модифицировать дерево 1801 данных, чтобы показать изменения компоновки, созданные операцией синтаксического разбора. Как видно на данной фигуре, процесс 2001 синтаксического разбора определил, что штрих непроанализированных чернил, представленный данными 1823 штриха, является частью слова, представленного посредством узла 1813 слова. Следовательно, процесс синтаксического разбора разъединил данные 1823 штриха от корневого узла 1803 и вместо этого ассоциировал их с узлом 1813 слова.FIG. 22 shows an example of how a parsing process, such as a
Процесс синтаксического разбора также определил, что штрихи чернил, представленные данными 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
Как отмечено ранее, программное приложение 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
В соответствии с некоторыми примерами изобретения программное приложение 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
Необходимо заметить, что, в то время как инструментальное средство 1901 анализа чернил согласовывает результаты 2101 анализа с текущим объектом 1709 контекста анализа, программное приложение 1701 не должно изменять объект 1709 контекста анализа (и оно не должно разрешать объекту 1709 контекста анализа изменяться посредством других потоков в программе приложения и/или любой другой программы приложения). Т.е. программное приложение 1701 не должно вводить новые данные в документ 1703, и/или оно не должно разрешать другим потокам и/или программе приложения вводить новые данные в документ 1703 до тех пор, пока не завершится согласование. Подобно процессу первоначального создания независимого от документа объекта 1903 контекста анализа процесс согласования относительно быстрый, и обычно не оказывает существенного влияния на работу программного приложения 1701. Если потребуется, однако, предпринимаемый пользователем ввод может быть кэширован и введен после завершения процесса согласования.It should be noted that while the
После того, как инструментальное средство 1901 анализа чернил согласует результаты 2101 анализа с объектом 1709 контекста анализа для текущего состояния документа 1703, инструментальное средство 1901 анализа чернил, в необязательном порядке, может предоставить согласованные результаты анализа процессу второго анализа для дополнительного анализа. Например, как показано на фиг.24, инструментальное средство 1901 анализа чернил может предоставить согласованные результаты 2401 синтаксического разбора процессу 2003 распознавания чернил для распознавания (например, для распознавания рукописного текста, музыки, математической информации или других типов специальных данных). В частности, инструментальное средство 1901 анализа чернил снова создает отдельный поток анализа для выполнения процесса второго анализа на шаге 1619. Так как инструментальное средство 1901 анализа чернил создает данный отдельный поток для выполнения процесса второго анализа, то программное приложение 1701 снова может возобновить свою нормальную работу на шаге 1621, и оно даже может принимать новые введенные данные, включая новые данные 1705 электронных чернил.After the
Затем на шаге 1623 инструментальное средство 1901 анализа чернил предоставляет согласованные результаты 2401 процесса первого анализа процессу второго анализа. После того, как начался процесс второго анализа, приложение 1701 может запустить другое выполнение процесса первого анализа в отношении новых непроанализированных чернил. Таким образом, одновременно могут выполняться многочисленные процессы анализа, так что, в то время как процесс второго анализа работает над результатами процесса первого анализа, приложение 1701 может повторно запустить процесс первого анализа для подготовки следующего набора результатов анализа.Then, in step 1623, the
Является выгодным то, что параллельное выполнение процессов анализа может улучшить работу программного приложения 1701. Например, процесс анализа синтаксического разбора обычно быстрый относительно процесса анализа распознавания, и результаты анализа синтаксического разбора могут быть использованы для реализации правильного поведения при выборе и поведения при вставлении промежутков без использования результатов анализа распознавания. Таким образом, так как различные процессы анализа могут выполняться параллельно, то новым чернилам, которые добавлены к документу 1703, не придется ожидать завершения процесса анализа распознавания в отношении данных более ранних чернил, до того как они могут быть правильно выбраны или правильно введены промежутки в них. Далее, различные примеры изобретения выполняют асинхронный анализ чернил, чтобы оградить разработчиков приложения, а также разработчиков алгоритмов для средств синтаксического разбора и распознавания от проблем многопоточной обработки, улучшая удобство сопровождения и упрощая процесс разработки для обоих групп, и допускают изменения во взаимодействии между процессами анализа без изменений в приложении.It is beneficial that parallel execution of the analysis processes can improve the performance of the 1701 software application. For example, the parsing process is usually quicker than the recognition process, and the results of the parsing 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, the 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
Таким образом, различные примеры изобретения согласовывают результаты процесса предыдущего анализа с текущим состоянием документа 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 of coordination may 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
Как ранее отмечено, программное приложение 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
Опять же, в соответствии с некоторыми примерами изобретения программное приложение 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 may automatically reconcile the results of the
Из вышеприведенного описания очевидно, что методики анализа чернил в соответствии с различными примерами изобретения позволяют проводить анализ электронных чернил асинхронно относительно программного приложения 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 data, 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 use 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 may 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
Кроме того, так как процессы анализа необязательно должны быть частью программного приложения 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 exclude the creation of an
Также, хотя выше приведено описание асинхронного анализа электронных чернил, необходимо заметить, что различные примеры изобретения могут дать возможность инструментальному средству 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 анализа чернил выполняет разнообразные функции, обеспечивающие обработку электронных чернил. Например, в соответствии с различными вариантами реализации изобретения инструментальное средство 1901 анализа чернил принимает информацию от программного приложения 1701, обозначающую одну или несколько областей в документе 1703 с данными чернил, подлежащими анализу, запрашивает программное приложение 1701 на получение информации, касающейся данных областей, и затем составляет независимый от документа объект 1903 контекста анализа, основываясь на упомянутой информации. Далее, инструментальное средство 1901 анализа чернил предоставляет независимый от документа объект 1903 контекста анализа одному или нескольким процессам анализа для анализа и затем согласовывает результаты процесса анализа с текущим состоянием документа 1703. Различные процессы могут выполняться с использованием отдельных потоков (как описано выше), при помощи пула потоков, в виде отдельных процессов, при помощи отдельных машин в кластере или любым другим подходящим или необходимым образом без отступления от изобретения.As described above, the
В соответствии с различными примерами изобретения разнообразные программные объекты и инструментальные средства могут быть использованы для реализации инструментального средства 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
Для специалиста в данной области очевидно, что интерфейс прикладного программирования может быть организован в виде категорий или «классов», относящихся к программным объектам. «Объект» представляет собой коллекцию запоминаемых значений состояния и исполняемых поведений. Более конкретно, объект может поддерживать различные типы значений состояния, упоминаемых как «поля» и «свойства», которые могут быть ассоциированы с объектом или извлечены им. В отношении внешних программных приложений или другого программного объекта данные свойства могут быть только считаны (идентифицируются использованием терма «{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
Компоненты класса «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-
Обращаясь сначала к классу 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
В соответствии с различными примерами изобретения класс 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 может включать в себя свойство с именем «Rootnode {get;}», которое идентифицирует самый верхний или корневой узел контекста в объекте 1709 контекста анализа. Как подробно описано выше, данный корневой узел контекста содержит, в качестве дочерних узлов контекста, все другие объекты узлов контекста для данного объекта 1709 контекста анализа. Необходимо заметить, что в соответствии с различными примерами изобретения корневой узел контекста должен быть узлом контекста типа «Root». Также необходимо отметить, что в соответствии с примерами изобретения, где приложение 1701 реализует свой собственный объект 1709 контекста анализа, объект 1709 контекста анализа может иметь другие узлы контекста в качестве сестринских узлов корневого узла контекста, но компоненты класса Ink Analyzer могут ограничиваться рассмотрением узлов контекста, которые содержит корневой узел контекста.Further, the Analysis Context class may include a property called “Rootnode {get;}” that identifies the topmost or root context node in the
Класс 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 класс 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 called “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 along 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 can 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 (eg, 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 in the specified waitRegion zone are required. More specifically, a call to this method identifies the
Когда вызывается любой из этих методов 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 has been successfully started. Again, the AnalysisContext value passed to the method identifies the
Необходимо отметить, что каждый из этих трех методов 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
Результаты анализа (т.е. значение свойства AnalysisResultsEventArgs) передаются обратно с помощью этого метода, так как они содержат открытую структуру результатов и закрытую структуру результатов. Возвращается открытая структура, так что программное приложение 1701 может предварительно просмотреть изменения, которые будут иметь место на этапе согласования. Закрытая структура включена для того, чтобы предотвратить изменение программным приложением 1701 любого результата анализа перед процессом согласования.Analysis results (i.e., the value of the AnalysisResultsEventArgs property) are passed back using this method, since 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
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
Возможные типы узлов контекста могут быть определены в перечислении 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 drawing; 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 may 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. The Recognition Result is available for each context node in a document-independent context object for 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 on 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 thus 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 above 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 in accordance with 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
Далее, данный класс может включать в себя метод «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 node of the context 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,
Далее, данный класс может включать в себя метод с именем «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 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 may 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 (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 object 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 can 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 sets the AnalysisRegion object to be merged or added 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 lattice 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 additionally 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. According to 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 the use of various sequential analysis processes (for example, between the parsing process 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 row node contains a result row, 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 can 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 may 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 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 called “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 by 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, a container node may be referred to as a SourceNode, while a 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 may additionally include a “SpansHorizontally” type, which describes that one node runs along the length in the horizontal direction of another node, and a “SpansVertically” type, which describes that one node runs along the length in the vertical direction of another 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 said value is used, the “CustomLinkType” property of the ContextLink object can provide more details regarding the purpose of the association.
Следовательно, 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 through 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
Программное приложение 1701 может дополнительно «закрепить» существующие данные 1705 электронных чернил, для того чтобы запретить их изменение процессом анализа. Например, если пользователь вручную задает компоновку или классификацию для группы штрихов чернил, то тогда программное приложение 1701 может обозначить, что данные штрихи чернил остаются в упомянутой конкретной компоновке или с упомянутой классификацией независимо от результатов, полученных процессом синтаксического разбора. Аналогично, пользователь может задать конкретный результат распознавания для группы штрихов чернил независимо от результатов, полученных процессом распознавания.Software application 1701 can optionally “pin” existing
Различные типы закрепления могут быть использованы в соответствии с различными вариантами реализации изобретения. Например, инструментальное средство 1901 анализа чернил может разрешить программному приложению 1701 «жестко» закреплять чернила. В соответствии с упомянутой схемой штрихи чернил не могут быть добавлены ни к какому из концевых узлов под закрепленным узлом, штрихи не могут быть удалены из каких-либо концевых узлов под закрепленным узлом, не разрешено ни добавление, ни удаление дочерних узлов, и не разрешено повторное образование родительских узлов для любого узла под закрепленным узлом. Альтернативно или дополнительно, инструментальное средство 1901 анализа чернил может разрешить «жесткое» закрепление при помощи более поздних более штрихов, которое разрешает добавление более поздних штрихов при заданных условиях, запрещает удаление штрихов из любого концевого узла под закрепленным узлом, запрещает добавление или удаление дочерних узлов и запрещает повторное образование родительских узлов для любого узла под закрепленным узлом. Далее, инструментальное средство 1901 анализа чернил может разрешить программному приложению 1701, альтернативно или дополнительно, «мягко» закреплять чернила. В соответствии с упомянутой схемой штрихи не могут быть удалены из какого-либо концевого узла под закрепленным узлом, существуют заданные правила, разрешающие добавление штрихов (разрешается добавление поздних штрихов), и разрешены перегруппировка, добавление и удаление дочерних узлов. Необходимо заметить, что закрепление может быть удалено, и, если закрепление было удалено, то ранее закрепленные узлы и их дочерние узлы затем могут рассматриваться как «измененные» или требующие повторного анализа.Various types of fastening can be used in accordance with various embodiments of the invention. For example, the
Далее, процесс обработки чернил в соответствии с различными примерами изобретения может использовать многочисленные процессы анализа, как подробно описано выше. Следовательно, результаты процесса более раннего анализа могут модифицировать данные 1705 электронных чернил, в то время как выполняется последующий процесс второго анализа. Следовательно, результаты процесса анализа должны быть согласованы с текущим состоянием документа 1703, так что только те результаты, которые являются действительными для текущего состояния документа 1703, применяются к его объекту 1709 контекста анализа. Т.е. модифицируется текущий объект 1709 контекста анализа (и, в некоторых случаях, результаты процесса анализа), чтобы исключить расхождения или «коллизии» между результатами процесса анализа и текущим состоянием документа 1703.Further, an 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
Необходимо заметить, что для того, чтобы результаты процесса согласования были действительными, состояние документа 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 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 approval process be performed as quickly as possible in order to eliminate user dissatisfaction with the performance of software application 1701. Another issue in the approval 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
В соответствии с различными примерами изобретения процесс анализа и процесс согласования могут придерживаться одного или нескольких следующих соглашений, для того чтобы повысить эффективность и удобство процесса согласования. Во-первых, процесс анализа может, насколько возможно, повторно использовать узлы для элемента документа в независимом от документа объекте 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
В дополнение к этим соглашениям процесс согласования должен обычно соблюдать правила интерфейса, диктуемые объектом 1709 контекста анализа. Например, в соответствии с некоторыми вариантами реализации изобретения объект 1709 контекста анализа может не разрешать удаление узла для элемента документа за исключением того случая, когда он не имеет дочерних узлов.In addition to these conventions, the reconciliation process should typically comply with the interface rules dictated by the
Как ранее отмечено, коллизии имеют место тогда, когда процесс анализа выполняет изменение в независимом от документа объекте 1903 контекста анализа, который конфликтует некоторым образом с изменением в объекте 1709 контекста анализа, которое было сделано после инициирования процесса анализа. Коллизии могут быть разделены на два типа: обязательные коллизии и дискреционные коллизии.As previously noted, collisions occur when the analysis process makes a change in the document-independent
Обязательные коллизии имеют место тогда, когда нельзя применить изменение, сделанное процессом анализа в независимом от документа объекте 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
Дискреционная коллизия имеет место тогда, когда программное приложение 1701 изменило значение в объекте 1709 контекста анализа, которое связано со значением, измененным процессом анализа в независимом от документа объекте 1903 контекста анализа, но ограничения закрепления, ограничения повторного использования элемента и присущие ограничения интерфейса для объекта 1709 контекста анализа все же могут разрешить применение изменения, сделанного процессом анализа в объекте 1709 контекста анализа. Дискреционная коллизия все же может быть применена в качестве изменения объекта 1709 контекста анализа или аннулирована. Далее, процесс согласования просто может совсем проигнорировать некоторые типы дискреционных коллизий.Discretionary conflict occurs when the software application 1701 changes the value in the
Один графический пример дискреционной коллизии имеет место тогда, когда исходный узел как в объекте 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
Следовательно, различные примеры изобретения не применяют изменения для дискреционной коллизии при обновлении объекта 1709 контекста анализа, основываясь на результатах процесса анализа. Хотя упомянутые критерии могут потребовать дополнительной обработки для идентификации и блокирования изменений, основываясь на дискреционных коллизиях, упомянутый критерий относительно просто реализовать и просто поддерживать. Конечно, другие примеры изобретения могут выполнять изменения, соответствующие дискреционным коллизиям согласно другим критериям. Более конкретно, данные альтернативные примеры могут осуществлять изменения из дискреционных коллизий, которые не создают постоянных логически несовместимых взаимосвязей в объекте 1709 контекста анализа.Therefore, various examples of the invention do not apply changes to discretionary conflict when updating the
Также необходимо заметить, что коллизии могут иметь транзитивный эффект, заключающийся в том, что одна коллизия может создавать другую. Например, процесс анализа может создать узел 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
Различные примеры изобретения могут использовать основанный на протоколировании подход для согласования результатов процесса анализа с текущим состоянием документа 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
Для того чтобы выполнить процесс согласования с использованием подхода протоколирования изменений, инструментальное средство 1901 анализа чернил исследует каждую запись изменения в хронологическом порядке изменений. Т.е. инструментальное средство 1901 анализа чернил идентифицирует каждое изменение, сделанное в независимом от документа объекте 1903 контекста анализа. Для каждого изменения инструментальное средство 1901 анализа чернил может выполнить процесс, изображенный на фиг.27. Сначала, на шаге 2701 инструментальное средство 1901 анализа чернил предпринимает попытку доступа к соответствующим узлам в текущем объекте 1709 контекста анализа, к которым необходимо применить изменение. Необходимо заметить, что данный шаг извлечения может завершиться неуспешно, если программное приложение 1701 удалило один или несколько необходимых узлов из объекта 1709 контекста анализа, приводя к обязательной коллизии.In order to complete the reconciliation process using the change logging approach, the
Затем, на шаге 2703 инструментальное средство 1901 анализа чернил определяет, создает ли изменение обязательную или дискреционную коллизию. Процедура выполнения данного определения подробно объясняется ниже. На шаге 2705 инструментальное средство 1901 анализа чернил либо делает изменение, либо запрещает изменение, если оно создает обязательную коллизию или дискреционную коллизию, запрещенную критерием для процесса согласования. Например, если изменение создает обязательную коллизию или дискреционную коллизию, запрещенную критерием для процесса согласования, то тогда инструментальное средство 1901 анализа чернил может блокировать изменения узлов в объекте 1709 контекста анализа, представляющих соответствующую область документа 1703, в которой должно было быть сделано изменение. Если, с другой стороны, изменение применяется, то тогда инструментальное средство 1901 анализа чернил может вызвать соответствующий метод, чтобы сделать требуемое изменение необходимых узлов в объекте 1709 контекста анализа.Then, at step 2703, the
Если процесс анализа добавляет новый узел элемента к объекту 1709 контекста анализа, но затем не может переместить узлы штриха в новый узел, то тогда процесс анализа также не сделает попытку удалить узел элемента на том предположении, что узлы штриха были успешно перемещены в новые узлы. Таким образом, в независимом от документа объекте 1903 контекста анализа будет узел элемента, который соответствует пустому узлу в текущем объекте 1709 контекста анализа. Следовательно, если были обработаны все изменения в объекте 1709 контекста анализа, то на шаге 2707 инструментальное средство 1901 анализа чернил просматривает независимый от документа объект 1903 контекста анализа для удаления любых «пустых» узлов в объекте 1709 контекста анализа, которые соответствуют узлам в независимом от документа объекте 1903 контекста анализа. Данный шаг удаления пустых узлов является необязательным и может быть опущен без отступления от изобретения.If the analysis process adds a new element node to the
Необходимо заметить, что независимый от документа объект 1903 контекста анализа не должен содержать никаких пустых узлов, и процесс согласования должен запретить создание пустых узлов в независимом от документа объекте 1903 контекста анализа. Также необходимо заметить, что данный шаг, как исключение, не предпринимает попытку удалить корневой узел объекта 1709 контекста анализа, даже если он пустой. Наконец, на шаге 2709 инструментальное средство 1901 анализа чернил идентифицирует любые коллизии между результатами анализа в независимом от документа объекте 1903 контекста анализа и текущем объекте 1709 контекста анализа для программного приложения 1701, так что программное приложение 1701 может включать области документа 1703, затронутые коллизиями, в последующий процесс анализа.It should be noted that the document-independent
Возвращаясь теперь к обнаружению коллизий на вышеупомянутом шаге 2703, если доступны все узлы в объекте 1709 контекста анализа, соответствующие изменениям в независимом от документа объекте 1903 контекста анализа, то все другие возможные обязательные коллизии для каждого узла в объекте 1709 контекста анализа могут быть обнаружены статически (или, альтернативно, отсутствие обязательной коллизии может быть обнаружено для каждого узла). Более конкретно, обязательные коллизии могут быть обнаружены, основываясь на правилах, обозначенных интерфейсом для объекта 1709 контекста анализа.Returning now to collision detection in the aforementioned step 2703, if all nodes in the
Дискреционные коллизии, однако, обычно не могут быть идентифицированы без дополнительной информации о состоянии в отношении документа 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
Например, критерий согласования может определять, что добавление или удаление дочернего узла штриха из родительского узла программным приложением 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
Продолжая данный пример, следующее изменение в записи протокола может состоять из другого узла штриха, перемещаемого для зависимости от родительского узла в независимом от документа объекте 1903 контекста анализа. Если нет обязательных коллизий из-за данного изменения, то тогда инструментальному средству 1901 анализа чернил разрешается сделать соответствующее изменение в объекте 1709 контекста анализа. Когда инструментальное средство 1901 анализа чернил проверяет исходную версию независимого от документа объекта 1903 контекста анализа с целью определения того, существует ли дискреционная коллизия, однако, оно делает вывод о том, что родительский узел в текущем объекте 1709 контекста анализа имеет на один зависимый узел штриха больше, чем родительский узел в исходной версии независимого от документа объекта 1903 контекста анализа, так что оно ошибочно определит, что существует дискреционная коллизия (т.е. оно определит, что существует коллизия, основываясь на изменениях, которые оно сделало).Continuing this example, the next change in the protocol entry may consist of another stroke node being moved to depend on the parent node in the document-independent
Следовательно, основанный на протоколировании процесс согласования должен исключать предыдущие изменения, сделанные в результате согласования, из сравнения между текущим объектом 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
Альтернативно или дополнительно, различные примеры изобретения могут поддерживать кэш элементов в текущем объекте 1709 контекста анализа, соответствующих элементам в независимом от документа объекте контекста анализа, с результатами анализа, которые используются всякий раз, когда извлекаются соответствующие элементы. Нет предварительной передачи, но кэш заполняется первый раз, когда определено, что соответствующий элемент свободен от дискреционных коллизий. В необязательном порядке, кэш также может отслеживать то, какие элементы в результатах имели дискреционные коллизии. Данный подход имеет лучшие рабочие характеристики, чем подход с передачей нахождения дискреционных коллизий, когда протокол изменений короткий, но может иметь худшие рабочие характеристики, если независимый от документа объект 1903 контекста анализа с результатами анализа содержит много узлов. Он также не сложнее, чем другой подход.Alternatively or additionally, various examples of the invention may maintain a cache of elements in the current
Необходимо заметить, что родительские узлы контекста элементов в кэше также должны кэшироваться. Более конкретно, изменение дочернего узла контекста рассматривается как изменение свойств его родительского узла контекста. Таким образом, родительский узел контекста узла контекста, хранимого в кэше, также требует оценки в отношении изменений, сделанных программным приложением 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 made by the 1701 software application at the moment. 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-
Вместо «основанной на протоколировании» методики согласования результатов анализа с текущим состоянием документа 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
Используя упомянутый подход инструментальное средство 1901 анализа чернил сначала строит карту штрихов. Т.е. для каждого концевого узла чернил в исходной версии независимого от документа объекта 1903 контекста анализа, если существует соответствующий узел в текущем объекте 1709 контекста анализа, то тогда концевой узел добавляется к хэш-таблице (или другой подходящей структуре данных). Таким образом, хэш-таблица отображает идентификаторы GUID (или другие уникальные идентификаторы узла) штриха в исходной версии независимого от документа объекта 1903 контекста анализа для ссылок на концевые узлы в текущем объекте 1709 контекста анализа.Using the above approach, the
Затем инструментальное средство 1901 анализа чернил идентифицирует все узлы, которые программное приложение 1701 изменило в объекте 1709 контекста анализа. Это может быть сделано с использованием методик для определения дискреционных коллизий, подробно описанных выше. Для каждого узла в исходной версии независимого от документа объекта 1903 контекста анализа, если существует соответствующий узел в текущем объекте 1709 контекста анализа, и он отличается в некоторой степени существенным образом от узла в исходной версии независимого от документа объекта 1903 контекста анализа, то тогда инструментальное средство 1901 анализа чернил определяет, что данный узел был изменен приложением и представляет собой потенциальную коллизию. Ссылки на такие узлы сохраняются в первом списке, соответствующем узлам результатов анализа, которые не должны добавляться к объекту 1709 контекста анализа (ниже упоминаемому как список resultsNodesNotToAdd), и во втором списке узлов, которые создают дискреционные коллизии.Then, the
Для каждого узла в исходной версии независимого от документа объекта 1903 контекста анализа инструментальное средство 1901 анализа чернил отыскивает соответствующие узлы как в независимом от документа объекте 1903 контекста анализа с результатами анализа, так и в текущем объекте 1709 контекста анализа. Для каждого узла в объекте 1709 контекста анализа инструментальное средство 1901 анализа чернил определяет, удалило ли программное приложение 1701 узел. Такие узлы существуют в исходной версии независимого от документа объекта 1903 контекста анализа, но не имеют соответствующего узла в объекте 1709 контекста анализа. Соответствующий узел в независимом от документа объекте 1903 контекста анализа с результатами анализа добавляется к списку resultsNodesNotToAdd, если он существует.For each node in the original version of the document-independent
Затем инструментальное средство 1901 анализа чернил определяет, удалил ли процесс анализа узел из независимого от документа объекта 1903 контекста анализа. Это обнаруживается, когда существует соответствующий узел в текущем объекте 1709 контекста анализа, и он не изменился, но не существует соответствующего узла в независимом от документа объекте 1903 контекста анализа с результатами анализа. Узлы, удаленные процессом анализа, могут быть сохранены в списке удаленных узлов. Такой узел не добавляется к текущему объекту 1709 контекста анализа, но он не входит в список resultsNodesNotToAdd, потому что не существует соответствующего узла в независимом от документа объекте 1903 контекста анализа с результатами анализа.Then, the
Если программное приложение 1701 ни удалило, ни изменило узел, и процесс анализа не удалил узел, то тогда инструментальное средство 1901 анализа чернил может определить, изменил ли процесс анализа узел. Эти же методики, что и те, которые были описаны выше для использования при обнаружении изменений, сделанных программным приложением 1701, могут быть использованы для обнаружения изменений, сделанных процессом анализа. Узлы, которые были изменены процессом анализа, добавляются к списку resultsNodesNotToAdd, и изменения передаются посредством вызова соответствующих методов для узлов в объекте 1709 контекста анализа. Если ни программное приложение 1701, ни процесс анализа не изменили или не удалили узел, то тогда ничего не произошло с данным узлом, и инструментальное средство 1901 анализа чернил добавляет узел в список resultsNodesNotToAdd, так как узел существует в независимом от документа объекте 1903 контекста анализа с результатами анализа и не должен добавляться к объекту 1709 контекста анализа.If the software application 1701 neither deleted nor changed the node, and the analysis process did not delete the node, then the
Затем для каждого узла в независимом от документа объекте 1903 контекста анализа с результатами анализа, если узел не находится в списке resultsNodesNotToAdd, то тогда инструментальное средство 1901 анализа чернил может передавать любые изменения узлу при помощи процесса анализа посредством создания соответствующего узла в объекте 1709 контекста анализа. Обход узлов в результатах анализа может выполняться с использованием обхода в прямом порядке сверху вниз, так что гарантируется, что родительские узлы создаются перед дочерними узлами.Then, for each node in the document-independent
При создании нового концевого узла в объекте 1709 контекста анализа любые штрихи чернил, ассоциированные с узлом, которые содержатся в результатах анализа, также могут быть перемещены в новый узел из других узлов в объекте 1709 контекста анализа. Описанная выше карта штрихов затем может быть использована для идентификации элементов источника для перемещения штрихов. Штрихи чернил не перемещаются, если элемент источника не существует (создавая обязательную коллизию), или если элемент источника содержится в списке дискреционных коллизий, также отмеченном выше. Сохраняя необязательные вызовы к объекту 1709 контекста анализа, данное инструментальное средство 1901 анализа чернил может избежать вызова метода для создания дочернего узла контекста, если не существует по меньшей мере один неконфликтующий узел источника штриха. Эта же проверка источника штриха также выполняется на нечернильных концевых узлах, так что узел для строки не создается до тех пор, пока по меньшей мере одно из составляющих строку слов, например, не собирается содержать по меньшей мере один успешно перемещенный штрих.When creating a new end node in the
Затем другая информация также применяется к вновь созданному узлу, такая как решетка распознавания. Решетка распознавания все же применяется, даже если определенные штрихи не могут быть перемещены, создавая применяемую (т.е. неблокируемую) дискреционную коллизию, которая приводит к временной логической несовместимости. Однако, так как неуспешные перемещения штрихов отражаются в обозначении части объекта 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
Для каждого узла, подлежащего удалению из объекта 1709 контекста анализа, список инструментального средства 1901 анализа чернил проверяет, может ли фактически быть удален узел теперь, когда были выполнены все другие редактирования и добавления к объекту 1709 контекста анализа. Узлы, которые должны быть удалены и которые фактически являются свободными от всех дочерних узлов и штрихов, удаляются из объекта 1709 контекста анализа. Если такой узел удален, то все узлы-предки (вплоть до, но не включая, корневого узла) удаляются последовательно до тех пор, пока не встретится узел-предок с другими оставшимися дочерними узлами.For each node to be removed from the
Наконец, инструментальное средство 1901 анализа чернил выполняет глобальное сравнение упорядочения узлов между независимым от документа объектом 1903 контекста анализа с результатами анализа и объектом 1709 контекста анализа, чтобы обнаружить и передать изменения процессом анализа объекту 1709 контекста анализа. Необходимо заметить, однако, что данное сравнение игнорирует исходную версию независимого от документа объекта 1903 контекста анализа, поэтому у него нет возможности обнаружить изменения в упорядочении, сделанные программным приложением 1701. Затем для каждого узла контейнера в результатах анализа, который имеет соответствующий узел в объекте 1709 контекста анализа, сравнивается упорядочение дочерних узлов для узлов контейнера. Если оба узла контейнера имеют одинаковый набор дочерних узлов, то тогда упорядочение в результатах анализа передается объекту 1709 контекста анализа посредством организации циклов по списку дочерних узлов контейнера в результатах анализа до тех пор, пока не будет найден узел в этом же положении в списке контейнера в объекте 1709 контекста анализа, который не имеет такой же GUID (или другой тип идентификатора) что и дочерний узел в результатах анализа. Когда обнаруживается такое несоответствие, то соответствующий узел должен быть найден ниже в списке дочерних узлов в объекте 1709 контекста анализа. Инструментальное средство 1901 анализа чернил затем производит поиск узла в остальной части списка дочерних узлов в объекте 1709 контекста анализа и вызывает метод для перемещения дочернего узла для коррекции порядка для данного узла в объекте 1709 контекста узла. Затем инструментальное средство 1901 анализа чернил продолжает организацию циклов по узлам в результатах анализа.Finally, the
Конечно, предположение об идентичных списках не является справедливым, так как либо список анализа, либо программное приложение 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 node list renderer" 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, 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 the state of the document 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, deleting, 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,
Когда приложение генерирует данные чернил, то оно предоставляет данные чернил инструментальному средству 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
Процесс первого анализа (например, процесс 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 (eg, 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
Эти варианты выполнения изобретения также могут поддерживать каждый процесс анализа прослушиванием событий с более, чем одним событием и помечать события на основании их изменений различными ярлыками, основываясь на внутренней обработке. Следовательно, эти альтернативные варианты реализации изобретения также могут предусматривать анализ электронных чернил в документе, который является асинхронным по отношению к работе программного приложения, являющегося ведущим по отношению к документу.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 an 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 is obvious to a person 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)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2004119952/09A RU2326435C2 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2004119952/09A RU2326435C2 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2004119952A RU2004119952A (en) | 2005-04-20 |
RU2326435C2 true RU2326435C2 (en) | 2008-06-10 |
Family
ID=35634741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2004119952/09A RU2326435C2 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2326435C2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2705009C2 (en) * | 2014-09-29 | 2019-11-01 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Handwritten input handler with low delay time |
-
2003
- 2003-08-21 RU RU2004119952/09A patent/RU2326435C2/en not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2705009C2 (en) * | 2014-09-29 | 2019-11-01 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Handwritten input handler with low delay time |
Also Published As
Publication number | Publication date |
---|---|
RU2004119952A (en) | 2005-04-20 |
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 | |
RU2485579C2 (en) | Electronic ink processing | |
RU2358308C2 (en) | Processing electronic ink | |
RU2352981C2 (en) | Processing of electronic ink | |
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 |