MXPA04005722A - Procesamiento de tinta electronica. - Google Patents
Procesamiento de tinta electronica.Info
- Publication number
- MXPA04005722A MXPA04005722A MXPA04005722A MXPA04005722A MXPA04005722A MX PA04005722 A MXPA04005722 A MX PA04005722A MX PA04005722 A MXPA04005722 A MX PA04005722A MX PA04005722 A MXPA04005722 A MX PA04005722A MX PA04005722 A MXPA04005722 A MX PA04005722A
- Authority
- MX
- Mexico
- Prior art keywords
- node
- ink
- context
- data
- analysis
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/169—Annotation, e.g. comment data or footnotes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/171—Editing, e.g. inserting or deleting by use of digital ink
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/142—Image acquisition using hand-held instruments; Constructional details of the instruments
- G06V30/1423—Image acquisition using hand-held instruments; Constructional details of the instruments the instrument generating sequences of position coordinates corresponding to handwriting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/1444—Selective acquisition, locating or processing of specific regions, e.g. highlighted text, fiducial marks or predetermined fields
- G06V30/1456—Selective acquisition, locating or processing of specific regions, e.g. highlighted text, fiducial marks or predetermined fields based on user interactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/32—Digital ink
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
- G06V30/41—Analysis of document content
- G06V30/414—Extracting the geometrical structure, e.g. layout tree; Block segmentation, e.g. bounding boxes for graphics or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99948—Application of database or data structure, e.g. distributed, multimedia, or image
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Multimedia (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Document Processing Apparatus (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Machine Translation (AREA)
- User Interface Of Digital Computer (AREA)
- Electrochromic Elements, Electrophoresis, Or Variable Reflection Or Absorption Elements (AREA)
Abstract
Se describen sistemas, metodos y medios legibles por computadora para hacer anotaciones con tinta electronica ricas, flexibles y mas naturales en un documento electronico que incluye la creacion de un primer nodo de contexto asociado con una primera porcion de una porcion base de un documento electronico; crear un segundo nodo de contexto asociado con una anotacion a la porcion base y enlazar el segundo nodo de contexto con el primer nodo de contexto.
Description
PROCESAMIENTO DE TINTA ELECTRÓNICA
Campo de la Invención La presente invención se refiere al procesamiento de tinta electrónica. Diversos aspectos de la presente invención son aplicables en particular al análisis de tinta electrónica, entre éstos se incluye el análisis de diseño, clasificación y reconocimiento de tinta electrónica. Aspectos adicionales de la invención se refieren al uso de tinta electrónica reconocida, clasificada y analizada por diseño, por ejemplo, al proveer anotaciones flexibles y ricas en un documento con tinta electrónica. Antecedentes de la Invención Debido a que el uso de las computadoras se ha expandido en la sociedad, se han desarrollado diversas técnicas diferentes para introducir datos en las computadoras. Una técnica particularmente útil para introducir datos es a través de la escritura manual. Al escribir con un estilo u otro objeto en un convertidor de datos analógicos a digitales para producir "tinta electrónica", un usuario de una computadora puede olvidarse de la molestia e inconvenientes asociados con un teclado. La introducción de datos mediante la escritura puede usarse de manera cómoda, por ejemplo, doctores que hacen visitas, arquitectos en un sitio en construcción, mensajeros en entrega de paquetes, trabajadores de talleres que recorren un taller y en cualquier situación en donde el uso de un teclado sería incómodo o poco práctico. Mientras que la introducción mediante escritura manual es más cómoda que la introducción con un teclado en diversas situaciones, el texto escrito con tinta electrónica típicamente no puede manipularse de manera directa por la mayoría de las aplicaciones de programas de cómputo. En su lugar, el texto escrito con tinta electrónica debe analizarse para convertirlo en otra forma, por ejemplo caracteres ASCII. Este análisis incluye un proceso de reconocimiento de escritura manual, el cual reconoce caracteres basados en diversas relaciones entre golpes individuales de tinta electrónica formando una palabra de tinta electrónica. Los algoritmos de reconocimiento de escritura manual han mejorado en gran medida en los últimos años, no obstante su precisión puede ser reducida cuando la tinta electrónica se escribe en ángulo. De igual manera, cuando grupos separados de golpes de tinta no pueden distinguirse fácilmente, por ejemplo cuando dos palabras se escriben muy juntas, muchos algoritmos de reconocimiento no pueden reconocer de manera precisa la tinta electrónica. Algunos algoritmos de reconocimiento también pueden reconocer de manera incorrecta la tinta electrónica como texto cuando, de hecho, la tinta electrónica se usa para hacer un dibujo. Por ejemplo, un usuario puede hacer anotaciones en un texto escrito con teclado haciendo un golpe de tinta electrónica con el que subraya, resalta, encierra en un círculo o tacha alguna porción del texto escrito con teclado. Un algoritmo de reconocimiento de estructura manual entonces puede reconocer de manera incorrecta estos golpes de anotaciones como un guión, el número cero o la letra "O". La precisión de muchos algoritmos de reconocimiento se puede mejorar en gran medida "haciendo un análisis sintáctico" (por ejemplo, mediante el análisis del diseño y) "clasificación") la tinta electrónica antes de usar el algoritmo de reconocimiento de escritura manual. Un proceso de clasificación determina típicamente si un golpe de tinta electrónica es parte de un dibujo (es decir, un golpe de tinta de dibujo) o parte del texto escrito a mano (esto es, un golpe de tinta o texto). También son posibles los algoritmos de clasificación para identificar otros tipos de golpes. El proceso de análisis del diseño típicamente agrupa golpes de tinta electrónica en asociaciones significativas, como palabras, líneas y párrafos. Los procesos de análisis y clasificación de diseño de esta manera pueden usarse para identificar cuáles golpes de una colección de tinta electrónica pertenecen a una sola palabra, qué palabras de la tinta electrónica están asociadas con una sola línea de texto escrita en tinta electrónica y qué líneas del texto escritas con la tinta electrónica están asociadas con un párrafo. El análisis y clasificación del diseño de la tinta puede mejorar en gran medida el reconocimiento de la tinta electrónica, muchos desarrolladores de aplicaciones de programas de cómputo no están conscientes de la importancia de estas actividades ante el reconocimiento de la tinta electrónica. Hasta hace poco tiempo, los algoritmos de clasificación y diseño no estaban disponibles fácilmente para usarse con aplicaciones de programas de cómputo existentes. Por ejemplo, el sistema operativo Microsoft® Windows XP edición Tablet PC versión 2002 se vendió típicamente con la aplicación de programa de cómputo Microsoft® Windows Journal para almacenar, mostrar y manipular tinta electrónica. Aunque la aplicación de programa de cómputo Microsoft® Windows Journal emplea un analizador sintáctico interno, hasta hace poco no era posible tener acceso a ese analizador sintáctico con otras aplicaciones de programas de cómputo ejecutadas en el sistema operativo. Aunque el proceso de análisis sintáctico de la aplicación de programa de cómputo Windows Journal ahora se puede tener acceso a ésta por separado mediante otras aplicaciones o programas de cómputo, no se conoce bien el uso de este analizador sintáctico, y este analizador sintáctico no puede emplearse fácilmente con muchas aplicaciones de programas de cómputo, en las que un usuario puede desear introducir datos escritos manualmente. Adicionalmente, incluso si un desarrollador de aplicaciones de programas de cómputo fuera a crear un analizador sintáctico específicamente para usarse con una aplicación de programa de cómputo deseada (el que en sí mismo puede ser un proceso difícil y que usa mucho tiempo), la ejecución de un proceso de análisis sintáctico puede requerir mucho tiempo. Por ejemplo, el análisis de algunos golpes de tinta electrónica usando un microprocesador relativamente rápido puede requerir de un analizador varios segundos o incluso varios minutos. Si una aplicación de programas de cómputo debe detener la operación hasta que el proceso de análisis esté completo, la aplicación del programa de cómputo se hará muy lenta para lograr un uso práctico para la mayoría de los usuarios. De esta manera, existe la necesidad de técnicas de procesamiento de tinta electrónica que puedan emplearse por diversas aplicaciones de programas de cómputo, por ejemplo, al analizar el diseño, clasificar y/o reconocer la tinta electrónica. Además, existe la necesidad de técnicas de procesamiento de tinta electrónica que puedan procesar tinta electrónica y al mismo tiempo permitir que la aplicación de programas de cómputo empleen las técnicas para aceptar nuevas entradas de tinta electrónica sin invalidar los resultados del procesamiento de la tinta. Sumario de la Invención Favorablemente, diversos ejemplos de la invención proporcionan técnicas de procesamiento de tinta electrónica que pueden usarse por una variedad de aplicaciones de programas de cómputo para procesar tinta electrónica. Adicionalmente, estas técnicas de procesamiento de tinta electrónica permiten que la tinta electrónica se procese de manera asincrona respecto a la operación de la aplicación del programa de cómputo que implementa las técnicas, de manera que la tinta electrónica puede procesarse sin detener o demorar de manera importante la operación de la aplicación del programa de cómputo. La aplicación del programa de cómputo incluso puede seguir aceptando nueva entradas de tinta electrónica mientras que las entradas de tinta electrónica previas se procesan. Con diversos ejemplos de la invención, los elementos de un archivo o documento pueden describirse con base en su posición espacial relativa entre sí. Por ejemplo, tanto un golpe de tinta electrónica como un texto escrito con teclado pueden describirse en términos del mismo sistema de coordenadas espaciales. Usando la información espacial para describir los elementos del documento, la aplicación de programa de cómputo que administra el documento puede mantener una estructura de datos que describe la relación entre sus elementos del documento. En particular, la aplicación del programa de cómputo puede mantener una estructura de datos que describe la clase de los diversos elementos del documento, así como definir las asociaciones entre los diversos elementos del documento. Estas asociaciones pueden definirse, por ejemplo, como la información usada para enlazar datos de golpe de tinta electrónica o colecciones de éstos con otros elementos en el documentos electrónico (como palabras, líneas, párrafos, dibujos, celdas de tablas, etc.). Al describir elementos de un documento en un archivo o una estructura de datos de documento con base en su posición espacial, los elementos del documento para una variedad de tipos de archivo pueden emplear técnicas comunes para la identificación y manipulación de sus elementos en el documento. En particular, una variedad de aplicaciones de programas de cómputo pueden describir los elementos del documento dentro de un documento basado en su posición espacial y emplear esta posición espacial haciendo referencia al uso de métodos de análisis de tinta electrónica comunes. Adicionalmente, al especificar una región particular de un documento para su análisis, cada aplicación de programas de cómputo puede limitar el proceso de análisis a únicamente los elementos deseados dentro del documento. Para analizar nuevas entradas de tinta electrónica en un documento de conformidad con varios ejemplos de la invención, la aplicación de programas de cómputo que administra el documento modifica una estructura de datos asociados con el documento para incluir la nueva tinta a analizar. La aplicación de programas de cómputo entonces proporciona otra estructura de datos (o porciones relevantes del mismo) a una herramienta de análisis de tinta, la cual copia una parte o toda la estructura de datos para su análisis (y funciona en esta copia de datos que es independiente de la estructura de datos del documento del programa de aplicación). La herramienta de análisis de tinta pasa la copia a un proceso de análisis, como el proceso de análisis sintáctico (por ejemplo, un proceso de análisis de diseño y/o un proceso de clasificación). La aplicación de programas de cómputo puede recuperar su operación normal, incluyendo la entrada de tinta electrónica nueva que recibe y/u otros datos, al tiempo que se realizan los procesos del análisis de la tinta. Además de recibir nueva tinta electrónica, cualesquiera "otros datos" pueden recibirse mediante el programa de aplicación, por ejemplo, datos que modifican el tamaño, ubicación o contenido de la tinta, texto, imágenes, gráficos, tablas, diagramas de flujo, diagramas y similares existentes; datos que añaden texto adicional, imágenes, gráficos, tablas, diagramas de flujo, diagramas y similares; los datos que eliminan el texto existente, imágenes, gráficos, tablas, diagramas de flujo, diagramas y similares. Después de que se completan todos los procesos de análisis deseados, los resultados del análisis regresan a la herramienta de análisis de tinta. De esta manera, diversos ejemplos de sistemas y métodos de conformidad con la invención permiten que los procesos de análisis de tinta se ejecuten de manera asincrona desde la operación de la aplicación del programa de cómputo que emplea el proceso de análisis de tinta. Esta operación asincrona permite a un usuario continuar empleando una aplicación de programa de cómputo sin demorarse por el proceso del análisis. Adicionalmente, permite que se ejecuten de manera simultánea varios procesos de análisis. Como respuesta a la recepción de los resultados de análisis como la herramienta de análisis de tinta obtiene la versión actual de la estructura de datos del documento electrónico (que puede contener datos modificados y/o nuevos introducidos mientras se realizaban los procesos de análisis) desde la aplicación del programa de cómputo y concilia los resultados del análisis con la versión actual de la estructura de datos. Al conciliar los resultados de análisis con la versión actual de la estructura de datos, varios ejemplos de la invención puede evitar técnicas más complicadas, como "el bloqueo" para tener acceso de manera asincrona a los datos que se están usando por la aplicación del programa de cómputo. En su lugar, cualquier aplicación del programa de cómputo puede invocar la conciliación sin que sea necesario implementar un bloqueo interno complejo. Después de conciliar los resultados de análisis con la versión actual en la estructura de datos, la herramienta de análisis de tinta entonces puede proporcionar una copia de los resultados de análisis concillados a otro proceso de análisis, como es el proceso de reconocimiento de escritura manual. Nuevamente, la aplicación del programa de cómputo puede resumir la operación normal, incluyendo la introducción de tinta electrónica nueva y/u otros datos, mientras que se realizan los segundos procesos de análisis de tinta. Después de que todos los procesos de análisis secundarios deseados se completan, los resultados del segundo proceso de análisis regresa a la herramienta de análisis de tinta. La herramienta de análisis de tinta entonces obtiene la versión actual de la estructura de datos de la aplicación del programa de cómputo (que nuevamente puede incluir datos nuevos y/o modificados), y concilia los resultados del segundo análisis con la versión actual de la estructura de datos. La herramienta de análisis de tinta entonces actualiza la estructura de los datos usando los resultados concillados del segundo proceso de análisis. Desde luego, cualquier número de procedimientos de análisis de tinta y/o etapas se pueden usar sin separarse del alcance de la invención. El uso de varios procesos de análisis de tinta descritos anteriormente y la información espacial referente o unida a los datos de la tinta electrónica con otras características del documento electrónico también se pueden usar para proporcionar anotaciones de tinta natural rica y flexible en un documento electrónico. Por ejemplo, aspectos de la invención se pueden usar para proporcionar anotaciones de tinta electrónica que se mueven dinámicamente y/o de otra manera cambiar con base en los cambios realizados a los elementos del documento subyacente al que se está haciendo las anotaciones. Los usuarios típicamente hacen anotaciones en los documentos de diferentes maneras, por ejemplo, pueden encerrar en un círculo, subrayar, señalar o resaltar palabras, escribir notas al margen, dibujar flechas u otros señalamientos a las anotaciones ubicadas en el margen, etc. Adicionalmente, los usuarios hacen anotaciones en una amplia variedad de diferentes tipos de documento, incluyendo, por ejemplo, texto, hojas de cálculo, dibujos, presentación de diapositivas, tablas, diagramas, gráficas, diagramas de flujo, etc. La integración uniforme de las anotaciones de tinta electrónica en un documento electrónico requiere que las anotaciones se conduzcan de manera apropiada cuando el documento subyacente cambie por cualquier razón. Por ejemplo, si un usuario encierra en un círculo una palabra en un documento electrónico (como anotación), después añade texto en algún lugar del documento antes de dicha palabra, esto puede ocasionar que la palabra encerrada en el círculo se mueva. En este caso, la anotación en el círculo debe moverse y permanecer unida a la palabra. Como otro ejemplo, si el usuario añade o retira caracteres de la palabra encerrada en el círculo o cambia de cualquier otra manera su tamaño, la anotación en el círculo debe comprimirse o contraerse para acomodar el nuevo tamaño de la palabra. Preferiblemente, cuando el documento electrónico subyacente vuelve a fluir y/o actualiza las posiciones de sus elementos constituyentes (párrafos, dibujos, columnas, etc.) entre éstos y/o la página por alguna razón, las anotaciones de tinta electrónica también se volverán a colocar y permanecerán ubicadas de manera adecuada con respecto al texto subyacente u otra información. A menos que las anotaciones se comporten de esta manera con respecto al texto del documento electrónico subyacente, se vuelve poco práctico editar o compartir documentos electrónicos activos después de hacer una anotación y una impresión en papel sería la manera más útil y sencilla de hacer una anotación. La determinación de cómo cambiar la anotación adecuadamente dependerá de diversos factores con relación a las anotaciones en el documento electrónico. Por ejemplo, cambiar de manera adecuada la anotación en una situación de reflujo puede depender, por ejemplo, de la capacidad del sistema de cómputo (por ejemplo, el analizador sintáctico): (a) identificar la tinta electrónica como una anotación; (b) identificar el tipo de anotación de tinta electrónica; y (c) identificar la relación de la tinta electrónica con un elemento particular del documento electrónico subyacente. Aunque puede ser posible preguntar al usuario sobre algunos aspectos de este tipo de información, dichos sistemas producirán una experiencia mucho más difícil de manejar para el usuario que anotar en un papel. De esta manera y tal y como se describe en varios aspectos de la invención, la información anterior se puede deducir de: (1) la tinta electrónica por sí misma y (2) el contenido del documento subyacente, incluyendo la posición espacial de varios elementos en el documento con relación a la tinta electrónica. Debido a que la determinación del significado de las anotaciones con tinta electrónica puede ser complejo y difícil, no es práctico esperar que cada programa de aplicación en donde un usuario desea hacer anotaciones en un documento implemente individualmente la identificación de anotaciones lógicas. En vez de esto, preferiblemente se proveerá un componente reutilizable para ayudar en esta función de anotaciones que cada programa de aplicación puede integrar de manera fácil. Por ejemplo, tan sólo como un sistema operativo de un sistema de cómputo basado en una pluma proporciona componentes para la reconstrucción y presentación de la tinta electrónica, sería preferible para que el sistema operativo proporcionara un componente que determina el significado de las anotaciones de tinta (también denominado el "analizador sintáctico de anotaciones") que puede fácil y limpiamente fluir en el trabajo con la tinta involucrada. Sin embargo, la identificación del contenido del documento electrónico subyacente posee dificultades sustanciales al proporcionar ia capacidad de anotación "inteligente". Por ejemplo, varios programas de aplicación diferentes tienen maneras extremadamente disparadas de almacenar, administrar y hacer fluir documentos. La presente invención proporciona un analizador sintáctico que es capaz de determinar la relación posible de las anotaciones con tinta electrónica con diferentes tipos de documentos electrónicos. Específicamente, de conformidad con algunos aspectos de esta invención, se proporciona un mecanismo con el analizador sintáctico de anotaciones que recupera el programa de aplicación para proporcionar información pertinente relacionada con la tinta analizada (por ejemplo, información con respecto al documento electrónico en el área espacial que corresponde a la anotación de tinta, para proporcionar "contexto" a la anotación de tinta). El mecanismo es suficientemente sencillo para que sea práctico y se integre en cualquier aplicación basada en documentos y es suficientemente eficiente para trabajar con documentos grandes (los cuales pueden procesarse en secciones, como páginas o similares). Las técnicas de procesamiento de tinta de conformidad con varios ejemplos de la presente invención permiten de esta manera que una variedad de aplicaciones de programas de cómputo realicen múltiples procesos de tinta electrónica a través de la herramienta de análisis de tinta. Adicionalmente, una aplicación de programas de cómputo que usa estas técnicas puede continuar su operación normal durante el proceso de análisis, incluyendo la recepción de nuevas entradas de tinta electrónica sin invalidar de manera necesaria los resultados de los procesos de análisis. Breve Descripción de los Dibujos Los objetos, características y ventajas mencionados y otros de la presente invención serán fácilmente evidentes y se comprenderán en su totalidad a partir de la siguiente descripción detallada, tomada en conjunto con los dibujos anexos, en donde: la Figura 1 ilustra un diagrama esquemático de un ambiente de cómputo digital de uso general en donde ciertos aspectos de la presente invención pueden ¡mplementarse; la Figura 2 ilustra un ambiente de una computadora personal (PC) basada en una pluma, en donde ciertos aspectos de la presente invención pueden ¡mplementarse; las Figuras 3 y 4 ¡lustran varias características de implementaciones ejemplares de aspectos de la invención referentes a las anotaciones en un documento electrónico; la Figura 5 ilustra características generales del análisis sintáctico de tinta de un documento electrónico; las Figuras de la 6A a la 61 ilustran estructuras de datos ejemplares útiles en la práctica de al menos algunos aspectos de la presente invención; las Figuras de la 7A a la 12B ilustran documentos electrónicos ejemplares y estructuras de datos ejemplares asociados que son útiles en el procesamiento de las anotaciones de tinta electrónica de documentos electrónicos; las Figuras de la 13A a la 14B ilustran documentos electrónicos ejemplares y estructuras de datos ejemplares asociados que son útiles en el procesamiento de las funciones del diagrama de flujo electrónico en documentos electrónicos; las Figuras de la 15A a la 15C ilustran documentos electrónicos ejemplares y estructuras de datos ejemplares asociados que son útiles en el procesamiento de las características de tablas electrónicas en documentos electrónicos; las Figuras de la 16A a la 16D ilustran un método de procesamiento de tinta electrónica de conformidad con diversos ejemplos de la invención; las Figuras 17, de la 19 a la 21 y de la 23 a la 26 ilustran la transferencia de objetos de datos durante los procesos de análisis de tinta ejemplares de conformidad con varios ejemplos de la presente invención; las Figuras 18 y 22 ilustran estructuras de datos simples que pueden manipularse de conformidad con varios ejemplos de la invención; la Figura 27 ilustra un diagrama de flujo que muestra un método para conciliar los resultados de análisis con un estado actual de un documento; y la Figura 28 ilustra una disposición para analizar de manera asincrona tinta electrónica tal y como se describe en otros ejemplos adicionales de la invención. Descripción Detallada de la Invención Términos En esta especificación se usan los siguientes términos y, a menos que se especifique de otra manera o sea claro partiendo del contexto, los términos tienen los significados que se proporcionan a continuación: "Presentar" o "presentado" o "presentando" - Es el proceso de determinar la manera en que la información (incluyendo texto, gráficos, y/o tinta electrónica) se visualiza ya sea en una pantalla, de manera impresa o su emisión de otra manera. "Medio legible en computadora" - cualquier medio disponible al que un usuario pueda tener acceso en un sistema de cómputo. A manera de ejemplo, y sin limitantes, "Medios legibles en computadora" puede incluir medios de almacenamiento de cómputo y medios de comunicación. "Medios de almacenamiento en computadora" incluyen medios extraíbles y no extraíbles, no permanentes y permanentes implementados en cualquier método o tecnología para almacenar información, como instrucciones legibles en computadora, estructura de datos, módulos de programa u otros datos. "Medios de almacenamiento de computadora" incluye, sin limitarse a, RAM, ROM, EEPROM, memoria instantánea u otro tipo de tecnología de memoria; CD-.ROM, discos versátiles digitales (DVD) u otros dispositivos de almacenamiento óptico, casetes magnéticos, cintas magnéticas, almacenamiento en discos magnéticos u otros dispositivos de almacenamiento magnético; o cualquier otro medio que pueda usarse para almacenar la información deseada y al que se pueda tenerse acceso a través de una computadora. "Medios de comunicación" típicamente incluye instrucciones, datos, estructuras, módulos de programa u otros datos que son legibles a través de una computadora en una señal de datos modulada, como una banda portadora u otros mecanismos de transporte e incluye cualquier medio de suministro de información. El término "señal de datos modulados" significa una señal que tiene una o más de estas características establecidas o cambiadas de manera tal que codifican información en la señal. A manera de ejemplo, y no como limitante, los medios de comunicación incluyen medios alámbricos, como una red alámbrica o una conexión con cableado directo y medios inalámbricos, como medios acústicos, RF, infrarrojos u otros medios inalámbricos. Combinaciones de cualquiera de los anteriores también deben incluirse dentro del alcance de los "medios legibles en computadora". Descripción general De conformidad con varios ejemplos de la invención, las propiedades de un elemento en un documento (u otro tipo de archivo) pueden incluir información relacionada con la posición espacial de dicho elemento dentro del documento. De esta manera, tanto un golpe de tinta electrónica como el texto escrito con teclado puede describirse en términos de una relación espacial u otra relación con otros elementos en el documento. Adicionalmente, los elementos relacionados en un documento pueden reconocerse simplemente mediante la identificación de la relación espacial del documento que contiene dichos elementos y/o enlazando dichos elementos. Al usar esta relación espacial entre varios elementos de documentos, una aplicación de programa de cómputo puede crear y mantener una estructura de datos que describe otras relaciones entre los elementos del documento. Por ejemplo, una aplicación de programas de cómputo puede mantener una estructura de datos, como un árbol de datos, que define una clase para diversos elementos en el documento. De esta manera, un nodo en la estructura de datos puede corresponder a una palabra escrita a mano o un dibujo que contiene uno o más golpes de tinta, y los datos almacenados en el nodo pueden adicionalmente indicar una posición de dicha palabra en una página. Cualesquiera otros datos adecuados o convencionales almacenados típicamente que se refieren a un golpe de tinta y/o una palabra con tinta electrónica también pueden almacenarse en el nodo de palabra.
Este tipo de estructura de datos también puede asociar elementos de documentos (como golpes de tinta individuales o caracteres de texto escritos con teclado) en grupos significativos, como palabras, líneas de palabras, oraciones, párrafos y similares. De esta manera, si una aplicación de programa de cómputo mantiene una estructura de árbol de documento que describe un párrafo de tinta electrónica escrita manualmente, los nodos de vértice terminal de la estructura de datos puede incluir datos relacionados con los golpes individuales de tinta electrónica, y uno o más golpes pueden asociarse juntos en la estructura de datos como nodos de palabra que corresponden a las palabras en el párrafo (por ejemplo, las palabras como las determina el analizador sintáctico y/o del examinador). La estructura de árbol entonces puede asociar los nodos de palabra con los nodos de línea que corresponden a las líneas en el párrafo. Cada nodo de línea adicionalmente se puede asociar con un nodo que corresponde al párrafo. Adicionalmente, una aplicación de programa de cómputo puede mantener un árbol u otra estructura de datos que asocie un nodo que corresponde a un golpe de tinta electrónico y/o algunas otras formas de agrupamientos de tinta electrónica con otro nodo que corresponde a un elemento del documento que no es de tinta electrónica, como una imagen; un dibujo de tinta electrónica, un carácter escrito con teclado, una palabra, una línea, un párrafo o elementos similares. De esta manera, estas estructuras de datos se pueden usar para definir las relaciones entre los golpes de tinta electrónica asociados para diferenciar los golpes de tinta electrónica que forman el texto escrito a mano de los golpes de tinta electrónica que forman las anotaciones en elementos del documento que no son de tinta y/o para enlazar golpes de tinta electrónica con otros elementos del documento. Como se analizará detalladamente a continuación, estas estructuras de datos se pueden usar con una herramienta de análisis de tinta de conformidad con varios ejemplos de la invención para analizar la tinta electrónica en el documento. De conformidad con varios ejemplos de la invención, una aplicación de programa de cómputo puede obtener un análisis de tinta electrónica dentro de un documento creando primero una estructura de datos para el documento. La estructura de datos describe las relaciones entre los elementos del documento que ya se han analizado (en caso de haber alguno), y de esta manera proporciona el contexto en el que se analizará cualquier dato de tinta electrónica nueva. Esta estructura de datos u "objeto de contexto de análisis" también incluye cualquier dato de tinta electrónica nueva que no se haya analizado. Esto es, el objeto de contexto de análisis también incluye la tinta electrónica para la que no se ha establecido una relación con otros elementos del documento. Para algunos ejemplos de la invención, la aplicación del programa de cómputo crea el objeto de contexto de análisis por sí mismo. No obstante, con otros ejemplos de la invención la aplicación del programa de cómputo emplea la herramienta de análisis de tinta u otra herramienta para crear el objeto de contexto de análisis. Después de que la aplicación del programa de cómputo ha proporcionado el objeto de contexto de análisis a la herramienta de análisis de tinta (o la herramienta de análisis de tinta crea el objeto de contexto de análisis), la herramienta de análisis de tinta hace una copia o recupera información referente al menos de una porción del objeto de contexto de análisis que contiene la tinta electrónica no analizada. Al hacer una copia o recibir información referente a una porción deseada del objeto de contexto de análisis, la herramienta de análisis de tinta crea una estructura de datos que se puede analizar posteriormente sin cambiar el objeto de contexto de análisis mantenido por la aplicación del programa de cómputo. Esto es, la copia es independiente del documento electrónico real que se usa en la aplicación del programa de cómputo, y de esta manera se hace referencia a éste a continuación como el objeto de contexto de análisis "independiente del documento". Una vez que la herramienta de análisis de tinta ha creado el objeto de contexto de análisis independiente del documento, la herramienta de análisis de tinta proporciona este objeto de contexto de análisis independiente del documento a uno o más procesos de análisis. Por ejemplo, si se hará el reconocimiento de la escritura manual sobre la tinta electrónica sin analizar en el documento, entonces la herramienta de análisis de tinta puede proporcionar el objeto de contexto de análisis independiente del documento a procesos de clasificación y/o análisis del diseño para clasificar la tinta en el texto y golpes de dibujo (si es necesario o si así se desea) y después agrupar los golpes de texto de tinta electrónica sin analizar en agrupamientos asociados con base en el diseño de la tinta. Mientras que los procesos de clasificación y/o análisis de diseño están analizando el objeto de contexto de análisis independiente del documento, la aplicación del programa de cómputo puede continuar con su operación normal. En particular, la aplicación del programa de cómputo puede continuar recibiendo nuevas entradas de tinta electrónica y/o cualesquiera datos en el documento electrónico que se mantiene en el programa de la aplicación. Cuando el proceso de análisis, como el proceso de análisis sintáctico, termina el análisis del objeto de contexto de análisis independiente del documento, devuelve los resultados del análisis a la herramienta de análisis de tinta. En particular, el proceso de análisis sintáctico (que puede incluir, entre éstos, procesos de clasificación y análisis de diseño, como se describió anteriormente) devolverá una versión modificada del objeto de contexto de análisis independiente del documento que muestra nuevas relaciones de la tinta electrónica no analizada previamente. Debido a que la aplicación del programa de cómputo puede aceptar nuevas entradas de tinta electrónica y/o cualquier otro dato para el documento durante la realización del análisis sintáctico descrito anteriormente, no obstante la versión actual del objeto de contexto de análisis para el documento (es decir, para la versión mantenida por la aplicación) puede ser diferente tanto para el objeto de contexto de análisis independiente del documento proporcionado originalmente a la herramienta de análisis de tinta como para los resultados de análisis sintáctico que proporciona el proceso de análisis sintáctico. De esta manera, con algunos ejemplos de la invención, la herramienta de análisis de tinta puede obtener una versión actual del objeto de contexto de análisis de la aplicación del programa de cómputo, y conciliar los resultados del análisis sintáctico con la versión actual del objeto de contexto de análisis. Durante este proceso de conciliación, la herramienta de análisis de tinta actualizará la versión actual del objeto de contexto de análisis para que refleje los resultados del proceso de análisis sintáctico. La herramienta de análisis de tinta entonces pasa los datos concillados del objeto de contexto de análisis actual a un proceso de reconocimiento de escritura manual para que sean reconocidos. Sin embargo, con otros ejemplos de la invención, la herramienta de análisis de tinta puede omitir el proceso de conciliación, y en su lugar pasar los resultados del análisis sintáctico directamente a un proceso de reconocimiento de escritura manual. Una vez que los resultados del análisis sintáctico se han concillado con la versión actual del objeto de contexto de análisis, la aplicación del programa de cómputo puede nuevamente volver a su operación regular, y de esta manera puede continuar recibiendo nuevas entradas de tinta electrónica y/o cualquier otro dato relacionado con el documento. Mientras tanto, el proceso de reconocimiento analiza los datos concillados del objeto de contexto de análisis actual (o, alternativamente, los resultados del análisis sintáctico). Después de que el proceso de reconocimiento ha terminado de analizar los datos concillados (o los resultados del análisis sintáctico), devuelve sus resultados de reconocimiento a la herramienta de análisis de tinta. Nuevamente, debido a que la aplicación del programa de cómputo puede haber recibido nuevas entradas de tinta electrónica y/u otros datos para el documento durante la operación del proceso de reconocimiento, la herramienta de análisis de tinta obtiene una versión actual del objeto de contexto de análisis de la aplicación del programa de cómputo. La herramienta de análisis de tinta entonces concilla los resultados del proceso de reconocimiento con la versión actual del objeto de contexto de análisis para actualizar la versión actual del objeto de contexto de análisis con los resultados del reconocimiento. Ejemplo de un ambiente operativo La Figura 1 ilustra un diagrama esquemático de un ambiente de cómputo digital de uso general que puede usarse para implementar varios aspectos de la presente invención. En la Figura 1, una computadora 100 incluye una unidad de procesamiento 110, una memoria del sistema 120 y una barra de distribución del sistema 130 que acopla varios componentes del sistema, incluyendo la memoria del sistema 120 a la unidad de procesamiento 110. La barra de distribución del sistema 130 puede ser cualquiera de los diversos tipos o estructuras de barras de distribución, entre éstas, una barra de distribución de memoria o un controlador de memoria, una barra de distribución periférica y una barra de distribución local que usa cualquiera de una variedad de arquitecturas de barra de distribución. La memoria del sistema 120 puede incluir una memoria de sólo lectura (ROM) 140 y una memoria de acceso aleatorio (RAM) 150. Un sistema de entradas/salidas básico 160 (BIOS), contiene las rutinas básicas que ayudan a transferir información entre los elementos dentro de la computadora 100, como durante el arranque, se almacena en la ROM 140. La computadora 100 también puede incluir una unidad de disco duro 170 para leer y escribir en un disco duro (no se muestra), una unidad de disco magnético 180 para leer o escribir en un disco magnético extraíble 190 y una unidad de disco óptico 191 para leer o escribir en un disco óptico extraíble 192, por ejemplo un CD-ROM u otro medio óptico. La unidad de disco duro 170, la unidad de disco magnético 180 y la unidad de disco óptico 191 están conectadas a la barra de distribución 130 mediante una interfaz 192 de la unidad de disco duro, una interfaz 193 de la unidad del disco magnético y una interfaz 194 de la unidad del disco óptico, respectivamente. Estas unidades y sus medios legibles por computadora asociados proporcionan almacenamiento permanente de instrucciones, datos, estructuras, módulos de programa legibles en computadora así como otros datos para una computadora personal 100. Será evidente para los expertos en la técnica que otros tipos de medios legibles por computadora que puedan almacenar datos que sean accesibles a través de una computadora, como casetes magnéticos, tarjetas de memoria instantánea, discos de video digital, cartuchos Bernoulli, memorias de acceso aleatorio (RAMs), memorias de sólo lectura (ROMs), y similares, también pueden usarse en el ambiente operativo de ejemplo. Pueden almacenarse varios módulos de programa en la unidad de disco duro 170, en el disco magnético 190, el disco óptico 192, ROM 140 o RAM 150, incluyendo un sistema operativo 195, uno o más programas de aplicación 196, otros módulos de programa 197 y datos de programa 198. Un usuario puede introducir comandos e información en la computadora 100 a través de dispositivos de entrada, como un teclado 101 y un dispositivo puntero 102 (como un ratón). Entre otros dispositivos de entrada (no se muestran) se puede incluir un micrófono, una palanca de mando, un adaptador de juegos, un disco satelital, un explorador o similares. Estos y otros dispositivos de entrada con frecuencia se conectan a la unidad de procesamiento 110 a través de una interfaz 106 en el puerto en serie que se acopla a la barra de distribución del sistema 130, pero también pueden conectarse mediante otras interfaces, como un puerto en paralelo, un puerto de juegos o una barra de distribución en serie universal (USB) y similares. Adicionalmente, estos dispositivos pueden acoplarse directamente a la barra de distribución 130 a través de una interfaz adecuada (no se muestra). Un monitor 107 u otro tipo de dispositivo de visualización también se puede conectar a la barra de distribución 130 a través de una interfaz, por ejemplo un adaptador de video 108. Además del monitor 107, las computadoras personales típicamente incluyen otros dispositivos de salida periféricos (no se muestra), como altavoces e impresoras. En un ejemplo, se proporciona una pluma de conversión de datos analógicos a digitales 165 y una pluma o estilo anexo 166 para capturar digitalmente las entradas de mano libre. Aunque se muestra una conexión entre la pluma de conversión de datos analógicos a digitales 165 y la interfaz 106 del puerto en serie se muestra en la Figura 1, en la práctica, la pluma de conversión de datos analógicos a digitales 165 puede acoplarse directamente a la unidad de procesamiento 110, o puede acoplarse a la unidad de procesamiento 110 de cualquier manera adecuada, por ejemplo a través de un puerto paralelo u otra interfaz y la barra de distribución del sistema 130, como ya se conoce en la técnica. Adicionalmente, aunque el convertidor de datos analógicos a digitales 165 se muestra separado del monitor 107 en la Figura 1, el área de entrada de datos útil del convertidor de datos analógicos a digitales 165 puede ser coextenso con el área de visualización del monitor 107. Adicionalmente, el convertidor de datos analógicos a digitales 165 puede estar integrado en el monitor 107, o puede existir como un dispositivo separado o unido de otra manera al monitor 107. La computadora 100 puede funcionar en un ambiente de red usando conexiones lógicas a una o más computadoras remotas, como una computadora remota 109. La computadora remota 109 puede ser un servidor, un enrutador, una PC de red, un dispositivo igual u otro nodo de red común y típicamente incluye muchos o todos los elementos descritos anteriormente relativos a la computadora 100, aunque por practicidad, sólo se ha ilustrado un dispositivo de almacenamiento de memoria 111 en la Figura 1. Las conexiones lógicas que se ilustran en la Figura 1 incluyen una red de área local (LAN) 112 y una red de área extensa (WAN) 113. Dichos ambientes de red son lugares comunes en centrales, redes de cómputo de empresas grandes, intraredes e Internet, que usan conexiones tanto alámbricas como inalámbricas. Cuando se usa en un ambiente de red LAN, la computadora 100 se conecta a la red de área local 112 a través de una interfaz de red o de un adaptador 114. Cuando se usa en un ambiente de red WAN, la computadora personal 100 típicamente incluye un módem 115 u otros medios para establecer un enlace de comunicaciones en la red de área extensa 113, como Internet. El módem 115, el cual puede ser interno o externo a la computadora 100, puede conectarse a la barra de distribución del sistema 130 a través de la interfaz 106 del puerto en serie. En un ambiente conectado en red, los módulos de programa ilustrados relativos a la computadora personal 100, o porciones de éstos, pueden almacenarse en el dispositivo de almacenamiento de memoria remoto. Será evidente que las conexiones de red que se muestran son ejemplos y que se puede usar otras técnicas para establecer un enlace de comunicaciones entre las computadoras. La existencia de cualquiera de diversos protocolos ya conocidos como TCP/IP, Ethernet, FTP, HTTP, UDP y similares se asume, y el sistema puede operar en una configuración usuario-servidor para permitir que un usuario recupere páginas de consulta en internet de un servidor basado en internet. Se puede usar cualquiera de los buscadores para internet convencionales para visualizar y manipular datos en páginas de consulta en internet. Aunque el ambiente de la Figura 1 muestra un ambiente ejemplar, se comprenderá que también pueden usarse otros ambientes de cómputo. Por ejemplo, uno o más ejemplos de la presente invención puede usar un ambiente que tiene una menor cantidad que la totalidad de los diversos aspectos que se muestran en la Figura 1 y que se describieron anteriormente, y estos aspectos pueden aparecer en diversas combinaciones y subcombinaciones que serán evidentes para un experto en la técnica. La Figura 2 ilustra una computadora personal (PC) 201 basada en una pluma que se puede usar de conformidad con varios aspectos de la presente invención. Cualquiera o todas las características, subsistemas y funciones del sistema de la Figura 1 se pueden incluir en la computadora de la Figura 2. El sistema de la computadora personal 201 basada en una pluma incluye una superficie de visualización 202 grande, por ejemplo, una pantalla de panel plano digital, por ejemplo una pantalla de cristal líquido (LCD), en la que se visualiza una pluralidad de pantallas 203. Usando un estilo 204, un usuario puede seleccionar, señalar y escribir en el área de visualización digital. Ejemplos de paneles de pantalla digitales adecuados incluyen plumas electromagnéticas de conversión de datos analógicos a digitales, por ejemplo las plumas de conversión de datos analógicos a digitales disponibles de Mutoh Co. (conocidas como FinePoint Innovations Co.) o de Wacom Technology Co. También pueden usarse otros tipos de plumas de conversión de datos analógicos a digitales, por ejemplo, convertidores de datos analógicos a digitales ópticos y convertidores de datos analógicos a digitales sensibles al tacto. El sistema de cómputo 201 basado en pluma interpreta rasgos hechos usando un estilo 204 para manipular datos, introducir texto y ejecutar tareas de aplicaciones de cómputo convencionales, como crear, editar y modificar hojas de cálculo, programas de procesamiento de palabras y similares. El estilo 204 puede estar equipado con botones u otras características para aumentar sus capacidades. En un ejemplo, un estilo 204 puede implementarse como un "lápiz" o "pluma", en donde un extremo constituye una porción de escritura y el otro extremo constituye un extremo "borrador" y, en el que, cuando se mueve a través de la pantalla, indica porciones de tinta electrónica en la pantalla que se borran. Otros tipos de dispositivo de entrada, como ratón, bola de cursor, teclado o similares también se pueden usar. Adicionalmente, el propio dedo de un usuario puede usarse para seleccionar o indicar porciones de la imagen mostrada en una pantalla sensible al tacto o sensible a la cercanía. En consecuencia, el término "dispositivo de entrada del usuario" como se usa en la presente, tiene la intención de presentar una definición amplia e incluir diversas variaciones en dispositivos de entrada ya conocidos. En diversos ejemplos, el sistema proporciona una plataforma de tinta como un conjunto de servicios COM (modelo de objeto componente) que un programa de aplicación puede usar para capturar, manipular y almacenar tinta. La plataforma de tinta también puede incluir un lenguaje de anotaciones que incluye un lenguaje similar al lenguaje de marcación extensible (XML). Además, el sistema puede usar DOCM como otra implementación. Otras implementaciones pueden usarse, incluyendo el modelo de programación Win32 y el modelo de programación .Net de Microsoft Corporation. Estas plataformas están disponibles comercialmente y ya se conocen en la técnica. Además de usarse con sistemas de cómputo basadas en pluma de desempeño completo o "tablet PC" (por ejemplo, computadoras portátiles convertibles o tablet PC tipo "pizarra"), aspectos de esta invención se pueden usar en conjunto con otros tipos de sistemas de cómputo basados en pluma y/u otros dispositivos que acepten datos como tinta electrónica y/o acepten entradas con estilo o pluma electrónica, por ejemplo: sistemas de cómputo de mano; asistentes digitales personales; computadoras personales de bolsillo; teléfonos celulares, localizadores y otros dispositivos de comunicación, relojes, aparatos eléctricos y cualesquiera otros dispositivos y sistemas que incluyen un monitor u otro dispositivo de visualización y/o un convertidor de datos analógicos a digitales que presenta información impresa o gráfica a los usuarios y/o permite la entrada de datos usando una pluma o estilo electrónico, o que pueda procesar tinta electrónica recolectada por otro dispositivo (por ejemplo, una computadora de escritorio convencional que puede procesar tinta electrónica recolectada por una tablet PC). La invención ahora será descrita en conjunto con las figuras restantes, las cuales ilustran diversos ejemplos de la invención y muestran información para ayudar a explicar la invención. Las figuras específicas y la información contenida en esta descripción detallada no debe interpretarse como limitante de la invención. Resumen de la visualización del documento espacial Como se describió en párrafos anteriores, ciertos aspectos de la presente invención se refieren en general a sistemas y métodos para proporcionar anotaciones más versátiles y enriquecidas usando tinta electrónica en documentos electrónicos. Lo siguiente describe varios ejemplos y aspectos de esta invención con mayor detalle. A. Descripción general de la invención La Figura 3 ilustra en general la operación de sistemas y métodos tal y como se describen en al menos algunos ejemplos de la presente invención. Específicamente, como se ilustra en la Figura 3, un usuario puede interactuar de alguna manera con un documento electrónico 300 (Documento "A" en la Figura 3), por ejemplo, mediante la adición de tinta electrónica al documento 300. En el ejemplo que se ilustra, el documento electrónico 300 incluye texto electrónico o escrito con teclado 302 ("Texto muestra" en el ejemplo que se ilustra) y un dibujo de tinta 304 (una casa en el ejemplo que se ilustra). Desde luego, el documento electrónico 300 puede incluir cualesquiera datos o información sin separarse del alcance de la invención, por ejemplo texto electrónico, tinta electrónica (dibujo o texto), imágenes, gráficas, tablas, diagramas, y diversa información electrónica o gráfica, y combinaciones de éstas. Para los objetivos de este ejemplo, suponga que el documento electrónico 300 original (también denominado el "documento base" o "porción base" en la presente aplicación) incluye el texto electrónico escrito con teclado 302 y el dibujo con tinta electrónica 304. Mientras el usuario revisa el documento A 300 de este ejemplo, decide incluir una anotación con tinta electrónica en el documento 300. Específicamente, en el ejemplo que se ilustra, la anotación incluye un círculo 306 alrededor de alguna porción 308 del texto electrónico 302. En este ejemplo, después de que el usuario introduce la anotación, el programa de aplicación invocará al analizador sintáctico 310 y solicitará un análisis sintáctico de los datos de tinta electrónica introducidos recientemente (como se observó anteriormente, el "análisis sintáctico" puede incluir, por ejemplo, la clasificación de la tinta electrónica en diversos tipos de tinta (por ejemplo, dibujos, texto, diagramas de flujo, música, etc.) y/o un análisis del diseño de tinta (por ejemplo, establecimiento de relaciones espaciales y de posición entre los golpes de tinta y agruparlos en agrupamientos adecuados), así como otros procesos de análisis). Específicamente, el programa de aplicación enviará los datos de tinta electrónica de entrada (que representa la anotación 306 en este ejemplo) al analizador sintáctico 310 como datos de tinta sin clasificar. Esto se ¡lustra en la Figura 3 mediante la flecha de entrada 312. Opcionalmente, en este momento o en un momento cercano, el programa de aplicación puede enviar algunos o todos los datos con relación al documento electrónico 300 subyacente al analizador sintáctico 310. Estos datos pueden incluir, por ejemplo, datos relacionados con el diseño espacial de la información en el documento 300, como las posiciones del texto electrónico 302, el dibujo 304, etc. Adicionalmente, el programa de aplicación puede enviar datos que indican una estructura jerárquica de los datos en el documento, lo que se describe con mayor detalle a continuación. Como otra alternativa, como también se describe con mayor detalle más adelante, el analizador sintáctico 310 puede invocar el programa de aplicación solicitando ciertos datos referentes al documento electrónico 300, como información referente al documento electrónico 300 en el área espacial asociada con la tinta nueva, sin clasificar (en este caso, los datos representan el texto escrito con teclado y la información ubicada espacialmente cerca de la anotación 306). Esta introducción de datos al analizador sintáctico 310 se ilustra en la Figura 3 mediante la flecha de introducción 314. Desde luego, tanto la tinta no clasificada como los datos analizados previamente pueden enviarse de manera simultánea y/o estar disponibles para el analizador sintáctico sin separarse del alcance de la invención. El analizador sintáctico 310 toma la entrada de los datos 314 del documento electrónico y la entrada de los datos 312 de tinta sin clasificar y usa dicha información para clasificar los nuevos datos de tinta electrónica en un tipo de tinta. La tinta puede clasificarse en varios tipos de tinta diferentes sin separarse del alcance de la invención, y varios ejemplos de los tipos posibles de tinta se describen con detalle a continuación. Para el ejemplo presente, con base en la tinta de entrada 306 y la información 302 que está contenida en el documento subyacente 300, el analizador sintáctico 310 de conformidad con este ejemplo de la invención puede determinar y clasificar la tinta de entrada 306 como una anotación o incluso más específicamente, como un dibujo de tinta que corresponde a una anotación de contenedor (por ejemplo un círculo) que contiene texto específico escrito con teclado. Desde luego, otros tipos de anotaciones también son posibles, como anotaciones remarcadas, anotaciones "señala hacia", anotaciones "señala desde", anotaciones ancla (por ejemplo sin señalamientos para o desde), espacios horizontales, espacios verticales y similares, y varios ejemplos se explican con mayor detalle a continuación. Una vez que se analiza sintácticamente, los datos asociados con la anotación 306 pueden incorporarse en una estructura de datos jerárquica "en el árbol del documento" asociada con el documento electrónico 300 (o cualquier otra estructura de datos deseada o adecuada), y dicha estructura de datos (o instrucciones para modificar una estructura de datos adyacente que mantiene el programa de aplicación) pueden enviarse al programa de aplicación, como se indica en la Figura 3 mediante la flecha 316. Si así se desea, pueden enviarse otros datos también desde el analizador sintáctico 310 hacia el programa de aplicación sin separarse del alcance de la invención. Por ejemplo, como se indica en la Figura 3, los datos asociados con los resultados de un proceso de análisis de reconocimiento (como un examinador de estructura manual u otro examinador) pueden enviarse al programa de aplicación, si la acción del analizador sintáctico 310 incluyó llamadas a uno o más módulos del examinador, componentes y/o programas. La Figura 4 ¡lustra el ejemplo de una implementación 400 de varias características que se usan en algunos ejemplos de la presente invención. Como se ilustra, un documento electrónico (como un documento A 300 de la Figura 3) se genera, almacena y/o mantiene por un programa de aplicación 400 A como una estructura de datos o un modelo de documento 402. Esta estructura de datos 402 puede ser una estructura de datos jerárquicos o cualquier otra estructura de datos adecuada sin separarse del alcance de la invención. El programa de aplicación 400 A incluye un objeto 404 de "contexto de análisis", el cual contiene una copia de espejo, una copia selectiva y otra información pertinente relacionada a la estructura de datos 402 (por ejemplo, el objeto 404 del contexto de análisis puede ser una capa de "traducción" en la cual las consultas sobre el objeto 404 de contexto de análisis se traducen en consultas sobre la estructura de modo del documento nativo, de esta manea, la tecnología del examinador sintáctico de conformidad con los aspectos de la presente invención pueden traducirse para usarse con diferentes programas de aplicación nativos). La "Plataforma" 400b o el lado del sistema operativo de esta implementación del ejemplo 400 incluye un método 406 "un analizador" el cual es invocado por el programa de aplicación 400a. El programa de aplicación 400a invoca el método 406 analizador de tinta y lo pasa para referencia al objeto 404 de contexto de análisis. El método 406 de analizador de tinta invocará al analizador sintáctico 408 (también parte de la plataforma 400b de este ejemplo), el cual clasifica y analiza el diseño de los datos ingresados, como se describió en general en los párrafos anteriores. La operación de una implementación ejemplar de conformidad con la presente invención se describe con mayor detalle en la sección análisis de tinta en párrafos posteriores. Una vez que el analizador sintáctico 408 termina su análisis y procesamiento, la plataforma 400b puede enviar datos nuevamente al programa de aplicación 400a para habilitar el modelo de documento 402 y/o el objeto 404 de contexto de análisis para volver a construir su estructura de datos con base en el procesamiento del analizador sintáctico y sus resultados, como se ilustra en general con la flecha 410 de la Figura 4. La Figura 5 ilustra en general un ejemplo de la estructura de datos que puede usarse para almacenar datos de un documento electrónico en al menos algunos ejemplos de esta invención, por ejemplo, como parte del objeto 404 "contexto de análisis", como el modelo de documento 402, o como estructuras de datos generadas y/o emitidas por el analizador sintáctico 408. Específicamente, en la Figura 5, se ilustra un ejemplo de un documento electrónico 500. Cuando se almacena como un objeto 502 de contexto de análisis o se somete a un análisis sintáctico, la estructura de datos puede incluir diversos elementos de documentos clasificados o dispuestos en diferentes agrupaciones o "nodos". Por ejemplo, como se ¡lustra en la Figura 5, el documento electrónico 500 incluye tres párrafos de texto electrónico 504, 506 y 58; un dibujo con tinta electrónica 510; y una anotación con tinta electrónica 512. En la Figura 5 se muestra una estructura de datos 502 de contexto de análisis ejemplar para el documento electrónico 500 como una lista de elementos de nivel superior. Específicamente, el elemento de nodo 504 (a) corresponde al párrafo 504 del documento 500, el elemento de nodo 506 (a) corresponde al párrafo 506 en el documento electrónico 500, el elemento de nodo 508 (a) corresponde al párrafo 508 en el documento electrónico 500, el elemento de nodo 510 (a) corresponde al dibujo de tinta 510 en un documento electrónico 500 y el elemento de nodo 512 (a) corresponde a la anotación de tinta 512 en un documento electrónico 500. Los nodos adicionales pueden almacenarse en la estructura de datos (por ejemplo, en una disposición jerárquica) como nodos generadores y/o nodos descendientes a los nodos de nivel superior 504a, 506a, 508a, 510a y 512a como se ilustra en la Figura 5, como se describirá con mayor detalle más adelante en esta descripción. B. Estructuras de datos jerárquicos y nodos de contexto Las Figuras de la 6A a la 61 ilustran varios ejemplos de nodos de contexto y estructuras de datos que pueden usarse en la construcción, análisis y análisis sintáctico de los datos de los documentos electrónicos, como pueden ser los objetos de contexto de análisis, de conformidad con en algunos objetos de la presente invención. La Figura 6A ilustra una estructura 600 de datos ejemplar que puede usarse para almacenar datos de tinta electrónica sin clasificar (por ejemplo, tinta recién ingresada por un usuario que no se ha sometido a análisis sintáctico previamente). Esta estructura de datos 600 ejemplar incluye un nodo de raíz 602 (que puede corresponder al documento electrónico completo en el programa de aplicación, una página específica del documento o cualquier grupo de datos adecuado o deseado, como un grupo que se usa por el programa de aplicación). Cualesquiera datos deseados o adecuados pueden incluirse en el nodo de raíz 602, como un número de página, punteros hacia la página anterior y hacia la siguiente página, ubicación o medidas para el margen, etc. Cada nodo de raíz 602 puede incluir cualquier número de nodos de tinta sin clasificar 604 como nodos descendientes, y cada nodo de tinta sin clasificar 604 además puede incluir cualquier número de nodos de golpe individual 606 (el último nodo en una estructura jerárquica (el nodo de golpe 606 en este ejemplo) también puede denominarse "nodo de vértice terminal" en esta especificación) (la letra "n" en varias figuras puede representar cualquier número, inclusive cero). Los varios nodos de la estructura de datos 600 pueden incluir cualesquiera datos deseados o adecuados que correspondan al nodo. Por ejemplo, los nodos de golpe 606 pueden incluir datos que representan: puntos del convertidor de datos analógicos a digitales u otros datos que identifican el golpe de tinta electrónico;
los datos de la posición o de la orientación del golpe; datos de color del golpe; datos de presión del golpe; datos de temporización de la entrada del golpe, datos del ID del golpe, y/o cualesquiera otros datos útiles y convencionales que se usan para almacenar información del golpe y sistemas y métodos capaces de recibir tinta electrónica. De igual manera, los nodos de tinta 604 sin clasificar pueden incluir cualesquiera datos adecuados o deseados asociados con la tinta o el nodo, como los datos que representan: el tamaño del cuadro límite de todos los golpes contenidos dentro del nodo; la ubicación del cuadro límite; la información de temporización de entrada; la información geométrica para la tinta (por ejemplo información de cubierta convexa); y/o cualesquiera otros datos convencionales o útiles referentes a los golpes de tinta sin clasificar que se incluyan en el nodo. De manera alternativa, si así se desea, los datos de golpe generalmente pueden guardarse como propiedad de otro nodo (por ejemplo, de un nodo de palabra, nodo de tabla, o similar) en lugar de un nodo separado en un árbol de documento. Una vez que la tinta sin clasificar se envía a un clasificador, analizador de diseño, examinador, y/o algún otro sistema de análisis sintáctico, al menos algunas porciones de la tinta pueden asociarse juntas y/o clasificarse en varios tipos diferentes, y una estructura de datos asociada con la tinta puede cambiar para que corresponda a diversas asociaciones y equipos en los que se puede clasificar. La Figura 6B ilustra un ejemplo de estructura de datos 610 para la tinta electrónica que se ha clasificado como un texto de tinta. Al usar la tecnología de análisis sintáctico, incluyendo los analizadores sintácticos convencionales conocidos y usados en la técnica, la entrada de golpes de tinta electrónica (por ejemplo, los datos de tinta electrónica recolectados entre un evento con pluma abajo y un evento de pluma arriba posterior temporalmente o de alguna otra manera) pueden analizarse sintácticamente y analizarse de manera jerárquica en donde los golpes de tinta individuales relacionados pueden agruparse juntos y almacenarse como palabras de tinta, dispuestas linealmente las palabras de tinta pueden agruparse juntas y almacenarse como lineas de tinta, las líneas de tinta relacionadas pueden agruparse juntas y almacenarse como párrafos de tinta y los párrafos relacionados pueden almacenarse como documentos electrónicos (por ejemplo porciones de páginas individuales, como documentos enteros o en cualquier agrupamiento de raíz adecuado). Una estructura de datos 610 jerárquica ejemplar que corresponde a los datos de tinta electrónica con análisis sintáctico y almacenada de esta manera, como se ilustra en la Figura 6, puede incluir un nodo de raíz 612, el cual puede corresponder a un documento electrónico completo, a una página u otro agrupamiento como se usa por el programa de aplicación. Cada nodo de raíz 612 puede contener cualquier número de nodos 614 que corresponden a párrafos o agrupamientos similares de golpes de tinta electrónicos. Los nodos del párrafo 614 pueden contener cualquier número de nodos de línea individual 616, lo cual en su momento puede incluir cualquier número de nodos 618 de palabra de tinta individual, lo que adicionalmente puede contener cualquier número de nodos 620 de golpe individual que corresponden a los golpes individuales de la introducción de datos de tinta electrónica. Opcionalmente, como se observó en párrafos anteriores, los datos de golpe pueden almacenarse como una "propiedad" de un nodo de palabra asociado. Si así se desea, los diversos nodos 612, 614, 616, 618 y 620 pueden almacenar cualesquiera datos adecuados remanentes con los diversos golpes individuales o colección de golpes contenidos dentro del nodo, como datos de orientación espacial o posicionamiento y/u otros datos similares que se describieron en los párrafos anteriores. Otros tipos de datos y disposiciones de la estructura de datos que corresponden a la entrada de golpes de tinta electrónica son posibles sin separarse del alcance de la invención. Por ejemplo, la clasificación, análisis del diseño o la tecnología del examinador puede determinar que la entrada de tinta electrónica forma un dibujo de tinta. La Figura 3 ilustra un dibujo de tinta 304 ejemplar que contiene varios golpes de tinta individuales. Las figuras 6C y 6D ilustran estructura de datos jerárquicos ejemplares que pueden usarse para agrupar y almacenar datos de tinta electrónica determinados para relacionarlos con los dibujos de tinta. Como se muestra en la Figura 6C, la estructura de datos 630 incluye un nodo de raíz 632 (el cual puede corresponder al documento electrónico completo, una página electrónica o algunos otros agrupamientos de datos, como se describió anteriormente). Cada nodo de raíz 632 puede incluir cualquier número de nodos 636 de dibujo de tinta individual (por ejemplo, de manera que cada dibujo individual tenga datos de almacenamiento de nodo individual, por ejemplo, anchura de dibujo, altura del dibujo, posición del dibujo, tamaño de la caja limite y similar), y cada nodo de dibujo de tinta 636 puede incluir cualquier número de nodos de golpe de tinta individual 638 (que corresponden a los golpes de tinta individuales formando el dibujo). Opcionalmente, los datos de golpe de tinta pueden almacenarse como una "propiedad" de su nodo de dibujo de tinta correspondiente (u otro nodo). La Figura 6D ilustra una estructura de datos 630a alternativa para documentos electrónicos que contienen uno o más dibujos con tinta. En este ejemplo, un elemento electrónico o página u otro agrupamiento de datos (como se representa por el nodo de raíz 632a) puede incluir uno o más grupos (que está representado por un nodo 634a) de los dibujos de tinta electrónica con sus datos asociados juntos y almacenados de la manera jerárquica descrita en conjunto con la Figura 6C (por ejemplo, un documento electrónico completo (representado por el nodo de raíz 632a) puede incluir diversas páginas individuales (cada una representada por un nodo de grupo 634a), y cada página individual puede tener uno o más dibujos de tinta individuales (cada uno representado por un nodo de dibujo de tinta 636a), y cada dibujo de tinta individual puede contener uno o más golpes de tinta individuales (cada uno representado por un nodo de golpe 638a o en una propiedad del nodo de dibujo de tinta)). Debe observarse que ambos grupos y dibujos de tinta pueden ser descendientes del mismo nodo de raíz o cualquier nodo de grupo. Además, si así se desea, un nodo de grupo puede contener nodos de grupo adicionales. Desde luego, aún otras estructuras de datos adecuados para almacenar dibujos de tinta electrónica pueden usarse sin separarse del alcance de la presente invención. Sin embargo, las estructuras de datos jerárquicos no están limitados para usarse con datos de tinta electrónica de entrada. En el texto escrito con teclado de entrada (por ejemplo, desde un teclado) también puede asociarse con varios grupos y almacenarse en una estructura de datos jerárquicos. La Figura 6E ilustra un ejemplo de dicha estructura de datos 640. Esta estructura de datos 640 puede incluir un nodo de raíz 642 (por ejemplo, como los nodos de raíz que se analizaron anteriormente). Cada nodo de raíz 642 puede incluir cualquier número de nodos de párrafo 644 en el texto (que corresponden a los párrafos del texto), cada nodo de párrafo 644 puede incluir cualquier número de nodos de línea de texto 646 (o alternativamente, nodos de enunciados de texto), y cada nodo de línea 646 puede adicionalmente incluir cualquier número de nodos de palabra 648 de texto individuales. Si así se desea, las palabras de texto pueden adicionalmente separarse en nodos de caracteres de texto individuales, y adicionalmente romperse en nodos característicos de caracteres individuales (referente a, por ejemplo, características de línea de base, serif, ascensor, y rasgos ascendentes y descendentes de cada carácter) sin separarse del alcance de la invención. Los varios nodos pueden almacenar cualesquiera datos adecuados referentes al texto, como párrafos, líneas o posición espacial de la palabra, contenido, tamaño y similares; márgenes de la página, dimensiones del margen o ubicaciones; número de página; etc. Las diversas estructuras de datos descritas anteriormente en conjunto con las Figuras de la 6A a la 6E ilustran estructuras de datos que contienen exclusivamente datos de tinta electrónica o únicamente datos de texto escritos con teclado y electrónicos. Puede usarse tecnología de análisis sintáctico para analizar, combinar, asociar y agrupar estos tipos de datos diferentes en una sola estructura de datos sin separarse del alcance de la invención. La Figura 6F ilustra una estructura de datos ejemplar 750 en la que un documento electrónico o una porción de éste (representado por el nodo de raíz 652) contiene uno o más párrafos individuales (representados por un nodo de párrafo 654) y una o más líneas individuales (representado por el nodo de línea 656). Las líneas pueden contener potencialmente tanto el texto escrito con teclado (representado por el nodo de palabras 658 de texto) y texto de tinta electrónica (representado por el nodo de palabras 660 de tinta y el nodo de golpe 662 de tinta). Cada nodo de palabra, línea y párrafo individual (tanto palabras de texto escrito con teclado como con tinta) contendrá datos independientes adecuados, dependiendo del contenido del párrafo, línea y palabra. Adicional y alternativamente, las palabras individuales pueden incluir además tanto caracteres con tinta como caracteres escritos con teclado sin separarse del alcance de la invención. Otros datos electrónicos también pueden incluirse en una estructura de datos del documento electrónico (incluyendo estructuras de datos jerárquicos) sin separarse del alcance de la invención. Por ejemplo, datos de imagen (como una fotografía digital, información gráfica y similares) pueden incluirse en una estructura de datos para un documento electrónico, por ejemplo, como se muestra en la estructura de datos 646 de la Figura 6G. Como se ilustra en este ejemplo, la estructura de datos 664 incluye un documento electrónico o una porción de ésta (representado por el nodo de raiz 666) que contiene uno o más agrupamientos de datos individuales (representados por el nodo de grupo 668). Cada agrupamiento de datos en este ejemplo además puede incluir una imagen electrónica (representada por el nodo de imagen 670), asi como el texto escrito con teclado (representado por el nodo de párrafo 672, el nodo de línea 674 y el nodo de palabra de texto 676), como se describió en general en los párrafos anteriores en conjunto con las Figuras 6E y 6F. Desde luego, una estructura de datos similar a la que se ilustra en la Figura 6G también puede contener datos de tinta electrónica (por ejemplo, como las estructuras de datos que se ilustran en las figuras 6A a la 6D) u otros tipos de datos deseados sin separarse del alcance de la invención. La Figura 6H ilustra un ejemplo de otra estructura de datos 680 potencial que se puede usar de conformidad al menos con algunos ejemplos de esta invención. Específicamente, la estructura de datos 680 de la Figura 6H corresponde a un documento electrónico o a una porción de éste (representado por el nodo de raíz 682) que contiene una o más listas (representadas por el nodo de lista 684). Una lista en un documento electrónico puede contener cualquier número de elementos en la lista individual (representados por el nodo de elemento de lista 686), y cada elemento de lista puede contener una amplia variedad de tipos diferentes de información electrónica. Por ejemplo, algunos elementos de la lista opcionalmente pueden incluir una viñeta en la lista, la cual puede estar formada por una viñeta escrita con teclado o una viñeta de tinta electrónica (un nodo de viñeta 688 que incluye uno o más nodos de golpe de tinta 690 correspondientes se ilustran en el ejemplo 6H). Además, cada elemento en la lista opcionalmente puede incluir uno o más párrafos de tinta electrónica (representados por una cadena de nodos 692), o uno o más dibujos de tinta (representados por la cadena de nodos 694), y/o uno o más párrafos escritos con teclado (representados por una cadena de nodos 696). Adicionalmente (o alternativamente), cada elemento de la lista opcionalmente puede incluir una o más imágenes (representada por el nodo de imagen 698) y/o uno o más agrupamientos de datos, como los agrupamientos descritos anteriormente en conjunto con las figuras 6D y 6G (representados por la cadena de nodos de grupo 700). Debido a que diversos nodos y/o cadenas de nodos 692, 694, 696, 698, 700 generalmente pueden corresponder a las estructuras de datos que se ilustran en las Figuras 6A a la 6G, así como a los subconjuntos y/o agrupamientos de estas estructuras de datos, se omite una explicación adicional. Si se desea, al menos en algunas instancias, un nodo del elemento de lista 686 individual también puede contener en sí mismo una lista que tiene una estructura de datos similar a la que se ilustra en la Figura 6H. La Figura 61 ilustra otra estructura de datos 710 que puede usarse al menos en algunos ejemplos de la presente invención. Esta estructura de datos 710 ejemplar corresponde a los datos electrónicos analizados, asociados juntos, agrupados y almacenados como una tabla. En este ejemplo que se ilustra, cada documento electrónico o porción del mismo (representado por un nodo de raíz 712) puede incluir una o más tablas (representadas por el nodo de tablas 714). Una tabla, en este ejemplo, puede comprender una o más filas de información (representadas por el nodo de filas 716), y cada fila puede comprender una o más celdas individuales (representada por el nodo de celdas 718). Las celdas individuales pueden contener una o más estructuras de datos, incluyendo, por ejemplo, cualquiera de diferentes estructuras de datos descritas anteriormente. En el ejemplo que se ilustra, las celdas individuales de la tabla se muestran conteniendo cualquier número de imágenes (representadas por el nodo de imágenes 720), cualquier número de párrafos de texto escrito con teclado (representados por la cadena de nodos 722), cualquier número de agrupamientos (representados por la cadena de nodos 724), cualquier número de dibujos de tinta (representados por la cadena de nodos 726), cualquier número de tablas adicionales (representadas por la cadena de nodos 728) y cualquier número de listas (representadas por la cadena de nodos 730). Desde luego, cualesquiera otras estructuras de datos asociadas adecuadas pueden incluirse en una tabla sin separarse de esta invención, incluyendo varias estructuras de datos específicas descritas anteriormente y/o combinaciones o subconjuntos de estructuras de datos, por ejemplo, como los descritos anteriormente. Cualesquiera datos adecuados o deseados pueden almacenarse en varios nodos diferentes, incluyendo los diversos tipos de datos descritos en los párrafos anteriores. Para usarse con datos de procesamiento referentes a anotaciones, puede ser útil al menos en algunos ejemplos de la invención para los diversos nodos almacenar datos referentes a la posición espacial, orientación o ubicación del nodo en el documento electrónico, opcionalmente ya que esta información espacial se refiere o se une con otros nodos en la estructura de datos del documento electrónico.
Otros tipos de analizadores sintácticos, clasificadores y/o examinadores y tipos de datos pueden usarse sin separarse del alcance de la invención. Por ejemplo, los examinadores pueden usarse para analizar, reconocer, agrupar y/o asociar símbolos eléctricos o electrónicos (por ejemplo, de resistores, fuentes de voltaje, capacitores, etc.); símbolos musicales, símbolos matemáticos, elementos de un diagrama de flujo, elementos de una gráfica de pastel y similares sin separarse del alcance de la invención . Las estructuras de datos que se ilustran en las Figuras de la
6A a la 61 son meramente ejemplos de diversas estructuras de datos que se pueden usar de conformidad con los aspectos de la presente invención. Los expertos en la técnica reconocerán que las estructuras de datos específicas que se usan pueden variar ampliamente sin separarse del alcance de la invención. Por ejemplo, pueden usarse diferentes nodos que representan diferentes agrupamientos de diseños, pueden añadirse tipos de nodos adicionales o algunos de los tipos de nodos descritos pueden omitirse sin separarse del alcance de la invención (por ejemplo, pueden usarse nodos de columnas en lugar de nodos de filas en una estructura de datos de una tabla). Además, la descripción anterior se utiliza para usarse con lenguajes y representaciones de texto en donde los caracteres se leen de izquierda a derecha y de arriba hacia abajo en una página. Las estructuras de datos diseñadas para usarse con y que corresponden a otros lenguajes y disposiciones de caracteres, por ejemplo, estructuras de datos para acomodar lenguajes que se leen y/o escriben de derecha a izquierda, de arriba hacia abajo, de abajo hacia arriba y combinaciones de los mismos, se pueden usar sin separarse de esta invención. Adicionalmente, si así se desea, (particularmente para algunos idiomas, como los idiomas asiáticos), los golpes pueden agruparse de manera adecuada como caracteres, los que pueden agruparse en líneas sin usar un nodo "de palabra" intermedio, como se describió en los párrafos anteriores. Como otra alternativa, el uso de nodos de líneas puede omitirse y los nodos de palabras pueden agruparse juntos como párrafos y/o en otros agrupamientos deseados. Estas y otras variaciones en la estructura de datos, por ejemplo, para acomodar características de un idioma particular, se pueden usar sin separarse del alcance de la invención. C. Aplicación de los aspectos de la invención a Das anotaciones Los aspectos de la presente invención, incluyendo el uso de nodos de contexto y estructuras de datos jerárquicos como se describió anteriormente, se pueden usar para proporcionar anotaciones de tinta electrónica "inteligente" en documentos electrónicos. Como se describió anteriormente, el uso deseable y aprovechable de los sistemas de cómputo basados en pluma es en la anotación de documentos electrónicos. Sin embargo, para que sean particularmente útiles y efectivas, las anotaciones realizadas en tinta electrónica en los documentos en un sistema de cómputo basados en pluma deben ser suficientemente flexibles, de manera que si y cuando las características asociadas con varios elementos en el documento subyacente cambian por alguna razón (por ejemplo, cambio en el margen, cambios en el tamaño de la visualización, cambio de fuente, adición de información, eliminación de información, etc.), la anotación sea capaz de cambiar de manera precisa la posición y/u otras características basadas en los cambios realizados a los elementos anotados en el documento subyacente. Esto puede lograrse, por ejemplo, uniendo al menos un nodo de contexto asociado con la anotación a uno o más nodos de contexto asociado con el documento subyacente. Al menos en algunos casos, los datos y/o las características asociadas y almacenadas referentes al documento subyacente, como los datos referentes a los atributos espaciales, posición y/o ubicación de uno o más elementos del documento, se pueden usar para controlar la ubicación, apariencia y/u otras características de la anotación. Las Figuras 7A y 7B ilustran un ejemplo de una anotación que se puede aplicar a un documento electrónico vía tinta electrónica. Como se ilustra en la Figura 7A, un documento electrónico 750 incluye la oración "Hoy el cielo es verde". Un usuario o un sistema de cómputo basado en pluma ha hecho esta anotación en este documento 750 usando tinta electrónica para subrayar la palabra "verde" (la anotación subrayada se muestra con el número de referencia 752). La Figura 7B ilustra un ejemplo de la estructura de datos 760 jerárquicos y corresponden a este documento electrónico 750 compuesto (el documento electrónico 750 completo se representa en la estructura de datos 760 mediante el nodo de raíz 762). Una vez que se ha analizado sintácticamente por completo, la estructura de datos 760 incluirá nodos de contexto que muestran la estructura del documento en general. Específicamente, la información referente al texto escrito con teclado en el documento electrónico 750 se analizará y se asociará para indicar que el documento electrónico 750 contiene un párrafo (nodo de párrafo 764), el párrafo contiene una línea (nodo de línea 766), y la línea contiene cinco palabras (un nodo de palabra de texto 768a-768e para cada una de las palabras "Hoy", "el", "cielo", "es" y "verde", respectivamente). Adicionalmente, el analizador sintáctico observará la presencia de datos en el documento electrónico 750 referente a la anotación 752, y clasificará estos datos en un dibujo de tinta electrónica (nodo de dibujo 770). Adicionalmente, y con base en la ubicación y posición de los golpes de dibujo de tinta con respecto al texto escrito con teclado en el documento subyacente 750, el analizador sintáctico reconocerá y clasificará la anotación como una anotación "subrayada" y generará un nodo de subrayado 770. Adicionalmente, el analizador sintáctico almacenará todos los datos de golpe correspondientes a los golpes de tinta reales de la anotación subrayada en uno o más nodos de vértice terminal de golpe 774 (opcionalmente, los datos de golpe pueden almacenarse como una propiedad del nodo subrayado 772 u otro nodo adecuado). Adicionalmente, para mantener el golpe de subrayado 752 de tinta electrónica con esta palabra individual "verde" cuando aparece en el documento electrónico 750 (por ejemplo, la palabra puede moverse por alguna razón), los datos se guardan en la estructura de datos 760 de este ejemplo para indicar que el nodo de contexto 772 de subrayado (por ejemplo, un nodo de contexto "fuente" en este ejemplo de unión) se enlaza al nodo de palabra 768e en el texto para la palabra "verde" (un nodo de "contexto de destino" en este ejemplo) como se ilustra en la Figura 7B con la flecha 776 y los datos se guardan para indicar que el nodo de palabra 768e del texto se une por el nodo de subrayado 772, como lo indica la flecha 778. Este enlace "ancla" del nodo de subrayado 772 al nodo de palabra 768e de texto (por ejemplo, un enlace de tipo "ancla"). De esta manera, si por alguna razón los datos almacenados en el nodo de texto 768e de las palabras de texto indica que una posición de la palabra "verde" cambió en el documento electrónico, los enlaces 776 y 778 permitirán que el programa de aplicación detecte que, si es posible, debe mover el producto de la anotación subrayada a la ubicación y/o posición espacial del nodo de contexto 768e de las palabras en el texto en el documento modificado. Como otro ejemplo, los datos del "cuadro límite", datos de ancho de palabra u otros datos almacenados en el nodo de contexto 768e indican un cambio en el tamaño o posición de la palabra por alguna razón (por ejemplo, debido a un cambio en el tamaño de la fuente, la adición de caracteres, la eliminación de caracteres, el cambio en los caracteres, etc.), el programa de aplicación entonces puede modificar el tamaño del subrayado presentado (por ejemplo, extendido o truncado), si es posible, para corresponder al nuevo tamaño asociado con la palabra de texto representada por el nodo de contexto 768e. Si aplica, los sistemas y métodos tal y como se describen en al menos alguno de los ejemplos de la invención pueden dividir los golpes de la anotación para que aparezcan en más de una línea, los cambios al documento subyacente ocasionan que el elemento del documento con anotaciones aparezcan múltiples líneas (por ejemplo, debido a las palabras añadidas, a la colocación de guiones o similares). También, cualquier disposición o enlace adecuados entre nodos o cualesquiera datos adecuados que representan un enlace pueden usarse sin separarse del alcance de la invención. Las Figuras 8A y 8B ilustran otro ejemplo de anotación. En este ejemplo, como se ilustra en la Figura 8A, el documento electrónico 800 nuevamente incluye la oración "Hoy el cielo es verde", pero en este caso, un usuario de un sistema de cómputo basado en pluma anota el documento 800 usando tinta electrónica para tachar la palabra "verde" (el tache se muestra con el número de referencia 802). La Figura 8B ilustra un ejemplo de la estructura de datos jerárquicos 810 que corresponden a este documento electrónico compuesto 800 una vez que se ha analizado sintácticamente por completo (debido a que los nodos de contexto específicos en gran parte de la Figura 8B corresponden a los nodos de contexto que están presentes en la Figura 7B, se usan los mismos números de referencia a los que se presentan en la Figura 7B en la Figura 8B, y se omite duplicar la explicación). En este caso, el analizador sintáctico observará la presencia de datos en el documento electrónico 800 referente a la anotación 802, y éste clasificará estos datos como un dibujo con tinta electrónica (nodo de dibujo de tinta 812). Adicionalmente, con base en la posición y la ubicación de los golpes de dibujo de tinta con respecto al contenido del texto escrito con teclado subyacente en el documento 800 (por ejemplo, el tachado horizontalmente estira la palabra de texto), el analizador sintáctico reconocerá y clasificará la anotación como una anotación "de tachado" y generará un nodo de tachado 814. Adicionalmente, el analizador sintáctico almacenará todos los datos de golpe correspondientes a los golpes de tinta reales de la anotación del tachado en uno o más nodos de vértice terminal de golpe 816 (alternativamente, como una propiedad en el nodo de tachado 814 u otro nodo adecuado). Como fue el caso respecto a la anotación de subrayado descrita respecto a las figuras 7A y 7B, la anotación de tachado puede mantenerse con esta palabra individual "verde", si la palabra se mueve por alguna razón. Nuevamente, esto puede lograrse, por ejemplo, guardando datos en la estructura de datos 810 para indicar que el nodo de contexto de tachado 814 (el nodo de contexto "fuente" en este ejemplo) se enlaza con el nodo de palabra 768e en el texto para la palabra "verde" (el nodo de contexto "de destino" en este ejemplo), como se ilustra en la Figura 8B mediante las flechas 818, y al guardar los datos en la estructura de datos para indicar que el nodo de palabra 768e en el texto está unida por el nodo de tachado 814, como lo indica la flecha 820. El tipo de enlace de este ejemplo es un "estiramiento horizontal" que ancla el nodo de tachado 814 al nodo de palabras 768e del texto. De esta manera, si por alguna razón los datos almacenados en el nodo de contexto 768e de la palabra del texto indica que una posición y/o tamaño de la palabra "verde" (u otras palabras asociadas con el nodo 768e) cambió en el documento electrónico 800, los enlaces 818 y 820 permitirán que el programa de aplicación detecte que, si es posible, debe ajusfar la presentación del golpe y/o ajusfar su tamaño (si es posible) en una ubicación, posición espacial y/o tamaño de la palabra almacenada en el nodo de contexto 718e en el documento electrónico modificado. Nuevamente, cualquier disposición y enlace adecuado entre los nodos o cualquiera datos adecuados que representan un enlace pueden usarse sin separarse del alcance de la invención. Las figuras 9A y 9B ilustran otro ejemplo del tipo de anotación y además demuestran la asociación o enlace de anotaciones con más de una sola palabra de texto. En el ejemplo que se ilustra en las figuras 9A y 9B, el documento electrónico 900 nuevamente incluye la oración "Hoy el cielo es verde", pero en este caso, un usuario de un sistema de cómputo basado en pluma hizo una anotación en el documento 900 usando tinta electrónica para encerrar en un círculo las palabras "es verde" (el círculo o la anotación tipo "contenedor" se muestra con el número de referencia 902 en la Figura 9A). La Figura 9B ilustra un ejemplo de la estructura de datos 910 jerárquica que corresponde a este documento electrónico 900 compuesto una vez que se ha analizado sintácticamente por completo (debido a que los nodos de contexto específicos para gran parte de la Figura 9B corresponden a los nodos de contexto que se presentan en la Figura 7B, se usan los mismos números de referencia que los que se encuentran en la Figura 7B para la Figura 9B, y se omite duplicar la explicación). En este caso, el analizador sintáctico nuevamente observará la presencia de datos en el documento electrónico 900 referente a la anotación 902, y clasificará estos datos como un dibujo de tinta electrónico (nodo de dibujo 912 de tinta). Adicionalmente, con base en la ubicación y en la posición de los golpes del dibujo de tinta respecto al contenido del texto escrito con teclado subyacente en el documento 900, el analizador sintáctico reconocerá y clasificará la anotación como una anotación "contenedor" y genera un nodo de contenedor 914 de tinta en la estructura de datos 910. Adicionalmente, el analizador sintáctico almacenará todos los datos de golpe correspondientes a los golpes de tinta reales de la anotación del contenedor en uno o más nodos de vértice terminal 916 de golpe (o alternativamente, como una propiedad del nodo contenedor de tinta u otro nodo adecuado). Como en el caso respecto a las anotaciones de subrayado y tachado descritas respecto a las figuras 7A a 8B, la anotación de contenedor puede mantenerse con las palabras "es verde", si estas palabras se mueven por alguna razón. Nuevamente, esto puede lograrse, por ejemplo, guardando datos en la estructura de datos 910 para indicar que el nodo de contexto 914 del contenedor de tinta (nodo de contexto "fuente" de este ejemplo) está unido a cada uno de los nodos de palabra 768d y 768e en el texto para las palabras "es verde" (nodos de contexto "de destino" en este ejemplo), como se ilustra en la Figura 9B con las flechas 918a y 918b. Adicionalmente, los datos pueden guardarse en la estructura de datos 910 para indicar que los nodos de palabras 768d y 768e de texto están unidos mediante el nodo contenedor 914, como se indica con las flechas 920a y 920b en la Figura 96. Este enlace es un enlace de tipo "contenedor". De esta manera, si por cualquier razón los datos almacenados en los nodos de contexto 768d y 768e de las palabras de texto indican que una posición y/o tamaño de las palabras "es verde" (u otras palabras asociadas con estos nodos de contexto) cambian en el documento electrónico 900, los enlaces 918a, 918b, 920a y 920b permitirán que el programa de aplicación de texto que, si es posible, debe ajustar la presentación de la anotación de contenedor y/o su tamaño a la ubicación, posición espacial y/o tamaño de las palabras almacenadas en los nodos de contexto 768d y 768e en el documento electrónico modificado. Adicionalmente, si un usuario añade palabras entre las palabras "es" y "verde", o si las palabras o caracteres se eliminan o cambian de cualquier manera, el programa de aplicación puede modificar el tamaño y/o ubicación de la anotación de contenedor para acomodar estos cambios. Nuevamente, otras disposiciones de enlace de datos que indiquen un enlace pueden almacenarse sin separarse del alcance de la invención. Las figuras 10A y 10B ilustran otro tipo de anotaciones que se usan comúnmente, específicamente una anotación de tipo "comentario al margen". En este ejemplo, como se ilustra en la Figura 10A, un usuario hace una anotación en un documento electrónico 1000 que contiene la oración "Hoy el cielo es verde" con un comentario al margen 1002 de tinta electrónica que indica: "¡No es verde!" Puede observarse en este caso, como se muestra en la Figura 10B, que la estructura de datos 1010 asociada con el texto escrito con teclado ha cambiado, ya que este texto está presente en dos líneas en el documento electrónico 1000 (en lugar de una sola línea como se muestra en las figuras 7A, 8A y 9A). De esta manera, la estructura de datos 1010 tiene dos nodos de línea 1012 y 1014, y el primer nodo de línea 1012 incluye nodos de palabras 768a y 768b de texto (asociadas con las palabras "Hoy" y "el") y el segundo nodo de línea 1014 incluye nodos de palabras 768c, 768d y 768e de texto (asociadas con las palabras "cielo", "es" y "verde"). Una vez que el documento electrónico compuesto 1000 se ha analizado sintácticamente por completo, el analizador sintáctico reconocerá la anotación 1002 que contiene el texto de tinta electrónica, y clasificará esta anotación (por ejemplo, respecto a su ubicación en el margen del documento 1000) como una anotación de tipo "comentario al margen". De esta manera, el analizador sintáctico generará un nodo de contexto 1016 adecuado para un comentario al margen. Debido a que este comentario al margen 1002 contiene sólo texto de tinta electrónica sintáctico genera adicionalmente un nodo de párrafo 1018, dos nodos de línea 1020 y 1022, y dos nodos de palabra de tinta adecuados 1024, 1026, 1028 y nodos de golpe 1030, 1032 y 1034 asociados con la estructura jerárquica de la tinta electrónica (como se observó anteriormente, opcional y alternativamente, los datos de golpe de tinta pueden almacenarse como propiedades de los nodos de palabra de tinta y/o los nodos de línea pueden omitirse de la estructura de datos 1010). En las figuras 10A y 10B se ilustra una relación de enlace diferente. Específicamente, en este ejemplo, con base en la ubicación y orientación del comentario al margen 1002 con respecto a los márgenes de la página y el contenido del documento subyacente, el analizador sintáctico guardará los datos en la estructura de datos 1010 indicando que el nodo del párrafo 1018 asociado con el comentario al margen 1002 (el nodo de contexto "fuente" en este ejemplo) se enlaza al nodo de párrafo 764 asociado con el texto escrito con teclado (el nodo de contexto "de destino" en este ejemplo), como se ilustra en la Figura 10B con la flecha 1036. Adicionalmente, el analizador sintáctico guardará los datos en la estructura de datos 1010 para indicar que el nodo de párrafo 764 asociado con el texto escrito con teclado está unido por el nodo de párrafo 1018 del comentario al margen 1002, como se ilustra con la flecha 1038. Esta es una disposición de enlace tipo "anclada" en la que el párrafo de tinta se ancla al párrafo de texto. De esta manera, cuando el párrafo escrito con teclado se mueve dentro del documento electrónico 1000, los enlaces 1036 y 1038 permitirán que el programa de aplicación detecte, si es posible, que debe mover el comentario al margen 1002 para que permanezca en el margen adyacente al párrafo escrito con teclado enlazado, incluso, opcionalmente, si se añaden líneas y/o palabras adicionales al párrafo, y/o si líneas o palabras se eliminan del párrafo, y/o si otros cambios se hacen dentro del párrafo o documento electrónico 1000. Desde luego, pueden almacenarse otras disposiciones de enlace o datos asociados con los enlaces sin separarse del alcance de la invención. Por ejemplo, el nodo de comentario al margen 1016 puede enlazarse a uno o más nodos de palabra de texto individuales del párrafo escrito con teclado, como el primer nodo de palabras 768a del texto. Las Figuras 11A y 11 B ilustran un ejemplo de alguna manera más complejo de una anotación que puede ser reconocida por los sistemas y métodos de conformidad al menos con alguno de los ejemplos de esta invención. En el ejemplo que se ilustra, el documento electrónico 1100 nuevamente incluye la frase "Hoy el cielo es verde", pero en este caso, el usuario ha hecho una anotación en el documento electrónico 1100 usando una combinación de tipos diferentes. Específicamente, el usuario ha dibujado una anotación de tipo contenedor 1102 encerrando en un círculo la palabra "verde", una anotación de tipo comentario al margen 1104 que contiene la palabra con tinta electrónica "azul", y una anotación de tipo conector 1106 (por ejemplo, una flecha en este ejemplo) que señala de la anotación de tipo contenedor 1102 a la notación de comentario al margen 1104. Debido a la posición y orientación espacial relativa de los diversos tipos de anotaciones con respecto al documento subyacente, el texto del documento escrito con teclado y los márgenes del documento, el sistema analizador sintáctico de conformidad con al menos uno de los ejemplos de esta invención reconocerá los diversos tipos de anotaciones, su contenido y su relación entre sí y con el texto escrito con teclado del documento electrónico como se describió en general en párrafos anteriores. Un ejemplo de estructura de datos 1110 jerárquica para el documento electrónico 1100 generado por el analizador sintáctico se muestra en la Figura 11B. Debido a que la estructura jerárquica para el texto escrito con teclado es igual que el descrito anteriormente en la Figura 7B, los números de referencia se usan para esta estructura en la Figura 11B, y se omite una explicación detallada. De igual manera como se ilustra en la Figura 11B, la cadena de nodos 1112 para la anotación de tipo contenedor de tinta 1102 es similar a la que se ilustra en la Figura 9B, y la cadena de nodos 1114 para la anotación de tipo comentario al margen 1104 es similar a la que se ilustra en la Figura 10B. De esta manera, no se incluye la descripción detalla de estas cadenas de nodos. Para mantener la posición espacial en las anotaciones con la porción adecuada y la ubicación espacial del texto subyacente, se proporcionan varios enlaces de los nodos de anotación y con el nodo de texto adecuado mediante el analizador sintáctico y se almacenan en la estructura de datos 1110. En el ejemplo que se ilustra, el nodo del contenedor de tinta 1116 (el nodo de contexto "fuente" en este ejemplo) se enlaza al nodo de palabras 768e de texto de la palabra que lo contiene (es decir, el nodo "de destino" que corresponde a la palabra "verde" en este ejemplo), como se ilustra en la Figura 11 B con la flecha 1118. De igual manera, los datos se almacenan en la estructura de datos 1110 indicando que el nodo de palabras 768e de texto se enlaza mediante el nodo de contenedor de tinta 1116 como se indica en la Figura 11 B mediante la flecha 1120. Esta es una disposición de enlace de tipo "contenedor". Como se observó anteriormente, el analizador sintáctico tal y como se describe en este ejemplo de la invención adicionalmente reconoce que el documento electrónico 1100 incluye un dibujo de tinta 1106 que corresponde a un conector de tinta (es decir, la flecha entre la anotación del contenedor 1102 y la anotación del comentario al margen 1104 en este ejemplo). Esta anotación del conector 1106 se almacena en la estructura de datos 1110 como un dibujo de tinta (representado por el nodo de dibujo de tinta 1122), el cual contiene un nodo que indica el tipo de anotación (un nodo de conector 1124 de tinta, en este ejemplo), el cual adicionalmente incluye datos que indican el golpe o golpes que forman el conector (por ejemplo, el nodo de golpe 1126 o en una propiedad asociada con el nodo conector 1124 de tinta (u otro nodo adecuado)). Adicionalmente, la información se almacena en la estructura de datos 1110 para indicar que el nodo conector 1124 de tinta (nodo "de destino" en este ejemplo) se señala desde el nodo del contenedor 1110 de tinta (el nodo "fuente" en este ejemplo). Este enlace (un enlace de tipo "señalamiento desde") se representa en la Figura 11 B por la flecha 1128. Adicionalmente, la estructura de datos 1110 incluye datos para indicar que el nodo conector 1124 de tinta (el nodo de contexto "fuente" en este ejemplo) se enlaza al nodo de palabra 1132 de tinta (el nodo de contexto "de destino" en este ejemplo). Este enlace (un enlace tipo "señalamiento hacia") se representa en la Figura 11 B con la flecha 1134. De manera alternativa, el nodo conector de tinta 1124 puede enlazarse con cualquiera de nodo de línea de tinta, nodo de párrafo de tinta o el nodo de comentario al margen de la cadena de nodos 1114 sin separarse del alcance de la invención. Con los enlaces específicos descritos anteriormente, la estructura de datos 1110 indica que el conector de tinta 1106 señala desde el dibujo del círculo 1102 y señala hacia la palabra de tinta, como se ilustra en la Figura 11A. Estos diversos enlaces permiten que el programa de aplicación detecte la asociación entre el documento subyacente y los diversos componentes de anotación. Después, si es posible, el programa de aplicación puede mover los elementos de anotación para que correspondan adecuadamente a los movimientos en el documento subyacente. Cualquier disposición de enlace adecuado o datos asociados con un enlace se pueden usar sin separarse del alcance de la invención. Las figuras 12A y 12B ilustran otro ejemplo de una funcionalidad de las anotaciones que se usan comúnmente. En este ejemplo, como se ilustra en la Figura 12A, el documento electrónico 1200 nuevamente incluye la oración "Hoy el cielo es verde", pero en esta ocasión, un usuario de un sistema de cómputo basado en pluma hizo una anotación en el documento 1200 usando tinta electrónica para colocar una estrella o un asterisco cerca de la primera palabra de la oración (la anotación se muestra con el número de referencia 1202). La Figura 12B ilustra un ejemplo de la estructura de datos 1210 jerárquicos correspondientes a este documento electrónico 1200 compuesto una vez que se analiza sintácticamente por completo (debido a que los nodos de contexto en gran medida de la Figura 12B corresponden a los nodos de contexto presentes en la Figura 7B, se usan los mismos números de referencia que los de la Figura 7B en la Figura 12B, y se omite una explicación duplicada). En este caso, el analizador sintáctico observará la presencia de datos de tinta electrónica relacionados con la anotación, y clasificará estos datos como un dibujo de tinta (nodo de dibujo de tinta 1212). Adicionalmente, con base en la forma del golpe de tinta así como en la ubicación y posición de los golpes de tinta de la anotación 1202 con respecto al contenido del documento subyacente 1200 (por ejemplo, a lo largo de la línea de texto escrito con teclado), el analizador sintáctico reconocerá la anotación como un "asterisco", "viñeta" o anotación de tipo ancla y genera un nodo asterisco 1214. Adicionalmente, el analizador sintáctico almacenará todos los datos de golpe correspondientes a los golpes de tinta reales del asterisco en uno o más nodos de vértice terminal de golpe 1216 o en una propiedad del nodo asterisco (o algún otro nodo). En este ejemplo, la anotación tipo asterisco 1202 puede mantenerse con la línea completa del texto escrito con teclado siempre que la línea aparezca en el documento electrónico 1200, si el texto escrito con teclado se mueve por alguna razón. Esto puede lograrse, por ejemplo, almacenando datos en la estructura de datos 1210 para indicar que el nodo de contexto asterisco 12124 (el nodo de contexto "fuente" en este ejemplo) se enlaza al nodo de línea de texto 766 (el nodo de contexto "de destino" en este ejemplo) como se ilustra en la Figura 12B con la flecha 1218, y mediante el almacenamiento de datos que indican que el nodo de línea de texto 766 está enlazado por el nodo asterisco 1214, como se indica con la flecha 1220. De esta manera, si por alguna razón los datos almacenados en el nodo de contexto de línea de texto 776 indican una posición o ubicación de línea que ha cambiado en el documento electrónico 1200, los enlaces 1218 y 1220 permitirán que el programa de aplicación lo detecte, si es posible, debe ajustarse la presentación del asterisco en una ubicación y/o posición espacial correspondiente a la presentación de los datos asociados con el nodo de contexto 766 en el documento electrónico modificado. De manera alternativa, si así se desea, el analizador sintáctico puede unir el nodo asterisco 1214 (u otro nodo adecuado asociado con la anotación de asterisco) al nodo de párrafo 764 o uno de los nodos de palabra individuales (por ejemplo, nodo de palabras 768a) sin separarse del alcance de la invención. También, si así se desea, el nodo de dibujo de tinta 1212 puede ser el nodo fuente anclado al nodo de línea 766 (u otro nodo adecuado que corresponda al texto escrito con teclado en este ejemplo). Se "puede usar cualquier disposición de enlace adecuado o datos que representen un enlace sin separarse del alcance de la invención. Se ilustra una anotación enlazada de tipo "diagrama de flujo" con la ayuda de las Figuras 13A y 13B. En ese ejemplo, el documento electrónico 1300 incluye un diagrama de flujo, el cual opcionalmente puede incluirse como parte de una anotación en un documento electrónico más grande en general. Como se ilustra en la Figura 13A, la anotación o el diagrama de flujo incluye una primera entrada de tinta 1302 (la letra "A" en este ejemplo) encerrada en un círculo o encerrada con una primera anotación de contenedor 1304 y una segunda entrada de tinta 1306 encerrada en un círculo o encerrada mediante una segunda anotación de contenedor 1308. Adicionalmente, una anotación de conector 1310 (una flecha en este ejemplo) se extiende desde la primera anotación de contenedor 1304 hacia la segunda anotación de contenedor 1308. Sin embargo, debe apreciarse que las relaciones entre los elementos del documento se pueden representar de maneras alternativas diferentes a enlaces. Por ejemplo, estas relaciones se pueden representar en la estructura del árbol de datos en sí mismas a través de, por ejemplo, el uso del nodo de contenedor que contiene elementos del documento asociado. La Figura 13B ilustra una estructura de datos 1320 ejemplar que puede asociarse con la anotación del diagrama de flujo del documento electrónico 1300 en la Figura 13A una vez que se ha analizado sintácticamente por completo. En esta estructura de datos 1320 ejemplar, un nodo de raíz 1322, el cual puede corresponder al documento electrónico 1300 completo o sólo a una porción de éste, se proporciona como el nodo de origen para los nodos dentro de la anotación de tipo diagrama de flujo. Un primer nodo de contexto relacionado con las estructuras de anotación específicas es el nodo de dibujo de tinta 1324 que corresponde al contenedor de tinta 1304. Un nodo de contenedor de tinta 1326 se proporciona como un nodo descendiente para el nodo de dibujo de tinta 1324, y los golpes específicos asociados con la anotación de contenedor de tinta 1304 se almacenan en nodos de vértice terminal 1328 o como propiedades del nodo de contenedor de tinta 1326 (u otro nodo). Como se observó anteriormente con respecto a la Figura 13A, la anotación además incluye texto de tinta electrónica correspondiente a la letra "A" 1302. Como es común con otros textos de tinta electrónica descritos en párrafos anteriores, la tinta electrónica asociada con este texto de tinta se almacena con la estructura de datos jerárquica 1320 como un nodo de párrafo 1330, el cual contiene un nodo de línea 332, que contiene un nodo de palabra de tinta 1334, el cual opcionalmente contiene uno o más nodos de vértice terminal 1336 que corresponden a los golpes individuales en la anotación de texto de tinta o una propiedad que incluye los datos de golpe. La información que se almacena en la estructura de datos 1320 indica que el nodo contenedor de tinta 1326 de la anotación de contenedor 1304 (el nodo "fuente") está enlazado al nodo de párrafo 1330 de la letra "A" (el nodo de contexto "de destino") como se ¡lustra en la Figura 13B por la flecha 1338. De manera alternativa, si así se desea, el nodo de palabra de tinta 1334 o el nodo de línea 1332 puede funcionar como el nodo destino. Adicionalmente, la información almacenada en la estructura de datos 1320 también indica que el nodo de párrafo 1330 está enlazado mediante el nodo contenedor de tinta 1326 como se indica en la Figura 13B con la flecha 1340. Debido a que la estructura de datos para el contenedor de tinta 1308 y la letra "B" 1306 de la anotación en este ejemplo comparten la misma estructura general que aquélla para el contenedor 1304 y la letra "A" 1302, que incluye la misma estructura de enlace general, los diversos nodos en la estructura de datos 1320 para la letra "B" 1306 y su contenedor asociado 1308 comparten los mismos números de referencia que los asociados con la letra "A" y su contenedor, pero la letra "b" sigue los números de referencia para el contenedor de tinta 1308 y palabra de tinta 1306 en la Figura 13B. Desde luego, las diferentes disposiciones jerárquicas y estructura de enlace o datos de enlace pueden diferir de los descritos específicamente en los párrafos anteriores sin separarse del alcance de la invención. La anotación además incluye una anotación de conector 1310, representada en la estructura de datos 1320 por un nodo de dibujo de tinta 1342. Como se describió anteriormente junto con la Figura 11 B , la estructura de datos para un dibujo de tinta que representa una anotación de conector de tinta además puede incluir un nodo conector de tinta 1344, el cual adicionalmente puede incluir una o más propiedades de nodos de vértice de terminal 1346, que incluyen datos asociados con los golpes específicos que forman el conector 1310. Para completar la estructura de datos de la anotación de este ejemplo, los datos asociados con la anotación de conector de tinta 1310 (el nodo fuente) se enlazan a los datos asociados con las dos anotaciones de contenedor (1304 y 1308 (nodos de destino) específicamente, como se muestra en el ejemplo de la Figura 13B, la información se almacena en la estructura de datos 1320 para indicar que el nodo del contenedor de tinta 1326 está enlazado al nodo conector de tinta 1344 (representado por la flecha 1348) como un tipo de anotación "señalamiento desde" adicionalmente, la información se almacena en la estructura de datos 1320 para indicar que el nodo conector de tinta 1344 está enlazado al nodo de contenedor de tinta 1326b (representado por la flecha 1352) como un tipo de anotación "señalamiento hacia". De esa manera, los datos almacenados relacionados a los enlaces indican que el conector 1310 señala desde el contenedor 1304 de círculo al contenedor 1308 de círculo, como se ¡lustra en la Figura 13A. De esta manera, la existencia de varios enlaces permitirán el movimiento de una parte de la anotación en el documento electrónico 1300 para que sea seguida por las otras partes de la anotación, manteniendo así la anotación intacta, incluso si el documento electrónico 1300 cambia de alguna manera. Desde luego que esta estructura general también puede enlazarse a algún elemento del documento subyacente, como se describió anteriormente, sin separarse del alcance de la invención. De manera similar, una anotación puede involucrar dos encerramientos conectados por un conector con un comentario escrito, por ejemplo, "¡Cambiar esto!" si una parte de la anotación se mueve, puede ser necesario mover de manera independiente la otra parte de la anotación, como cuando las palabras se insertan entre dos encerramientos. Los enlaces entre los nodos de contexto que representan las anotaciones de tinta electrónica y los nodos que representan el contenido que no es de tinta se pueden usar mediante una aplicación de programas de cómputo para volver a ubicar las piezas de la anotación y después unirlas juntas cuando se completa la operación de posicionamiento. Las Figuras 14A y 14B ilustran otro ejemplo de un documento electrónico 1400 que tiene una anotación de tipo diagrama de flujo o estructura de tinta. En este ejemplo, la anotación de tinta electrónica para la letra "A" 1402 se conecta con las anotaciones de tinta electrónica para las letras "B" 1404 y "C" 1406, con los conectores de tinta electrónica 1408 y 1410 entre las letras "A" y "B" y "C", respectivamente. Un ejemplo de estructura de datos 1420 para el documento electrónico 1400 después de analizarlo sintácticamente se ilustra en la Figura 14B. Los datos relacionados con el documento electrónico completo o alguna porción de éste pueden almacenarse en el nodo raíz de origen 1422. Los datos que corresponden a las palabras de tinta electrónica "A", "B" y "C" tienen la misma estructura de nodo de párrafo (1424a, 1424b, 1424c), nodo de línea (1426a, 1426b, 1426c), nodo de palabra de tinta (1428a, 1428b, 1428c), y nodos de golpe (1430a, 1430b, 1430c) como se usa en diversas figuras anteriores. Se omitirá la descripción repetitiva de estos nodos. De igual manera, los conectores de tinta tienen estructura de nodo de dibujo de tinta (1432, a, 1432b), nodo de contenedor de tinta (1434a, 1434b) y nodos de golpe (1436a, 1436b) que se usa en las Figuras 11B y 13B ya descritas, de manera que se omite hacer una descripción repetitiva, desde luego, se pueden usar variaciones en estas estructuras de datos específicos, incluyendo las variaciones posibles descritas anteriormente sin separarse del alcance de la invención. Para completar la estructura de datos de anotación de este ejemplo, los datos asociados con la anotación de conector de tinta 1408 se enlaza a los datos asociados con las dos anotaciones de palabra de tinta 1402 y 1404 que conecta, y los datos asociados con la anotación de conector de tinta 1410 enlaza a los datos asociados con las dos anotaciones de palabra de tinta 1402 y 1406 que conecta. Específicamente, como se muestra en el ejemplo de la Figura 14B, la información se almacena en la estructura de datos 1420 para indicar que el nodo de dibujo de tinta 1432a (el nodo "fuente") "señala hacia" los nodos de palabra de tinta 1428a y 1428b (según lo representan las flechas 1438 y 1440, respectivamente). De igual manera, la información se almacena en la estructura de datos 1420 para indicar que el nodo de dibujo de tinta 1432b (el nodo "fuente") "señala hacia" los nodos de palabra de tinta 1428a y 1428c (como lo representan las flechas 1442 y 1444, respectivamente). Los nodos de palabra de tinta 1428a, 1428b y 1428c funcionan como nodos "de destino". Debido a los diversos enlaces, el movimiento de una parte de la anotación en el documento electrónico 1400 puede ser seguida por otras partes de la anotación. De esta manera se mantiene la anotación intacta o enlazada, incluso si el documento electrónico 1400 cambia de alguna manera. También, esta anotación se puede enlazar con uno o más elementos diferentes en el documento electrónico, como un texto escrito con teclado, dibujos, imágenes, etc., sin separarse del alcance de la invención. Las Figuras de la 15A a la 15C ilustran ejemplos de un documento electrónico 1500 y estructuras de datos ejemplares que incluyen una anotación de tinta electrónica en forma de una tabla que tiene varias filas y columnas. Específicamente, como se ilustra en el ejemplo de la Figura 15A, el documento electrónico 1500 incluye una tabla 1502 con dos filas y dos columnas (haciendo un total de cuatro celdas), y cada celda de la tabla está formada de bordes de tinta electrónica y contiene entradas de texto de tinta electrónica. Una estructura de datos 1510 ejemplar para la tabla de tinta electrónica 1502 que se ilustra en la Figura 15A, después de completar el análisis sintáctico se muestra en la Figura 15B. En este ejemplo, la estructura de datos 1510 incluye un nodo de raíz 1512, el cual puede corresponder a todo el documento electrónico 1500 o a una porción de éste. Bajo el nodo de raíz 1512, datos pertinentes relacionados a la tabla se almacenan en el nodo de tabla 1514. Esto puede incluir, por ejemplo, datos que indican el tamaño de la tabla, posición de la tabla, número de filas, número de columnas, tamaño del cuadro límite y similares. Bajo el nodo de tabla 1514, se proporcionan nodos de fila separados para cada fila de la tabla (en este ejemplo, como se ilustra en la Figura 15B, se proporcionan dos nodos de fila 1516 y 1518). Cada nodo de fila de esta estructura de datos de ejemplo adicionalmente incluye uno o más nodos de celda (en el ejemplo que se ilustra, el nodo de fila 1516 incluye dos nodos de celda 1520 y 1522, aunque el nodo de fila 1518 incluye dos nodos de celda 1524 y 1526). Debido a que cada celda de este ejemplo contiene datos de texto de tinta electrónica, el remanente de esta estructura jerárquica de datos 1510 ejemplar tiene un nodo de párrafo conocido, un nodo de línea, un nodo de palabra de tinta y nodos de golpe que se describieron detalladamente en párrafos anteriores. Desde luego, las celdas en la tabla pueden contener uno o más tipos de datos además y/o en lugar de los datos de tinta electrónica, incluyendo, por ejemplo datos de texto escritos con teclado y/o cualesquiera tipos de datos diversos descritos detalladamente con anterioridad con respecto a la Figura 61, sin separarse de esta invención. Como otra alternativa, en lugar de nodos de fila 1516 y 1518, la estructura de datos puede incluir nodos de columna, lo que puede entonces incluir nodos de celda, nodos de párrafo, etc., como se muestra en la Figura 15B. Los golpes de tinta que forman la tabla real pueden almacenarse, por ejemplo, como una parte del nodo de tabla 1514 (por ejemplo, como las propiedades asociadas con dicho nodo), como un nodo de dibujo de tinta que depende del nodo de tabla 1514 (con los golpes asociados almacenados debajo de éste), y/o en cualquier otra ubicación adecuada en la estructura de datos 1510. Una estructura de datos 1530 ejemplar alternativa para el documento electrónico 1500 que incluye la tabla 1502 se muestra en la tabla 15C. En este ejemplo, el nodo de raíz 1512; el nodo de la tabla 1514; los nodos de fila 1516 y 1518; y los nodos de celda 1520, 1522, 1524 y 1526 son los mismos que los que se ilustran en la Figura 15B. No obstante, en lugar de incluir los datos de texto de tinta electrónica como nodos descendientes bajo los diversos nodos de celda 1520, 1522, 1524 y 1526, los nodos de párrafo 1528a, 1528b, 1528c, 1528d de los datos de texto de tinta electrónica (o cualquier otra estructura de datos deseada o adecuada) se enlaza a sus nodos de celda respectiva 1520, 1522, 1524 y 1526, como se muestra en la Figura 15C con las flechas 1530a, 1530b, 1530c y 1530d, respectivamente. Los nodos de celda en este ejemplo pueden funcionar como nodos "fuente" del tipo contenedor para las palabras de tinta contenidas en los mismos, y los nodos de párrafo de tinta, línea o palabra funcionan como nodos de contexto "de destino". Debido a los diversos enlaces, el movimiento de una parte de la anotación de la tabla en el documento electrónico 1500 puede ser seguida por otras partes de la anotación, para mantener de esta manera la anotación de tabla Intacta o enlazada, incluso si el documento electrónico 1500 cambia de alguna manera. La tabla puede estar enlazada a algunos otros nodos presentes con base en el documento electrónico subyacente. Nuevamente, como alternativa, los nodos de fila 1516 y 1518 pueden reemplazarse con nodos de columna que contienen los diversos nodos de celda sin separarse del alcance de la invención. También, los golpes de tinta que forman la tabla real pueden almacenarse en cualquier ubicación sin separarse del alcance de la invención, por ejemplo, como parte de un nodo de tabla 1514 (por ejemplo, como propiedades asociadas con dicho nodo), como un nodo de dibujo de tinta que depende del nodo de la tabla 1514 (con los golpes asociados almacenados debajo de ésta), y/o en cualquier otra ubicación adecuada en la estructura de datos 1510. Desde luego, las diversas figuras relacionadas a los diversos tipos de anotación ejemplar descritos anteriormente describen meramente ejemplos de los tipos de anotación posibles, el uso de anotaciones y la información que puede incluirse dentro de las anotaciones. Los expertos en la técnica reconocerán que pueden realizarse muchas modificaciones y cambios sin separarse del alcance de la invención. Por ejemplo, las anotaciones pueden contener muchos tipos diferentes de datos (como texto de tinta electrónica, dibujos, imágenes, texto escrito con teclado e imágenes, etc.), en muchas combinaciones diferentes y cambios sin separarse del alcance de la invención.
Adicionalmente, varios esquemas de enlaces se describen en conjunto con las diversas estructuras de datos descritas anteriormente. Dichos esquemas o técnicas de enlace son meramente ejemplares de manera que varios nodos de datos pueden enlazarse juntos. Cualquier disposición de enlace adecuado o datos asociados con un enlace se pueden almacenar sin separarse del alcance de la invención. Por ejemplo, puede ser posible representar cada nodo con un identificador individual (como un "identificador único global" o GUID, por sus siglas en inglés) y representa los enlaces usando pares un GUID (o más). Como otra alternativa, un solo enlace se puede usar para enlazar nodos en lugar de la disposición de enlace doble descrita con respecto a algunos ejemplos mencionados en los párrafos anteriores. Como otra alternativa posible, si es necesario o deseado, un nodo puede enlazarse consigo mismo (el autoenlace, por ejemplo, donde el nodo fuente y el nodo destino son el mismo nodo). Los expertos en la técnica reconocerán que cualquier manera adecuada de enlace o de asociación de varios conjuntos de datos entre sí se puede usar sin separarse del alcance de la invención. Análisis de la tinta Ahora se describirán varios ejemplos de técnicas para analizar tinta electrónica en un documento electrónico tal y como se describe en los ejemplos de la invención. En particular, las Figuras de la 16A a la 16E ilustran un diagrama de flujo que muestra los pasos para analizar un documento tal y como se describe en varios ejemplos de la invención. Las Figuras de la 17 a la 26 entonces ilustran las relaciones entre los diferentes componentes empleados durante el proceso de análisis. Haciendo referencia a la Figura 17, esta figura ilustra una aplicación de programa de cómputo 1701. La aplicación del programa de cómputo 1702 mantiene un documento 1703, el cual puede incluir tanto datos de tinta electrónica 1705 como datos que no son de tinta electrónica 1707, como caracteres escritos con teclado o imágenes. Como se analizó detalladamente en párrafos anteriores, las propiedades de ambos datos de tinta electrónica 1705 y de datos que no son de tinta electrónica 1707 pueden describirse en una estructura de datos jerárquicos como un árbol. Para iniciar el análisis de la tinta electrónica, en el paso 1601 la aplicación del programa de cómputo 1701 crea dicha estructura de datos, identificada como el objeto de contexto de análisis 1709 en la Figura 17. La Figura 18 ilustra un árbol 1801 de ejemplo del tipo que puede incluirse en el objeto de contexto de análisis 1709. El árbol 1801 incluye un nodo de raíz 1803 y un nodo de párrafo 1805. El nodo de párrafo 1805 corresponde a un párrafo de texto de tinta electrónica que, por ejemplo, puede haber sido identificado anteriormente mediante un proceso de análisis anterior. El nodo de párrafo 1805 se conecta a dos nodos de línea 1807 y 1809, que representan dos líneas en el párrafo de texto de tinta electrónica.
El nodo de línea 1807 se asocia, en su momento, con dos nodos de palabra 1811 y 1813. Cada nodo de palabra 1811 y 1813 corresponde a una palabra en la línea de un texto de tinta electrónica representado por el nodo de línea 1807. El nodo de palabra 1811 contiene datos de golpe de tinta 1815 y datos de golpe de tinta 1817. De esta manera, los datos de golpe 1815 y 1817 corresponden a golpes de tinta electrónica de texto que forma la palabra representada por el nodo de palabra 1811. De igual manera, el nodo de palabra 1813 contiene datos de golpe de tinta 1819 y datos de golpe de tinta 1821, los cuales corresponden a los golpes de tinta electrónica del texto que forman la palabra representada por el nodo de palabra 1813. El árbol 1801 también incluye datos de golpe 1823-1827 que se asocia sólo con el nodo de raíz 1803. Estos datos de tinta 1823-1827 representan nuevos golpes de tinta que no se ha clasificado ni asociado con otro golpe de tinta u otro elemento de documento. De esta manera, en lugar de almacenar los golpes en nodos de golpes individuales, varios nodos pueden tener una propiedad de "golpes" asociados que almacena datos correspondientes asociados con el nodo. Por ejemplo: (a) los nodos de contexto no clasificados pueden contener una o más propiedades de "golpe" que tienen uno o más golpes que necesitan ser analizados; (b) los nodos de palabra de tinta pueden contener una o más propiedades de "golpe" que contienen uno o más golpes que forman una palabra de tinta; (c) los nodos de dibujo pueden contener una o más propiedades de "golpe" que contienen uno o más golpes que forman un dibujo; y (d) los nodos de viñetas pueden contener una o más propiedades de "golpe" que contienen uno o más golpes que forman la viñeta en un elemento de lista. Desde luego, con implementaciones alternativas de la invención, los nodos de golpe individuales se pueden usar en el árbol de datos para representar golpes individuales de golpes electrónicos, en lugar de asociar golpes de tinta con, por ejemplo, un nodo de palabra o nodo de dibujo. Mientras que el árbol 1801 que se muestra en la Figura 18 incluye golpes de tinta que se han organizado en palabras, líneas y párrafos, debe apreciarse que el árbol 1801 puede contener sólo nuevos golpes de tinta que no se han clasificado o asociado con otro golpe de tinta o elemento del documento. Por ejemplo, cuando un usuario introduce inicialmente tinta electrónica en el documento 1705, estos golpes de tinta iniciales no se han analizado. También debe apreciarse que el árbol 1801 sólo es representativo y se ha representado de manera muy simple para facilitar la comprensión de diversos aspectos de la invención. Por ejemplo, un nodo de línea típicamente se asociará con una pluralidad de nodos de palabra y cada nodo de palabra puede contener datos de golpe para diversos golpes de tinta, también debe observarse que, aunque el árbol 1801 sólo incluye nodos relacionados con tinta, el objeto de contexto de análisis 1709 puede incluir nodos que representan elementos del documento que no son de tinta, como imágenes y texto escrito con teclado, como se describió detalladamente en párrafos anteriores. Volviendo ahora la Figura 17, con algunos ejemplos de la invención la aplicación del programa de cómputo 1701 creará y mantendrá su propio objeto de contexto de análisis 1709. Para estas aplicaciones de programa de cómputo 1701, la aplicación del programa de cómputo 1701 simplemente puede proveer una referencia al objeto de análisis 1709. Sin embargo, para estas aplicaciones el programa de cómputo 1701, la aplicación 1701 debe incluir los mecanismos necesarios para crear, llenar y mantener el objeto de análisis. Sin embargo, algunos desarrolladores de programas de cómputo no desearán enfrentarse a la situación de proveer estos mecanismos con la aplicación 1701. De esta manera, sin embargo, con otros ejemplos de la invención la aplicación de programa de cómputo 1701 puede iniciar otro objeto para crear el objeto de contexto de análisis 1709. Por ejemplo, la aplicación de programa de cómputo 1701 puede emplear la herramienta de análisis de tinta u otro objeto para crear y/o mantener el objeto de contexto de análisis 1709. Por ejemplo, una aplicación de programa de cómputo 1701 puede identificar o proporcionar datos de tinta si analizar a la herramienta de análisis de tinta. Dependiendo de la instrucciones de la aplicación del programa de cómputo 1701, la herramienta de análisis de tinta puede entonces crear un objeto de contexto de análisis 1709 que representa el documento completo 1703, o, alternativamente, sólo una región particular (o regiones) del documento que contienen la tinta sin analizar identificada por la aplicación de programa de cómputo 1701. Con algunas aplicaciones del programa de cómputo 1701, la aplicación del programa de cómputo 1701 puede entonces mantener y actualizar el objeto de contexto de análisis 1709, ya sea por sí misma o usando los servicios proporcionados por la herramienta de análisis de tinta u otro objeto. Incluso con otras aplicaciones de programas de cómputo 1701, la aplicación de programa de cómputo 1701 puede no mantener el objeto del documento de análisis 1709 y en su lugar hacer que la herramienta de análisis de tinta u otro objeto cree un nuevo objeto de documento de análisis 1709 cuando sea necesario. Comúnmente, el objeto de contexto de análisis 1709 contendrá información sobre el elemento del documento para el documento completo 1703. Sin embargo, debe observarse que con algunos ejemplos de la invención, el objeto de contexto de análisis 1709 puede contener información para elementos de documento en sólo una porción del documento 1703. Esto es, el objeto de contexto de análisis 1709 puede representar sólo elementos de documento en un área espacial del documento que contiene tinta nueva o "sucia" u otros datos. Si todos los elementos del documento en un área del documento, incluyendo la tinta electrónica, ya se han analizado, entonces estos elementos de los documentos previamente analizados pueden no incluirse en el objeto de contexto de análisis 1709. Como otra alternativa, el programa de aplicación puede mantener un objeto de contexto de análisis 1709 separado para cada página u otro subconjunto de datos relativos al documento electrónico 1703 completo. Una vez que la aplicación del programa de cómputo 1701 ha creado el objeto de contexto de análisis 1709, en el paso 1603 la herramienta de análisis de tinta 1901 copia al menos una porción del objeto de contexto de análisis 1709 como se muestra en la Figura 19. En particular, si el objeto de contexto de análisis 1709 no está limitado a las regiones que contienen tinta nueva y/u otros datos como se describió anteriormente, entonces la aplicación del programa de cómputo 1701 diseñará las regiones del documento 1703 que contiene tinta nueva y/u otros datos que deban analizarse. La aplicación de programas de cómputo 1701 entonces invoca la herramienta de análisis de tinta 1901 para que copie la porción del objeto de contexto de análisis 1709 correspondiente a la región designada del documento 1703 (desde luego, si el objeto de contexto de análisis 1709 ya está limitado para describir regiones que contienen tinta nueva, entonces la herramienta de análisis de tinta 1901 puede copiar el objeto de contexto de análisis 1709 completo). Aunque un programa de aplicación 1701 sabrá qué tinta no se ha analizado previamente, es probable que no sepa cuáles porciones de este documento electrónico 1703 (por ejemplo, la tinta analizada previamente, los datos subyacentes en la estructura del documento, etc.) serán afectadas por la nueva tinta (y por lo tanto, cuáles porciones presentar a la herramienta de análisis de tinta 1901). Por lo tanto, en al menos algunos ejemplos de la invención, el programa de aplicación 1701 hará secciones grandes del documento electrónico 1703 disponibles para la herramienta de análisis de tinta 1901 a través del objeto de contexto de análisis 1709. El programa de aplicación 1701 lo lleva a la herramienta de análisis de tinta 1901 para determinar la información necesaria en realidad del programa de aplicación 1701 a través del objeto de contexto de análisis 1709. Como respuesta a la invocación del análisis de datos nuevos, la herramienta de análisis de tinta 1901 hace varias invocaciones al objeto de contexto de análisis 1709, en caso de ser necesario, para obtener la información del objeto de contexto de análisis 1709 necesaria para analizar la tinta nueva y/u otros datos en la región designada por la aplicación del programa de cómputo 1701. Por ejemplo, además de la tinta nueva y/u otros datos, la herramienta de análisis de tinta 1901 puede preguntar al objeto de contexto de análisis 1709 sobre la información respecto a la tinta y/u otros datos en la región designada que ya se ha analizado, o por información respecto a elementos del documento que no son de tinta electrónica en la región designada. La "región designada" puede, al menos en algunos ejemplos de la invención, corresponder a los datos en el área espacial en y/o cerca del área que contiene la nueva tinta o los otros datos para ser analizados. Tanto la tinta previamente analizada como los elementos del documento sin tinta, particularmente aquellos elementos ubicados cerca de los datos recién ingresados para analizar, pueden proporcionar un contexto que mejorará el análisis de la tinta sin analizar u otros datos. Mientras la herramienta de análisis de tinta 1901 obtiene la información deseada del objeto de contexto del análisis 1709, la herramienta de análisis de tinta 1901 crea el objeto de contexto de análisis independiente del documento 1903 con la información obtenida. De esta manera, el objeto de contexto de análisis independiente del documento 1903 contiene al menos un subconjunto de información contenida en el objeto de contexto de análisis 1709, pero es independiente del documento 1703. el uso de esta técnica de "invocación" en un método de abstracción espacial basada en preguntas descritas anteriormente hace posible que la herramienta de análisis de tinta 1901 obtenga de manera eficiente los datos necesarios y los analice, incluso para documentos grandes. Sin embargo, debe observarse que la aplicación 1701 puede restringir incluso el contenido en el objeto de contexto de análisis independiente del documento 1903 simplemente al no exponer el contenido a la herramienta de análisis cuando se solicite. También debe observarse que, mientras la herramienta de análisis de tinta 1901 crea el objeto de contexto de análisis independiente del documento 1903, la aplicación del programa de cómputo 1701 no debe cambiar el objeto de contexto de análisis 1709 (y no puede permitir que otras hebras en el programa de aplicación y/u otros programas cambien el objeto de contexto de análisis 1709 durante este periodo). Esto es, la aplicación de programas de cómputo 1701 no debe introducir nuevos datos en el documento 1703 durante este periodo, y no debe permitir que otras hebras y/o programas de aplicación lo hagan. El proceso de crear el objeto de contexto de análisis independiente del documento 1903 es relativamente rápido, sin embargo y típicamente no impactará de manera importante la operación de la aplicación del programa de cómputo 1701. Sin embargo, si se desea, los esfuerzos de ingreso de datos al documento 1703 pueden almacenarse en la memoria caché e introducirse en el sistema después de crear el objeto de contexto de análisis independiente del documento 1903. Una vez que se crea el objeto de contexto de análisis independiente del documento 1903, todos los análisis posteriores de la tinta sin analizar y/u otros datos pueden realizarse en el objeto de contexto de análisis independiente del documento 1903 en lugar del objeto de contexto de análisis 1709, permitiendo que la aplicación del programa de cómputo 1701 continúe su operación normal sin demorarse o detenerse por el análisis de la tinta sin analizar y/u otros datos. La aplicación del programa de cómputo 1701 puede incluso introducir nuevos datos de tinta electrónica 1705 en el documento 1703 ( y en el objeto de contexto de análisis 1709) sin interferir con el análisis de la tinta sin analizar en el objeto de contexto de análisis 1703 independiente del documento.
De esta manera, después de que el objeto de contexto de análisis independiente del documento 1903 se ha creado, en el paso 1605 la herramienta de análisis de tinta 1901 crea una hebra de análisis separada para analizar la tinta en el objeto de contexto de análisis independiente del documento 1903. De esta manera, en el paso 1607, la aplicación de programa de cómputo 1701 puede recuperar el control de la hebra de procesamiento principal, y puede continuar su operación normal. Después, en el paso 1609, la herramienta de análisis de tinta 1901 proporciona el objeto de contexto de análisis independiente del documento 1903 a un primer proceso de análisis para su análisis. Por ejemplo, como se muestra en la Figura 20, la herramienta de análisis de tinta 1901 puede pasar el objeto de contexto de análisis independiente del documento 1903 a un proceso de análisis sintáctico 2001 para que sea analizado sintácticamente usando la hebra de análisis. El proceso de análisis sintáctico adicionalmente puede incluir uno o más procesos de clasificación sin separarse del alcance de la invención (por ejemplo, para clasificar tinta y/u otros datos en diferentes tipos, como texto de tinta, dibujos de tinta, tablas, gráficas, diagramas, imágenes, música, símbolos matemáticos, dibujos que contienen símbolos especializados (como diagramas eléctricos, resistores, capacitores y similares), etc.). Debe observarse que, con algunos ejemplos de la invención, la herramienta de análisis de tinta 1901 puede hacer una copia del objeto de contexto de análisis independiente del documento 1903. Como será explicado con mayor detalle a continuación, puede usarse una copia de la forma original del objeto de contexto de análisis independiente del documento 1903 para conciliar los resultados del análisis del proceso de análisis con un estado actual del documento 1703. Después de que el primer proceso de análisis ha analizado la tinta y/u otros datos en el objeto de contexto de análisis independiente del documento 1903, el primer proceso de análisis envía los resultados de análisis a la herramienta de análisis de tinta 1901, la cual en su momento informa a la aplicación de programas de cómputo 1701 en el paso 1611 sobre los resultados del análisis. Por ejemplo, como se muestra en la Figura 21, si el primer proceso de análisis es un proceso de análisis sintáctico 2001, el proceso de análisis sintáctico devuelve los resultados de este proceso 2101 a la herramienta de análisis de tinta 1901, el que entonces pasa una referencia a los resultados del análisis 2101 a la aplicación del programa de cómputo 1701 (por ejemplo, disparando un evento). Como se explicará detalladamente a continuación, con algunos ejemplos de la invención, los resultados del análisis 2101 pueden ser el objeto de contexto de análisis independiente del documento 1903 presentados originalmente al proceso de análisis, pero modificados incluyendo la nueva información producida en el primer proceso de análisis (por ejemplo, los resultados del análisis sintáctico en este ejemplo). Con incluso otros ejemplos de la invención, no obstante, los resultados del análisis 2101 pueden ser una copia modificada del objeto de contexto de análisis independiente del documento 1903. Al incluir la nueva información producida por el primer proceso de análisis en una copia del objeto de contexto de análisis independiente del documento 1903, el objeto de contexto de análisis independiente del documento 1903 original puede conservarse para su uso, por ejemplo, por el reconciliador y/o en los procesos de análisis como se observó previamente. La Figura 22 ilustra un ejemplo de cómo un proceso de análisis sintáctico, como el proceso de análisis sintáctico 2001, puede modificar el árbol de datos 1801 para que muestre los cambios de diseño producidos por la operación del análisis sintáctico. Como se observa en esta figura, el proceso de análisis sintáctico 2001 ha determinado que el golpe de tinta no analizado representado por los datos de golpe 1823 formen parte de la palabra representada por el nodo de palabra 1813. De esta manera, el proceso de análisis sintáctico se disocia de los datos de golpe 1823 del nodo de raíz 1803 y en su lugar los asocia con el nodo de palabra 1813. El proceso de análisis sintáctico también ha determinado que los golpes de tinta ^representados por los datos de tinta 1825 y 1827 no clasificados forman parte de una nueva palabra en la línea representada por el nodo de línea 1809 que no se había identificado previamente. De esta manera, el proceso de análisis sintáctico 2001 crea un nuevo nodo de palabra 2201, y asociado a este nodo de palabra 2201 con el nodo de línea 1809. El proceso de análisis sintáctico 2001 entonces ha asociado los datos de golpe 1825 y 1827 al nuevo nodo de palabra 2201. De esta manera, los resultados del análisis sintáctico 2101 describen las relaciones entre los golpes de tinta no analizados previamente y otros golpes de tinta (u otros elementos del documento) identificados por el proceso de análisis sintáctico 2001. También, además de mostrar los cambios en la relación determinados por el proceso de análisis sintáctico 2001, los resultados del análisis sintáctico 2101 también pueden incluir información de clasificación determinada por el proceso de análisis sintáctico 2001. Por ejemplo, cada caso de datos de golpe de tinta 1823-1827 puede modificarse para clasificar su golpe de tinta correspondiente como un golpe de tinta de texto en lugar de un golpe de tinta de dibujo. En al menos algunos ejemplos de la presente invención, si así se desea, los resultados del análisis sintáctico 2101 pueden representarse en el objeto de contexto de análisis 1093 independiente del documento. Como se observó previamente, la aplicación del programa de cómputo 1701 puede introducir datos nuevos, incluyendo tanto nuevos datos de tinta electrónica 1705 como nuevos datos que no son de tinta 1707 en el documento 1703 mientras que el primer proceso de análisis analiza el objeto de contexto de análisis independiente del documento 1903. De esta manera, los resultados del primer proceso de análisis ya nos serán aplicables al estado actual del documento 1703. Por ejemplo, mientras que un proceso de análisis sintáctico puede determinar que un golpe de tinta se asocia con una palabra, el usuario puede haber eliminado el golpe de tinta del documento 1703 totalmente (por ejemplo, con la palabra asociada completa o más). De esta manera, los resultados del análisis 2101 deben concillarse con el estado actual del documento 1703 en el paso 1613. Un proceso de conciliación ejemplar se ilustra en general en la Figura 23, y se describirá a continuación con mayor detalle. Con algunos ejemplos de la invención, la aplicación del programa de cómputo 1701 pueden conciliar manualmente los resultados del análisis 2101 con el estado actual del documento 1703. Esto es, la aplicación del programa de cómputo 1701 puede clasificar a través de los resultados del análisis 2101 para determinar cuáles de los resultados son pertinentes en los elementos del documento que se encuentran actualmente en el documento 1703. Con otros ejemplos de la invención, sin embargo, la herramienta de análisis de tinta 1901 puede proporcionar una función de conciliación para conciliar los resultados del análisis 2101 con el objeto de contexto de análisis 1709 actual (esto es, el objeto de contexto de análisis 1709 que refleja el estado actual del documento 1703). Como se analizará con mayor detalle a continuación, la función de conciliación de varios ejemplos de la invención identificará conflictos o "colisiones" entre los resultados del análisis 2101 del primer proceso de análisis y el objeto de contexto de análisis 1709 para el estado actual del documento 1703. La herramienta de análisis de tinta 1901 entonces actualizará el objeto de contexto de análisis 1709 con base en los resultados del análisis del paso 1615 y crea un nuevo objeto de contexto de análisis independiente del documento 1903 a partir de los resultados del análisis concillados en el objeto de contexto de análisis 1709 en el paso 1617. Debe observarse que, aunque la herramienta de análisis de tinta 1701 concilla los resultados del análisis 2101 con el objeto de contexto de análisis 1709 actual, la aplicación del programa de cómputo 1701 no debe cambiar el objeto de contexto de análisis 1709 (no debe permitir que el objeto de contexto de análisis 1709 cambie por otras hebras en el programa de aplicación y/o ningún otro programa de aplicación). Esto es, la aplicación del programa de cómputo 1701 no debe introducir datos nuevos en el documento 1703 y/o no debe permitir que otras hebras y/o programas de aplicación introduzca nuevos datos en el documento 1703 hasta que se complete la conciliación. Al igual que el proceso de crear inicialmente el objeto de contexto de análisis independiente del documento 1903, el proceso de conciliación es relativamente rápido, y típicamente no impactará de manera importante la operación de la aplicación del programa de cómputo 1701. Sin embargo, si se desea, la introducción de datos por parte del usuario puede colocarse en memoria caché e introducirse después de completar el proceso de conciliación. Después de que la herramienta de análisis de tinta 1901 ha concillado los resultados del análisis 2101 con el objeto de contexto de análisis 1709 para el estado actual del documento 1703, la herramienta de análisis de tinta 1901 puede proporcionar opcionalmente los resultados del análisis concillado a un segundo proceso de análisis para un análisis adicional. Por ejemplo, como se muestra en la Figura 24, la herramienta de análisis de tinta 1901 puede proporcionar resultados de análisis sintáctico concillado 2401 a un proceso de reconocimiento de tinta 2003 para su reconocimiento (por ejemplo, para reconocimiento de escritura manual de texto, o música, información matemática u otros tipos de datos especializados). En particular, la herramienta de análisis de tinta 1901 nuevamente creará una hebra de análisis separada para realizar el segundo proceso de análisis en el paso 1619. Debido a que la herramienta de análisis de tinta 1901 crea esta hebra separada para ejecutar el segundo proceso de análisis, la aplicación del programa de cómputo 1701 nuevamente puede recuperar su operación normal en el paso 1621 y puede incluso aceptar una nueva entrada de datos incluyendo nuevos datos de tinta electrónica 1705. Después, en el paso 1623, la herramienta de análisis de tinta 1901 proporciona los resultados concillados 2401 del primer proceso de análisis al segundo proceso de análisis. Una vez que ha iniciado el segundo proceso de análisis, la aplicación 1701 puede iniciar otra ejecución del primer proceso de análisis en nueva tinta no analizada. De esta manera, pueden ejecutarse de manera concurrente múltiples procesos de análisis, de esta manera, mientras que el segundo proceso de análisis trabaja en los resultados del primer proceso de análisis, la aplicación 1701 puede reiniciar el primer proceso de análisis para preparar el siguiente conjunto de resultados de análisis. Útilmente , la ejecución de los procesos de análisis en paralelo pueden ejecutar la operación de la aplicación del programa de cómputo 1701. Por ejemplo, el proceso de análisis sintáctico típicamente es rápido con relación al proceso de análisis de reconocimiento y los resultados del análisis sintáctico pueden usase para implementar una conducta de selección adecuada y una conducta de inserción de espacios sin usar los resultados del análisis de reconocimiento. De esta manera, debido a que diferentes procesos de análisis pueden ejecutarse en paralelo, los nuevos datos de tinta que se añaden al documento 1703 no necesitan esperar para que termine el proceso de análisis de reconocimiento en los datos de tinta anteriores antes de que puedan seleccionarse o tengan un espacio insertado correctamente. Adicionalmente varios ejemplos de la invención logran un análisis de tinta asincrono de manera que aislan los desabolladores de aplicación así como los desabolladores del analizador sintáctico y el algoritmo del examinador de emisores de hebras múltiples, mejorando la capacidad de mantener y simplificar los procesos de desarrollo para ambos grupos y permite cambios en la interacción entre los procesos de análisis sin cambiar la aplicación. Como se observó anteriormente, la herramienta de análisis de tinta 1901 puede proporcionar los resultados de análisis concillados al crear un nuevo objeto de contexto de análisis independiente del documento 1903 del objeto del documento de análisis 1703 después de que se ha actualizado para incluir las porciones pertinentes de los resultados del análisis 2101. Sin embargo, con otros ejemplos de la invención la herramienta de análisis de tinta 1901 puede actualizar simplemente el objeto de contexto de análisis independiente del documento 1903 original con los resultados del análisis 2101 para reflejar el estado actual del documento 1703. Adicionalmente, la herramienta de análisis de tinta 1901 puede simplemente proporcionar los datos pertinentes de tinta que serán analizados adicionalmente en el segundo proceso de análisis. Adicionalmente, varios ejemplos de la invención concillan los resultados de un proceso de análisis previo con el estado actual del documento 1703 antes de ejecutar un proceso de análisis posterior. Sin embargo, debe apreciarse que este paso de conciliación intermedio puede omitirse con algunos ejemplos de la invención. En particular, con algunos ejemplos de la invención, los resultados de un proceso de análisis anterior puede proporcionarse directamente a un proceso de análisis posterior, sin conciliar dichos resultados con el estado actual del documento 1703. Por ejemplo, si se proporciona un proceso de clasificación de tinta por separado del proceso del analizador de diseño de tinta, entonces la tinta clasificada como texto escrito a mano puede proporcionarse para el proceso del analizador de diseño de tinta sin ningún paso de conciliación intermedio. Con cualquier disposición, después de que se ha completado el segundo proceso de análisis 2003 para analizar los resultados concillados 2401 del primer proceso de análisis, el segundo proceso de análisis 2003 devuelve sus resultados 2501 a la herramienta de análisis de tinta 1901 como se muestra en la Figura 25. La herramienta de análisis de tinta 1901 entonces informa a la aplicación del programa de cómputo 1701 sobre los resultados 2501 del segundo análisis en el paso 1625. Como se observó anteriormente, la aplicación de programa de cómputo 1701 puede introducir datos nuevos incluyendo datos de tinta electrónica 1705, en el documento 1703 mientras que el segundo proceso de análisis analiza los resultados concillados 2401 del primer proceso de análisis. Los resultados 2501 del segundo proceso de análisis de esta manera no pueden aplicarse al estado actual del documento 1703. De esta manera, los resultados 2501 del segundo proceso de análisis 2003 también deben concillarse con el estado actual del documento 1703 en el paso 1627. Un ejemplo del proceso de conciliación se ilustra en general en la Figura 26 y será descrito con mayor detalle a continuación. Nuevamente, con algunos ejemplos de la invención, la aplicación del programa de cómputo 1701 puede conciliar manualmente los segundos resultados del análisis 2501 con el estado actual del documento 1703. Alternativamente, con otros ejemplos de la invención, la herramienta de análisis de tinta 1901 puede proporcionar una función de conciliación para conciliar los resultados del análisis 2101 con el objeto de contexto de análisis 1709 actual. Esta función de conciliación identificará conflictos o "colisiones" entre los resultados del análisis 2501 del segundo proceso de análisis y el objeto de contexto de análisis 1701 para el estado actual del documento 1703 y la herramienta de análisis de tinta 1901 entonces actualizará el objeto de contexto de análisis 1709 con base en los resultados de análisis del paso 1629. Este proceso entonces puede repetirse si es necesario para realizar nuevas entradas de tinta o tinta que cambió durante los procesos de análisis. A partir del análisis que se realiza, será evidente que las técnicas de análisis de tinta tal y como se describen en los diversos ejemplos de la invención permiten que la tinta electrónica sea analizada de manera asincrona desde la aplicación del programa de cómputo 1701, permitiendo que la aplicación del programa de cómputo 1701 continúe aceptado datos de entrada, incluyendo tinta electrónica nueva, durante los procesos de análisis. Debe observarse que, aunque el análisis anterior describe sólo dos procesos de análisis, cualquier número de procesos de análisis pueden realizarse de manera concurrente en paralelo. Por ejemplo, varias implementaciones de la invención pueden emplear un primer proceso de análisis sintáctico, un segundo proceso de análisis sintáctico y un proceso de reconocimiento. De esta manera, una vez que cada proceso de análisis se completa, sus resultados pueden pasar al siguiente proceso de análisis y el primer proceso de análisis puede ejecutarse nuevamente de manera concurrente y en paralelo en una tinta de entrada reciente. Adicionalmente, con varios ejemplos de la invención uno o más procesos de análisis pueden ejecutarse en secuencia. Por ejemplo, con algunas aplicaciones del programa de cómputo, un usuario puede designar un idioma especifico para un golpe de tinta o grupo de golpes, como inglés o japonés. Esta designación de idioma entonces pueden incluirse en el objeto de contexto de análisis 1709 y el objeto de contexto de análisis 1910 independiente del documento. Con base en la designación del idioma, la herramienta de análisis de tinta 1901 puede enrutar tinta electrónica designada como un primer idioma para un proceso de reconocimiento diseñado para dicho primer idioma y posteriormente enrutar tinta electrónica designada como un segundo idioma hacia un proceso de reconocimiento diferente diseñado para dicho segundo idioma. De esta misma manera, los datos de entrada clasificados y/o designados como otros tipos específicos pueden enviarse a otros examinadores especializados, como examinadores para música, símbolos eléctricos, símbolos matemáticos, características de diagramas de flujo, características gráficas, etc. Adicionalmente, debido a que los procesos de análisis no necesitan ser parte de la aplicación del programa de cómputo 1701, cualquier proceso de análisis deseado se puede usar para analizar la tinta electrónica en la aplicación del programa de cómputo 1701. Por ejemplo, un desarrollador de la aplicación del programa de cómputo puede desarrollar y emplear un proceso de análisis sintáctico o un proceso de reconocimiento que es particularmente adecuado para analizar la entrada de tinta electrónica esperada para la aplicación del programa de cómputo 1701. Aún otras variaciones de estas técnicas pueden emplearse por diversas implementaciones de la invención. Por ejemplo, en algunas situaciones, puede no ser deseable que la aplicación del programa de cómputo 1701 mantenga un árbol de documento interno que refleje la relación entre los diversos elementos del documento dentro del documento 1703. En su lugar, la aplicación del programa de cómputo 1701 puede estar creada sólo para emplear información de estado simple respecto a la entrada de tinta electrónica. Con estas aplicaciones del programa de cómputo 1701, la aplicación del programa de cómputo 1701 puede omitir la creación de un objeto de contexto de análisis 1709 que refleje el estado actual del documento completo 1703. En su lugar, la aplicación del programa de cómputo 1701 puede crear un objeto de contexto de análisis 1709 de objetivo específico que solo contiene información pertinente a una entrada de tinta específica que la aplicación del programa de cómputo 1701 desea tener analizado. Al usar un objeto de contexto de análisis 1709 de objeto específico, la aplicación del programa de cómputo 1701 puede evitar la complejidad de mantener una estructura de datos internos que correspondan al estado del documento 1703, mientras que aún puede emplear los procesos de análisis deseados para analizar la tinta dentro del documento. También, aunque la presente descripción trata sobre los análisis asincronos de la tinta electrónica, debe observarse que diversos objetos de la invención pueden permitir que la herramienta de análisis de tinta 1901 analice tinta de manera asincrona. Por ejemplo, algunas implementaciones de la invención pueden permitir que una aplicación de programa de cómputo 1701 instruya a la herramienta de análisis de tinta 1901 para que realice un análisis síncrono e inmediato de la tinta electrónica. Adicionalmente, el análisis síncrono puede ser sólo para tinta dentro de una región específica del documento 1703, o para el documento completo 1703. La herramienta de análisis de tinta Como se analizó en párrafos anteriores, la herramienta de análisis de tinta 1901 realiza una variedad de funciones para facilitar el procesamiento de la tinta electrónica. Por ejemplo, de conformidad con varias implementaciones de la invención, la herramienta de análisis de tinta 1901 recibe información de la aplicación del programa de cómputo 1701 designando una o más regiones en el documento 1703 con datos de tinta que serán analizados, impide a la aplicación del programa de cómputo 1701 que obtenga información respecto a estas regiones y después construye un objeto de contexto de análisis independiente del documento 1903 con base en la información. Adicionalmente, la herramienta de análisis de tinta 1901 proporciona el objeto de contexto de análisis independiente del documento 1903 a uno o más procesos de análisis para su análisis, y después concilla los resultados de los procesos de análisis con el estado actual del documento 1703. Los diversos procesos pueden realizarse usando hebras separadas (como se describió anteriormente), a través de un grupo de hebras, como procesos separados, a través de mecanismos separados en un conjunto o en cualquier manera adecuada o deseada sin separarse del alcance de la invención. Tal y como se describe en diferentes ejemplos de la invención, una variedad de objetos de programa de cómputo y herramientas se pueden emplear para implementar la herramienta de análisis de tinta 1901 y realizar estas funciones. Sin embargo, con algunos ejemplos de la invención, la herramienta de análisis de tinta 1901 se implementa como una interfaz de programación de aplicación (API). En particular, de conformidad con algunos ejemplos de la invención, la herramienta de análisis de tinta 1901 puede implementarse como un grupo de rutinas de programas de cómputo y la información relacionada que se puede invocar a través de la aplicación del programa de cómputo 1701 como sea necesario para analizar la tinta del documento 1703. Como será evidente para los expertos en la técnica, una interfaz de programación de aplicación puede estar organizada en categorías o "clase" que pertenecen a objetos del programa de cómputo. Un "objeto" es una colección de valores de estado que pueden almacenarse y conductas ejecutables. En particular, un objeto puede mantener diferentes tipos de valores de estado, a los que se conoce como "campo" y "propiedades", los cuales pueden asociarse o recuperarse a través del objeto. Con respecto a una aplicación de programa de cómputo externa u otro objeto de programa de cómputo estas propiedades pueden ser de sólo lectura (identificadas por el uso de un término "{get;}" (obtener)), de sólo escritura (identificadas por el usuario por el término "{set;}" (establecer)), o que sean tanto legibles como que puedan ser de escritura (identificado como "{get; set}" (obtener, establecer)). Un objeto también puede ejecutar tareas o "métodos", con frecuencia a la solicitud o "invocación" de una aplicación de programas de cómputo u otro objeto. De esta manera, una interfaz de programación de aplicación puede incluir varios objetos que pueden instruirse por otra aplicación de programa de cómputo para realizar tareas específicas o proveer información específica a la solicitud.
Debe observarse que diversos ejemplos de la invención pueden implementarse para que requieran que la aplicación del programa de cómputo 1701 proporcione sólo una cantidad mínima de información necesaria para completar los procesos de análisis deseados. Por esta razón, algunas de las propiedades descritas en detalla a continuación pueden analizarse únicamente como propiedades de sólo lectura (es decir, "{get;}" (obtener)) o sólo escritura (es decir, "{set;}" (establecer)) pero ambas pueden ser legibles y pueden ser de escritura para diversas implementaciones alternativas de la invención. Por ejemplo una propiedad que define "pistas" que se usarán por un proceso de análisis para analizar tinta electrónica puede identificarse como una propiedad de sólo lectura para aplicaciones en donde la aplicación del programa de cómputo 1701 no tiene la intención de usar estas pistas. Esto permite que el objeto creado por el analizador de tinta al menos lea esta propiedad y determine que el valor de esta propiedad es el valor por defecto de nulo es decir, que no se desean "pistas" por la aplicación del programa de cómputo 1701). Sin embargo, si la aplicación del programa de cómputo 1701 desea emplear pistas para el análisis de la tinta, entonces ésta propiedad será tanto legible como que pueda ser escrita para permitir que la aplicación del programa de cómputo 1710 cambie el valor de esta propiedad del valor nulo para especificar las pistas deseadas. De conformidad con varios ejemplos de la invención, una API modalizada en una implementación de la herramienta de análisis de tinta 1901 (denominada a partir de este momento como análisis de tinta API), puede contener dos clases de núcleo. La primera clase se denominará como la clase "contexto de análisis" y la segunda clase es la clase "analizador de tinta". Los componentes de la clase "contexto de análisis" se usa para crear el objeto de contexto de análisis 1709. De esta manera, con diversas implementaciones de la invención para la cual la aplicación del programa de cómputo 1701 crea y mantiene sus propios objetos de contexto de análisis 1701, uno o más de los componentes de esta clase puede omitirse de la herramienta de análisis de tinta. En su lugar uno o más de estos componentes puede implementarse a través de la aplicación del programa de cómputo 1701 en sí mismo. Los componentes de la clase "analizador de tinta" entonces se usan para crear y emplear un objeto que proporciona el objeto de contexto de análisis independiente del documento 1903 para un proceso de análisis, determinar cuándo los resultados de análisis se han generado y conciliar los resultados del análisis con el estado actual del documento 1703. Estas y otras clases que pueden incluirse en un API de análisis de tinta tal y como se describe en diversos ejemplos de la invención se analizarán detalladamente a continuación. Yendo primero a la clase de contexto de análisis, esta clase se implementa por la aplicación anfitriona 1701 para crear el objeto de contexto de análisis 1703, el cual da el servicio como una vista representante en el árbol del documento interno de la aplicación del programa de cómputo 1701. Alternativamente, como se observó anteriormente, si la aplicación implementa su propio objeto de contexto de análisis, entonces uno o más componentes de esta clase se omitirán de la herramienta de análisis de tinta 1901 como se analizó anteriormente, el objeto de contexto de análisis 1703 contiene todos los datos de tinta no analizados y el objeto de contexto de análisis 1703 se usa para identificar cuáles datos de tinta no analizada deben analizarse. El objeto de contexto de análisis 1703 también contiene información sobre tinta analizada previamente. Esta tinta analizada previamente puede usarse para decidir cómo debe analizarse la tinta no analizada actualmente y por sí mismo puede modificarse en el transcurso del análisis de la tinta no analizada. Adicionalmente, el objeto de contenido de análisis 1703 contiene información sobre el contenido sin tinta 1703, el cual se usa para clasificar adecuadamente la tinta con anotaciones al contenido que no es de tinta. De conformidad con varios ejemplos de la invención, la clase Contexto de Análisis incluye un constructor el que, cuando la aplicación de programa de cómputo 1701 lo invoca crea el objeto de contexto de análisis 1709. Esta clase también puede incluir diversas propiedades para el objeto de contexto de análisis 1709, incluyendo la propiedad titulada "Dirty Región {get;}". (Obtener región sucia). La propiedad región sucia recibe una porción del documento (y de esta manera la porción del objeto de contexto de análisis 1709) que contiene los datos de tinta sin analizar. Con diversos ejemplos de la invención, la región sucia puede definir un área de desarticulación. La región sucia se especifica como una región de análisis, la cual se describe con mayor detalle a continuación, pero la cual puede ser simplemente una colección de áreas rectangulares en el documento. Si la región sucia está vacía no se produce ningún análisis. Esta clase adicionalmente puede incluir una propiedad para el objeto de contexto de análisis 1703 titulada "Margins {get;}" (Obtener márgenes), la cual declara las áreas de una página del documento 1703 que se consideran los márgenes. Un proceso de análisis que analiza, por ejemplo, el diseño y determina la clasificación de la tinta electrónica, puede usar esta propiedad para ayudar en la determinación de la clasificación de la tinta electrónica que está en el contenido que no es distinta en las anotaciones (por ejemplo, tinta en los márgenes). Adicionalmente, la clase contexto de análisis puede incluir una propiedad titulada "Rootnode {get;}" (Obtener nodo de raíz), la cual identifica el nodo de contexto raíz o superior en el objeto de contexto de análisis 1709. Como se analizó con mayor detalle en los párrafos anteriores, este nodo de contexto de raíz contiene, como nodos de contexto descendientes, todos los otros objetos de nodos de contexto para el objeto de contexto de análisis 1709 determinado. Debe observarse que, con diversos objetos de la invención, el nodo de contexto de raíz debe ser del tipo de nodo de contexto "raíz". También debe observarse que, con los ejemplos de la presente invención en donde la aplicación 1701 implementa su propio objeto de contexto de análisis 1709, el objeto de contexto de análisis 1709 puede tener otros nodos de contexto como hermanos del nodo de contexto de raíz, pero los componentes de la clase analizador de tinta pueden estar limitados para considerar los nodos de contexto contenidos en el nodo de contexto de raíz. La clase contexto de análisis adicionalmente puede incluir la propiedad "Analysis Hints {get;}" (Obtener pistas de análisis), lo que devuelve una matriz de uno de los objetos de pistas de análisis establecidos por la aplicación del programa de cómputo 1701. Como se analizará a continuación con mayor detalle, los objetos de pistas de análisis pueden contener otro tipo de información que puede ayudar en el proceso de análisis. Esta información puede incluir, por ejemplo, factores, guías o una lista de palabras. También puede incluir información que configura un idioma que será usado para el análisis, la información que designa la tinta no analizada como texto escrito manualmente únicamente o únicamente dibujos, o la provisión de cualquier tipo de guía para el proceso de análisis sintáctico, como la identificación de tinta como listas, tablas, formas, diagramas de flujo, conectores, contenedores y similares. Además de estas propiedades, la clase de contexto de análisis también puede incluir varios métodos que pueden ser invocados por, por ejemplo, la aplicación del programa de cómputo 1701 para que el objeto de contexto de análisis 1709 ejecute una tarea. Por ejemplo, la clase de contexto de análisis puede incluir un método titulado "FindNode(Guid id)" (Encontrar nodo (identificador GUID). Cada nodo en el objeto de contexto de análisis 1709 tiene un identificador único global (GUID) y éste método ubicará el nodo especificado en la llamada en cualquier momento en el objeto de contexto de análisis 1709. Este método de búsqueda debe estar ¡mplementado tan eficientemente como sea posible, ya que este método puede ser invocado desde muchas operaciones de tiempo crítico. Igual que la clase "contexto de análisis", la clase analizador de tinta también puede definir un constructor público que permite que la aplicación del programa de cómputo 1701 cree una instancia de la clase (es decir, un objeto analizador de tinta), junto con diversas propiedades. Por ejemplo, puede contener una propiedad titulada "User Interface Context {get; set;}" (Obtener, establecer contexto de interfaz del usuario), lo que define el procesamiento de hebras al que se enviarán los resultados del proceso de análisis. Esta propiedad permite que los resultados se sincronicen con otro objeto. Por ejemplo, si esto se establece en la forma principal, los resultados del analizador sintáctico serán disparados en la hebra principal de la aplicación. También pueden contener la propiedad "AnalysisOptions AnalysisOptions {get; set;}" (Obtener, establecer opciones del análisis), lo que especifica diversos criterios que pueden usarse para el proceso de análisis.
Estos criterios pueden incluir, por ejemplo, la limitación de reconocimiento de texto, habilitar el uso de tablas, habilitar el uso de listas, habilitar el uso de anotaciones y habilitar el uso de conectores y contenedores. La clase analizador de tinta incluirá diversos métodos. Por ejemplo, esta clase puede incluir un método titulado "AnalyzeRegion Analyze ()" (Analizar región de análisis). Este método inicia un proceso de análisis síncrono. Los datos del elemento del documento pasan en este método, lo que describe el estado actual del documento 1703 e indica qué tinta en el documento 1703 debe ser analizada. Con algunas implementaciones de la invención, los datos del elemento del documento se pueden proporcionar como el objeto de contexto de análisis 1709 (es decir, AnalyzeRegion Analyze (Context Análisis) (Analizar región de análisis (Análisis de contexto)), como se observó en el párrafo anterior. Alternativamente, los golpes de tinta individuales pueden pasar hacia el proceso de análisis, ya sea usando una referencia a los golpes (es decir, AnalyzeRegion Analyze (Strokes) (Analizar región de análisis (Golpes)) o haciendo referencia a ésta como una propiedad del objeto analizador de tinta (por ejemplo, InkAnalyzer. Strokes {get;set} (Obtener, establecer golpes del analizador de tinta) sin pasar propiedades al método de analizar. Una vez que el proceso de análisis está completo, este método devolverá una referencia al objeto de contexto de análisis independiente del documento que se ha modificado para que contenga los resultados del proceso de análisis. Este método también devuelve un valor para AnalysisRegion (Región de análisis) (que se analiza con detalle a continuación) que describe el área en el documento en donde se han calculado los resultados. La clase analizador de tinta también puede incluir un método titulado "AnalysisRegion Analyze(AnalysisContext, waitRegion)" (Analizar región de análisis (contexto de análisis, Región de espera)). Este método es igual que el método AnalysisRegion Analize () (Analizar región de análisis) analizado anteriormente, pero sólo tiene tinta analizada si los resultados son necesarios en el área de región de espera especificada. En particular, la invocación de este método identificará el objeto de contexto de análisis 1709 para el documento 1703 y la región del objeto de contexto de análisis 1709 (denominada "waitRegion" (región de espera)) para la cual el proceso de análisis debe analizar de manera síncrona. En diversos ejemplos de la invención, todas las demás regiones del objeto de contexto de análisis 1709 serán ignoradas, a menos que el proceso de análisis necesite analizar el contenido en dichas regiones para completar su análisis en la región de espera. Como se analizó anteriormente, el objeto de contexto de análisis 1709 que pasa con este método contiene una propiedad denominada "DirtyRegion" (Región sucia) la cual describe las áreas del documento 1703 que necesitara un análisis. Al especificar una región de espera particular, la aplicación del programa de aplicación de cómputo 1701 puede obtener los resultados de análisis más rápidamente para una región específica de interés, en lugar de hacer analizar todos los datos de tinta en el documento 1703. Cuando alguno de estos métodos para analizarse invoca, todos los procesos de análisis disponibles se ejecutan. También, debido a que estos métodos de analizar son invocaciones síncronas, no existe la necesidad de ejecutar el proceso de conciliación hasta que concluyen, tampoco se disparará ningún evento una vez que esté completo. La clase analizador de tinta también puede incluir un método titulado "BackgroundAnalyze(AnalysisContext)" (Analizar segundo plano (Contexto de Análisis). Este método inicia la operación de análisis especificado, pero lo hace en una hebra de análisis en segundo plano separado. De esta manera, este método devolverá control a la hebra de procesamiento principal casi de inmediato mientras que la operación de análisis real se completa en el segundo plano. En particular, este método devolverá el valor "true" (real) si el proceso de análisis se inició de manera satisfactoria. Nuevamente, el valor para AnalysisContext (contexto de análisis) que pasó hacia el método identifica el objeto de contexto de análisis 1709 para el documento 1703 e indica qué enlace en el documento 1703 necesita ser analizado. Una vez que la operación de análisis se completa en la hebra del segundo plano, un evento de resultados se emite para permitir que la aplicación del programa de cómputo 1701 acceda a los resultados.
El evento contiene los resultados y el método de conciliación que se usó para incorporar los resultados nuevamente en el objeto de contexto de análisis 1709 para el estado actual del documento 1703 cuando los resultados se devuelven. Debe observarse que cada uno de estos tres métodos para analizar en su momento invocan al método "clonar" en una clase "Región de Análisis", la que se analizará con detalle posteriormente. Al usar el método "clonar", estos métodos para analizar crean el objeto de contexto de análisis de documento independiente que se modifica posteriormente por el proceso de análisis para mostrar los resultados del análisis. La clase Analizador de tinta también puede incluir un método titulado "Reconcile (AnalysisContext current, AnalysisResultsEventArgs resultArgs)" (Conciliar (Contexto de análisis actual, AnalysisResultsEventArgas resItArgs)), en donde la aplicación del programa de cómputo 1701 invoca después de recibir los resultados el evento que se ocasionó al invocar el método BackgroundAnalyze(AnalysisContext) (Analizar segundo plano (Contexto de análisis)). El método conciliar compara los resultados el análisis contenidos en el objeto de contexto de análisis independiente del documento con la versión actual del objeto de contexto de análisis 1709 que se mantiene en la aplicación del programa de cómputo 1701. Este método identifica los nodos que necesitan ser añadidos y retirados de la versión actual del objeto de contexto de análisis 1709, e identifica si alguna de las siguientes propiedades de un nodo existente ha cambiado: sus resultados de reconocimiento, su ubicación, los golpes de tinta asociados con el nodo, o cualesquiera otros datos asociados con los resultados de la operación de análisis. Este método también escribe estos cambios identificados en la versión actual del objeto de contexto de análisis 1709. Este método detecta el orden del orden de nodo de contexto, de igual manera que el orden de los nodos de contexto de palabra en un nodo de contexto de línea. Los resultados del análisis (esto es, el valor de la propiedad
AnalysisResultsEventArgs) se pasan nuevamente con este método, ya que contienen una estructura de resultados públicos y una estructura de resultados privados. La estructura pública se devuelve de manera que la aplicación del programa de cómputo 1701 puede ver previamente los cambios que se producirán en la etapa de conciliación. La estructura privada se incluye para evitar que la aplicación del programa de cómputo 1701 cambie cualquiera de los resultados del análisis antes del proceso de conciliación. La clase Analizador de tinta también puede incluir los métodos titulados "Recognizers RecognizersPriorityO" (Prioridad de examinadores, examinadores) y
"SetHighestPriorityRecognizer(recognizer)" (Establecer prioridad mayor para el examinador (examinador). Cuando la tinta debe ser reconocida, el examinador adecuado se usará con base en el idioma y las capacidades. De esta manera, el método de Recognizers RecognizersPriorityQ (Prioridad de examinadores, examinadores) devuelve los procesos de reconocimiento en el orden en que serán evaluados por el objeto analizador de tinta. El orden se determina por sistema dependiendo de si los procesos de reconocimiento están disponibles, pero pueden anularse para la aplicación del programa de cómputo 1701 invocando SetHighestPriorityRecognizer(recognizer) (Establecer prioridad mayor para el examinador (examinador)) en el objeto Analizador de tinta. El InkAnalyzer (Analizador de tinta) enumerará a través de esta lista ordenada hasta que pueda encontrar un examinador adecuado. El método SetHighesPriorityRecognizer(recognizer) (Establecer prioridad mayor para el examinador (examinador)) emite la prioridad de un proceso de reconocimiento. Al emitir la prioridad de un proceso de reconocimiento particular, el proceso de reconocimiento se usará si éste se acopla al idioma necesario y las capacidades de la operación de reconocimiento actual. En esencia, el SetHighestPriorityRecognizer(recognizer) (Establecer prioridad mayor para el examinador (examinador)) empuja el proceso de reconocimiento designado a la parte superior de la lista devuelto por el método RecognizersPriority (Prioridad para los examinadores). La clase Analizador de tinta también puede contener un método titulado "AnalysisRegion Abort()" (Abortar región de análisis), la cual puede usar un objeto de contexto de análisis como parámetro. Este método permite terminar antes una operación de análisis en primer plano o en segundo plano. Este método devuelve una región de análisis que describe el área que se está analizando antes de abortarla. De esta manera, si la aplicación del programa de cómputo 1701 intenta continuar la operación de análisis posteriormente, esta región puede fusionarse en la DirtyRegion (Región sucia) del objeto de contexto de análisis 1709 para el estado actual del documento 1703. Adicionalmente, la clase analizador de tinta puede incluir un evento titulado "AnalysisResultsEventHandler" (Administrador de eventos de los resultados del análisis) que dispara el objeto InkAnalyzer (Analizador de tinta) tan frecuente como sea práctico. En particular, este evento puede dispararse entre procesos de análisis y al menos una vez cada cinco segundos. Este evento se puede usar para proveer la aplicación 1701 con una actualización como el estado de un proceso de análisis asincrono en curso (o procesos).
El API de análisis de tinta también puede incluir clases además de la clase de contexto de análisis y la clase del analizador de tinta. Por ejemplo, el API de análisis de tinta tal y como se describe en varios ejemplos de la invención puede incluir una clase de nodo de contexto. Esta clase puede incluir varios componentes relacionados con los nodos de contexto que forman el objeto de contexto de análisis 1709 y el objeto de contexto de análisis independiente del documento, como la propiedad titulada "ContextNodeType Type {get;}" (Obtener tipo de tipos de nodo de contexto). Como será evidente para los expertos en la técnica, cada nodo de contexto tiene un tipo, y existe un conjunto de reglas específicas que cada tipo debe seguir. Esto incluye reglas como, por ejemplo, qué tipos de nodos de contexto descendiente permiten y si pueden asociarse directamente golpes o no al nodo de contexto o sólo a través de sus nodos de contexto descendientes. Los tipos posibles de nodos de contexto pueden definirse en una enumeración ContextNodeTypes (Tipos de nodo de contexto) y pueden incluir (sin limitarse a esto), por ejemplo, los siguientes tipos: Un nodo InkAnnotation (Anotación de tinta), el cual representa los datos que no son de texto de anotación de datos de tinta, un nodo InkDrawing (Dibujo de tinta) que representa los datos de tinta que forman un dibujo, un nodo InkWord (Palabra de tinta), el cual representa datos de tinta que forman una palabra, un nodo de línea, que contiene uno o más nodos InkWord (Palabra de tinta) y/o nodos de TextWord (Palabra de texto) para palabras que forman una línea de texto; el nodo Listltem (Elemento de lista), que puede contener nodos de párrafo, imagen o similares esperados en una lista; y un nodo List (Lista) que puede contener uno o más nodos Listltem (Elementos de lista) cada uno describe una entrada en la lista. Los tipos de nodo también pueden incluir un nodo NonlnkDrawing (Dibujo que no es de tinta), que representa una imagen de dibujo que no es de tinta; un nodo Object (Objeto), que representa los datos no cubiertos por otros valores de la enumeración ContextNodeType (Tipo de nodo de contexto); un nodo de párrafo, que contiene uno o más nodos de línea que corresponden a las líneas que forman un párrafo; nodo de imagen o dibujo, que representan una imagen de dibujo; un nodo de raíz que funciona como el nodo superior en un objeto de contexto de análisis; un nodo de tabla, el cual contiene nodos que representan elementos que representan una tabla; un nodo TextBox (Cuadro de texto) que representa un cuadro de texto; un nodo TextWord (Palabra de texto) y un nodo Unclassifiedlnk (Tinta sin clasificar), que corresponde a los datos de tinta que no se han clasificado. Los tipos de nodo también pueden incluir un nodo de grupo para los grupos de otro nodo, un nodo InkBullet (Viñeta de tinta) para los elementos de viñetas, un nodo Row (Fila) para los elementos de los documentos que se presentan en una fila de una tabla y un nodo Cell (Celda) para elementos de documentos presentados en una celda de una tabla. La clase de nodo de contexto también puede incluir la propiedad titulada "GUID Id {get;}" (Obtener identificador GUID), la cual es un identificador único global para el nodo de contexto actual. Para permitir el acceso a cualquier nodo de contexto, cada nodo de contexto dentro de un objeto de contexto de análisis único debe siempre tener un identificador exclusivo. Esta clase también puede incluir una propiedad titulada "AnalysisRegion Location {get;}" (Obtener ubicación de la región de análisis), la cual identifica la ubicación en el espacio del documento en donde el nodo de contexto pertinente está colocado actualmente. Como se observó previamente, una AnalysisRegion (Región de análisis) es una estructura bidimensional que agrupa uno o más rectángulos de desarticulación posiblemente como estructuras juntos. Esta clase también puede incluir la propiedad titulada "StrokeCollection Strokes {get;}" (Obtener golpes de la colección de golpes), la cual identifica los golpes de tinta asociados con el nodo de contexto pertinente. Con diversos ejemplos de la invención, sólo los nodos de contexto de vértice terminal (como nodos de palabra, dibujo y viñetas) se permite que tengan golpes por el API análisis de tinta. La aplicación de programa de cómputo 1701 puede usar esta propiedad para hacer referencia a los golpes en el nivel de nodo de vértice terminal mediante todos los nodos de contexto anteriores (por ejemplo, el nodo de raíz contendrá una referencia de golpes para todos los golpes en el objeto de contexto de análisis pertinentes). Adicionalmente, esta clase puede incluir la propiedad titulada "ContextNode ParentNode {get;}" (Obtener nodo de origen del nodo de contexto), la cual identifica el nodo de contexto origen que contiene el nodo de contexto pertinente. Con diversos ejemplos de la invención, los nodos de contexto siempre están creados para que dependan de un nodo de contexto de origen, con el nodo de contexto raíz siendo un miembro estático de un objeto de contexto de análisis. Esta clase también puede incluir la propiedad "ContextNode[ ] SubNodes {get;}" (Obtener subnodos del nodo de contexto [ ]) lo que identifica todos los nodos de contesto que son descendientes directos del nodo de contexto independiente. Esto es, esta propiedad sólo identificará aquellos nodos de contexto descendientes debajo de un nivel en el objeto de contexto de análisis. Por ejemplo, el valor de esta propiedad para un nodo de contexto de párrafo sólo identificará los nodos de contexto de línea contenidos en el nodo de párrafo, y no los nodos de contexto de palabra que son descendientes del nodo de contexto de línea. Esta clase también puede incluir la propiedad titulada "RecognitionResult RecognitionResult {get;}" (Obtener resultados de reconocimiento de los resultados de reconocimiento), la cual proporciona resultados de reconocimiento según se calculó por el proceso o procesos de análisis de reconocimiento pertinente, como el campo RecognitionResult (Resultado de reconocimiento) puede representar más de una línea de texto en más de un idioma, el resultado de reconocimiento está disponible para todos los nodos de contexto en el objeto de contexto de análisis independiente del documento incluso a pesar de que la propiedad RecognitionData (Datos de reconocimiento) (analizada detalladamente a continuación) la cual se establece a través del proceso de análisis de reconocimiento y se usa para crear el objeto RecognitionResult (Resultado de reconocimiento) puede sólo establecerse en un nivel del árbol de nodo de contexto para evitar el duplicado de datos. Si el nodo no tiene RecognitionData (Datos de reconocimiento) asociados a éste, éste fusionará los resultados de reconocimiento de todos sus subnodos o extraerá los resultados de reconocimiento de su origen. Esta clase también puede incluir la propiedad titulada "Stream Recognition Data {get; set;}" (Obtener, establecer datos de reconocimiento de flujo), la cual es la forma persistente del valor RecognitionResult (Resultado de reconocimiento). Nuevamente, el proceso de análisis de reconocimiento produce el valor RecognitionData (Datos de reconocimiento) de flujo que se establece en el nodo de contexto pertinente. El objeto RecognitionResult (Resultados de reconocimiento) entonces se construye con base en este valor. La clase Nodo de Contexto adicionalmente puede incluir una propiedad titulada "ContextLink[ ] Links {get;}" (Obtener enlaces del enlace de contexto [ ]), la cual proporciona una matriz de objetos ContextLink (Enlace de contexto). Un objeto ContextLink (Enlace de contexto) describe una relación alternativa entre dos nodos de contexto. Mientras que los nodos de contexto típicamente tienen una relación origen-descendiente con otros nodos de contexto, un ContextLink (Enlace de contexto) permite una relación alternativa entre los nodos de contexto. Por ejemplo, un ContextLink (Enlace de contexto) puede permitir una concentración entre dos nodos de contexto, que ancla el nodo de contexto a otro nodo de contexto, la contención de un nodo de contexto por otro nodo de contexto o un tipo deseado de enlace definido por la aplicación del programa de cómputo 1701. Se puede añadir ContextLinks (Enlaces de contexto) a esta matriz invocando el método AddLink (Añadir enlace), realizado con mayor detalle a continuación. De igual manera, los ContextLinks (Enlaces de contexto) pueden eliminarse de esta matriz al invocar el método DeleteLink (Eliminar enlace), que también se analiza con mayor detalle a continuación. Adicionalmente, esta clase puede incluir las propiedades "IsContainer {get;}" (Obtener es contenedor) e "IsInkLeaf {get;}" (Obtener es vértice terminal de tinta). La propiedad IsContainer {get;} (Obtener es contenedor) tiene el valor "true" (verdadero) si el nodo de contexto pertinente no es un nodo de contexto de vértice terminal (esto es, si el nodo de contexto pertinente contiene nodos de contexto descendientes y si de esta manera está considerado como un nodo de contexto contenedor), y tiene el valor "false" (falso) de otra manera. La propiedad IsInkLeaf {get;} (Obtener es vértice terminal) tiene el valor "true" (verdadero) si el nodo de contexto actual no es un nodo de contexto de contenedor, y tiene el valor "false" (falso) de otra manera. Esto es, si el nodo de contexto actual no contiene ningún nodo de contexto descendiente, se considera un nodo de contexto de vértice terminal, debe también observarse que, con diversos ejemplos de la invención, un nodo de contexto InkLeaf (Vértice terminal de tinta) se espera que contenga las referencias para los datos de golpe, mientras que los nodos de contexto de contenedor no tienen esta recepción. Los nodos de contexto del contenedor pueden o no hacer referencia a datos de golpes, según se designe en la aplicación del programa de cómputo 1701. La clase de Nodo de Contexto también puede contener la propiedad "Rect RotatedBoundingbox {get; set;}" (Obtener, establecer cuadro límite ractangular girado). El valor de esta propiedad se calcula a través de un proceso de análisis de clasificación y diseño. Si los datos de tinta asociados con el nodo de contexto pertinente que escriben en un ángulo, entonces los límites del nodo de contexto estarán alineados horizontalmente aún. Sin embargo, el valor de la propiedad RotatedBoundingBox (Cuadro límite girado), estará alineado con el ángulo en el que los datos de tinta asociados con el nodo de contexto pertinente se escribieron. Adicionalmente, esta clase puede incluir la propiedad "ReClassifiable {get;}" (Obtener elemento que pueda ser reclasificado), la cual informa al analizador de tinta si está permitido modificar los valores del nodo de contexto pertinente. Además de estas propiedades, la clase Nodo de Contexto también puede incluir varios métodos. Por ejemplo, esta clase puede incluir un método titulado "ContextNode CreateSubNode(ContextNodeType type)" (Nodo de contexto crea subnodo (tipo del tipo de nodo de contexto). Este método permite la creación de un nodo de contexto descendiente de un tipo en particular. Con diversos ejemplos de la invención, este método sólo puede permitir tipos de descendientes válidos del nodo de contexto pertinente para que sean creados, de esta manera evitando que sean creadas estructuras de datos mal formadas. Por ejemplo, este método sólo puede permitir un nodo de contexto de línea para crear nodos de contexto descendientes InkWord (Palabra de tinta) y TextWord (Palabra de texto)). Esta clase también puede contener un método titulado "void DeleteSubNode(ContextNode node)" (Eliminar subnodo vacío (nodo del nodo de contexto), el cual elimina el nodo de contexto descendiente al que se hace referencia del objeto de contexto de análisis pertinente. Sin embargo, debe observarse que con diversos ejemplos de la invención, si el nodo de contexto al que se hace referencia aún contiene nodos de contexto descendiente o golpes, entonces este método fallará. También, si el nodo de contexto de referencia no es un descendiente directo del nodo de contexto pertinente, entonces este método fallará. Debe observarse que, si una aplicación de programa de cómputo 1701 implementa su propio objeto de contexto de análisis 1709 y en su momento emplea este método, no borra nodos de contexto que no estén vacíos o nodos de contexto que no son descendientes directos del nodo de contexto pertinente para evitar estructuras de datos mal formadas en el objeto de contexto de análisis 1709. Adicionalmente, esta clase puede incluir el método
"ContextNode[ ] HitTestSubNodes(AnalysisRegion región)" (Dar subnodos de prueba de nodo de contexto [ ] (región de la región de análisis)), el cual devuelve una matriz del nodo de contexto que se ubica en la región especificada. Sin embargo, debe observarse que sólo los nodos descendientes inmediatos de este elemento se devuelven, no todos los descendientes. La región se define mediante el objeto AnalysisRegion (Región de análisis), el cual, como se observó anteriormente, puede ser una colección de uno o más rectángulos. De conformidad con varios ejemplos de la invención, si alguna parte de una ubicación del nodo de contexto intersecta la región especificada, entonces tal nodo de contexto será devuelto en la matriz. Este método se emplea para, por ejemplo, crear el objeto de contexto de análisis independiente del documento o para conciliar los resultados del análisis con el objeto de contexto de análisis correspondiente al estado actual del documento 1703. De esta manera, este método se denomina con frecuencia y debe optimizarse para tener acceso repetido rápido por el objeto InkAnalyzer (Analizador de tinta). La clase de Nodo de Contexto también puede contener un método titulado "MoveStroke(Stroke stroke, ContextNode destination)" (Mover golpe (golpe de golpe, destino del nodo de contexto)). Este método mueve la asociación de un golpe de un nodo de contexto de vértice terminal a otro. Con diversos ejemplos de la invención, este método sólo se usa entre los nodos de contexto de vértice terminal. También puede incluir un método titulado "MoveSubNodeToPosition(int Oldlndex, int Newlndex)" (Mover subnodo a su posición(índice anterior int, índice nuevo int)), el cual vuelve a ordenar los nodos de contexto pertinentes con respecto a sus nodos de contexto iguales. Por ejemplo, si el documento 1703 tiene tres palabras en una línea, por ejemplo, palabra 1, palabra 2 y palabra 3, entonces su orden está sugerido por la matriz de los subnodos devueltos del nodo de contexto de origen. Este método permite que su orden cambie, de manera que, con relación al nodo de contexto origen pertinente, la palabra 1 se especifica para que sea la última palabra en la linea moviendo el nodo de contexto para la palabra 1 de la posición 1 a la posición 3.
Adicionalmente, esta clase puede incluir el método titulado "AddLink(ContextLink link)" (Añadir enlace (enlace de enlace de contexto)), el cual añade un nuevo objeto ContextLink (Enlace de contexto) al nodo de contexto actual. Con diversos ejemplos de la invención, el objeto ContexLink (Enlace de contexto) debe contener una referencia al nodo de contexto pertinente para que ContextLink (Enlace de contexto)se añade de manera satisfactoria a la matriz de ContexLinks (Enlaces de contexto) asociada con el nodo de contexto pertinente. También puede contener el método titulado "DeleteLink(ContextLink link)" (Eliminar enlace (enlace de enlace de contexto)). Este método elimina o retira el objeto ContextLink (Enlace de contexto) especificado de la matriz de ContexLinks (Enlaces de contexto) para el nodo de contexto pertinente. Debe observarse que, con diversos ejemplos de la invención, la invocación de este método siempre se completa satisfactoriamente, incluso si el ContextLink (Enlace de contexto) no existe en la matriz de ContextLinks (Enlace de contexto) asociada con el nodo de contexto pertinente. El API de análisis de tinta también puede incluir una clase de Pista de Análisis. Como con varias de las clases descritas anteriormente, la clase de Pista de Análisis puede incluir un constructor, titulado "AnalysisHintO" (Pista de análisis), el cual inicializa un objeto de pista de análisis en un estado vacío. Esta clase también puede incluir varias propiedades, incluyendo una propiedad titulada "AnalysisRegion Location {get;}" (Obtener región de análisis). Esta propiedad especifica la ubicación en el documento 1703 (como una región de análisis) a la que se aplica AnalysisHint (Pista de análisis). Por ejemplo, si el documento 1703 es una nota de forma libre con una sección de título de la parte superior de la página, entonces la aplicación 1701 puede establecer una AnalysisHint (Pista de análisis) para la región de título para especificar que una línea horizontal de tinta se espera en dicha región. Esta pista de análisis ayudará a incrementar la precisión de un proceso de análisis. Esta clase también puede incluir una propiedad titulada "string Factoid {get; set;}" (Obtener, establecer factoide de cadena), la cual especifica un "factoide" particular que se usa para la ubicación en el documento 1703 para la que aplica una AnalysisHint (Pista de análisis). Como reconocen los expertos en la técnica, los factores proporcionan pistas a un proceso de reconocimiento como a un uso esperado de los datos de tinta (por ejemplo, textos regulares, dígitos, códigos postales, nombres de archivos y direcciones de atajo en internet). Esta clase también puede incluir las propiedades tituladas "RecognizerGuide Guide {get; set;}" (Obtener, establecer guía de la guía del examinador) y "OverrideLanguageld {get; set;}" (Obtener, establecer la anulación del identificador de idioma). La propiedad RecognizerGuide Guide {get, set;}" (Obtener, establecer guía de la guía del examinador) especifica la guía de escritura que se aplicará a la ubicación en el documento 1703 a la cual se aplica AnalysisHint (Pista de análisis). Las guías de escritura pueden, por ejemplo, ayudar a mejorar la precisión de un proceso de análisis del examinador al especificar al usuario e informarle sobre el proceso de análisis del examinador en donde el usuario escribirá líneas o caracteres. La propiedad OverrideLanguageld {get; set;} (Obtener, establecer la anulación del identificador de idioma) especifica una Pista de Idioma para el documento 1703 en el que se aplica AnalysisHint (Pista de análisis). El establecimiento de una pista de idioma ocasiona que el objeto InkAnalyzer (Analizador de tinta) use el idioma designado en lugar del idioma especificado en el nodo de contexto. Esta clase también puede incluir una propiedad titulada "PrefixText {get; set;}" (Obtener, establecer texto de prefijo), la cual especifica el texto que está escrito o tecleado antes de que se reconozca una línea de punta. Adicionalmente, esta clase puede incluir una propiedad titulada "RecognitionModes RecognitionFlags {get; set;}" (Obtener, establecer indicadores de reconocimiento para los modos de reconocimiento), la cual especifica el tipo particular de modos debe respetar un proceso de reconocimiento en la ubicación del documento 1703 al que se aplica AnalysisHint (Pista de análisis). Adicionalmente, esta clase puede incluir una propiedad titulada "SuffixText {get; set;}" (Obtener, establecer texto de sufijo), el cual especifica el texto que se escribe o teclea después de que una línea de tinta se reconocerá y una propiedad titulada "WordList WordList {get; set;}" (Obtener, establecer lista de palabras para la lista de palabras), la cual especifica un conjunto particular de palabras que debe usarse a través de un proceso de análisis de reconocimiento. Las listas de palabras se pueden usar cuando los resultados de reconocimiento esperados se conocen antes de que el usuario haya escrito en realidad los datos de entrada, como una lista de términos médicos que se esperan escritos dentro de una forma médica. Adicionalmente, esta clase puede incluir una propiedad titulada "Word ode {get; set}" (Obtener, establecer modo de palabra). Si para este valor se tiene "true" (verdadero), entonces el proceso de análisis se desviará a sí mismo para devolver una sola palabra para la región de análisis completa. También puede incluir una propiedad titulada "Coerce {get; set}" (Obtener, establecer forzar), la cual, si es "true" (verdadero) forzará el proceso de análisis para que para que confirme sus resultados con cualquier factoide o valor de lista de palabras establecido en la pista pertinente. Esta clase también puede incluir una propiedad titulada "AllowPartialDictionaryTerms {get; set}" (Obtener, establecer permitir términos parciales del diccionario). Si el valor para esta propiedad es "true" (verdadero), entonces el proceso de análisis de reconocimiento permitirá que devuelva palabras parciales de su diccionario de reconocimiento. De conformidad con varios ejemplos de la invención, el API de análisis de tinta adicionalmente puede incluir una clase de análisis de Región de Análisis. Esta clase puede incluir, por ejemplo, constructores múltiples para construir un objeto AnalysisRegion (Región de análisis). Por ejemplo, puede contener un primer constructor para construir un objeto AnalysisRegion (Región de análisis) que tiene cualquier región, un segundo constructor para construir un objeto AnalysisRegion (Región de análisis) con base en los parámetros para los rectángulos bidimensionales, y un tercer constructor para construir un objeto AnalysisRegion (Región de análisis) con base en cuatro coordenadas espaciales. El constructor por defecto puede, por ejemplo, crear una región vacío. Esta clase también puede incluir un número de propiedades. Por ejemplo, esta clase puede incluir una propiedad titulada "Rectangle Bounds {get;}" (Obtener rectángulos límite), la cual recupera el rectángulo límite para AnalysisRegion (Región de análisis), una propiedad titulada "IsEmpty {get;}" (Obtener está vacío), la cual indica si el objeto AnalysisRegion (Región de análisis) pertinente está vacío en su interior y una propiedad titulada "Islnfinite {get;}" (Obtener es infinito), la cual indica si se estableció en infinito o no el AnalysisRegion (Región de análisis) pertinente.
Esta clase también puede incluir un número de métodos, como un método titulado "AnalysisRegion CloneQ" (Clonar región de análisis), el cual clona el objeto pertinente de AnalysisRegion (Región de análisis). Esta clase también puede incluir un método titulado "Equals(AnalysisRegion otherRegion)" (lgual(región de análisis y otra región), el cual hace pruebas de si el objeto AnalysisRegion (Región de análisis) especificado (al que se hace referencia como la otra región) es idéntico el objeto pertinente AnalysisRegion (Región de análisis). Este método devuelve a un valor de "true" (verdadero) si el interior del objeto de AnalysisRegion (Región de análisis) especificado es idéntico con el interior del objeto AnalysisRegion (Región de análisis) pertinente y de otra manera devuelve un valor "false" (falso). Esta clase adicionalmente puede incluir un método "lntersect(AnalysisRegion regionTolntersect)" (Intersecar (región de análisis a intersecar)) el cual reduce el objeto AnalysisRegion (Región de análisis) pertinente a la región de análisis especificada. De esta manera, el objeto AnalysisRegion (Región de análisis) resultante sólo incluirá áreas que traslaparon o intersecaron la región de análisis especificada. Esta clase también puede incluir el método titulado "lntersect(Rectangle rectangle") (Intersecar (rectángulo, rectángulo)), el cual reduce el objeto de AnalysisRegion (Región de análisis) pertinente a rectángulo especificado. Nuevamente, el objeto AnalysisRegion (Región de análisis) resultante sólo incluirá áreas que traslaparon o intersecaron el rectángulo especificado. También puede incluir el método titulado "MakeEmptyO" (Vaciar), el cual inicializa el objeto AnalysisRegion (Región de análisis) relevante a un interior vacío, y el método titulado "MakelnfiniteQ" (Hacer infinito), el cual establece el área ocupada por el AnalysisRegion (Región de análisis) pertinente para que se haga infinito. Puede incluir adicionalmente varios métodos para unir o separar áreas definidas de manera diferente, como el método titulado "Union(AnalysisRegion regionTolInion)" (Unión (región de región análisis a unir), el cual especifica un objeto AnalysisRegion (Región de análisis) para unir o añadir al objeto AnalysisRegion (Región de análisis) pertinente y el método titulado "Union(Rectangle rectangle)" (Unión (rectángulo, rectángulo), el cual une el rectángulo especificado al objeto AnalysisRegion (Región de análisis) relevante. Con este método puede especificarse en términos de espacio de coordenadas para el objeto AnalysisRegion (Región de análisis) pertinente. Desde luego, esta clase puede incluir otros o diversos métodos para combinar áreas o extraer un área de otra con base en la definición deseada para las áreas. El API de Análisis de Tinta también puede tener una clase Resultado de Reconocimiento. Como con otras de las clases analizadas anteriormente, la clase de resultado de reconocimiento puede incluir uno o más constructores. Por ejemplo, esta clase puede incluir un constructor titulado "RecognitionResult(Stream lattice)" (Resultados del reconocimiento (entramado de flujo), el cual construye un objeto RecognitionResults (Resultados de reconocimiento) de un entramado de reconocimiento determinado. Con varios ejemplos de la invención, un entramado de reconocimiento es una forma en serie de los resultados de un proceso de reconocimiento. Este método, por ejemplo, puede especificar un entramado de reconocimiento como una matriz de byte que se usará para la construcción del objeto RecognitionResult (Resultado de reconocimiento) pertinente. También puede incluir un constructor titulado "RecognitionResult(ContexNode node)" (Resultado de reconocimiento (Nodo del nodo de contexto)), el cual construye un objeto RecognitionResults (Resultados de reconocimiento) de un nodo de contexto determinado. También puede incluir un constructor titulado "RecognitionResult(String Text, int StrokeCount)" (Resultado de reconocimiento (Texto de cadena, cuenta de golpes int), el cual construye un objeto RecognitionResults (Resultados de reconocimiento) de un valor de texto especificado, el cual en su momento se asocia con un número especificado de golpes y puede usarse para la corrección si el proceso de reconocimiento no llega con un valor de reconocimiento de suplente que corresponda a los datos de tinta escrita a mano real. Adicionalmente, esta clase puede incluir un constructor titulado "RecognitionResult(RecognitionResult leftRecognitionResult, RecognitionResult rightRecognitionResult)" (Resultado de reconocimiento (Resultado de reconocimiento del resultado de reconocimiento izquierdo, Resultado de reconocimiento del resultado de reconocimiento derecho)), el cual construye un objeto RecognitionResults (Resultados de reconocimiento) a través de la fusión de dos objetos de resultados de reconocimiento existentes. La clase Resultado de Reconocimiento también puede incluir una o más propiedades, como una propiedad titulada "StrokeCollection StrokeCollection {get;}" (Obtener colección de golpes de la colección de golpes), la cual proporciona una matriz de índices de golpes que representan una colección de golpes que están contenidos en un solo objeto de tinta, y una propiedad titulada "RecognitionAlternate TopAlternate {get;}" (Obtener reconocimiento de suplente, suplente superior), la cual proporciona el mejor suplente para los resultados de reconocimiento. Esta clase también puede incluir la propiedad titulada "RecognitionConfidence RecognitionConfidence {get;}" (Obtener confianza de reconocimiento para la confianza de reconocimiento), la cual proporciona un nivel de confianza (por ejemplo, fuerte, intermedia, o débil) de la selección de suplente superior para los resultados actuales de un proceso de análisis de reconocimiento, y la propiedad titulada "String TopString {get;}" (Obtener cadena, cadena superior), la cual devuelve la mejor cadena de resultados de los resultados del análisis de un proceso de análisis de reconocimiento.
La clase Resultados de Reconocimiento también puede incluir un número de métodos, como un número titulado "public RecognitionAlternateCollection GetAlternateCollectionFromSelection (selectionStart, slectionLength, maximumAlternates)" (Colección de suplentes de reconocimiento público, obtener colección de suplentes de la selección (Inicio de la selección, duración de la selección, máximo de suplentes), el cual especifica una colección de suplentes de una selección dentro de la mejor cadena de resultados de los resultados del análisis de un proceso de análisis de reconocimiento, en donde cada suplente corresponde sólo a un segmento de la tinta. Los parámetros de entrada de este método además pueden incluir, por ejemplo, un valor que especifique el inicio de la selección del texto desde el cual la colección de suplentes se devuelve, un valor que especifica la longitud de la selección del texto desde el cual la colección de el suplente se devuelve y un valor que especifique el número máximo de suplentes que se devolverán. Este método puede entonces devolver la colección RecognitionAlternateColection (Colección de suplentes de reconocimiento) de suplentes desde una selección dentro de la cadena de mejores resultados del resultado de reconocimiento. La clase Resultados de Reconocimiento además puede incluir un método titulado "RecognitionResult Merge(RecognitionResult left, string separator, RecognitionResult right)" (Fusión de resultados de reconocimiento (Resultados de reconocimiento izquierda, separador de cadena, resultados de reconocimiento derecha). Este método puede usarse para crear un nuevo objeto RecognitionResult (Resultado de reconocimiento) partiendo de una sola cadena, dando como resultado un entramado plano, anexa una sola cadena al inicio o al final de un objeto existente Recognition Result (Resultado de reconocimiento). Esta clase también puede incluir un método titulado "ModifyTopAlternate( Recognition Altérnate altérnate)" (Modificar suplente superior (suplente de reconocimiento de suplente), el cual especifica el resultado de reconocimiento que será modificado con un suplente conocido. Con algunas modalidades de la invención, por defecto la mejor cadena de resultados de los resultados de un proceso de análisis de reconocimiento corresponde al suplente superior. Sin embargo, este método se puede usar para especificar los suplentes diferentes al suplente superior que se usan en los resultados del proceso de análisis de reconocimiento. Si los nuevos resultados del suplente superior en una segmentación diferente que la anterior, el método ModifyTopAlternate (Modificar suplente superior)automáticamente actualizará los nodos de contexto para que reflejen los cambios. Debe observarse que, para recuperar los suplentes que se pueden usar para modificar los resultados de reconocimiento, este método invoca el método GetAlternatesFromSelection (Obtener suplentes de la selección), analizado detalladamente a continuación. Esta clase también puede tener un método titulado "Stream SaveQ" (Guardar flujo), al cual mantiene de manera persistente el objeto RecognitionResults (Resultados de reconocimiento) pertinente en forma de un entramado de reconocimiento. Un entramado de reconocimiento es un formato en serie que se usa para expresar los resultados de un proceso de reconocimiento. El API de análisis de tinta también puede tener un tipo enumerado de opciones de análisis. Este tipo puede contener uno o más campos que especifiquen cómo los datos de la tinta se analizarán mediante un proceso de análisis, como un campo titulado "const AnalysisOptions Default" (Opciones de análisis constantes por defecto), el cual habilita todas las opciones disponibles para el proceso de análisis. Por ejemplo, este campo puede habilitar el reconocimiento de texto, el uso de tablas, el uso de listas, el uso de anotaciones, el uso de conectores y contenedores y el uso de resultados intermedios. Este tipo también puede incluir un campo titulado "const AnalysisOptions EnableAnnotations" (Opciones de análisis constante habilitar anotaciones), el cual habilita e inhabilita la detección de anotaciones, un campo titulado "const AnalysisOptions EnableConnectorsAndContainers" (Opciones de análisis constante habilitar conectores y contenedores), el cual habilita e inhabilita la detección de contenedores y un campo titulado "const AnalysisOptions EnablelntermediateResults" (Opciones de análisis constante habilitar resultados intermedios), el cual habilita e inhabilita la devolución de resultados de análisis a la aplicación del programa de cómputo 1701 entre el uso de diferentes procesos de análisis secuenciales (por ejemplo entre un proceso de análisis sintáctico y un proceso de reconocimiento posterior). Este tipo también puede tener un campo titulado "const AnalysisOptions EnableList" (Opciones de análisis constante habilitar lista), el cual habilita e inhabilita la detección de listas y un campo titulado "const AnalysisOptions EnableTables" (Opciones de análisis constante habilitar tablas), el cual habilita e inhabilita la detección de tablas. Este tipo enumerado adicionalmente puede incluir un campo titulado "const AnalysisOptions EnableTextRecognition" (Opciones de análisis constante habilitar reconocimiento de texto), el cual habilita e inhabilita un proceso de análisis de reconocimiento de texto. Sin embargo, debe observarse que si están disponibles procesos de análisis adicionales (o versiones diferentes del mismo proceso de análisis), entonces este tipo puede incluir AnalysisOptions (opciones de análisis) adicionales de igual manera. Adicionalmente, el API de análisis de tinta puede incluir una clase AnalysisResultsEventArgs (Argumentos de eventos de los resultados del análisis). Esta clase puede tener un constructor titulado "public AnalysisResultsEventArgsO" (Argumentos de eventos de los resultados del análisis público), el cual crea una estructura de datos que contiene los resultados del análisis y se devuelve a la aplicación del programa de cómputo 1701 cuando se genera un evento AnalysisResults (Resultados de análisis). Esta clase también puede incluir una propiedad titulada "InkAnalyzer InkAnalyzer {get;}" (Obtener analizador de tinta del analizador de tinta), el cual identifica el objeto InkAnalyzer (Analizador de tinta) que realizó el proceso de análisis. El API también puede tener una clase de línea, la cual puede ser útil con algunos tipos de sistemas operativos que reconocen el uso de un objeto "línea" que representa una línea geométrica. Esta clase puede incluir un constructor, como un constructor titulado "public Line(Point beginPoint, Point endPoint)" (Línea pública (Punto de inicio del punto, punto de fin del punto), el cual crea un objeto línea. Esta clase también puede incluir varias propiedades, como una propiedad titulada "public Point BeginPoint {get; set;}" (Obtener, establecer punto de inicio del punto público), la cual representa el punto de inicio del objeto de línea y una propiedad titulada "public Point EndPoint {get; set;}" (Obtener, establecer punto de fin del punto público), la cual representa el punto de finalización del objeto de línea. Además de estas clases, el API de análisis de tinta también puede contener una clase de reconocimiento de suplente. Esta clase puede incluir elementos que representan las concordancias posibles de palabras para segmentos de tinta que están comparados con un diccionario del examinador. Por ejemplo, esta clase puede incluir una propiedad titulada "Line Ascender [get;}" (Obtener rasgos ascendentes de línea), la cual proporciona la línea de rasgos ascendentes de un objeto RecognitionAlternate (Suplente de reconocimiento) que existe en una sola línea (con una línea de representación como dos puntos), una propiedad titulada "public Line Baseline [get;}" (Obtener línea de base de la línea pública), la cual proporciona una línea de base de un "Recognition Altérnate" (Suplente de reconocimiento) que existe en una sola línea, y una propiedad titulada "Line Descender {get;}" (Obtener, rasgos descendentes de la línea) la cual proporciona la línea de rasgo descendente de un objeto RecognitionAlternate (Suplente de reconocimiento) que existe en una sola línea. Esta clase también puede incluir una propiedad titulada "RecognitionResult Extract {get;}" (Obtener extracción de resultados de reconocimiento), la cual proporciona un objeto RecognitionResults (Resultados de reconocimiento) para el objeto RecognitionAlternate (Suplente de reconocimiento) actual. Esta propiedad se puede usar, por ejemplo, para extraer el objeto RecognitionResult (Resultado de reconocimiento) para una palabra del objeto de RecognitionResult (Resultado de reconocimiento) para una línea que contiene dicha palabra. También puede incluir la propiedad titulada "Line Midline
{get;}" (Obtener línea media de la línea), la cual proporciona la línea media para el objeto RecognitionAlternate (Suplente de reconocimiento) que existe en una sola línea, una propiedad titulada "StrokeCollection Strokes {get;}" (Obtener golpes de la colección de golpes), la cual proporciona la colección de golpes que están contenidos en un objeto de tinta (esto es, proporciona un Strokecollection (Colección de golpes) que representa los golpes que están asociados al RecognitionResult (Resultado de reconocimiento)), y una propiedad titulada "StrokeCollection[ ] StrokesArray {get;}" (Obtener matriz de golpes de la colección de golpes [ ]), la cual proporciona una colección de golpes que están contenidos en uno o más objetos de tinta, que representan los golpes que están asociados con los resultados de reconocimiento. Esta clase también puede incluir una propiedad titulada "RecognitionConfidence RecognitionConfidence {get;}" (Obtener confianza de reconocimiento de la confianza de reconocimiento), la cual proporciona el nivel de confianza (por ejemplo, fuerte, intermedia o débil) que un proceso de análisis de reconocimiento determinó en el reconocimiento de un objeto RecognitionAlternate (Suplente de reconocimiento) o de un rasgo. Para los nodos que no son de línea, no se devolverá el menor valor para RecognitionConfidence (Confianza de reconocimiento) de los descendientes de los nodos de contexto pertinentes. También puede contener la propiedad titulada "string RecognizedString {get;}" (Obtener cadena reconocida de la cadena), la cual especifica la cadena de resultados del suplente. De esta manera, para cualquier nodo de contexto sobre un nodo de contexto de palabra, la cadena de resultados se concatena junto mediante este método. Por ejemplo, un nodo de línea contendrá una cadena de resultados que en su momento contiene los resultados de todos sus descendientes o nodos de palabra. Un nodo de párrafo entonces contendrá una cadena de resultados que contiene los resultados de todos sus descendientes o nodos de línea. La clase de reconocimiento de suplente también puede contener uno o más métodos que incluyen, por ejemplo, un método titulado "StrokeCollection[] GetStrokesArrayFromTextRange(int selectionstart, int selectionlength)" (Colección de golpes [ ] Obtener matriz de golpes del intervalo de texto (inicio de la selección int, duración de la selección int)), el cual especifica una StrokeCollection (Colección de golpes) para cada objeto de tinta que corresponde al intervalo de texto conocido. Esta clase también puede contener un método titulado "StrokeCollection[ ] GetStrokesFromStrokesArrayRanges(StrokeCollection[ ] strokesArray)" (Colección de golpes [ ] Obtener golpes de los intervalos de la matriz de golpes (Colección de golpes [ ], matriz de golpes)) el cual especifica la colección menor de golpes que contiene una colección de entradas conocidas de golpes y para la cual el examinador puede proporcionar suplentes. En particular, los golpes se devuelven mediante una matriz de objetos de tinta cada una contiene una matriz de índices de golpes para la colección. Debe observarse que la colección de golpes de tinta devueltos mediante este método puede acoplarse a la colección de entrada, o puede ser más grande sí la colección de entrada se acopla a sólo una parte del resultado de reconocimiento menor que incluye todos los golpes de entrada. Esta clase además puede incluir un método titulado
"StrokeCollectionGetStrokesFromStrokesRanges(StrokeCollection strokes)" (Colección de golpes, obtener golpes de los intervalos de golpes (golpes de la colección de golpes)), la cual especifica la colección menor de golpes que contiene una colección de entrada conocida para los golpes y para los cuales el examinador puede proporcionar suplentes, y un método titulado "StrokeCollection GetStrokesFromTextRange(int selectinstart, int selectionlength)" (Colección de golpes, obtener golpes del intervalo de texto (inicio de selección int, duración de selección int)), la cual especifica la StrokeCollection (Colección de golpes) que corresponde al intervalo de texto conocido. Esta clase adicionalmente puede incluir un método titulado "void GetTextRangeFromStrokes(ref int selectinstart, ref int selectionend, StroIkeCollection strokes)" (Vacío, obtener intervalo de texto de golpes (inicio de selección ref int, fin de selección ref int, golpes de la colección de golpes), la cual especifica el intervalo menor del texto reconocido para el cual el examinador puede devolver un suplente que contiene un conjunto conocido de golpes y un método titulado "void
GetTextRangeFromStrokesArray(ref int selectionstart, ref int selectionend, StrokeCollection[]strokesarray)" (Vacío, obtener intervalo de texto de la matriz de golpes (inicio de selección ref int, fin de selección ref int, colección de golpes [ ] matriz de golpes), el cual especifica el intervalo menor del texto reconocido para el cual el examinador puede devolver un suplente que contiene un conjunto reconocido de golpes. También puede tener un método titulado "RecognitionAlternateCollection
SplitWithConstantPropertyValue(GUID propertyType)" (División de colección de suplentes de reconocimiento con valor de propiedad constante (Tipo de propiedad de GUID)), el cual devuelve una colección de suplentes, que son una división del suplente sobre el cual este método se invoca. Cada suplente en la colección contiene segmentos de reconocimiento adyacente los cuales tienen el mismo valor de propiedad para la propiedad que pasó a este método. Por ejemplo, este método se puede usar para obtener suplentes que dividen un suplente original por nivel de límites de confianza (fuerte, intermedio o débil) en el resultado de reconocimiento, límites de línea o límites de segmento. Adicionalmente puede incluir un método titulado "byte[] GetPropertyValue(GUID propertyType)" (Byte[ ] obtener valor de propiedad (Tipo de propiedad de GUID)), el cual especifica el valor de una propiedad de un suplente, como la confianza del examinador en el suplente. No obstante, no todos los procesos de análisis de reconocimiento proveerán un valor para todos los tipos de propiedades. De esta manera, este método proporciona los datos para los tipos que se soportan por el proceso de análisis de reconocimiento pertinente. El API de análisis de tinta también puede incluir una clase de Colección de Suplentes de reconocimiento. Como muchas de las clases analizadas anteriormente, esta clase puede incluir un constructor titulado "RecognitionAlternateCollectionO" (Colección de suplentes de reconocimiento), para crear un objeto RecognitionAlternateCollection (Colección de suplentes de reconocimiento). Esta clase además puede incluir varias propiedades, como una propiedad titulada "Count {get;}" (Obtener cuenta), la cual proporciona el número de objetos o de colecciones contenidas en una colección de valores de reconocimiento de suplentes, una propiedad titulada "IsSynchronized {get;}" (Obtener, está sincronizada), la cual proporciona un valor que indica si el acceso a la colección de los valores de reconocimiento del suplente está sincronizada con la aplicación del programa de cómputo 1701 (es decir, "de hebra segura") y una propiedad titulada "SyncRoot [get;}" (Obtener raíz sincronizada), la cual proporciona el objeto que se puede usar para sincronizar el acceso a la colección de valores de reconocimiento de suplentes. Esta clase también puede contener uno o más métodos, como un método titulado "virtual void CopyTo(Array array, int index)" (Copia virtual vacía para (matriz de matriz, índice int), la cual copia todos los elementos de la colección actual de los valores de reconocimiento de suplentes a la matriz de una dimensión especificada, que inicia en el índice de matriz de destino especificada y un método titulado "lEnumerator lEnumerable-GetEnumeratorQ" (lEnumerador lEnumerable obtener enumeradorQ), el cual es una implementación estándar de lEnumerable que habilita a los que invocan usando para cada constructo para enumerar a través de cada RecognitionAlternate (Suplente de reconocimiento) en la colección de valores de reconocimiento de suplentes. Esta clase también puede incluir un método titulado "RecognitionAlternateCollectionEnumeratorGetEnumeratorO" (Colección de suplente de reconocimiento enumerador obtén enumerador), el cual devuelve un
RecognitionAlternateCollectionEnumerator (enumerador de colección de suplentes de reconocimiento) que contiene todos los objetos dentro de la colección de los valores de suplentes de reconocimiento. Este método puede usarse, por ejemplo, para recuperar cada objeto de la colección de los valores suplentes de reconocimiento. El API de análisis de tinta adicionalmente puede incluir una enumeración de confianza de reconocimiento y una enumeración de modo de reconocimiento, cada una de las cuales puede contener uno o más campos relacionados a un proceso de análisis de reconocimiento. Por ejemplo, la clase de confianza de reconocimiento puede contener tres campos, como un campo titulado "Intermedíate" (Intermedio), que indica que el proceso de análisis de reconocimiento está hecho con seguridad de que el resultado correcto está en la lista de los valores de reconocimiento suplentes provistos, un campo titulado "Poor" (Débil), el cual indica que el análisis de reconocimiento no está hecho con seguridad de que el resultado está en la lista de los valores de reconocimiento suplentes provistos, y un campo titulado "Strong" (Fuerte), el cual indica que el proceso de análisis de reconocimiento está hecho con la seguridad de que la mejor alternativa en los valores de reconocimiento de suplente es el correcto. De igual manera, la clase de Modo de Reconocimiento puede incluir campos que especifican cómo un proceso de análisis de reconocimiento interpreta los datos de tinta electrónica y de esta manera determina una cadena de resultado de reconocimiento. Por ejemplo, esta clase puede incluir un campo titulado "Coerce" (Forzar), el cual especifica que el proceso de análisis de reconocimiento ejerce coacción a un resultado de reconocimiento con base en un factoide que fue específico para el contexto, y campo titulado "Une" (Línea), que especifica que el proceso de análisis de reconocimiento trata a los datos de tinta electrónica como una sola línea. Esta clase también puede incluir un campo titulado "None" (Ninguno), que especifica que el proceso de análisis de reconocimiento no aplica modos de reconocimiento, y un campo titulado "Segment" (Segmento), que especifica que el proceso de análisis de reconocimiento trata los datos de tinta electrónica como si formara una sola palabra o carácter. Adicionalmente esta clase puede incluir un campo titulado "TopInkBreaksOnly" (únicamente la tinta superior se descompone), que inhabilita la segmentación múltiple.
Adicionalmente, el API de análisis de tinta puede incluir una clase de Enlace de Contexto, la cual define cómo dos nodos de contexto pueden enlazarse juntos. El objeto ContextLink (Enlace de contexto) en sí mismo representa cuáles dos nodos de contexto están enlazados, la dirección de enlace y el tipo de enlace. Esta clase puede incluir una propiedad titulada "ContextNode SourceNode {get;}", (Obtener nodo fuente del nodo de contexto) la cual especifica el nodo de contexto fuente que está enlazado desde otro nodo de contexto, una propiedad titulada "ContextLinkType LinkType{get;}" (Obtener tipo de enlace del tipo de enlace de contexto), la cual especifica el tipo de relación de enlace que existe entre la fuente y los nodos de contexto de destino, y una propiedad titulada "CustomLinkType{get; " (Obtener tipo de enlace hecho a la medida), la cual especifica que un enlace a la medida se está usando. Esta situación puede ocurrir cuando una aplicación decide usar el sistema de enlace del API del analizador de tinta para representar los enlaces específicos de la aplicación más allá de lo que API puede reconocer. Esta clase también puede incluir una propiedad titulada "ContextNode DestinationNode {get;}" (Obtener nodo destino de nodo de contexto), la cual especifica el nodo de contexto de destino que se está enlazando desde otro nodo de contexto. Puede haber dos constructores disponibles para esta clase, los cuales crean una relación entre la fuente existente y los nodos de contexto de destino.
Esta clase también puede incluir una enumeración titulada "ContextLinkType enum" (Enumerar tipo de enlace de contexto), la cual define el tipo de relación compartida por los dos nodos de contexto. Estos varios tipos de enlace pueden incluir, por ejemplo, un tipo "Anc orsTo" (Se ancla a), el cual describe que un nodo se ancla a otro nodo. Ambos nodos pueden usar la propiedad SourceNode (Nodo fuente) o DestinationNode (Nodo destino) con base en la situación del análisis sintáctico. Los tipos de enlace también pueden incluir el tipo "Contains" (Contiene), el cual describe que un nodo contiene a otro nodo. Con esta relación, el nodo contenedor puede denominarse como el SourceNode, (nodo fuente), mientras que el nodo contenido puede denominarse como el DestinationNode (nodo destino). Los tipos de enlace pueden además incluir un tipo "PointsTo" (señalamiento hacia), el cual describe que un nodo está señalando hacia otro nodo. Para esta relación, el nodo que hace la señalización puede denominarse como el nodo fuente, mientras que el nodo al que se señala puede denominarse como el nodo destino. Adicionalmente, los tipos de enlace pueden tener un tipo "PointsFrom" (señalamiento desde), el cual describe que un nodo está señalando desde otro nodo. En esta relación, el nodo que señala fuera de otro nodo puede denominarse como el nodo fuente, mientras que el nodo señalado puede denominarse como el nodo destino. Los tipos de enlace adicionalmente pueden incluir un tipo "SpansHorizontally" (expansión horizontal), el cual describe que un nodo corre la longitud horizontal de otro nodo, y un "SpansVertically" (expansión vertical), el cual describe que un nodo corre la longitud verticalmente de otro nodo. Para estos tipos, el nodo que cubre (tacha, subraya, en la barra de margen) al otro nodo, usualmente se escribe al final, puede denominarse como el nodo fuente, mientras que el nodo expandido puede denominarse nodo destino. Los tipos de enlace también pueden incluir un tipo "Custom" (hecho a la medida), el cual describe que un enlace de tipo hecho a la medida sea usado. Cuando este valor se usa, la propiedad "CustomLinkType" (enlace de tipo hecho a la medida) en el objeto ContextLink (enlace de contexto) puede proveer más detalles así como el objetivo de este enlace. De esta manera, el API de analizador de tinta proporciona una variedad de funciones y servicios para analizar la tinta electrónica de manera asincrona en el documento y posteriormente conciliar los resultados del proceso de análisis con el estado actual del documento como se describió detalladamente en párrafos anteriores. Adicionalmente, será evidente que las diversas clases descritas anteriormente se pueden aplicar a una variedad de sistemas operativos y ambientes, por ejemplo el ambiente operativo Microsoft Windows, el ambiente operativo Microsoft COM, un ambiente operativo Unix o Linux, o cualquier otro ambiente operativo de cómputo adecuado. Adicionalmente, debe ser evidente que una interfaz de programación de aplicación tal y como se describe en las diversas implementaciones de la invención puede omitir una o más de las clases de componentes descritas en el presente documento, o puede incluir componentes adicionales para proveer un servicio deseado así como una funcionalidad. Conciliación Como se analizó detalladamente en los párrafos anteriores, varios ejemplos de la invención permiten que la aplicación del programa de cómputo 1701 continúe funcionando mientras la tinta electrónica no analizada en el documento 1703 se analiza mediante un proceso de análisis en segundo plano. Debido a esto, la aplicación del programa de cómputo 1701 puede modificar el documento 1703 de diferentes maneras que pueden conflictuar los resultados del proceso de análisis. Por ejemplo, la aplicación del programa de cómputo 1701 puede introducir nuevos datos de tinta electrónica 1705 en el documento 1703, o eliminar datos de tinta electrónica 1705 ya existentes del documento 1703. Adicionalmente, la aplicación del programa de cómputo 1701 puede editar los datos de tinta electrónica 1705 ya existentes como por ejemplo al mover la posición de los datos de tinta electrónica 1705 existentes o al cambiar las propiedades de los datos de tinta electrónica 1705 ya existentes. Adicionalmente, la aplicación del programa de cómputo 1701 puede añadir, borrar o modificar elementos del documento que no son de tinta 1707 de manera que impactan los datos de tinta electrónica 1705. Por ejemplo, la aplicación del programa de cómputo 1701 puede eliminar el texto escrito con teclado que se ha anotado con los datos de tinta electrónica 1705. La aplicación del programa de cómputo 1701 adicionalmente puede "sujetar" los datos de tinta electrónica 1705 existentes, de manera que prohibe su modificación mediante proceso de análisis. Por ejemplo, si un usuario especifica manualmente un diseño o una clasificación para un grupo de golpes de tinta, entonces la aplicación del programa de cómputo 1701 puede designar que dichos golpes de tinta permanezcan en dicho diseño específico o con esa clasificación sin tomar en cuenta los resultados producidos por un proceso de análisis sintáctico. De manera similar, un usuario puede especificar un resultado de reconocimiento particular para un grupo de golpes de tinta, sin tomar en cuenta los resultados producidos por un proceso de reconocimiento. Diversos tipos de sujeción se pueden emplear de conformidad con las diferentes implementaciones de la invención. Por ejemplo, la herramienta de análisis de tinta 1901 puede permitir que la aplicación del programa de cómputo 1701 use tinta de sujeción "dura". Con esta disposición, no se pueden añadir golpes de tinta a ninguno de los nodos de vértice terminal por debajo del nodo sujetado, no se pueden eliminar golpes en ninguno de los nodos de hoja debajo del nodo sujetado, no se permite la adición o remoción de nodos descendientes, y no se permite la asignación de un nuevo origen a ningún nodo debajo del nodo sujetado. Alternativa o adicionalmente, la herramienta de análisis de tinta 1901 puede permitir la sujeción "rígida" con los últimos golpes, lo que permite que los últimos golpes se añadan bajo condiciones especificadas, prohibe que los golpes se retiren de cualquiera de los nodos de vértice terminal por debajo del nodo sujetado, prohibe la adición o remoción de nodos descendientes y prohibe la asignación de un nuevo origen a los nodos debajo del nodo sujetado. Adicionalmente, la herramienta de análisis de tinta 1901 puede permitir que la aplicación del programa de cómputo 1701 alternativa o adicionalmente use tinta de sujeción "suave" con esta disposición, no se pueden eliminar golpes de ninguno de los nodos de vértice terminal por debajo del nodo sujetado, existen normas especificadas para permitir la adición de golpes (esto permite que los últimos golpes se añadan), y se permite la reagrupación, adición o remoción de nodos descendientes. Debe observarse que la sujeción puede eliminarse y, una vez que se ha eliminado la sujeción, los nodos sujetados anteriormente y sus descendientes entonces pueden considerarse "sucios" o "necesitan un análisis nuevo". Adicionalmente, el proceso de tinta tal y como se describe en varios ejemplos de la invención puede emplear múltiples procesos de análisis, como se analizó anteriormente en párrafos anteriores. De la misma manera, los resultados de un proceso de análisis anterior puede modificar los datos de tinta electrónica 1705 mientras que un segundo proceso de análisis posterior se ejecuta. De esta manera, los resultados de un proceso de análisis deben concillarse con el estado actual del documento 1703, de manera que sólo los resultados que son válidos para el estado actual del documento 1703 se apliquen a su objeto de contexto de análisis 1709. Esto es, el objeto de contexto de análisis 1709 actual (y, en algunos casos, los resultados del proceso de análisis) se modifica de manera que omite las discrepancias o "colisiones" entre los resultados de los procesos de análisis y el estado actual del documento 1703. Debe observarse que, para que los resultados del proceso de conciliación sean válidos, el estado del documento 1703 no debe cambiar durante el proceso de conciliación. El proceso de conciliación de esta manera pueda realizarse usando la hebra primaria en el que la aplicación del programa de cómputo 1701 se ejecuta, y la ejecución del proceso de conciliación puede detener temporalmente la operación de la aplicación del programa de cómputo 1701. Alternativamente, otras técnicas, como el bloqueo de estructura de datos se puede usar para asegurar que el estado del documento 1703 no cambia durante el proceso de conciliación. De esta manera, es deseable realizar el proceso de conciliación tan rápido como sea posible, para evitar que un usuario no esté satisfecho con el rendimiento de la aplicación del programa de cómputo 1701. Otra consideración para el proceso de conciliación es su efecto en el desempeño del proceso de análisis ejecutado en una hebra de análisis en segundo plano separado. Si las discrepancias entre el objeto de contexto de análisis 1709 actual (esto es, el objeto de contexto de análisis 1709 que refleja el estado actual del documento 1703) y los resultados de análisis se definen muy ampliamente, entonces grandes cantidades de tinta electrónica se volverán a analizar sin que sea necesario. Desde luego, aún otras maneras de proteger la integridad del documento durante la conciliación se pueden usar sin separarse del alcance de la invención. Con varios ejemplos de la invención, el proceso de análisis y proceso de conciliación pueden adherirse a una o más de las siguientes convencionalidades para mejorar la eficiencia y conveniencia del proceso de conciliación. Primero, el proceso de análisis puede volver a usar nodos para el elemento del documento en el objeto de contexto de análisis 1901 independiente del documento tanto como sea posible. Esto es, las colisiones no deben darse creando nuevos nodos no relacionados para los elementos del documento. Además, el proceso de conciliación debe respetar la "sujeción" designada por la aplicación del programa de cómputo 1701. Mientras que el proceso de análisis típicamente cumplirá con las designaciones de sujeción por la aplicación del programa de cómputo 1701, la aplicación del programa de cómputo 1701 puede sujetar datos de tinta electrónica 1705 mientras que el proceso de análisis se ejecuta. Adicionalmente, el proceso de conciliación debe asegurar que ningún nodo vacío permanece en el objeto de contexto de análisis 1709 actual después de completar el proceso de conciliación. Sin embargo, debe observarse que una o más de estas convencionalidades pueden omitirse y no seguirse de conformidad con las implementaciones alternas de la invención. Por ejemplo, algunas implementaciones de la invención pueden permitir que el objeto de análisis 1709 contenga nodos vacíos. Además de estas convencionalidades, el proceso de conciliación debe cumplir típicamente con reglas de interfaz dictadas por el objeto de contexto de análisis 1709. Por ejemplo, con algunas implementaciones de la invención, el objeto de contexto de análisis 1709 puede no permitir que un nodo para un elemento del documento se elimine a menos que éste no tenga nodos descendientes. Como se observó anteriormente, una colisión se produce cuando el proceso de análisis hace cambios al objeto de contexto de análisis independiente del documento 1903 que conflictúa de alguna manera con un cambio con el objeto de contexto de análisis 1709 que se hizo después de iniciar el proceso de análisis. Las colisiones se pueden dividir en dos tipos: colisiones obligatorias y colisiones discrecionales. Las colisiones obligatorias se producen cuando no es posible aplicar un cambio hecho al objeto de contexto de análisis independiente del documento 1903 por el proceso de análisis al objeto de contexto de análisis 1709 para el estado actual del documento 1703. Una colisión obligatoria se producirá cuando por ejemplo, la aplicación del programa de cómputo 1701 tiene un nodo "sujetado" o fijo en el objeto de contexto de análisis 1709 y el proceso de análisis cambia el nodo correspondiente en el objeto de contexto de análisis independiente del documento 1903. Una colisión obligatoria también se producirá cuando el proceso de análisis haya hecho cualquier tipo de cambio a un nodo en el objeto de contexto de análisis independiente del documento 1903, pero la aplicación del programa de cómputo 1701 ha eliminado el nodo correspondiente del objeto de contexto de análisis 1709, y cuando la aplicación del programa de cómputo 1701 ha añadido golpes o nodos descendientes a un nodo en el objeto de contexto de análisis 1709 cuando el proceso de análisis ha eliminado el nodo correspondiente en el objeto de contexto de análisis independiente del documento 1903. Adicionalmente, una colisión obligatoria se producirá cuando la aplicación del programa de cómputo 1701 ha eliminado un nodo en el objeto de contexto de análisis 1709 cuando el proceso de análisis ha vuelto a ordenar o crear un enlace hacia el nodo correspondiente en el objeto de contexto de análisis independiente del documento 1903. Una colisión discrecional se produce cuando la aplicación del programa de cómputo 1701 ha cambiado un valor en el objeto de contexto de análisis 1709 que está relacionado con un valor cambiado en el objeto de contexto de análisis independiente del documento 1903 mediante el proceso de análisis, pero las constricciones de sujeción, las constricciones de reuso del elemento y las constricciones inherentes de la interfaz para el objeto de contexto de análisis 1709 pueden aún permitir la aplicación del cambio hecho por el proceso del análisis al objeto de contexto de análisis 1709. Una colisión discrecional aún puede aplicarse como un cambio al objeto de contexto de análisis 1709 o evitarse. Adicionalmente, el proceso de conciliación simplemente puede ignorar algunos tipos de colisiones discrecionales por completo. Un ejemplo gráfico de una colisión discrecional se produce cuando un nodo original tanto en el objeto de contexto de análisis 1709 como en el objeto de contexto de análisis independiente del documento 1903 tiene nuevos descendientes A y B para los golpes de tinta A y B. La aplicación del programa de cómputo 1701 entonces puede añadir un tercer nodo C descendiente para el golpe de tinta C en el objeto de contexto de análisis 1709, mientras que el proceso de análisis añade un tercer nodo descendiente D para un golpe de tinta D en el objeto de contexto de análisis independiente del documento 1903. Con diversas modalidades de la invención, el proceso de conciliación puede añadir el nodo descendiente D al nodo de origen en el objeto de contexto de análisis 1709 con base en los resultados del análisis. Ante este cambio el nodo de origen en el objeto de contexto de análisis 1709 no está prohibido, no obstante aún cambian las características del nodo de origen de una manera que puede no ser deseada por la aplicación del programa de cómputo 1701. Por ejemplo, la tinta asociada con el nodo origen puede considerarse posteriormente analizada, y puede no volver a analizarse para tomar en cuenta el efecto de la tinta C en el grupo de golpes de tinta. Adicionalmente, los resultados de reconocimiento para el nodo de origen pueden ahora estarse refiriendo a los nodos descendientes equivocados o golpes, y también es posible que no vuelvan a corregirse. De esta manera, varios ejemplos de la invención no aplicarán cambios para una colisión discrecional al actualizar el objeto de contexto de análisis 1709 con base en los resultados de un proceso de análisis. Aunque estos criterios pueden requerir procesamientos adicionales para identificar y bloquear cambios con base en las colisiones discrecionales, estos criterios son relativamente sencillos para implementar y simples para mantener. Desde luego, aún otros ejemplos de la invención pueden implementar cambios que correspondan a las colisiones discrecionales de conformidad con otros criterios. En particular, estos ejemplos alternativos pueden implementar cambios de colisiones discrecionales que no crean relaciones inconsistentes permanentes lógicamente en el objeto de contexto de análisis 1709. Debe también observarse que las colisiones pueden tener un efecto transitorio, en que una colisión puede crear otra. Por ejemplo, un proceso de análisis puede crear un nodo L para una línea y después crear un nodo W para una palabra como un nodo descendiente del nodo L. Si la creación del nodo L no se aplicó al objeto de contexto de análisis 1709 debido a una colisión de cualquier tipo, entonces la creación del nodo W será una colisión obligatoria. Diversos ejemplos de la invención pueden emplear un enfoque con base en una bitácora para conciliar los resultados de un proceso de análisis con el estado actual de un documento 1703. En este enfoque basado en bitácora, el objeto de contexto de análisis independiente del documento 1903 incluye una bitácora de cambios al objeto de contexto de análisis independiente del documento 1903 elaborado por el proceso de análisis. La bitácora puede ser en forma de una lista de registros de cambios, por ejemplo. Cada registro de cambio puede incluir el tipo de cambio que se realizó (mediante la identificación del método que invocó el cambio en el objeto de contexto de análisis independiente del documento 1903), el elemento del documento en el que el cambio se hizo (mediante la identificación, por ejemplo, del nodo en el objeto de contexto de análisis independiente del documento 1903 en el que se invocó el método), y cualquier información necesaria para recrear los argumentos para el método invocado. Útilmente, debido a que el objeto de contexto de análisis independiente del documento 1903 se implemento mediante la herramienta de análisis de tinta 1901 y los procesos de análisis, la bitácora de cambio puede ser invisible para la aplicación del programa de cómputo 1701 (aunque la bitácora alternativamente puede exponerse a la aplicación 1701 si así se desea). Para ejecutar el proceso de conciliación usando el enfoque de bitácora de cambios, la herramienta de análisis de tinta 1901 examina cada registro de cambio en orden cronológico de los cambios. Esto es, la herramienta de análisis de tinta 1901 identifica cada cambio hecho en el objeto de contexto de análisis independiente del documento 1903. Para cada cambio, la herramienta de análisis de tinta 1901 puede implementar el proceso que se ilustra en la Figura 27. Primero, en el paso 1701, la herramienta de análisis de tinta 1901 intenta acceder a los nodos correspondientes en el objeto de contexto de análisis 1709 actual que son necesarios para aplicar el cambio. Debe observarse que este paso de recuperación puede fallar si la aplicación del programa de cómputo 1701 ha eliminado uno o más de los nodos necesarios del objeto de contexto de análisis 1709, dando como resultado una colisión obligatoria. A continuación, el paso 2703, la herramienta de análisis de tinta 1901 determina si el cambio crea una colisión obligatoria o discrecional. El procedimiento para tomar esta determinación se explicará con mayor detalle a continuación. En el paso 2705, la herramienta de análisis de tinta 1901 puede hacer el cambio o prohibir el cambio si crea una colisión obligatoria o una colisión discrecional prohibida por los criterios del proceso de conciliación. Por ejemplo, si el cambio crea una colisión obligatoria o una colisión discrecional prohibida por los criterios por los procesos de conciliación, entonces la herramienta de análisis de tinta 1901 puede bloquear los cambios a los nodos en el objeto de contexto de análisis 1709 que representa la región correspondiente del documento 1703 en donde el cambio debe hacerse. Por otro lado si el cambio se aplica, entonces la herramienta de análisis de tinta 1901 puede invocar el método adecuado para hacer el cambio deseado en los nodos necesarios en el objeto de contexto de análisis 1709. Si el proceso de análisis añade un nodo de elemento nuevo al objeto de contexto de análisis 1709 pero después falla en mover nodos de golpe al nodo nuevo, entonces el proceso de análisis tampoco habrá intentado eliminar el nodo del elemento asumiendo que los nodos de golpe se movieron a los nuevos nodos de manera satisfactoria. De esta manera, habrá un nodo de elemento en el objeto de contexto de análisis independiente del documento 1903 que corresponde a uno vacío en el objeto de contexto de análisis 1709 actual. De esta manera, una vez que todos los cambios se han procesado en el objeto de contexto de análisis 1709, en el paso 2707 la herramienta de análisis de tinta 1901 revisa el objeto de contexto de análisis independiente del documento 1903 para eliminar cualesquiera nodos "vacíos" en el objeto de contexto de análisis 1709 que corresponde a los nodos en el objeto de contexto de análisis independiente del documento 1903. Este paso de eliminación del nodo vacío es opcional y puede omitirse sin separarse del alcance de la invención. Debe observare que el objeto de contexto de análisis independiente del documento 1903 no debe contener ningunos nodos vacíos, y el proceso de conciliación debe prohibir los nodos vacíos de ser creados en el objeto de contexto de análisis independiente del documento 1903. También debe observarse que este paso no intentará borrar el nodo de raíz del objeto de contexto de análisis 1709, incluso si está vacío, como una excepción. Por último, en el paso 2709, la herramienta de análisis de tinta 1901 identificará cualesquiera colisiones entre los resultados del análisis en el objeto de contexto de análisis independiente del documento 1903 y el objeto de contexto de análisis 1709 actual a la aplicación del programa de cómputo 1701, de manera que la aplicación del programa de cómputo 1701 puede incluir las regiones del documento 1703 afectados por las colisiones en un proceso de análisis posterior. Ahora volviendo a la detección de colisiones en el paso
2703 mencionado en el párrafo anterior, una vez que todos los nodos dentro del objeto de contexto de análisis 1709 que corresponden a los cambios en el objeto de contexto de análisis independiente del documento 1903 son accesados, todas las otras colisiones obligatorias posibles para cada nodo en el objeto de contexto de análisis 1709 se pueden detectar de manera estática (o, alternativamente, la ausencia de una colisión obligatoria puede detectarse para cada nodo). En particular, las colisiones obligatorias pueden detectarse con base en las reglas designadas por la interfaz para el objeto de contexto de análisis 1709.
Sin embargo, las colisiones discrecionales, típicamente no pueden identificarse sin información de estado adicional respecto al documento 1703, ya que estos cambios no son obligados por la interfaz del objeto de contexto de análisis 1709, en su lugar se basan en las opciones discrecionales para favorecer los cambios hechos por la aplicación del programa de cómputo 1701 sobre los cambios hechos por el proceso de análisis cuando ambos han tenido impacto en el mismo nodo en el objeto de contexto de análisis 1709. Estas colisiones pueden detectarse mediante la comparación del objeto de análisis 1709 actual con la versión original del objeto de contexto de análisis independiente del documento 1903, para determinar cuáles nodos en el objeto de contexto de análisis 1709 han sido cambiados por la aplicación del programa de cómputo 1701. Por ejemplo, los criterios de conciliación pueden definir que la adición o eliminación de un nodo de golpe descendiente de un nodo de origen por la aplicación del programa de cómputo 1701 es una colisión discrecional para ese nodo de origen. Para determinar si dicho cambio se ha presentado, la herramienta de análisis de tinta 1701 puede revisar los nodos de golpe dependientes del nodo en el objeto de contexto de análisis 1709 actual, y comparar su número y Guids (u otro identificador exclusivo) con los nodos de golpe descendientes que dependen del nodo correspondiente en la versión original del objeto de contexto de análisis independiente del documento 1903. Si los nodos de golpe descendientes corresponden en estos aspectos (y cualesquiera otros aspectos deseados), entonces la herramienta de análisis de tinta 1901 puede aplicar los cambios hechos por el proceso de análisis al nodo de origen en el objeto de contexto de análisis 1709. Siguiendo con este ejemplo, el siguiente cambio en la entrada de la bitácora puede consistir en otro nodo de golpe que ha sido movido para que dependa de otro nodo de origen en el objeto de contexto de análisis independiente del documento 1903. Si no hay colisiones obligatorias de este cambio, entonces la herramienta de análisis de tinta 1901 se deja que haga los cambios correspondientes al objeto de contexto de análisis 1709. Cuando la herramienta de análisis de tinta 1901 verifica la versión original del objeto de contexto de análisis independiente del documento 1903 para determinar si existe una colisión discrecional, no obstante, concluirá que el nodo de origen en el objeto de contexto de análisis 1709 actual tiene un nodo de golpe dependiente más que el nodo de origen en la versión original del objeto de contexto de análisis independiente del documento 1903, de manera que de manera errónea determinará que existe una colisión discrecional (esto es, determinará que existe una colisión con base en los cambios que ha hecho). De esta manera, el proceso de conciliación basado en la bitácora debe excluir los cambios anteriores hechos por la conciliación a partir de la comparación entre el objeto de contexto de análisis 1709 actual y la versión original del objeto de contexto de análisis independiente del documento 1903. Con diversos ejemplos de la invención, esta exclusión se puede hacer mediante la comparación de todos los nodos en el objeto de contexto de análisis 1709 actual con sus nodos correspondientes en la versión original del objeto de contexto de análisis independiente del documento 1903, antes de examinar cualquier cambio en las entradas de la lista y manteniendo una lista de los nodos que han colisionado. Alternativa o adicionalmente, varios ejemplos de la invención pueden mantener una memoria caché de los elementos en el objeto de contexto de análisis 1709 actual que corresponden a los documentos en el objeto de contexto de análisis independiente del documento con los resultados del análisis que se usan siempre que se recuperen los elementos correspondientes. No hay un paso preliminar, pero la memoria caché se llena la primera vez que un elemento correspondiente se ha determinado y libre de colisiones discrecionales. Opcionalmente, la memoria caché también puede mantener un rastro de qué elementos en los resultados presentan colisiones discrecionales. Este enfoque tiene un mejor desempeño que el enfoque de paso de hallazgo de colisión discrecional cuando la bitácora de cambios es breve, pero puede tener un peor desempeño si el objeto de contexto de análisis independiente del documento 1903 con los resultados del análisis contiene muchos nodos. De igual manera no es más complejo que el otro enfoque. Debe observarse que los nodos de contexto de origen de los elementos en la memoria caché también deben almacenarse en la memoria caché. En particular, un cambio en un nodo de contexto descendiente será considerado como un cambio en las propiedades de este nodo de contexto origen. De esta manera, el nodo de contexto de origen de un nodo de contexto almacenado en la memoria caché también necesita evaluarse para encontrar los cambios elaborados por la aplicación del programa de cómputo 1701 hasta este momento. El almacenamiento en la memoria caché de los nodos de origen para cada nodo de contexto en la memoria caché deben ser repetidos hasta el árbol (por ejemplo, del nodo de origen al nodo de origen principal al nodo de origen principal mayor) hasta que el nodo de raíz pase o hasta que se detecten los cambios. Sin embargo, en mucha situaciones esta situación sólo es algunos nodos ya que un árbol típicamente no será muy profundo. Debe observarse que, con diversos ejemplos de la invención, la versión original del objeto de contexto del análisis 1903 independiente del documento sólo se usa para detectar colisiones discrecionales. Si la detección de las colisiones discrecionales no es necesaria con un ejemplo de la invención, entonces tanto la versión original del objeto de contexto de análisis independiente del documento 1903 y los elementos correspondientes en la memoria de caché pueden eliminarse. Este enfoque "basado en bitácoras" puede ser más sencillo mantener que el enfoque "basado en comparación" descrito a continuación, ya que requiere una menor búsqueda para determinar qué cambios se elaboraron mediante el proceso de análisis y las operaciones en el objeto de contexto de análisis independiente del documento 1903 (como "eliminación de nodo" o "creación de nodo") se manejan por separado, añadiendo de esta manera un nuevo tipo de operación no tiende a afectar las otras operaciones. En lugar de la técnica "basada en bitácora" para conciliar los resultados del análisis con el estado actual del documento 1703, varios ejemplos de la invención pueden emplear un enfoque "basada en comparación" para la conciliación. La característica de distinción principal del enfoque basada en comparación es que no se mantiene un registro de los cambios hechos al objeto de contexto de análisis independiente del documento 1903, de manera que esta técnica no recolecta información sobre cuál de los procesos de análisis hizo otra acción diferente a la comparación del objeto de contexto de análisis independiente del documento 1903 conteniendo los resultados del análisis con la versión original del objeto de contexto de análisis independiente del documento 1903. De esta manera, con este enfoque, la versión original del objeto de contexto de análisis independiente del documento 1903 siempre se requiere, independientemente de cualesquiera juicios sobre las colisiones discrecionales. Usando este enfoque, la herramienta de análisis de tinta 1901 primero construye un mapa de golpes. Esto es, para todos los nodos de vértice terminal de tinta en la versión original del objeto de contexto de análisis independiente del documento 1903, si existe un nodo correspondiente en el objeto de contexto de análisis 1709 actual, entonces el nodo de vértice terminal se añade a una tabla de discusión (u otra estructura de datos adecuada). De esta manera, la tabla de discusión correlaciona los GUID de golpe (u otros identificadores exclusivos de nodos) en la versión original del objeto de contexto de análisis independiente del documento 1903 con las referencias del nodo de vértice terminal en el objeto de contexto de análisis 1709 actual. Después, la herramienta de análisis de tinta 1901 identifica todos los nodos que la aplicación del programa de cómputo 1701 ha cambiado en el objeto de contexto de análisis 1709. Esto puede realizarse usando las técnicas para determinar las colisiones discrecionales descritas detalladamente en los párrafos anteriores. Para cada nodo en la versión original del objeto de contexto de análisis independiente del documento 1903, si hay un nodo correspondiente en el objeto de contexto de análisis 1709 actual y difiere del nodo en la versión original del objeto de contexto de análisis independiente del documento 1903 de alguna manera importante, entonces la herramienta de análisis de tinta 1901 determina que este nodo ha cambiado mediante la aplicación y es una colisión potencial. Las referencias a dichos nodos se guardan en una primera lista que corresponden a nodos de resultado de análisis que no deben añadirse al objeto de contexto de análisis 1709 (a partir de ahora denominada como la lista resultsNodesNotToAdd (nodos de resultados que no se añaden)) una segunda lista de nodos que crea colisiones discrecionales. Para cada nodo en la versión original del objeto de contexto de análisis 1903 independiente del documento, la herramienta de análisis de tinta 1901 busca los nodos correspondientes tanto en el objeto de contexto de análisis independiente del documento 1903 con los resultados del análisis y el objeto del contexto de análisis 1709. Para cada nodo en el objeto de contexto de análisis 1709, la herramienta de análisis de tinta 1901 define si la aplicación del programa de cómputo 1701 borró el nodo. Dichos nodos existen en la versión original del objeto de contexto de análisis independiente del documento 1903, pero no tienen un nodo correspondiente en el objeto de contexto de análisis 1709. El nodo correspondiente en el objeto de contexto de análisis independiente del documento 1903 con los resultados del análisis se añade a la lista resultsNodesNotToAdd si ésta existe. Después, la herramienta de análisis de tinta 1901 determina si el proceso de análisis borró el nodo del objeto de contexto de análisis independiente del documento 1903. Esto se detecta cuando existe un nodo correspondiente en el objeto de contexto de análisis 1709 actual y no ha cambiado, pero no hay un nodo correspondiente en el objeto de contexto de análisis independiente del documento 1903 con los resultados del análisis. Los nodos eliminados mediante el proceso de análisis pueden guardarse en una lista de nodos eliminados. Tal nodo no se añade al objeto de contexto de análisis 1709 actual, pero no va en la lista resultsNodesNotToAdd (resultados de nodos que no se deben añadir) debido a que no hay un nodo correspondiente en el objeto de contexto de análisis independiente del documento 1903 con los resultados del análisis. Si la aplicación de programa de cómputo 1701 no ha borrado ni cambiado el nodo y el proceso de análisis no borra el nodo, entonces la herramienta de análisis de tinta 1901 puede determinar si el proceso de análisis ha cambiado el nodo. La misma técnica que se describió anteriormente para usarse en la detección de los cambios hechos por la aplicación del programa de cómputo 1701 se puede usar para detectar los cambios hechos por el proceso de análisis. Los nodos que han cambiado mediante el proceso de análisis se añaden a la lista resultsNodesNotToAdd (resultados de nodos que no se deben añadir) y los cambios se propagan mediante la invocación de métodos adecuados sobre los nodos en el objeto de contexto de análisis 1709. Si ni la aplicación del programa de cómputo 1701 ni el proceso de análisis cambió o eliminó un nodo, entonces nada ha pasado para ese nodo y la herramienta de análisis de tinta 1901 añade el nodo a la lista resultsNodesNotToAdd (resultados de nodos que no se deben añadir), como el nodo existe en el objeto de contexto de análisis independiente del documento 1903 con los resultados del análisis y no se añade al objeto de contexto de análisis 1709. Después, para cada nodo en el objeto de contexto de análisis independiente del documento 1903 con los resultados del análisis, si el nodo no está en la lista resultsNodesNotToAdd (resultados de nodos que no se deben añadir), entonces la herramienta de análisis de tinta 1901 puede propagar cualesquiera cambios al nodo a través de los procesos de análisis mediante la creación de un nodo correspondiente en el objeto de contexto de análisis 1709. El recorrido transversal de los nodos en los resultados del análisis puede realizarse usando un recorrido transversal de orden previo hacia arriba-abajo, de manera que se garantice que los nodos de origen se crearán antes que los nodos descendientes. Al crear un nuevo nodo de vértice germinal en el objeto de contexto de análisis 1709, cualesquiera golpes de tinta asociados con el nodo que está contenido en los resultados del análisis también puede moverse hacia el nodo nuevo desde otros nodos en el objeto de contexto de análisis 1709. El mapa de golpes analizado a los párrafos anteriores entonces se puede usar para identificar los elementos fuente para mover los golpes. Los golpes de tinta no se mueven si el elemento de la fuente no existe (creando una colisión obligatoria) o si el elemento de la fuente está contenido en la lista de colisiones discrecionales también observada en los párrafos anteriores. Para guardar las invocaciones no necesarias al objeto de contexto de análisis 1709, esta herramienta de análisis de tinta 1901 puede evitar invocar el método para crear un nodo de contexto descendiente si no hay al menos un nodo de fuente de golpe sin colisiones. La misma verificación de fuente de golpes también se realiza en nodos de vértice terminal que no son de tinta, de manera que un nodo para una línea no se crea a menos que al menos una de las palabras que constituyen la línea vaya a contener al menos un golpe movido satisfactoriamente, por ejemplo. Otra información entonces también se aplica al nodo recién creado, como un entramado de reconocimiento. El entramando de reconocimiento aún se aplica incluso si ciertos golpes no se pudieron mover, creando una colisión discrecional aplicada (esto es, no bloqueada) que da como resultado una inconsistencia lógica temporal. No obstante, debido a que los movimientos de golpe fallaron se reflejan en la designación de la porción del objeto de contexto de análisis 1709 que corresponde a una región del documento para la cual los cambios se bloquean, la inconsistencia es temporal, ya que la aplicación del programa de cómputo 1701 recibe la indicación de volver a analizar la región bloqueada. Para cada nodo que será eliminado del objeto de contexto de análisis 1709, la lista de herramienta de análisis de tinta 1901 verifica para ver si el nodo puede ser eliminado en realidad ahora que todas las otras ediciones y adiciones al objeto de contexto de análisis 1709 ya se han realizado. Los nodos que se eliminarán y que están vacíos en realidad de todos los nodos descendientes y golpes se eliminan del objeto de contexto de análisis 1709. Una vez que un nodo tal se elimina, todos los nodos precedentes (hacia arriba pero no incluyen el nodo de raíz) se eliminan en sucesión hasta que un antecesor con o otros descendientes remanentes se encuentran. Finalmente, la herramienta de análisis de tinta 1901 hace una comparación global del orden de nodos entre el objeto de contexto de análisis independiente del documento 1903 con los resultados de análisis y el objeto de contexto de análisis 1709, de manera que detecta y propaga los cambios al objeto de contexto de análisis 1709 mediante el procesador de análisis. Debe observarse, sin embargo, que esta comparación ignora la versión original del objeto de contexto de análisis independiente del documento 1903, de esta manera no hay manera de detectar los cambios hechos al orden por la aplicación del programa de cómputo 1701. Después, para cada nodo contenedor en los resultados del análisis que tiene un nodo correspondiente en el objeto de contexto de análisis 1709, el orden de los descendientes del nodo contenedor se compara. Si ambos nodos contenedor tienen exactamente el mismo conjunto de descendientes, entonces el orden en los resultados del análisis se propaga al objeto de contexto de análisis 1709 mediante la formación de un ciclo sobre la lista de descendientes del contenedor en los resultados del análisis hasta que un nodo se encuentre en la misma posición en la lista del contenedor en el objeto de contexto de análisis 1709 que no tiene el mismo GUID (u otro tipo de identificador) que el nodo descendiente en los resultados del análisis. Cuando se encuentra dicha falta de coincidencia, el nodo correspondiente debe encontrarse más abajo en la lista de descendientes en el objeto de contexto de análisis 1709. La herramienta de análisis de tinta 1901 entonces busca en el resto de la lista de descendientes en el objeto de contexto de análisis 1709 el nodo, e invoca el método para mover el nodo descendiente para corregir el orden para ese nodo en el objeto de contexto de análisis 1709. La herramienta de análisis de tinta 1901 entonces continúa formando ciclos sobre los nodos en los resultados del análisis. Desde luego, asumir listas idénticas no es real, ya que la lista de análisis o la aplicación del programa de cómputo 1701 puede haber eliminado o insertado nodos en cualquier lista. Un objeto "correlacionador de lista descendiente" se usa para simular la suposición real, al presentar listas "recortadas" que sólo contienen elementos que están contenidos en común. El procedimiento descrito anteriormente entonces se ejecuta en las listas descendientes correlacionadas y los movimientos se trasladan a los índices e invocaciones reales mediante el objeto correlacionador de la lista. De esta manera, las técnicas de conciliación de conformidad con varios ejemplos de la invención descritos anteriormente permiten que los resultados de un proceso de análisis se apliquen a los elementos del documento actual en un documento, incluso si los contenidos del documento han cambiado desde que se inició el proceso de análisis. Estas técnicas de conciliación por lo tanto permiten que la tinta electrónica en un documento sea analizada de manera asincrona desde la operación de la aplicación del programa de cómputo que aloja al documento. Además, estas técnicas de conciliación pueden aprovechablemente emplearse por una variedad de diferentes aplicaciones de programas de cómputo, incluyendo las aplicaciones de programas de cómputo multihebras existentes con bloqueo del propietario u otras estrategias de sincronización.
Sistema activado por evento Como se analizó anteriormente, varios ejemplos de la invención crean una "copia dinámica" del estado de un documento copiando un objeto de contexto de análisis independiente del documento y después analizar de manera asincrona el objeto de contexto de análisis independiente del documento mientras que la aplicación del programa de cómputo que aloja el documento sigue su operación. De manera alternativa, varios ejemplos de la invención pueden continuar usando el objeto de contexto de análisis independiente del documento para un análisis de tinta asincrona. En su lugar, estos ejemplos de la invención pueden usar un componentes sellado para almacenar toda la tinta y los datos sintácticos para un documento. En particular, estos ejemplos de la invención reconocen dos tipos de modificaciones que pueden hacerse a un documento: eventos de tinta, como la adición, eliminación o modificación de golpes y eventos de estructura, como agrupamiento de golpes en palabras, adición de nodos sintácticos o asociación de resultados de reconocimiento de texto para golpes. Cada evento contiene todos los datos necesarios para describir completamente el evento a un oyente externo. Por ejemplo un evento "de adición de golpe" incluirá todos los datos de golpe. Con estos eventos "ricos", un oyente puede mantener un duplicado exacto de un objeto de tinta al aplicar eventos en el orden en que fueron recibidos. La Figura 28 ilustra un ejemplo de cómo esta disposición puede emplearse, tal y como se describe en varios ejemplos de la invención. Como se observa en esta figura, una aplicación 2801 emplea una herramienta de análisis de tinta 2803. La herramienta de análisis de tinta 2803 mantiene datos de tinta 2805 y una estructura de documento 2807 (por ejemplo, como una estructura de árbol) para la aplicación 2801. La aplicación también emplea una cola de eventos 2809, un proceso de análisis sintáctico 2811 y un proceso de reconocimiento 2817. El proceso de análisis sintáctico 2811 mantiene un clon 2813 de los datos de tinta 2805 y un clon 2815 de la estructura del documento 2807. De igual manera, el proceso de reconocimiento 2817 mantiene un clon 2819 de los datos de tinta 2805 y un clon 2821 de la estructura del documento 2807. Cuando la aplicación genera datos de tinta, proporciona los datos de tinta a la herramienta de análisis de tinta 2803 a través de un método 2823. En respuesta, la herramienta de análisis de tinta 2803 genera un evento que corresponde a un cambio en los datos de tinta, añade una etiqueta a todos los eventos y define el proceso o los procesos de análisis deseados como componentes que escuchan los eventos con etiquetas especificadas. Por ejemplo, todos los cambios del usuario a la tinta pueden marcarse con la etiqueta "UserChange" (cambio del usuario) y un evento 2825 con esta etiqueta se envía a la cola de eventos 2809 de manera asincrona como respuesta al cambio. En algún punto en el futuro, el proceso del analizador sintáctico 8211 y el proceso de reconocimiento 2817 recuperarán el evento etiquetado de la cola de eventos 2809. Un primer proceso de análisis (por ejemplo, el proceso de análisis sintáctico 2811) entonces escucha todos los eventos emitidos por la herramienta de análisis de tinta 2803 y responde a aquellos con la etiqueta UserChange. El primer proceso de análisis entonces aplicará los cambios especificados por el evento a su copia interna de los datos de tinta 2813 y la estructura del documento 2815, analiza los datos descritos en el evento y después crea y etiqueta los eventos 2827 generados por sus cambios con la etiqueta "Parserl Change" (cambio del analizador sintáctico). Estos eventos 2827 serán emitidos por la herramienta de análisis de tinta 2803 nuevamente a la cola de eventos 2809. Un segundo proceso de análisis (por ejemplo, el proceso de reconocimiento de escritura manual 2817) entonces escucha los eventos etiquetados con la etiqueta Parserl Change. Como respuesta, aplicará los cambios especificados por el evento a su copia interna de datos de tinta 2819 y la estructura del documento 2821 y analiza los datos descritos en los eventos como respuesta. El segundo analizador entonces crea y etiqueta un evento 2829 con sus resultados de análisis con la etiqueta "HandwritingRecognitionChange" (cambio de reconocimiento de escritura manual). Mientras la herramienta de análisis de tinta 2803 recibe los eventos del proceso del analizador sintáctico 2811 y el proceso de reconocimiento 2817, envía los eventos 2831 a la aplicación 2801 para indicar un cambio en la estructura del documento 2807. Estas modalidades de la invención también pueden soportar cada uno de los procesos de análisis escuchando los eventos con más de un evento y etiquetar los eventos de sus cambios con diferentes etiquetas con base en procesamientos internos. De esta manera, estas implementaciones alternativas de la invención también pueden permitir análisis de tinta electrónica en un documento que es asincrono de la operación de la aplicación del programa de cómputo que aloja al documento. Conclusión Aunque la invención se ha descrito con respecto a aspectos específicos que incluyen los modos que se prefieren actualmente del desarrollo de la invención, los expertos en la técnica comprenderán que existen diversas variaciones y cambios de los sistemas descritos en el presente documento así como sus técnicas que se encuentran dentro del espíritu y alcance de la invención como se establece a continuación en las reivindicaciones anexas.
Claims (1)
- REIVINDICACIONES 1. - Un método que comprende: la creación de un primer nodo de contexto asociado con una primera porción de una porción base de un documento electrónico; la creación de un segundo nodo de contexto asociado con una anotación hecha a la porción base; y el enlace del segundo nodo de contexto con el primer nodo de contexto. 2. - Un método tal y como se describe en la reivindicación 1, caracterizado porque el primer nodo de contexto incluye un miembro seleccionado del grupo de: un nodo de párrafo, un nodo de línea, un nodo de palabra y un nodo de dibujo. 3. - Un método tal y como se describe en la reivindicación 1, caracterizado porque el primer nodo de contexto incluye un miembro seleccionado del grupo de: un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo electrónico, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta electrónica, un nodo de viñeta de tinta electrónica, un nodo de palabra de texto electrónico, un nodo de imagen, un nodo de tabla, un nodo de fila y un nodo de celda. 4 - Un método tal y como se describe en la reivindicación 3, caracterizado porque el segundo nodo de contexto se selecciona del grupo de: un nodo de tinta no clasificado, un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta de tinta electrónica, un nodo de tabla, un nodo de fila y un nodo de celda. 5. - Un método tal y como se describe en la reivindicación 1, caracterizado porque la anotación hecha a la porción base incluye datos de tinta electrónica. 6. - Un método tal y como se describe en la reivindicación 5, caracterizado porque la porción base incluye al menos uno de texto electrónico, una imagen, una tabla, una lista, una gráfica, una hoja de cálculo, un diagrama, o un dibujo. 7. - Un método tal y como se describe en la reivindicación 1, que además comprende: analizar sintácticamente al menos la primera porción de la porción base para identificar de esta manera información para incluirla en el primer nodo de contexto. 8.- Un método tal y como se describe en la reivindicación 7, que además comprende: analizar sintácticamente al menos la anotación para identificar de esta manera información para incluirla en el segundo nodo de contexto. 9. - Un método tal y como se describe en la reivindicación 8, caracterizado porque antes de analizar sintácticamente la anotación, la anotación incluye al menos un nodo de tinta no clasificado. 10. - Un método tal y como se describe en la reivindicación 1, que además comprende: presentar la porción base y la anotación, en donde la anotación se ubica en una primera posición con respecto a la porción base; cambiar los datos asociados con la porción base de manera tal que una ubicación asociada con el primer nodo de contexto cambie a una segunda posición; y presentar la anotación y la porción base con los datos ya cambiados, en donde la anotación se presenta a una tercera posición con respecto a la porción base al menos en parte con base en la segunda posición del primer nodo de contexto. 11. - Un método tal y como se describe en la reivindicación I, caracterizado porque el primer nodo de contexto y el segundo nodo de contexto están dispuestos en una estructura de datos jerárquicos que representan los datos asociados con el documento electrónico. 12. - Un método tal y como se describe en la reivindicación II, caracterizado porque el primer nodo de contexto y el segundo nodo de contexto comparten al menos un nodo de origen común. 13. - Un método tal y como se describe en la reivindicación 1, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan el documento electrónico para que sea presentado de manera que la anotación contiene la primera porción del documento base. 14. - Un método tal y como se describe en la reivindicación 1, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan el documento electrónico para que sea presentado de manera tal que la anotación subraye la primera porción del documento base. 15. - Un método tal y como se describe en la reivindicación 1, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan el documento electrónico para que sea presentado de manera tal que la anotación tache la primera porción del documento base.. 16. - Un método tal y como se describe en la reivindicación 1, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan el documento electrónico para que sea presentado de manera tal que una primera porción de la anotación señale entre una segunda porción de la anotación y la primera porción del documento base. 17. - Un medio legible con computadora que incluye instrucciones ejecutables por computadora almacenadas en ésta para realizar el método tal y como se describe en la reivindicación 1. 18. - Un método que comprende: analizar sintácticamente un primer conjunto de datos que contiene datos asociados con un documento base; analizar sintácticamente un segundo conjunto de datos que incluye datos de tinta electrónica sin clasificar; y enlazar al menos una porción del segundo conjunto de datos con al menos alguna porción del primero conjunto de datos. 19. - Un método tal y como se describe en la reivindicación 18, caracterizado porque el análisis sintáctico del primer conjunto de datos da como resultado un primer conjunto de datos con análisis sintáctico que contiene una pluralidad de nodos de contexto, en donde al menos un primer nodo de contexto del primer conjunto de datos analizados sintácticamente incluye un miembro seleccionado del grupo de: un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo electrónico, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta de tinta, un nodo de viñeta electrónica, un nodo de palabra de texto, un nodo de imagen, un nodo de tabla, un nodo de fila y un nodo de celda. 20.- Un método tal y como se describe en la reivindicación 19, caracterizado porque el análisis sintáctico del segundo conjunto de datos da como resultado un segundo conjunto de datos analizados sintácticamente que contiene una pluralidad de nodos de contexto, en donde al menos un primer nodo de contexto del segundo conjunto de datos analizados sintácticamente incluye un elemento seleccionado del grupo de: un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta de tinta, un nodo de tabla, un nodo de fila y un nodo de celda. 21.- Un método tal y como se describe en la reivindicación 20, caracterizado porque durante el enlace, el primer nodo de contexto del primer conjunto de datos analizado sintácticamente se enlaza con el primer nodo de contexto del segundo conjunto de datos analizado sintácticamente. 22.- Un método tal y como se describe en la reivindicación 18, caracterizado porque el análisis sintáctico del primer conjunto de datos da como resultado una disposición jerárquica de los nodos de contexto asociados con el documento base. 23. - Un método tal y como se describe en la reivindicación 18, caracterizado porque el análisis sintáctico del segundo conjunto de datos da como resultado una disposición jerárquica de los nodos de contexto asociados con una anotación al documento base. 24. - Un método tal y como se describe en la reivindicación 23, que además comprende: presentar el documento base y la anotación, en donde la anotación se ubica en una primera posición con respecto al documento base; cambiar los datos asociados con el documento base de manera tal que una ubicación espacial asociada con el primer conjunto de datos cambia a una segunda posición; y presentar la anotación y el documento base con los datos cambiados, en donde la anotación se presenta en una tercera posición con respecto al documento base al menos en parte con base en la segunda posición asociada con el primer conjunto de datos. 25.- Un método tal y como se describe en la reivindicación 18, caracterizado porque el análisis sintáctico del primer conjunto de datos y el análisis sintáctico del segundo conjunto de datos da como resultado una disposición jerárquica de los nodos de contexto asociados con el primer conjunto de datos y el segundo conjunto de datos. 26. - Un método tal y como se describe en la reivindicación 25, caracterizado porque al menos un nodo de contexto asociado con el primer conjunto de datos comparte al menos un nodo de origen común con a! menos un nodo de contexto asociado con el segundo conjunto de datos. 27. - Un medio legible por computadora que incluye instrucciones ejecutables mediante una computadora almacenadas en ésta para realizar el método tal y como se describe en la reivindicación 18. 28.- Un método que comprende: recibir una invocación de un programa de aplicación para analizar sintácticamente un primer conjunto de datos que contiene al menos algunos datos de tinta electrónica sin clasificar en un documento electrónico; solicitar un segundo conjunto de datos del programa de aplicación, en donde el segundo conjunto de datos incluye datos asociados con el documento electrónico en un área espacial asociada con una ubicación de los datos de tinta electrónica sin clasificar; y clasificar el primer conjunto de datos al menos en parte basados en el segundo conjunto de datos. 29.- Un método tal y como se describe en la reivindicación 28, caracterizado porque la clasificación incluye determinar si el primer conjunto de datos constituye tinta electrónica que representa una anotación de al menos alguna porción del segundo conjunto de datos. 30.- Un método tal y como se describe en la reivindicación 29, caracterizado porque, cuando se determina que el primer conjunto de datos constituye tinta electrónica que representa una anotación de al menos una porción del segundo conjunto de datos, el método además incluye el enlace de al menos una porción del primer conjunto de datos en al menos una porción del segundo conjunto de datos. 31.- Un método tal y como se describe en la reivindicación 28, que además comprende: analizar sintácticamente el primer conjunto de datos. 32.- Un método tal y como se describe en la reivindicación 28, caracterizado porque el primer conjunto de datos se envía a un analizador sintáctico al mismo tiempo que el segundo conjunto de datos se envía al analizador sintáctico. 33. - Un medio legible por computadora que incluye instrucciones ejecutables mediante una computadora almacenados en ésta para realizar el método tal y como se describe en la reivindicación 28. 34. - Un sistema que comprende: una entrada para recibir datos de entrada de tinta electrónica en un documento electrónico; y un procesador programado y adaptado para: (a) crear el primer nodo de contexto asociado por una primera porción de una porción base del documento electrónico, (b) crear un segundo nodo de contexto asociado con una anotación a la porción base, y (c) enlazar el segundo nodo de contexto con el primer nodo de contexto. 35.- Un sistema tal y como se describe en la reivindicación 34, caracterizado porque el primer nodo de contexto incluye un miembro seleccionado del grupo de: un nodo de párrafo, un nodo de línea, un nodo de palabra, un nodo de dibujo. 36.- Un sistema tal y como se describe en la reivindicación 34, caracterizado porque el primer nodo de contexto incluye un miembro seleccionado del grupo de: un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo electrónico, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta electrónica, un nodo de viñeta de tinta, un nodo de palabra de texto electrónico, un nodo de imagen, un nodo de tabla, un nodo de fila y un nodo de celda. 37. - Un sistema tal y como se describe en la reivindicación 36, caracterizado porque el segundo nodo de contexto se selecciona del grupo de: un nodo de tinta sin clasificar, un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta de tinta, un nodo de tabla, un nodo de fila y un nodo de celda. 38. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque la anotación a la porción base incluye datos de tinta electrónica. 39. - Un sistema tal y como se describe en la reivindicación 38, caracterizado porque la porción base incluye al menos uno de texto electrónico, una imagen, una tabla, una lista, una gráfica, una hoja de cálculo, un diagrama o un dibujo. 40. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque el procesador está programado adicionalmente y adaptado para analizar sintácticamente el menos la primera porción de la porción base para identificar de esta manera la información para incluir en el primer nodo de contexto. 41. - Un sistema tal y como se describe en la reivindicación 40, caracterizado porque el procesador está programado adicionalmente y adaptado para analizar sintácticamente al menos la anotación para identificar de esta manera información para incluirla en el segundo nodo de contexto. 42. - Un sistema tal y como se describe en la reivindicación 41, caracterizado porque antes de analizar sintácticamente la anotación, la anotación incluye al menos un nodo de tinta no clasificada. 43. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque el procesador está además programado y adaptado para: (d) presentar la porción base y la anotación, en donde la anotación está ubicada en una primera posición con respecto a la porción base, (e) recibir entradas indicando un cambio en los datos asociados con la porción base de manera tal que una ubicación asociada con el primer nodo de texto cambia a una segunda posición y (f) presentar la anotación en la porción base con los datos cambiados, en donde la anotación se presenta en una tercera posición con respecto a la porción base al menos en parte basada en la segunda posición del primer nodo de contexto. 44. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque el primer nodo de contexto y el segundo nodo de contexto están dispuestos en una estructura de datos jerárquicos que representan los datos asociados con el documento electrónico. 45. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque el primer nodo de contexto y el segundo nodo de contexto comparten el menos un nodo de origen común. 46. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan el documento electrónico para que sea presentado de manera tal que la anotación contiene la primera porción del documento base. 47. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan el documento electrónico para que sea presentado de manera tal que la anotación subraye la primera porción del documento base. 48. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan al documento electrónico para que sea presentado de manera tal que la anotación tache la primera porción del documento base. 49. - Un sistema tal y como se describe en la reivindicación 34, caracterizado porque los datos asociados con el primer nodo de contexto y el segundo nodo de contexto habilitan el documento electrónico para que sea presentado de manera tal que una primera porción de la anotación señala entre una segunda porción de la anotación y la primera porción del documento base. 50. - Un sistema que comprende: una entrada para recibir datos de tinta electrónica; y un procesador programado y adaptado para: (a) analizar sintácticamente un primer conjunto de datos que contiene datos asociados con un documento base, (b) analizar sintácticamente un segundo conjunto de datos que incluye datos de tinta electrónica sin clasificar y (c) enlaza al menos alguna porción del segundo conjunto de datos con al menos alguna porción del primer conjunto de datos. 51. - Un sistema tal y como se describe en la reivindicación 50, caracterizado porque el procesador está programado y adaptado para analizar sintácticamente el primer conjunto de datos para proveer un primer conjunto de datos analizado sintácticamente conteniendo una pluralidad de nodos de contexto, en donde al menos un primer nodo de contexto del primer conjunto de datos analizado sintácticamente incluye un miembro seleccionado del grupo de: un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo electrónico, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta de tinta, un nodo de viñeta electrónica, un nodo de palabra de texto, un nodo de imagen, un nodo de tabla, un nodo de fila y un nodo de celda. 52. - Un sistema tal y como se describe en la reivindicación 50, caracterizado porque el procesador está programado y adaptado para analizar sintácticamente el segundo conjunto de datos para proveer un segundo conjunto de datos analizado sintácticamente que contienen una pluralidad de nodos de contexto, en donde al menos un primer nodo de contexto del segundo conjunto de datos analizado sintácticamente incluye un miembro seleccionado del grupo de: un nodo de grupo, un nodo de párrafo, un nodo de línea, un nodo de palabra de tinta, un nodo de dibujo de tinta, un nodo de lista, un nodo de elemento de lista, un nodo de viñeta de tinta, un nodo de tabla, un nodo de fila y un nodo de celda. 53. - Un sistema tal y como se describe en la reivindicación 52, caracterizado porque durante el enlace, el primer nodo de contexto del primer conjunto de datos analizado sintácticamente está enlazado con el primer nodo de contexto del segundo conjunto de datos analizado sintácticamente. 54. - Un sistema tal y como se describe en la reivindicación 50, caracterizado porque el procesador está programado y adaptado para analizar sintácticamente el primer conjunto de datos en una disposición sintáctica de los nodos de contexto asociados con el documento base. 55. - Un sistema tal y como se describe en la reivindicación 50, caracterizado porque el procesador está programado y adaptado para analizar sintácticamente el segundo conjunto de datos en una disposición jerárquica de nodos de contexto asociados con una anotación al documento base. 56. - Un sistema tal y como se describe en la reivindicación 55, caracterizado porque el procesador está programado adicionalmente y adaptado para: (d) presentar el documento base y la anotación, en donde la anotación está ubicada en una primera posición con respecto al documento base, (e) recibir la entrada que indica un cambio en los datos asociados con el documento base, de manera tal que una ubicación espacial asociada con el primer conjunto de datos cambia a una segunda posición, y (f) presentar la anotación y el documento base con los datos cambiados, en donde la anotación se presenta en una tercera posición con respecto al documento base al menos en parte basado en la segunda posición asociada con el primer conjunto de datos. 57. - Un sistema tal y como se describe en la reivindicación 50, caracterizado porque el procesador está programado y adaptado para analizar sintácticamente el primer conjunto de datos y el segundo conjunto de datos en una disposición jerárquica de nodos de contexto. 58. - Un sistema tal y como se describe en la reivindicación 57, caracterizado porque al menos un nodo de contexto asociado con el primer conjunto de datos comparte al menos un nodo de origen común con al menos un nodo de contexto asociado con el segundo conjunto de datos. 59.- Un sistema que comprende: una entrada adaptada para recibir la invocación de un programa de aplicación para analizar sintácticamente un primer conjunto de datos que contiene al menos algunos datos de tinta electrónica no clasificada en un documento electrónico; y un procesador programado y adaptado para: (a) solicitar un segundo conjunto de datos del programa de aplicación, en donde el segundo conjunto de datos incluye datos asociados con el documento electrónico en un área espacial asociada con una ubicación de los datos de tinta electrónica sin clasificar, y (b) clasificar el primer conjunto de datos al menos en parte basado en el segundo conjunto de datos. 60.- Un sistema tal y como se describe en la reivindicación 59, caracterizado porque, durante la clasificación, el procesador esté programado y adaptado adicionalmente para determinar si el primer conjunto de datos constituye tinta electrónica que representa una anotación de al menos una porción del segundo conjunto de datos. 61.- Un sistema tal y como se describe en la reivindicación 60, caracterizado porque, cuando se determina que el primer conjunto de datos constituye tinta electrónica que representa una anotación de al menos una porción del segundo conjunto de datos, el procesador adicionalmente está programado y adaptado para enlazar al menos una porción del primer conjunto de datos a al menos una porción del segundo conjunto de datos. 62. - Un sistema tal y como se describe en la reivindicación 59, caracterizado porque el procesador está adicionalmente programado y adaptado para analizar sintácticamente el primer conjunto de datos. 63. - Un medio legible por computadora que tiene una estructura de datos almacenados en ésta que representa el contenido de un documento electrónico, la estructura de datos comprende: un primer conjunto de datos que contiene una disposición jerárquica de los nodos de contexto asociados con una porción base del documento electrónico; un segundo conjunto de datos que contiene una disposición jerárquica de nodos de contexto asociados con una anotación al documento electrónico; y un conjunto de datos de enlace que enlaza al menos un nodo de contexto del segundo conjunto de datos con un nodo de contexto del segundo conjunto de datos. 64. - Un medio legible por computadora tal y como se describe en la reivindicación 63, caracterizado además porque el segundo conjunto de datos incluye datos de tinta electrónica. 65. - Un medio legible por computadora tal y como se describe en la reivindicación 63, caracterizado además porque el primer conjunto de datos y el segundo conjunto de datos comparten al menos un nodo de origen común.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2003/026172 WO2005029391A1 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
US10/644,900 US7533338B2 (en) | 2003-08-21 | 2003-08-21 | Electronic ink processing |
Publications (1)
Publication Number | Publication Date |
---|---|
MXPA04005722A true MXPA04005722A (es) | 2005-06-03 |
Family
ID=34594119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MXPA04005722A MXPA04005722A (es) | 2003-08-21 | 2003-08-21 | Procesamiento de tinta electronica. |
Country Status (9)
Country | Link |
---|---|
US (1) | US7533338B2 (es) |
EP (1) | EP1665128A4 (es) |
JP (1) | JP4571867B2 (es) |
CN (1) | CN100414559C (es) |
AU (1) | AU2003262759B8 (es) |
BR (1) | BR0306577A (es) |
CA (1) | CA2467044A1 (es) |
MX (1) | MXPA04005722A (es) |
WO (1) | WO2005029391A1 (es) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2336899A3 (en) | 1999-03-19 | 2014-11-26 | Trados GmbH | Workflow management system |
US20060116865A1 (en) | 1999-09-17 | 2006-06-01 | Www.Uniscape.Com | E-services translation utilizing machine translation and translation memory |
US7418656B1 (en) * | 2003-10-03 | 2008-08-26 | Adobe Systems Incorporated | Dynamic annotations for electronics documents |
US7436535B2 (en) * | 2003-10-24 | 2008-10-14 | Microsoft Corporation | Real-time inking |
US8074184B2 (en) * | 2003-11-07 | 2011-12-06 | Mocrosoft Corporation | Modifying electronic documents with recognized content or other associated data |
US8060743B2 (en) * | 2003-11-14 | 2011-11-15 | Certicom Corp. | Cryptographic method and apparatus |
US20100262621A1 (en) * | 2004-03-05 | 2010-10-14 | Russ Ross | In-context exact (ice) matching |
US7983896B2 (en) * | 2004-03-05 | 2011-07-19 | SDL Language Technology | In-context exact (ICE) matching |
US7574048B2 (en) * | 2004-09-03 | 2009-08-11 | Microsoft Corporation | Freeform digital ink annotation recognition |
US20060167902A1 (en) * | 2005-01-21 | 2006-07-27 | Microsoft Corporation | System and method for storing a document in a serial binary format |
US8340476B2 (en) * | 2005-03-18 | 2012-12-25 | The Invention Science Fund I, Llc | Electronic acquisition of a hand formed expression and a context of the expression |
US7924284B2 (en) * | 2005-04-22 | 2011-04-12 | Microsoft Corporation | Rendering highlighting strokes |
US9384171B2 (en) * | 2005-05-16 | 2016-07-05 | Adobe Systems Incorporated | Object resizing with content reflow |
US8249344B2 (en) * | 2005-07-01 | 2012-08-21 | Microsoft Corporation | Grammatical parsing of document visual structures |
US20070038955A1 (en) * | 2005-08-09 | 2007-02-15 | Nguyen Mitchell V | Pen-based computer system having first and second windows together with second window locator within first window |
US8509563B2 (en) * | 2006-02-02 | 2013-08-13 | Microsoft Corporation | Generation of documents from images |
US7966558B2 (en) * | 2006-06-15 | 2011-06-21 | Microsoft Corporation | Snipping tool |
US8521506B2 (en) * | 2006-09-21 | 2013-08-27 | Sdl Plc | Computer-implemented method, computer software and apparatus for use in a translation system |
US20080195931A1 (en) * | 2006-10-27 | 2008-08-14 | Microsoft Corporation | Parsing of ink annotations |
US8407589B2 (en) * | 2007-04-20 | 2013-03-26 | Microsoft Corporation | Grouping writing regions of digital ink |
US20090013044A1 (en) * | 2007-07-05 | 2009-01-08 | Microsoft Corporation | Techniques for managing annotation transformations for context changes |
US8898558B2 (en) * | 2007-12-07 | 2014-11-25 | Hewlett-Packard Development Company, L.P. | Managing multimodal annotations of an image |
US8751921B2 (en) * | 2008-07-24 | 2014-06-10 | Microsoft Corporation | Presenting annotations in hierarchical manner |
JP4934181B2 (ja) * | 2009-01-26 | 2012-05-16 | 株式会社東芝 | 付加画像処理システム、画像形成装置及び付加画像追加方法 |
US9262403B2 (en) | 2009-03-02 | 2016-02-16 | Sdl Plc | Dynamic generation of auto-suggest dictionary for natural language translation |
GB2468278A (en) * | 2009-03-02 | 2010-09-08 | Sdl Plc | Computer assisted natural language translation outputs selectable target text associated in bilingual corpus with input target text from partial translation |
US20120096354A1 (en) * | 2010-10-14 | 2012-04-19 | Park Seungyong | Mobile terminal and control method thereof |
US9128929B2 (en) | 2011-01-14 | 2015-09-08 | Sdl Language Technologies | Systems and methods for automatically estimating a translation time including preparation time in addition to the translation itself |
KR20140136471A (ko) * | 2012-02-29 | 2014-11-28 | 퀄컴 인코포레이티드 | 필기된 컨텐츠에 대해 공간적으로 관련된 주석의 디스플레이 |
US10638221B2 (en) | 2012-11-13 | 2020-04-28 | Adobe Inc. | Time interval sound alignment |
US10249321B2 (en) * | 2012-11-20 | 2019-04-02 | Adobe Inc. | Sound rate modification |
US10455219B2 (en) | 2012-11-30 | 2019-10-22 | Adobe Inc. | Stereo correspondence and depth sensors |
US9116871B2 (en) * | 2013-05-20 | 2015-08-25 | Microsoft Technology Licensing, Llc | Ink to text representation conversion |
CN105393246A (zh) * | 2013-06-28 | 2016-03-09 | 微软技术许可有限责任公司 | 用属性组选择和编辑视觉元素 |
CN103500158A (zh) * | 2013-10-08 | 2014-01-08 | 北京百度网讯科技有限公司 | 批注电子文档的方法和装置 |
US9898451B2 (en) | 2013-11-26 | 2018-02-20 | Adobe Systems Incorporated | Content adaptation based on selected reviewer comment |
JP6279373B2 (ja) * | 2014-03-20 | 2018-02-14 | 株式会社東芝 | 補正装置、方法及びプログラム |
US9633466B2 (en) | 2014-09-29 | 2017-04-25 | Microsoft Technology Licensing, Llc | Low latency ink rendering pipeline |
US10614300B2 (en) * | 2014-12-23 | 2020-04-07 | Lenovo (Singapore) Pte. Ltd. | Formatting handwritten content |
US20160210038A1 (en) * | 2015-01-21 | 2016-07-21 | Microsoft Technology Licensing, Llc | Electronic inking |
US10089291B2 (en) | 2015-02-27 | 2018-10-02 | Microsoft Technology Licensing, Llc | Ink stroke editing and manipulation |
US20180101724A1 (en) * | 2015-06-04 | 2018-04-12 | Mowdo | System and method for capturing and interpreting images into triple diagrams |
CN107368465B (zh) * | 2016-05-13 | 2020-03-03 | 北京京东尚科信息技术有限公司 | 一种用于流式文档的截图类笔记处理的系统及方法 |
US10817169B2 (en) * | 2016-10-14 | 2020-10-27 | Microsoft Technology Licensing, Llc | Time-correlated ink |
US10664695B2 (en) * | 2016-10-26 | 2020-05-26 | Myscript | System and method for managing digital ink typesetting |
US10895954B2 (en) * | 2017-06-02 | 2021-01-19 | Apple Inc. | Providing a graphical canvas for handwritten input |
US10635863B2 (en) | 2017-10-30 | 2020-04-28 | Sdl Inc. | Fragment recall and adaptive automated translation |
US10817676B2 (en) | 2017-12-27 | 2020-10-27 | Sdl Inc. | Intelligent routing services and systems |
CN108304361B (zh) * | 2018-02-12 | 2019-09-24 | 掌阅科技股份有限公司 | 电子书手写笔记的显示方法、计算设备及计算机存储介质 |
US11256867B2 (en) | 2018-10-09 | 2022-02-22 | Sdl Inc. | Systems and methods of machine learning for digital assets and message creation |
CN111046638B (zh) * | 2018-10-12 | 2022-06-28 | 北京金山办公软件股份有限公司 | 一种墨迹清除的方法、装置、电子设备及存储介质 |
US11443103B2 (en) * | 2020-10-07 | 2022-09-13 | Rakuten Kobo Inc. | Reflowable content with annotations |
US11587346B2 (en) | 2020-12-10 | 2023-02-21 | Microsoft Technology Licensing, Llc | Detecting ink gestures based on spatial and image data processing |
US11531454B2 (en) * | 2020-12-10 | 2022-12-20 | Microsoft Technology Licensing, Llc | Selecting content in ink documents using a hierarchical data structure |
CN114690930A (zh) * | 2021-04-22 | 2022-07-01 | 广州创知科技有限公司 | 一种书写笔迹处理方法、装置、交互平板及存储介质 |
US20230315271A1 (en) * | 2022-03-18 | 2023-10-05 | Sony Group Corporation | Collaborative whiteboard for meetings |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0727543B2 (ja) * | 1988-04-28 | 1995-03-29 | インターナシヨナル・ビジネス・マシーンズ・コーポレーション | 文字認識装置 |
JPH0715693B2 (ja) * | 1989-09-26 | 1995-02-22 | 日本電気株式会社 | 文書編集装置 |
US5146552A (en) * | 1990-02-28 | 1992-09-08 | International Business Machines Corporation | Method for associating annotation with electronically published material |
US5455901A (en) * | 1991-11-12 | 1995-10-03 | Compaq Computer Corporation | Input device with deferred translation |
JPH0676117A (ja) * | 1992-08-25 | 1994-03-18 | Canon Inc | 情報処理方法及び装置 |
US5428805A (en) * | 1992-12-22 | 1995-06-27 | Morgan; Michael W. | Method and apparatus for recognizing and performing handwritten calculations |
JPH06208654A (ja) * | 1993-01-08 | 1994-07-26 | Hitachi Software Eng Co Ltd | ペン入力図形編集システム |
JPH06324928A (ja) * | 1993-05-14 | 1994-11-25 | Mitsubishi Electric Corp | ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置 |
US6587587B2 (en) * | 1993-05-20 | 2003-07-01 | Microsoft Corporation | System and methods for spacing, storing and recognizing electronic representations of handwriting, printing and drawings |
US5613019A (en) * | 1993-05-20 | 1997-03-18 | Microsoft Corporation | System and methods for spacing, storing and recognizing electronic representations of handwriting, printing and drawings |
US5546538A (en) * | 1993-12-14 | 1996-08-13 | Intel Corporation | System for processing handwriting written by user of portable computer by server or processing by the computer when the computer no longer communicate with server |
EP0667567B1 (en) | 1993-12-30 | 2001-10-17 | Xerox Corporation | Apparatus and method for supporting the implicit structure of freeform lists, outlines, text, tables, and diagrams in a gesture-based input system and editing system |
US5588147A (en) * | 1994-01-14 | 1996-12-24 | Microsoft Corporation | Replication facility |
US5699456A (en) * | 1994-01-21 | 1997-12-16 | Lucent Technologies Inc. | Large vocabulary connected speech recognition system and method of language representation using evolutional grammar to represent context free grammars |
US6137908A (en) * | 1994-06-29 | 2000-10-24 | Microsoft Corporation | Handwriting recognition system simultaneously considering shape and context information |
US5587560A (en) * | 1995-04-10 | 1996-12-24 | At&T Global Information Solutions Company | Portable handwritten data capture device and method of using |
US5799315A (en) * | 1995-07-07 | 1998-08-25 | Sun Microsystems, Inc. | Method and apparatus for event-tagging data files automatically correlated with a time of occurence in a computer system |
US5806074A (en) * | 1996-03-19 | 1998-09-08 | Oracle Corporation | Configurable conflict resolution in a computer implemented distributed database |
US6292857B1 (en) * | 1997-06-05 | 2001-09-18 | Microsoft Corporation | Method and mechanism for coordinating input of asynchronous data |
US6279014B1 (en) * | 1997-09-15 | 2001-08-21 | Xerox Corporation | Method and system for organizing documents based upon annotations in context |
US6240414B1 (en) * | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6343148B2 (en) * | 1998-07-22 | 2002-01-29 | International Business Machines Corporation | Process for utilizing external handwriting recognition for personal data assistants |
US6377259B2 (en) * | 1998-07-29 | 2002-04-23 | Inxight Software, Inc. | Presenting node-link structures with modification |
US8232995B2 (en) * | 1998-07-29 | 2012-07-31 | SAP America, Inc. | Local relative layout of node-link structures in space with negative curvature |
US6369811B1 (en) * | 1998-09-09 | 2002-04-09 | Ricoh Company Limited | Automatic adaptive document help for paper documents |
US6687876B1 (en) * | 1998-12-30 | 2004-02-03 | Fuji Xerox Co., Ltd. | Method and system for maintaining freeform ink annotations on changing views |
US6333994B1 (en) * | 1999-03-31 | 2001-12-25 | International Business Machines Corporation | Spatial sorting and formatting for handwriting recognition |
US6442555B1 (en) * | 1999-10-26 | 2002-08-27 | Hewlett-Packard Company | Automatic categorization of documents using document signatures |
US6957233B1 (en) * | 1999-12-07 | 2005-10-18 | Microsoft Corporation | Method and apparatus for capturing and rendering annotations for non-modifiable electronic content |
JP3866466B2 (ja) * | 1999-12-13 | 2007-01-10 | 株式会社東芝 | データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体 |
US7564995B1 (en) * | 2000-03-07 | 2009-07-21 | Apple Inc. | Method and apparatus for acquiring and organizing ink information in pen-aware computer systems |
US7259753B2 (en) * | 2000-06-21 | 2007-08-21 | Microsoft Corporation | Classifying, anchoring, and transforming ink |
US7397949B2 (en) * | 2000-06-21 | 2008-07-08 | Microsoft Corporation | Serial storage of ink and its properties |
US7103586B2 (en) * | 2001-03-16 | 2006-09-05 | Gravic, Inc. | Collision avoidance in database replication systems |
DE60235006D1 (de) * | 2001-05-31 | 2010-02-25 | Empower Technologies Inc | System und verfahren zur dateneingabe in ein datenverarbeitungsgerät auf pen-basis |
US7266765B2 (en) * | 2001-08-31 | 2007-09-04 | Fuji Xerox Co., Ltd. | Detection and processing of annotated anchors |
US7136082B2 (en) * | 2002-01-25 | 2006-11-14 | Xerox Corporation | Method and apparatus to convert digital ink images for use in a structured text/graphics editor |
US7106905B2 (en) * | 2002-08-23 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Systems and methods for processing text-based electronic documents |
US7218779B2 (en) * | 2003-01-21 | 2007-05-15 | Microsoft Corporation | Ink divider and associated application program interface |
WO2005029393A1 (en) * | 2003-08-21 | 2005-03-31 | Microsoft Corporation | Electronic ink processing |
US7761814B2 (en) * | 2004-09-13 | 2010-07-20 | Microsoft Corporation | Flick gesture |
-
2003
- 2003-08-21 JP JP2004570198A patent/JP4571867B2/ja not_active Expired - Fee Related
- 2003-08-21 BR BR0306577-4A patent/BR0306577A/pt not_active IP Right Cessation
- 2003-08-21 EP EP03811683A patent/EP1665128A4/en not_active Withdrawn
- 2003-08-21 CA CA002467044A patent/CA2467044A1/en not_active Abandoned
- 2003-08-21 CN CNB038017563A patent/CN100414559C/zh not_active Expired - Lifetime
- 2003-08-21 WO PCT/US2003/026172 patent/WO2005029391A1/en active Application Filing
- 2003-08-21 MX MXPA04005722A patent/MXPA04005722A/es active IP Right Grant
- 2003-08-21 US US10/644,900 patent/US7533338B2/en not_active Expired - Lifetime
- 2003-08-21 AU AU2003262759A patent/AU2003262759B8/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
JP2007521524A (ja) | 2007-08-02 |
CA2467044A1 (en) | 2005-02-21 |
AU2003262759B2 (en) | 2009-12-03 |
BR0306577A (pt) | 2005-06-07 |
AU2003262759B8 (en) | 2010-01-07 |
EP1665128A4 (en) | 2007-10-17 |
AU2003262759A1 (en) | 2005-04-11 |
US20050044106A1 (en) | 2005-02-24 |
CN100414559C (zh) | 2008-08-27 |
WO2005029391A1 (en) | 2005-03-31 |
JP4571867B2 (ja) | 2010-10-27 |
US7533338B2 (en) | 2009-05-12 |
CN1689023A (zh) | 2005-10-26 |
EP1665128A1 (en) | 2006-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MXPA04005722A (es) | Procesamiento de tinta electronica. | |
US7502812B2 (en) | Electronic ink processing | |
AU2003262758B2 (en) | Electronic ink processing | |
US7502805B2 (en) | Electronic ink processing | |
US7283670B2 (en) | Electronic ink processing | |
KR101046101B1 (ko) | 제1 데이터 구조를 제2 데이터 구조로 조정하는 방법 | |
EP1678661B1 (en) | Electronic ink processing | |
KR101045444B1 (ko) | 전자 잉크 프로세싱 | |
AU2003259957A1 (en) | Electronic ink processing | |
KR20070010094A (ko) | 전자 잉크 프로세싱 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |