DE60314977T2 - Tintensegmentierer und zugehöriges Programm - Google Patents

Tintensegmentierer und zugehöriges Programm Download PDF

Info

Publication number
DE60314977T2
DE60314977T2 DE60314977T DE60314977T DE60314977T2 DE 60314977 T2 DE60314977 T2 DE 60314977T2 DE 60314977 T DE60314977 T DE 60314977T DE 60314977 T DE60314977 T DE 60314977T DE 60314977 T2 DE60314977 T2 DE 60314977T2
Authority
DE
Germany
Prior art keywords
strokes
ink
groupings
application program
granularity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60314977T
Other languages
English (en)
Other versions
DE60314977D1 (de
Inventor
Steve N.E. Dodge
Alexander N.E. Gounares
Arin J. Goldberg
Bodin Dresevic
Jerome J. Turner
Matthew Paul Rhoten
Robert L. Chambers
Sashi Raghupathy
Timothy H. Kannapel
Tobiasz Zielinski
Zoltan C. Szilagyi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE60314977D1 publication Critical patent/DE60314977D1/de
Publication of DE60314977T2 publication Critical patent/DE60314977T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/14Image acquisition
    • G06V30/142Image acquisition using hand-held instruments; Constructional details of the instruments
    • G06V30/1423Image acquisition using hand-held instruments; Constructional details of the instruments the instrument generating sequences of position coordinates corresponding to handwriting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Character Discrimination (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)
  • Character Input (AREA)
  • Toys (AREA)
  • Circuits Of Receivers In General (AREA)
  • Pens And Brushes (AREA)
  • Cookers (AREA)
  • Computer And Data Communications (AREA)
  • Credit Cards Or The Like (AREA)

Description

  • Inhaltlich verwandte Anmeldungen
  • Die Erfindung kann allgemein in Verbindung mit Systemen und Verfahren verwendet werden, die in den nachfolgend aufgeführten Patentanmeldungen offenbart sind.
    • (a) US-Patentanmeldung Nr. 10/143,865, eingereicht am 14. Mai 2002, mit dem Titel „Handwriting Layout Analysis of Freeform Digital Ink Input", veröffentlicht als US-Patentanmeldung Nr. US2003215139
    • (b) US-Patentanmeldung Nr. 10/143,864, eingereicht am 14. Mai 2002, mit dem Titel „Classification Analysis of Freeform Digital Ink Input", veröffentlicht als US-Patentanmeldung Nr. US2003215145
    • (c) US-Patentanmeldung Nr. 10/143,804, eingereicht am 14. Mai 2002, mit dem Titel „An Incremental System for Real Time Digital Ink Analysis", veröffentlicht als US-Patentanmeldung Nr. US2003215138
    • (d) US-Patentanmeldung Nr. 10/184,108, eingereicht am 28. Juni 2002, mit dem Titel „Interfacing With Ink", veröffentlicht als US-Patentanmeldung Nr. US2003215140
  • Gebiet der Erfindung
  • Aspekte der vorliegenden Erfindung betreffen Systeme, Verfahren und computerlesbare Medien, die die Kommunikation zwischen einem Anwendungsprogramm und elektronischer Tinte (Federstrich) vereinfachen, darunter verschiedene Tintenobjekte (ink objects) und Tintenteilerobjekte (ink divider objects). Einige Beispiele für derartige Systeme, Verfahren und computerlesbare Medien ermöglichen einem Anwendungsprogramm oder einem Clientcode den Zugriff auf Tintenstrichgruppierungen verschiedener Granularität zur Verbesserung des Leistungsvermögens der Anwendungsprogramme und zudem eine verbesserte Interaktion dieser Programme und ihres zugeordneten Codes mit digitaler Tinte.
  • Hintergrund
  • Gängige Computersysteme, insbesondere Computersysteme, die sich graphischer Anwenderschnittstellensysteme (GUI-Systeme, graphical user interface GUI) bedienen, so beispielsweise Microsoft WINDOWS, sind hinsichtlich der Annahme von Anwendereingaben von einer oder mehreren diskreten Eingabevorrichtungen, so beispielsweise einer Tastatur zum Eingeben von Text und einer Zeigevorrichtung (beispielsweise eine Maus mit einer oder mehreren Tasten), optimiert, um die Anwenderschnittstelle zu betreiben. Die allgegenwärtige Tastatur- und Mausschnittstelle ermöglicht ein schnelles Erstellen und Modifizieren von Dokumenten, Tabellenblättern, Datenbankfeldern, Zeichnungen, Fotos und dergleichen. In mancherlei Hinsicht besteht jedoch ein spürbarer Mangel mit Blick auf die Flexibilität, die eine Tastatur- und Mausschnittstelle im Vergleich zu einem nichtcomputerbasierten (das heißt herkömmlichen) System aus Stift und Papier aufweist. Bei einem herkömmlichen System aus Stift und Papier kann ein Anwender ein Dokument bearbeiten, Notizen an den Rand schreiben, Bilder und andere Formen einzeichnen und dergleichen mehr. In einigen Fällen bevorzugt der Anwender gegebenenfalls die Verwendung eines Stiftes zum Markieren eines Dokumentes, anstatt dass er das Dokument an einem Computerbildschirm bearbeiten möchte, da er dann in die Lage versetzt wird, Notizen außerhalb der Grenzen der Tastatur- und Mausschnittstelle frei einzufügen.
  • Einige Computersysteme ermöglichen den Anwendern, am Schirm zu zeichnen. So ermöglicht beispielsweise die Anwendung READER von MICROSOFT den Anwendern, elektronische Tinte (nachstehend auch als „Tinte" oder „digitale Tinte" bezeichnet) einem Dokument hinzuzufügen. Das System speichert die Tinte und stellt sie auf Anfrage einem Anwender zur Verfügung. Andere Anwendungen (so beispielsweise Zeichenanwendungen, die aus dem Stand der Technik im Zusammenhang mit Palm 3.x und 4.x und Pocket-PC-Betriebssystemen bekannt sind) ermöglichen das Erfassen und Speichern von Zeichnungen. Darüber hinaus können verschiedene Zeichenanwendungen, so beispielsweise Corel Draw, und Fotobearbeitungsanwendungen, so beispielsweise Photoshop, mit schreibgerätbasierten Eingabewerkzeugen verwendet werden, so beispielsweise das Tablettwerkzeug (Schreibflächenwerkzeug) von Wacom. Derartige Zeichnungen enthalten andere Eigenschaften im Zusammenhang mit den Tintenstrichen, die zur Erstellung der Zeichnungen verwendet werden. So können beispielsweise die Linienbreite und die Farbe mit der Tinte gespeichert werden. Ein Ziel dieser Systeme ist die Nachahmung des Aussehens und des Umgangs mit echter Tinte, die auf ein Stück Papier aufgebracht wird.
  • Der Beitrag „Ink Parsing in Tablet PC" von Sashi Raghupathy, veröffentlicht bei Microsoft Research Faculty Summit 2002, befasst sich mit dem Tintenparsen bei Tablett-PCs (Schreibflächen-PCs). Ein Tintenparser analysiert eine Tintenseite und entscheidet, welche Tintenstriche zu Worten, Zeichnungen oder derselben Linie bzw. Zeile von Worten gehören. Während der Layoutanalyse wird kollineare Tinte mit ähnlicher Größe und Ausrichtung identifiziert und gruppiert. Die Layoutanalyseschritte enthalten eine zeitliche Liniengruppierung, eine räumliche Blockgruppierung, eine räumliche Liniengruppierung, eine Listenerfassung und eine Wortgruppierung. Die Tinte wird als schriftartig oder zeichnungsartig klassifiziert.
  • Die Druckschrift US 5,889,523 A betrifft die dynamische Clusterung zur Erschließung von bedeutungstragenden Gruppen bei grafischen Objekten. Es wird eine Hierarchie von grafischen Objektclustern, die Worten, Linien bzw. Zeilen und Absätzen grob entsprechen, erzeugt. Der Anwender wählt eine gewünschte Gruppierung aus, um das Clusterniveau anzupassen. Da das dynamische Gruppierungsverfahren keine Klassifikation der grafischen Objekte als Worte, Linien oder Absätze anstrebt, ist die Auswahltechnik auf Zeichnungen und andere nicht textartige Notizen wie auch auf textartige Objekte, so beispielsweise auf Striche, anwendbar.
  • Entsprechend der Druckschrift US 5,517,578 A wird eine Reihe von parallelen horizontalen Linien auf einer Anzeige dargestellt. Diese Linien werden zum Bestimmen der Art eines Tintenstriches, das heißt zeichnungsartig oder schriftartig, wie auch zum Ausrichten der Anzeige der Worte verwendet. Vorgesehen sind eine Zeichenschicht zum Verarbeiten und Speichern von Tintenstrichen, von denen man herausgefunden hat, dass sie zeichnerischen Kritzeleien ähnlicher sind, und eine Schreibschicht zum Verarbeiten und Speichern von Tintenstrichen, von denen man herausgefunden hat, dass sie einer kursiven Handschrift oder einem gedruckten Text ähnlicher sind.
  • Der Beitrag „On Handling Electronic Ink" von Walid G. Aref, Ibrahim Kamel und Daniel P. Lopresti, veröffentlicht bei ACM Computing Surveys, New York, NY, US, Band 27, Nr. 4, Dezember 1995, befasst sich mit elektronischer Tinte als Computerdaten erster Klasse. Eine stiftbasierte Eingabe von einem Digitalisierungstablett (Digitalisierungsschreibfläche) wird in Striche segmentiert. Ein Standardsatz von Merkmalen wird extrahiert, so beispielsweise die Strichlänge und der insgesamt überstrichene Winkel, woraufhin die sich ergebenden Vektoren zu einer kleinen Anzahl von grundliegenden Strichtypen geclustert werden.
  • Der Beitrag „The Light Stuff" von Scott Leibs, veröffentlicht bei CFO Magazine, 1. Januar 2003, beschreibt ein Tablettbetriebssystem (Schreibflächenbetriebssystem) mit digitaler Tinte sowie ein Verfahren zum Erfassen und Aufbewahren von handschriftlichen Notizen. Anstatt der Überführung des Handgeschriebenen in herkömmlichen Text speichert das System das Handgeschriebene als eigenen Datentyp.
  • Die Druckschrift WO 01/67222 beschreibt einen Tintenmanager, der dafür ausgelegt ist, Tintenstriche in Tintenphrasen zu organisieren und die Tintenphrasen für Clientanwendungen bereitzustellen. Der Tintenmanager bildet eine Schnittstelle zwischen einer stiftbasierten Eingabeeinrichtung, einer oder mehreren Anwendungen und einem oder mehreren Handschriftenerkennungsmechanismen. Wird eine Anwendung erstmalig geöffnet, so kann sie eine Registrierung bei dem Tintenmanager durch Abgeben eines Systemaufrufes an den Tintenmanager über eine API-Schicht mit einem eindeutigen Identifizierer als Argument zur Erklärung des Datentyps, den die Anwendung von dem Tintenmanager empfangen will, vornehmen. Der Tintenmanager nimmt periodisch eine Abfrage eines Stifttreibers vor, um gesammelte Tintenstriche abzurufen, speichert die abgerufenen Tintenstriche und leitet jeden Tintenstrich an einen Handschriftenerkennungsmanager weiter, der eine bestimmte vor der Erkennung erfolgende Verarbeitung, so beispielsweise mittels eines Primitivwortsegmentierungsmodells, vornimmt. Bestimmt das Wortsegmentierungsmodell, dass ein neuer Tintenstrich ein neues Wort bildet, so teilt der Handschriftenerkennungsmanager dies dem Tintenmanager mit, der die Mitteilung als Tintenphrasenbeendigungsereignis behandelt. Anschließend teilt der Tintenmanager der Anwendung das Auftreten des Beendigungsereignisses mit, woraufhin die Anwendung dem Tintenmanager erklärt, ob sie die Tintenphrase nutzen will. Ist dem so, so veranlasst der Tintenmanager den entsprechenden Erkenner, die jeweilige Tinteninformation auszusondern. Andernfalls teilt der Tintenmanager dem Handschriftenerkennungsmanager das Beendigungsereignis mit und weist ihn an, die Phrase zu erkennen.
  • Die Druckschrift US 5,784,504 betrifft eine TAPI (tablet application program interface TAPI, Tablettanwendungsprogrammschnittstelle), die Strichdaten empfängt, die durch einen Strich erzeugt werden, den ein Anwender auf einem Digitalisierertablett (Digitalisiererschreibfläche) gemacht hat. Die TAPI fügt die Strichdaten in eine Datenbank ein. Erwartet das Anwendungsprogramm eine Texteingabe, so fährt die TAPI mit dem Emp fangen von Strichdaten fort, bis sie ein Schlussereignis erfasst, das ein vollständiges handgeschriebenes Symbol vollendet. Die TAPI bildet anschließend einen Strichgruppeneintrag in der Datenbank durch Gruppieren von sämtlichen nichtkritzeleiartigen Strichdaten, die seit dem letzten Abschlussereignis empfangen worden sind. Die TAPI nimmt ein Routing der Strichgruppendaten an einen Schriftzeichenerkenner vor, der mögliche Schriftzeichen ausgibt. Die TAPI fügt die möglichen Schriftzeichen in den Strichgruppeneintrag ein und teilt dem Anwendungsprogramm jede Aktualisierung der Datenbank mit.
  • Obwohl Computersysteme, die elektronische Tinte akzeptieren, bekannt sind, sind ihre Verfügbarkeit und Nutzbarkeit zumindest in gewissen Hinsichten derzeit noch ein wenig beschränkt. Zur weiteren Steigerung der Verfügbarkeit und Nutzbarkeit müssen Anwendungsprogramme Code enthalten, der eine Interaktion und Schnittstellenbildung mit der elektronischen Tinte ermöglicht. Entsprechend ist eine Anwendungsprogrammierungsschnittstelle (application programming interface API), die Codeschreiber in die Lage versetzt, mit verschiedenen und unterschiedlichen Gruppierungen von Tinte einfach, flexibel und konsistent umzugehen sowie eine Schnittstelle zu diesen zu bilden, für Personen von Nutzen, die Code für Anwendungsprogramme schreiben wollen, die auf irgendeine Weise mit elektronischer Tinte interagieren.
  • Zusammenfassung
  • Anwendungen, die Freihandzeichenoberflächen implementieren, an denen Anwender beispielsweise elektronische Tinte auf einer Seite eingeben und mit dieser interagieren können, gehen mit der Herausforderung des Bestimmens einher, in welchem Umfang von dem Anwender bereitgestellte Striche gespeichert und manipuliert werden sollen. Die einfachsten Lösungsansätze für einen Anwendungsentwickler sind: (1) das einzeln erfolgende Behandeln jedes Striches oder (2) das gemeinsam erfolgende Behandlung sämtlicher Striche auf einer Seite oder in einer gegebenen Bearbeitungssitzung. Jeder dieser Lösungsansätze weist jedoch schwerwiegende praktische Beschränkungen hinsichtlich der Einfachheit für den Endanwender wie auch hinsichtlich der Kompatibilität zu bestehendem Dokumentlayoutcode auf. Der ideale Lösungsansatz für eine Anwendung ist die Behandlung der Striche in Gruppen, die Worte, Linien oder Absätze umfassen, obwohl dieser Lösungsansatz üblicherweise sehr schwierig zu implementieren ist. Der Lösungsansatz weist große Vorteile hinsichtlich der Einfachheit der Anwendung, hinsichtlich der Kompatibilität, hinsichtlich der Möglichkeiten einer verbesserten Handschrif tenerkennung und hinsichtlich vieler anderer Merkmale und dergleichen mehr auf. Es besteht Bedarf an Anwendungsprogrammierungsschnittstellen API, derer sich Anwendungsprogrammierer bedienen können, um diese Vorteile auf einfache Weise nutzen zu können, ohne dass sie selbst bestimmen müssten, wie die Striche zu gruppieren sind. Hierdurch ist eine Hauptschwierigkeit bei diesem Lösungsansatz beseitigt.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, die Verfügbarkeit und Nutzbarkeit von Computersystemen, die elektronische Tinte akzeptieren, zu vergrößern.
  • Die Aufgabe wird durch die Erfindung gemäß Definition in den unabhängigen Ansprüchen gelöst. Ausführungsbeispiele sind in den abhängigen Ansprüchen aufgeführt.
  • Aspekte der vorliegenden Erfindung betreffen Systeme und Verfahren zum Verfügbarmachen von Information für ein Anwendungsprogramm. Die Systeme und Verfahren können enthalten: das Speichern einer Vielzahl von Tintenstrichen; das Abgeben oder Empfangen einer Teilungsanforderung; das in Erwiderung auf eine Teilungsanforderung erfolgende Gruppieren der gespeicherten Tintenstriche in eine oder mehrere Gruppierungen von Strichen mit wenigstens einer ersten vorbestimmten Granularität; und das Verfügbarmachen von Information betreffend die eine oder mehreren Gruppierungen von Strichen für das Anwendungsprogramm. Die „Information", die für das Anwendungsprogramm verfügbar gemacht worden ist, kann beispielsweise wenigstens eine oder mehrere Gruppierungen von Strichen; Information, die die Anzahl von Gruppierungen von Strichen mit der ersten vorbestimmten Granularität angibt; und maschinengenerierten Text, der wenigstens einer von der einen oder den mehreren Gruppierungen von Strichen entspricht, enthalten. Die Striche können in verschiedene unterschiedliche Granularitäten gruppiert werden, so beispielsweise als Gruppen, die Worte, Linien, Absätze, Sätze, Zeichnungen und dergleichen mehr, enthalten. Die Gruppierungsaktion kann die Striche zudem in Gruppierungen mit mehr als einer unterschiedlichen Granularität gruppieren, und es kann eine Wiederholung nach einer Änderung des Satzes von Tintenstrichen beispielsweise durch Hinzufügen, Löschen, Bewegen, Ändern der Größe oder ein anderweitiges Modifizieren von einem oder mehreren Strichen, erfolgen. Der Anwendungsprogrammcode kann ebenfalls während des Ablaufs des vorbeschriebenen Verfahrens für den Parser verschiedene Typen von Parsinginformation bereitstellen, so beispielsweise das Setzen des Erkenners zur Verwendung während des Parsings, das Setzen einer während des Parsings zu verwendenden Sprache, das Setzen einer gewünschten Gra nularität, mit der die Striche geparst werden sollen, das Setzen von erwarteten Linienhöhen für Textlinien, die in den Tintenstrichen enthalten sind, und dergleichen mehr.
  • Zusätzliche Aspekte der vorliegenden Erfindung betreffen Systeme und Verfahren zum Kommunizieren zwischen einer Anwendung und einem Tintenteilerobjekt, das Trennstriche speichert, die in Gruppen unterteilt werden sollen. Gemäß einigen Beispielen beinhalten die Systeme und Verfahren: (a) das Abgeben einer Teilungsanforderung an das Tintenteilerobjekt gegebenenfalls durch die Anwendung; (b) das in Erwiderung auf die Teilungsanforderung erfolgende Aufrufen eines Teilungsverfahrens, das die gespeicherten Tintenstriche in eine oder mehrere Gruppierungen von Strichen mit wenigstens einer ersten vorbestimmten Granularität (beispielsweise Worte, Linien, Absätze, Sätze, Zeichnungen und dergleichen mehr) gruppiert; und (c) das Verfügbarmachen von Information betreffend die eine oder mehreren Gruppierungen von Strichen für die Anwendung. Die Ergebnisse des Teilungsverfahrens können in einem Tintenteilungsergebnisobjekt gespeichert werden. Bei einigen Beispielen kann das Tintenteilungsergebnisobjekt die ursprünglich unterteilten Tintenstriche enthalten (und dem Anwendungsprogramm einen Zugriff hierauf ermöglichen) und zudem ein Abfragen der Gruppierungen von Strichen mit verschiedenen Granularitäten erlauben. Bei zusätzlichen Beispielen der Erfindung kann sich das Teilungsverfahren einer vorbestimmten oder voreingestellten Sprache bedienen, die für die Tintenstriche charakteristisch ist, um ein das Festlegen der Gruppierungen der Tintenstriche zu fördern.
  • Zusätzliche Aspekte der vorliegenden Erfindung betreffen computerlesbare Medien mit darauf gespeicherten computerlesbaren Anweisungen zum Durchführen der verschiedenen Verfahren gemäß vorstehender allgemeiner Beschreibung. Weitere Aspekte der vorliegenden Erfindung betreffen computerlesbare Medien mit darauf gespeicherten Datenstrukturen für verschiedene Tintenteilerobjekte (ink divider objects), Tintenteilungsergebnisobjekte (ink division result objects), Tintenteilungseinheitenobjekte (ink division units objects) und Tintenteilungseinheitsobjekte (ink division unit objects).
  • Diese und weitere Merkmale und Aspekte der vorliegenden Erfindung werden durch eine Betrachtung der nachfolgenden Detailbeschreibung und der Zeichnung deutlicher.
  • Kurzbeschreibung der Zeichnung
  • Die vorstehende Zusammenfassung wie auch die nachfolgende Detailbeschreibung erschließt sich besser bei einer Betrachtung in Zusammenschau mit der begleitenden Zeichnung, die beispielhalber und nicht im Sinne einer Beschränkung der beigefügten Ansprüche angegeben ist.
  • 1 ist ein schematisches Diagramm einer digitalen Allzweckcomputerumgebung, die zur Implementierung verschiedener Aspekte der Erfindung verwendet werden kann.
  • 2 ist eine Skizzenansicht eines schreibgerätbasierten Computersystems, das entsprechend verschiedener Aspekte der vorliegenden Erfindung eingesetzt werden kann.
  • 3 ist eine allgemeine Übersicht eines Beispieles für ein Parsingsystem und/oder ein Verfahren, die im Zusammenhang mit Beispielen der vorliegenden Erfindung verwendet werden können.
  • 4 ist ein Diagramm, das allgemein die inkrementelle Parsingverarbeitung zeigt, die im Zusammenhang mit Beispielen der vorliegenden Erfindung verwendet werden kann.
  • 5 ist ein Beispiel für verschiedene Layoutanalyseschritte, die im Zusammenhang mit Beispielen der vorliegenden Erfindung verwendet werden können.
  • 6A und 6B zeigen Beispiele für Parsingbaumdatenstrukturen, die beispielsweise unter Verwendung eines Layoutanalysemechanismus ermittelt werden können, der die in 5 dargestellten Schritte ausführt.
  • 7 zeigt Komponenten und Merkmale eines InkDivider-Objektes (Tintenteilerobjektes), das bei einigen Beispielen der vorliegenden Erfindung Verwendung findet.
  • 8 zeigt Komponenten und Merkmale eines InkDivisionResult-Objektes (Tintenteilungsergebnisobjektes), das bei einigen Beispielen der vorliegenden Erfindung Verwendung findet.
  • 9 zeigt Komponenten und Merkmale eines InkDivisionUnits-Objektes (Tintenteilungseinheitenobjektes), das bei einigen Beispielen der vorliegenden Erfindung Verwendung findet.
  • 10 zeigt Komponenten und Merkmale eines InkDivisionUnit-Objektes (Tintenteilungseinheitsobjektes), das bei einigen Beispielen der vorliegenden Erfindung Verwendung findet.
  • 11 zeigt ein weiteres Beispiel eines InkDivider-Objektes (Tintenteilerobjektes), das bei einigen Beispielen der vorliegenden Erfindung Verwendung findet.
  • Detailbeschreibung
  • Die nachfolgende Beschreibung ist in Unterabschnitte gegliedert, um den Leser zu unterstützen. Diese Unterabschnitte lauten „Begriffe", „Allzweckcomputer", „Allgemeiner Hintergrund zur Tintenlayoutanalyse und Klassifikationsanalyse", „Das InkDivider-Objekt und API", „Der Betriebsablauf von InkDivider-Objekt und API", „Anwendungsprogrammschnittstellen", „Ein alternatives InkDivider-Objekt" und „Schlussbetrachtung".
  • I. Begriffe
  • Der Begriff „Tinte" (ink) bezeichnet eine Abfolge oder eine Menge bzw. einen Satz von einem oder mehreren Strichen, die gegebenenfalls mit Eigenschaften versehen sind. Eine Abfolge von Strichen kann Striche in geordneter Form enthalten. Die Abfolge kann gemäß der Zeit der Erfassung oder gemäß dem Ort, an dem die Striche auf einer Seite auftreten, geordnet sein. Andere Ordnungen sind ebenfalls möglich. Ein Satz bzw. eine Menge von Strichen kann Abfolgen von Strichen oder ungeordnete Striche oder eine beliebige Kombination hieraus enthalten. Der Begriff „Tinte" kann derart erweitert werden, dass er zusätzliche Eigenschaften, Verfahren, Auslöseereignisse und dergleichen beinhaltet.
  • Der Begriff „Tintenobjekt" beschreibt eine Datenstruktur, die einen oder mehrere Tintenstriche mit Eigenschaften, Verfahren und/oder Ereignissen oder auch ohne diese speichert.
  • Der Begriff „Strich" bezeichnet eine Abfolge oder eine Menge bzw. einen Satz von erfassten Punkten. Eine Abfolge von Punkten kann beim Rendern beispielsweise mit Linien verbunden werden. Alternativ kann ein Strich als Punkt und Vektor in Richtung des nächsten Punktes dargestellt werden. Kurzum, ein Strich soll eine beliebige Darstellung von Punkten oder Segmenten im Zusammenhang mit der Tinte beinhalten, und zwar unabhängig von der zugrundeliegenden Darstellung der Punkte und/oder der Art der Verbindung der Punkte.
  • Der Begriff „Punkt" bezeichnet eine Information, die einen Ort im Raum definiert. Punkte können beispielsweise relativ zu einem Erfassungsraum (so beispielsweise Punkte auf einem Digitalisierer), einem virtuellen Tintenraum (Koordinaten in einem Raum, in dem die erfasste Tinte dargestellt oder gespeichert wird) und/oder einem Anzeigeraum (Punkte oder Pixel einer Anzeigevorrichtung) definiert werden.
  • Der Begriff „Rendern" bezeichnet einen Prozess des Bestimmens, wie Grafiken und/oder Tinte angezeigt werden sollen, das heißt entweder auf einem Schirm, im Druck oder mittels Ausgabe in einem beliebigen anderen Datenformat.
  • Der Begriff „Tintensitzung (ink session)" bezeichnet einen Zeitraum, ab dem eine Anwendung mit dem Erstellen oder Bearbeiten von Tinte beginnt, bis ein Parser (das heißt ein InkDivider-Objekt) zum Zwecke des Untersuchens der Tintenstriche und zur Ausgabe von geparsten Tintenentitäten aufgerufen wird. Der Parser kann während einer gegebenen Tintensitzung mehrmals aufgerufen werden, und es können zwischen den Aufrufen des Parsers Striche hinzugefügt, gelöscht oder auf andere Weise modifiziert werden.
  • II. Allzweckcomputer
  • 1 ist ein schematisches Diagramm eines Beispieles einer geläufigen digitalen Allzweckcomputerumgebung, die zur Implementierung verschiedener Aspekte der vorliegenden Erfindung eingesetzt werden kann. Wie in 1 gezeigt ist, umfasst ein Computer 100 eine Verarbeitungseinheit oder ein entsprechendes System 110, einen Systemspeicher 120 und einen Systembus 130, der verschiedene Systemkomponenten, darunter den Systemspeicher, mit der Verarbeitungseinheit 110 koppelt. Der Systembus 130 kann ein beliebiger Typ von mehreren Typen von Busstrukturen sein, darunter ein Speicherbus oder ein Speichercontroller, ein Peripheriebus und ein lokaler Bus unter Verwendung einer Vielzahl von Busarchitekturen. Der Systemspeicher 120 enthält einen Nurlesespeicher (ROM) 140 und einen Speicher mit wahlfreiem Zugriff (RAM) 150.
  • Ein grundlegendes Eingabe-/Ausgabesystem 160 (basic input/output system BIOS), das die grundlegenden Routinen enthält, die zur Übertragung von Information zwischen Elementen im Inneren des Computers 100 beitragen, so beispielsweise während des Hoch fahrens, ist in dem ROM 140 gespeichert. Der Computer 100 umfasst darüber hinaus ein Festplattenlaufwerk 170 zum Lesen von einer (nicht gezeigten) Festplatte oder zum Schreiben auf diese, ein Magnetplattenlaufwerk 180 zum Lesen von einer herausnehmbaren Magnetplatte 190 oder zum Schreiben auf diese und ein für optische Platten Bedachtes Laufwerk 191 zum Lesen von herausnehmbaren optischen Platten 199 oder zum Schreiben auf diese, so beispielsweise CD-ROMs oder andere optische Medien. Das Festplattenlaufwerk 170, das Magnetplattenlaufwerk 180 und das für optische Platten gedachte Laufwerk 191 sind mit dem Systembus 130 über eine Festplattentreiberschnittstelle 192, eine Magnetplattentreiberschnittstelle 193 beziehungsweise eine für optischen Platten gedachte Treiberschnittstelle 194 verbunden. Die Treiber und ihre zugehörigen computerlesbaren Medien stellen einen nichtflüchtigen Speicher mit computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und anderen Daten für den Personalcomputer 100 bereit. Wie sich einem Fachmann auf dem einschlägigen Gebiet erschließt, können auch andere Arten von computerlesbaren Medien, die Daten speichern können, auf die ein Computer zugreifen kann, so beispielsweise Magnetkassetten, Flash-Memory-Karten, digitale Videodisks, Bernoulli-Kartuschen, Speicher mit wahlfreiem Zugriff (RAMs), Nurlesespeicher (ROMs) und dergleichen, in der als Beispiel angegebenen Betriebsumgebung eingesetzt werden.
  • Eine Anzahl von Programmmodulen kann auf dem Festplattenlaufwerk 170, der Magnetplatte 190, der optischen Platte 199, dem ROM 140 oder dem RAM 150 gespeichert sein, darunter ein Betriebssystem 195, ein oder mehrere Anwendungsprogramme 196, andere Programmmodule 197 und Programmdaten 198. Ein Anwender kann über Eingabevorrichtungen Befehle und Informationen in den Computer 100 eingeben, so beispielsweise über eine Tastatur 101 und eine Zeigevorrichtung 102. Andere Eingabevorrichtungen (nicht gezeigt) sind beispielsweise ein Mikrofon, ein Joystick, ein Gamepad, eine Satellitenschüssel, ein Scanner oder dergleichen mehr. Diese und andere Eingabevorrichtungen sind mit der Verarbeitungseinheit 110 über eine serielle Portschnittstelle 106 verbunden, die mit dem Systembus 130 gekoppelt ist, der mit anderen Schnittstellen verbunden sein kann, so beispielsweise als Parallelport, Gameport oder als universeller serieller Bus (universal serial bus USB). Darüber hinaus können diese Vorrichtungen direkt mit dem Systembus 130 über eine geeignete Schnittstelle (nicht gezeigt) gekoppelt sein. Ein Monitor 107 oder eine andere Art von Anzeigevorrichtung ist zudem mit dem Systembus 130 über eine Schnittstelle verbunden, so beispielsweise einen Videoadapter 108. Zusätzlich zu dem Monitor 107 umfassen Personalcomputer üblicherweise andere Peripherieausgabevorrichtungen (nicht gezeigt), so beispielsweise Lautsprecher und Drucker. So sind beispielsweise ein Stiftdigitalisierer (pen digitizer) 165 und ein zugehöriger Stift oder eine Anwendereingabevorrichtung 166 vorhanden, um das digitale Erfassen einer freihändigen Eingabe zu ermöglichen. Der Stiftdigitalisierer 165 kann mit der Verarbeitungseinheit 110 über die serielle Portschnittstelle 106 und den Systembus 130, wie in 1 gezeigt ist, oder über eine beliebige andere geeignete Verbindung verbunden sein. Darüber hinaus kann ungeachtet der Tatsache, dass der Digitalisierer 165 als von dem Monitor 107 getrennt dargestellt ist, der nutzbare Eingabebereich des Digitalisierers 165 mit dem Anzeigebereich des Monitors 107 koextensiv sein, das heißt sich in der gleichen Ebene wie dieser erstrecken. Zudem kann der Digitalisierer 165 in den Monitor 107 eingebaut sein, oder er kann als gesonderte Vorrichtung vorliegen, die über dem Monitor 107 liegt oder auf andere Weise an diesen angegliedert ist.
  • Der Computer 100 kann in einer vernetzten Umgebung unter Verwendung von logischen Verbindungen mit einem oder mehreren entfernt angeordneten Computern, so beispielsweise einem entfernt angeordneten Computer 109, arbeiten. Der entfernt angeordnete Computer 109 kann ein Server, ein Router, ein Netzwerk-PC, eine Peervorrichtung oder ein anderer gängiger Netzwerkknoten sein und beinhaltet üblicherweise viele oder alle Elemente gemäß vorstehender Beschreibung im Zusammenhang mit dem Computer 100, obwohl in 1 nur eine Speicherablagevorrichtung 111 mit zugehörigen Anwendungsprogrammen 196 dargestellt ist. Die in 1 dargestellten logischen Verbindungen beinhalten ein Ortsbereichsnetzwerk (LAN) 112 und ein Großbereichsnetzwerk (WAN) 113. Derartige Netzwerkumgebungen sind in Büros, firmenweiten Computernetzwerken, Intranets und dem Internet äußerst verbreitet und bedienen sich verdrahteter oder drahtloser Kommunikationssysteme.
  • Bei Verwendung in einer LAN-Netzwerkumgebung ist der Computer 100 mit dem örtlichen Netzwerk 112 über eine Netzwerkschnittstelle oder einen Adapter 114 verbunden. Bei Verwendung in einer WAN-Netzwerkumgebung umfasst der Personalcomputer 100 üblicherweise ein Modem 115 oder andere Mittel zum Aufbau von Kommunikationsverbindungen über das Großbereichsnetzwerk 113, so beispielsweise mit dem Internet. Das Modem 115, das intern oder extern sein kann, ist mit dem Systembus 130 über die serielle Portschnittstelle 106 verbunden. In einer vernetzten Umgebung können Programmmodule, die im Zusammenhang mit dem Personalcomputer 100 oder Teilen hiervon gezeigt sind, in einer entfernt angeordneten Speicherablagevorrichtung gespeichert sein.
  • Es ist einsichtig, dass die gezeigten Netzwerkverbindungen nur beispielhalber gezeigt sind und andere Techniken zum Aufbau von Kommunikationsverbindungen zwischen Computern zum Einsatz kommen können. Die Existenz eines beliebigen von den verschiedenen bekannten Protokollen, so beispielsweise TCP/IP, Ethernet, FTP, HTTP und dergleichen, wird vorausgesetzt, wobei das System in einer Client-Server-Konfiguration betrieben werden kann, um einen Anwender in die Lage zu versetzen, Webseiten von einem webbasierten Server abzurufen. Ein beliebiger Browser von den verschiedenen gängigen Browsern kann zur Anzeige und Manipulation von Daten auf den Webseiten verwendet werden.
  • 2 zeigt ein Beispiel für ein stiftbasiertes oder schreibgerätbasiertes Computersystem 201, das in Verbindung mit verschiedenen Aspekten der vorliegenden Erfindung verwendet werden kann. Beliebige oder sämtliche Merkmale, Untersysteme und Funktionen in dem System von 1 können in dem Computer von 2 enthalten sein. Das stiftbasierte Computersystem 201 beinhaltet eine große Anzeigefläche 202, so beispielsweise eine digitalisierende Flachschirmanzeige, so beispielsweise einen Flüssigkristallanzeigeschirm (liquid cristal display LCD), auf dem eine Mehrzahl von Fenstern 203 angezeigt wird. Unter Verwendung des Schreibgerätes 204 kann ein Anwender auf der digitalisierenden Anzeige 202 eine Auswahl vornehmen, eine Markierung einfügen und/oder schreiben. Beispiele für geeignete digitalisierende Anzeigeflächen 202 sind unter anderem elektromagnetische Stiftdigitalisierer, so beispielsweise die Stiftdigitalisierer von Mutoh oder Wacom. Andere Arten von Stiftdigitalisierern, so beispielsweise optische Digitalisierer, können ebenfalls verwendet werden. Das stiftbasierte Computersystem 201 interpretiert Kritzeleien, die unter Verwendung des Schreibgerätes 204 gemacht worden sind, um Daten zu manipulieren, Text einzugeben, Zeichnungen zu erstellen und/oder herkömmliche Computeranwendungsaufgaben, so beispielsweise bei Tabellenkalkulationen, Textverarbeitungsprogrammen und dergleichen mehr, auszuführen.
  • Das Schreibgerät 204 kann mit einer oder mehreren Tasten oder anderen Merkmalen zur Steigerung seiner Auswahlmöglichkeiten versehen sein. Gemäß einem Beispiel kann das Schreibgerät 204 als „Bleistift" oder „Stift" implementiert werden, bei dem ein Ende ein Schreibelement und das andere Ende ein „Löschende" bilden. Bei einer Bewegung über die Anzeige in der Funktion als Löscher gibt der Löscher Abschnitte der Anzeige an, die gelöscht werden sollen. Andere Arten von Eingabevorrichtungen, so beispielsweise eine Maus, ein Trackball oder dergleichen, können ebenfalls verwendet werden. Darüber hinaus kann auch der Finger eines Anwenders als Schreibgerät 204 sowie zur Auswahl und Anzeige von Abschnitten des angezeigten Bildes auf einer berührungsempfindlichen oder näherungsempfindlichen Anzeige verwendet werden. Infolgedessen soll der Begriff „Anwendereingabevorrichtung" im Sinne der vorliegenden Beschreibung eine sehr allgemeine Definition aufweisen und sämtliche Variationen von bekannten Eingabevorrichtungen, so beispielsweise an dem Schreibgerät 204, umfassen. Der Bereich 205 zeigt einen Rückkopplungs- oder Kontaktbereich, der den Anwender in die Lage versetzt zu bestimmen, wo das Schreibgerät 204 die Anzeigefläche 202 kontaktiert.
  • Eine Anwendungsprogrammschnittstelle und die zugehörigen Systeme und Verfahren entsprechend den Beispielen der Erfindung können in stiftbasierten Computersystemen verwendet werden, die elektronische Tinte und Tintenstriche akzeptieren und verarbeiten, so beispielsweise in denjenigen, die im Zusammenhang mit 2 beschrieben werden.
  • III. Allgemeiner Hintergrund zur Tintenlayoutanalyse und Klassifikationsanalyse
  • A. Allgemeine Beschreibung eines Tintenanalysegesamtsystems und eines zugehörigen Verfahrens
  • Um das Verständnis der vorliegenden Erfindung zu fördern, ist die Wiederholung von bestimmtem Hintergrundwissen zur Thematik „Layoutanalyse" und „Tintenklassifikationsanalyse" (auch „Tintenparsing" genannt) von Nutzen. Obwohl eigentlich beliebige geeignete Datenverarbeitungssysteme und Verfahren verwendet werden können, ohne den Schutzbereich der Erfindung zu verlassen, können bei einigen Beispielen der Erfindung Layoutanalysesysteme und Verfahren entsprechend denjenigen, die in der am 14. Mai 2002 eingereichten US-Patentanmeldung Nr. 10/143,865 beschrieben sind, verwendet werden. Bei einigen anderen Beispielen der Erfindung können Klassifikationsanalysesysteme und zugehörige Verfahren entsprechend denjenigen, die in der am 14. Mai 2002 eingereichten US-Patentanmeldung Nr. 10/143,864 beschrieben sind, verwendet werden. Im Allgemeinen kann das Tintenparsing auf beliebige geeignete Weise stattfinden, ohne den Schutzbereich der Erfindung zu verlassen.
  • 3 ist ein schematisches Diagramm, das allgemein ein Beispiel für ein Gesamtsystem und ein zugehöriges Verfahrens zeigt, bei denen bei einigen Beispielen der Erfindung Tinte geparst oder unterteilt werden kann. Gemäß dem Beispiel von 3 werden Einlauf- oder Eingabetintenstriche 300 zunächst einer Layoutanalyseprozedur 302 unterzogen, die die Eingabetintenstriche 300 zu verknüpften Sätzen bzw. Mengen von Strichen, so beispielsweise zu Worten, Linien, Absätzen (oder Blöcken) und/oder anderen Gruppierungen 304, kombiniert und parst. Im Allgemeinen greifen das Layoutanalyseverfahren oder das zugehörige System 302 auf bestimmte Informationen im Zusammenhang mit Größe und Layout der Tintenstriche 300 auf einer Seite zu und gruppieren bestimmte Striche in Abhängigkeit von der Größe, dem Layout und dergleichen. Ein Beispiel für ein derartiges System oder Verfahren wird detaillierter anhand 5, 6A und 6B beschrieben.
  • Nach der Layoutanalyse 302 können die Daten an eine Vielzahl von zusätzlichen Tintenanalysemechanismen übergeben werden. Bei dem in 3 dargestellten Beispielssystem werden die Daten anschließend an ein Klassifikationsanalysesystem oder einen entsprechenden Mechanismus 306 überführt. Dieses Klassifikationsanalysesystem oder dieser Klassifikationsanalysemechanismus 306 bestimmt den Typ beziehungsweise die Typen von Strichen, die in den spezifischen Eingabedaten enthalten sind (beispielsweise ob einzelne Striche oder Mengen von Strichen Flussdiagramme, Freihandzeichnungen, handgeschriebene Texte, Musik, Mathematik, Tabellen, Grafiken und dergleichen mehr darstellen). Bei einigen Beispielen der Erfindung kann der Anwender gegebenenfalls das System „davon in Kenntnis setzen", welche Art von Eingabestrichen vorliegt, so beispielsweise durch Auswahl eines „Zeichenmodus", eines „Textmodus" oder dergleichen, oder durch Zuweisung eines spezifischen Strichtyps an einen oder mehrere Striche (beispielsweise unter Verwendung einer block- oder lassobasierten Auswahl- und Zuweisungsprozedur).
  • Die weitere Verarbeitung des Tintenstriches kann von der Art des Striches abhängen, der von dem Klassifikationsanalysesystem oder dem Klassifikationsanalysemechanismus 306 (oder auch durch Bestimmung auf andere Weise) erkannt worden ist. So können beispielsweise bei Strichen und Sätzen von Strichen, die als handschriftlicher Text klassifiziert worden sind, die auf diese Weise klassifizierten Sätze von Strichen an ein Handschriftenerkennungssystem 310 oder ein anderes geeignetes Verarbeitungssystem weitergeleitet werden. Falls notwendig oder erwünscht können vor der Weiterleitung an das Handschriftenerkennungssystem 310 oder ein anderes Verarbeitungssystem die Eingabetintendaten unter Verwendung eines Normalisierungsalgorithmus oder eines Normalisierungssystems 308 „normalisiert" werden, um die Eingabetintendaten zum Zwecke der Analyse durch das Handschriftenerkennungssystem 310 oder ein anderes Verarbeitungssystem in optimale Ausrichtung zu bringen (beispielsweise durch Drehen von geneigten Eingabetextstrichen bezüglich einer horizontalen Grundlinie, falls notwendig). Es können hierbei herkömmliche Normalisierungssysteme oder zugehörige Verfahren 308 und/oder Handschriftenerkennungssysteme oder zugehörige Verfahren 310 (falls notwendig und/oder erwünscht) verwendet werden, ohne den Schutzbereich der Erfindung zu verlassen. Die Datenausgabe von dem Handschriftenerkennungssystem oder dem zugehörigen Verfahren 310 kann maschinengenerierter Text sein oder einen Verweis hierauf enthalten (beispielsweise Linien, Worte, Absätze und dergleichen), der auf herkömmliche Weise verwendet werden kann, so beispielsweise in geläufigen Textverarbeitungssystemen (beispielsweise Microsoft WORD® oder dergleichen), E-Mail-Verwaltungssystemen, Kalendern, Terminbüchern und dergleichen mehr.
  • Ein weiteres Beispiel ist in 3 dargestellt. Erkennt der Klassifikationsanalysemechanismus 306 die Eingabestriche oder Sätze von Strichen dahingehend, dass sie Zeichenstriche enthalten, so können diese Daten sodann an ein Anmerkungserkennungssystem oder ein zugehöriges Verfahren 314 übertragen werden, das beispielsweise zur Erkennung von Textinformation in der Zeichnung verwendet werden kann. Die weitere Verarbeitung kann auf beliebige geeignete Weise erfolgen. Die Zeichnungen können, falls erwünscht, beispielsweise „bereinigt" werden, wobei die handgeschriebenen Anmerkungen durch maschinengenerierten Text ersetzt werden und handgeschriebene Zeichenlinien oder Formen (beispielsweise Kreise, Dreiecke, Rechtecke und dergleichen mehr) durch maschinengenerierte Elemente ersetzt werden und dergleichen mehr. Zudem können die Zeichnungen (seien sie nun handschriftlich erstellte Fassungen oder später erzeugte maschinengenerierte Fassungen) in beliebige geeignete Programme oder Systeme eingegeben werden, ohne den Schutzbereich der Erfindung zu verlassen.
  • Die Klassifikationsanalysesysteme und Verfahren 306, die bei einigen Beispielen der Erfindung verwendet werden, können zudem andere spezifische Schrift- oder Zeichentypen erkennen, ohne den Schutzbereich der Erfindung zu verlassen. So kann ein Klassifikationsanalysesystem beispielsweise Eingabestrichsätze dahingehend erkennen, dass sie musikalische Zeichen, mathematische Information (beispielsweise Formeln, mathematische Symbole (+, –, =, %, x, sin, cos, tan etc.) und dergleichen mehr), Tabellen, Karten, Graphen, Flussdiagramme, schematische Diagramme, Zeichnungen, Skizzen, Doodles und dergleichen mehr enthalten, ohne den Schutzbereich der Erfindung zu verlassen. Derartige Sätze von Strichen können, falls vorhanden, an einen oder mehrere spezialisierte Erkennungssysteme und/oder an andere geeignete Verarbeitungsanwendungen übersandt werden, ohne dass man den Schutzbereich der Erfindung verließe.
  • Einige oder sämtliche der Funktionen, die im Zusammenhang mit 3 beschrieben worden sind, können an den Eingabetintendaten ausgeführt werden, nachdem ein Anwender sämtliche Tinte auf der elektronischen Seite oder in dem Dokument eingegeben hat (beispielsweise nach anwenderseitiger Eingabe eines Befehls wie „Speichern", „Parsen", „Schließen" oder „Erkennen"). Aufgrund der Computerverarbeitungszeit, die zur Durchführung von typischen Layoutanalysen und Handschriftenerkennungsanalysen von Nöten ist, kann ein Anwender jedoch mit spürbaren Verzögerungen rechnen, wenn eine Verarbeitung auf dieser eher seltenen ad-hoc-Basis vorgenommen wird. Die Verarbeitungsverzögerungen können lange genug andauern, um den Anwender beim Warten, dass das Computersystem seine Analysen beendet, zu frustrieren, bevor eine Bewegung zur nächsten gewünschten Operation erfolgt (beispielsweise Eingabe von mehr Tinte, Bewegung auf eine neue Seite, Drucken, Öffnen eines neuen Dokumentes oder einer Anwendung und dergleichen mehr), was insbesondere dann der Fall ist, wenn das elektronische Dokument lang ist oder eine große Tintenmenge enthält.
  • Systeme und Verfahren entsprechend wenigstens einigen Beispielen der vorliegenden Erfindung ermöglichen, dass stiftbasierte Computersysteme verschiedene Analysen ausführen, so beispielsweise eine Layoutanalyse 302, eine Klassifikationsanalyse 306, eine Handschriftenerkennungsanalyse 310 und dergleichen mehr, und dies inkrementell und in Echtzeit, während Anwender die stiftbasierten Computersysteme weiterverwenden (beispielsweise beim Eingeben und/oder Modifizieren der Tintenstriche auf der Seite). Darüber hinaus arbeiten bei einigen Beispielen der Systeme und Verfahren entsprechend der vorliegenden Erfindung die verschiedenen Parsermechanismen in einem Hintergrund-Thread bei einer „Momentaufnahme" (snapshot) der Anwendungsdatenstruktur, um diejenige Zeit zu minimieren, während derer die Anwendungsdatenstruktur für den Anwender zum Zwecke der Eingabe von Tintenstrichen zur Verfügung steht (Der Begriff „Anwendungsdatenstruktur" bezeichnet im Sinne der vorliegenden Beschreibung eine Datenstruktur, die in Verbindung mit einem Anwendungsprogramm verwendet wird). Obwohl beliebige geeignete inkrementelle Datenanalysesysteme und entsprechende Verfahren verwendet werden können, ohne den Schutzbereich der Erfindung zu verlassen, sind Beispiele für geeignete Systeme und Verfahren in der am 14. Mai 2002 eingereichten US-Patentanmeldung Nr. 10/143,804 beschrieben.
  • B. Beschreibung von Beispielssystemen und Verfahren zur Layoutanalyse und Klassifikation
  • 4 ist ein schematisches Diagramm eines Beispieles für ein System, das bei der praktischen Verwirklichung der vorliegenden Erfindung von Nutzen ist. Wie dargestellt ist, umfasst das Gesamtsystem 410 ein Anwendungssystem oder Programm 420, das einen Parser 422 enthält oder mit diesem kommuniziert. Das Gesamtsystem 410 kann durch ein stiftbasiertes Computersystem entsprechend demjenigen, das in 2 dargestellt ist, verkörpert sein. Der Anwender 400 gibt Tintenstriche in das System 410 ein (oder die Tintenstriche werden beispielsweise aus einem Speicher oder einer externen Quelle heruntergeladen), woraufhin die Tintenstriche von dem Anwendungsprogramm 420 beispielsweise in einer Anwendungsdatenstruktur 402 gespeichert werden (die man sich als Dokumentbaumdatenstruktur 402 gemäß Darstellung in 6A und 6B vorstellen kann). Damit der Anwender 400 mit dem Anbringen von Änderungen an der Dokumentbaumdatenstruktur 402 während des Betriebes des Parsers 422 fortfahren kann, enthält der Parser 422 eine Spiegelbaumdatenstruktur 404. Änderungen, die an der Dokumentbaumdatenstruktur 402 (beispielsweise durch den Anwender 400, den Parser 422 oder eine andere Quelle und dergleichen mehr) vorgenommen werden, werden unmittelbar an die Spiegelbaumdatenstruktur 404 weitergeleitet, damit die Spiegelbaumdatenstruktur 404 den Inhalt der Dokumentbaumdatenstruktur 402 allgemein „spiegeln" kann.
  • Die Spiegelbaumdatenstruktur 404 wird verwendet, um Eingabedaten an die beiden Analysemechanismen 406 und 408 in dem Parser 422 weiterzuleiten. Bei dem in 4 dargestellten Beispiel ist der eine Analysemechanismus ein Layoutanalysemechanismus 406 (der beispielsweise eine Layoutanalyse 302, wie vorstehend in Verbindung mit 3 erläutert worden ist, vornehmen kann), während der andere ein Erkennungsmechanismus 408 ist (der beispielsweise eine Handschriftenerkennungsanalyse 310 und/oder eine Anmerkungserkennungsanalyse 314, wie vorstehend in Verbindung mit 3 erläutert worden ist, vornehmen kann). Die Mechanismen 406 und 408 empfangen „Momentaufnahmen" (snapshots) 424 beziehungsweise 426 der Spiegelbaumdatenstruktur 404 als Eingabedaten, und sie bearbeiten diese „Momentaufnahmen" 424 und 426 im Hintergrund, anstatt dass eine direkte Bearbeitung an der Dokumentbaumdatenstruktur 402 oder der Spiegelbaumdatenstruktur 404 erfolgen würde. Auf diese Weise kann der Anwender 400 mit der Durchführung von Operationen an der Dokumentbaumdatenstruktur 402 in dem Anwendungsprogramm 420 fortfahren (beispielsweise Tinte hinzufügen, Tinte löschen, Tinte modifizieren und dergleichen mehr), während die verschiedenen Parseranalysemechanismen 406 und 408 ebenfalls in Betrieb sind, wobei der Anwender 400 keine merklichen Unterbrechungen im Betrieb (beispielsweise Verarbeitungsverzögerungen) wahrnimmt, wenn die Mechanismen 406 und 408 an den Daten arbeiten.
  • Zur Erzeugung von „Momentaufnahmen" 424 und 426 können bei einigen Beispielen bestehende Momentaufnahmendatenstrukturen mit der Spiegelbaumdatenstruktur 404 verglichen werden. Die Unterschiede zwischen beiden werden vermerkt, und es wird eine minimale Anzahl von Operationen vorgenommen, um die Momentaufnahmen 424 oder 426 mit der Spiegelbaumdatenstruktur 404 zu synchronisieren. Auf diese Weise tritt beim Erstellen der Momentaufnahme ein minimales Datenumschreiben auf (So werden beispielsweise ungeänderte Daten einer vorherigen Momentaufnahme nicht umgeschrieben), was auch die Beschleunigung des Betriebes des Parsers 422 fördert.
  • Die Ausgabe der Parsermechanismen 406 und 408 können modifizierte oder überarbeitete Datenstrukturen darstellen. Ist der Layoutanalysemechanismus 406 beispielsweise gleich demjenigen von 5, so kann die Ausgabe des Layoutanalysemechanismus 406 beispielsweise eine Datenstruktur sein, die einzelne Tintenstriche enthält, die in zugehörige Worte, Linien, Absätze und dergleichen gruppiert sind. Der Betrieb eines Layoutanalysemechanismus dieser Art wird nachstehend detailliert beschrieben. Auf ähnliche Weise kann für den Fall, dass der Parsermechanismus 408 ein Handschriftenerkennungssystem 310 ist, die Ausgabe eine Information oder eine Datenstruktur enthalten, die die Tintenstriche mit maschinengeneriertem Text verknüpft.
  • Beenden die Parsermechanismen 406 und 408 ihre Arbeit an den Momentaufnahmeeingabedaten 424 beziehungsweise 426, so kann die sich ergebende Information zurück an das Anwendungsprogramm 420 gesendet werden, wie durch die Pfeile 428 beziehungsweise 430 dargestellt ist. Wie vorstehend bemerkt worden ist, kann der Anwender 400 jedoch die Dokumentbaumdatenstruktur 402 während desjenigen Zeitraumes ändern, in dem die Parsermechanismen 406 und 408 an den Momentaufnahmen 424 beziehungsweise 426 arbeiten. Vor dem Schreiben der Parseranalysemechanismenergebnisse in die Dokumentbaumdatenstruktur 402 vergleicht daher der Parser 422 die Dokumentbaumdatenstruktur 402, die aktuell in dem Anwendungsprogramm 420 (darunter die Änderungen des Anwenders) befindlich ist, mit der überarbeiteten Dokumentbaumdatenstruktur beziehungsweise den überarbeiteten Dokumentbaumdatenstrukturen, die von den Parsermechanismen 406 und 408 gesendet worden sind, und bedient sich dabei optional der Spiegelbaumdatenstruktur 404. Hat der Anwender 400 Änderungen an der Dokumentbaumdatenstruktur 402 vorgenommen, die nicht in der überarbeiteten Doku mentbaumdatenstruktur bzw. den überarbeiteten Dokumentbaumdatenstrukturen von den Parsermechanismen 406 beziehungsweise 408 enthalten sind, (beispielsweise mittels Hinzufügen, Löschen, Bewegen, Ändern der Größe oder mittels einer anderen Modifizierung eines oder mehrerer Strichen) oder bewirken anwenderseitig vorgenommene Änderungen an der Dokumentbaumdatenstruktur 402 Probleme oder einen Konflikt mit Änderungen an der Datenstruktur bzw. den Datenstrukturen der Erstellung durch die Parsermechanismen 406 und 408 (beispielsweise durch Hinzufügen, Löschen oder anderweitiges Modifizieren der Striche), so wird die Anwendungsdokumentbaumdatenstruktur 402 dahingehend überarbeitet, dass sie nur diejenigen der von den Parseranalysemechanismen vorgenommenen Änderungen enthält, die keinen Konflikt mit den anwenderseitig vorgenommenen Änderungen bewirken (Anwenderseitig vorgenommene Änderungen überschreiben parserseitig vorgenommene Änderungen). Zudem werden nur Abschnitte der Dokumentbaumdatenstruktur 402, die von der bestehenden Fassung modifiziert worden sind, geändert oder umgeschrieben, um die Datenschreibzeit (und die von dem Anwender 400 wahrgenommene zugehörige Unterbrechung) zu verringern. Auf diese Weise enthält die endgültige überarbeitete Dokumentbaumdatenstruktur 402, die in dem Anwendungsprogramm 420 vorhanden ist, sämtliche Änderungen, die von dem Anwender 400 vorgenommen worden sind, sowie die Änderungen der vorhergehenden Parsermechanismenanalysen dergestalt, dass der Parsermechanismus Änderungen vorgenommen hat, die nicht konsistent zu den anwenderseitig vorgenommenen Änderungen sind oder hiervon übertrumpft werden.
  • Aufgrund der Tatsache, dass die Dokumentbaumdatenstruktur 402 gemeinsam verwendete Daten enthält, die letztendlich von dem Anwender 400 wie auch von den Parsermechanismen 406 und 408 modifiziert werden können, kann der Anwender 400 keine neuen Daten in die Dokumentbaumdatenstruktur 402 eintragen, während diese derart neugeschrieben wird, dass sie die parserseitig vorgenommenen Änderungen enthält. Versucht der Anwender 400 dies dennoch, so können das System und Verfahren entsprechend der vorliegenden Erfindung auf dieses Tun auf beliebige geeignete Weise reagieren. So können beispielsweise die neuen Striche oder Änderungen vernachlässigt werden, oder sie können in einem temporären Pufferspeicher gespeichert werden, bis die überarbeitete Anwendungsdokumentbaumdatenstruktur 402 für die Dateneingabe bereitsteht. Da die Dokumentbaumdatenstruktur 402 in dem Anwendungsprogramm 420 entsprechend diesem Beispiel der Erfindung im Allgemeinen nur während derjenigen Zeit nicht zur Verfügung steht, in der das System die geänderten Abschnitte der Datenstruktur 402 umschreibt, ist der Zeitraum, in dem das System nicht zur Verfügung steht, im Allgemeinen vergleichsweise kurz und wird vom Anwender oftmals gar nicht wahrgenommen.
  • Sobald die Dokumentbaumdatenstruktur 402 umgeschrieben oder modifiziert worden ist (darunter die anwenderseitig und/oder parsermechanismenseitig vorgenommenen Änderungen), wird die Spiegelbaumdatenstruktur 404 derart aktualisiert, dass sie die umgeschriebene oder modifizierte Dokumentbaumdatenstruktur 402 spiegelt, und die Parsermechanismen 406 und 408 können ihre Analysen (falls notwendig) wiederholen. Vorteilhafterweise arbeiten bei einigen Beispielen die Parsermechanismen 406 und 408 nur an denjenigen Abschnitten der Dokumentbaumdatenstruktur, die unlängst modifiziert worden sind (und nur an Abschnitten, die von unlängst erfolgten Modifikationen betroffen sind), um die Verarbeitungszeit zu verringern. Durch inkrementelles Aktualisieren der Parsermechanismusoperationen gleichzeitig mit der anwenderseitigen Eingabe von Daten kann der Parser 422 im Allgemeinen mit der Dateneingabe des Anwenders Schritt halten, sodass Verarbeitungsverzögerungen, die vom Anwender wahrgenommen werden, auf ein Minimum reduziert werden.
  • Wie vorstehend erwähnt worden ist, kann bei einigen Beispielen der Erfindung die Verarbeitungszeit durch Begrenzen der Verarbeitung auf Abschnitte der Datenstruktur, in denen Änderungen aufgetreten sind (und in sämtlichen von diesen Änderungen betroffenen Bereichen) reduziert werden. Betreffen die anwenderseitige Eingabe oder vorherige Parsermechanismusoperationen nicht einige Abschnitte einer Datenstruktur, so ist gegebenenfalls keine Notwendigkeit vorhanden, dass der Parsermechanismus beziehungsweise die Parsermechanismen dieselben Abschnitte erneut analysieren (und gegebenenfalls zu denselben Ergebnissen gelangen). So können beispielsweise Systeme und Verfahren entsprechend der vorliegenden Erfindung eine Neuanalyse eines beliebigen der Datenstruktur zu eigenen Abschnittes, der innerhalb eines vorbestimmten Änderungsabstandes befindlich ist, vornehmen. Die Neuanalyse kann beispielsweise die Linie einer beliebigen Änderung oder eine beliebige oder zwei beliebige Linien in der Umgebung der Änderung, beliebige Striche mit einer Lage innerhalb eines Kreises mit vorab ausgewähltem Radius in der Umgebung der Änderung, einen beliebigen Textblock (was nachstehend noch detailliert beschrieben wird) mit einer Änderung oder dergleichen enthalten. Im Folgenden werden Beispiele für Parser beschrieben, die sich der genannten Merkmale vorteilhafterweise bedienen.
  • C. Beispiel für die während des Parsings erfolgende Verarbeitung
  • Die Daten, die in Systemen und Verfahren entsprechend den Beispielen der vorliegenden Erfindung analysiert und verarbeitet werden, können in beliebiger Form oder Struktur vorliegen. Bei der in 3 dargestellten Prozedur werden beispielsweise einzelne Striche 300 von Eingabetintendaten zu einer Datenstruktur als Ergebnis einer Abfolge von durch den Layoutanalysemechanismus 302 getroffenen Entscheidungen kombiniert, wobei der Mechanismus 302 bestimmte einzelne Striche auf Grundlage des Gesamttintenlayouts und der Statistik gemäß Ermittlung aus der Eingabetinte gruppiert und verknüpft. Der Layoutanalysemechanismus 302 kann eine hierarchische Gruppierung von Tintenstrichen auf einer Seite bereiststellen, die globale statistische Berechnungen bezüglich der Gruppe beziehungsweise der Gruppen ermöglicht. Die ersten Strichgruppierungsentscheidungen sind in Abhängigkeit von lokalen Layoutbeziehungen konservativ, wenn die Gruppen von Tintenstrichen klein sind (beispielsweise kleine Gruppen, die einzelne Tintenstriche oder vergleichsweise kurze Kombinationen von Strichen darstellen). Spätere Strichgruppierungsentscheidungen können aggressiver sein, was von der größeren statistischen Probengröße herrührt, die auf den größeren Tintenstrichgruppierungen beruht (beispielsweise Strichgrößen über eine längere Linie, die relative Strichbeabstandung, Linienwinkel und dergleichen mehr). Mehrere Durchläufe durch die Eingabetintendaten können vorgenommen werden, um eine zunehmend aggressivere Entscheidung bei der Bestimmung treffen zu können, ob Striche zur Bildung von Sätzen von Strichen, so beispielsweise von Worten, Linien und/oder Blöcken 304 von Eingabetintenstrichen, zusammengefügt werden sollen.
  • 5 zeigt allgemein Schritte oder einschlägige Parsingmechanismen bei einem Beispiel des Tintenlayoutanalyseparsermechanismus sowie des zugehörigen Systems oder Verfahrens 302, die bei der Erstellung und/oder Modifizierung von Datenstrukturen von Nutzen sind, die bei einigen Beispielen der vorliegenden Erfindung zur Anwendung kommen. Aufgrund des hohen Freiheitsgrades, der für Anwender bei der Eingabe von digitaler Tinte in Systeme und Verfahren entsprechend einigen Beispielen der Erfindung bereitsteht (So kann ein Anwender beispielsweise an beliebiger Stelle, in einer beliebigen Orientierung, zu einer beliebigen Zeit und unter Verwendung einer beliebigen Strichgröße auf einem Digitalisierungseingabeschirm schreiben) ist zu Beginn der Layoutanalyseprozedur 302 gemäß 5 gegebenenfalls keine Vorabinformation verfügbar, aus der das geeignete Layout, die Ausrichtung oder die Art der Eingabedaten bestimmt werden könnte (beispielsweise ob die einlaufenden Eingabedaten 500 textartig, zeichnungsartig, mathematisch, musikalisch, Flussdiagramme, Karten, Graphen und derglei chen sind). Das Element 502 in 5 stellt eine allgemeine graphische Darstellung eines der Typen von möglichen Eingabedatenstrukturen 500 zu Beginn der Layoutanalyseprozedur dar. Die grafische Darstellung 502 ist detaillierter in der Parsingbaumdatenstruktur von 6A dargestellt. Im Allgemeinen behandelt zu Beginn der Layoutanalyseprozedur 302 (und dies sogar dann, wenn der Anwender mit der Eingabe von Tintenstrichen in das stiftbasierte Computersystem fortfährt) das System jeden Strich S 600 auf einer gegebenen Seite (oder in einem gegebenen Dokument) P 608 als gesondertes Wort W 602, jedes Wort W 602 als gesonderte Linie L 604 und jede Linie S 604 als gesonderten Block B 606 (oder Absatz). Der Layoutanalysemechanismus 302 nimmt die Aufgabe des Verknüpfens oder Zusammenfügens von Strichen zur Bildung von Sätzen von Strichen vor, die geeignete Worte, Linien und Blöcke von verknüpften Tintendaten enthalten. Obwohl ein beliebiger geeigneter Layoutanalysemechanismus in Verbindung mit der vorliegenden Erfindung verwendet werden kann, wird nachstehend das in 5 dargestellte Beispiel detaillierter beschrieben.
  • Obwohl in der vorliegenden Beschreibung des als Beispiel angegebenen Layoutanalysemechanismus 302 Begriffe wie „Wort", „Linie" und „Block" verwendet werden, werden diese Begriffe in diesem Abschnitt der Beschreibung aus Gründen der Einfachheit dahingehend verwendet, dass sie einen oder mehrere verknüpfte Striche oder Sätze von Strichen bezeichnen. Zu demjenigen Zeitpunkt, zu dem die Layoutanalyse 302 erstmalig bei wenigstens einigen Beispielen der vorliegenden Erfindung beginnt, ist keine endgültige Bestimmung dahingehend gemacht worden, ob einzelne Striche oder Sätze von Strichen Schrift, Zeichnungen, Musik und dergleichen darstellen. Obwohl die vorstehende Beschreibung den Begriff „Seite" verwendet, ist zudem nicht notwendig, dass ein gegebenes elektronisches Dokument auf einer Seite-für-Seite-Basis geparst wird. So können beispielsweise „Blöcke" oder „Absätze" von elektronischen Dokumenten zwei oder mehr Seiten eines Dokumentes überspannen, ohne dass man den Schutzbereich der Erfindung verlassen würde.
  • Der Layoutanalysemechanismus 302 entsprechend diesem Beispiel der Erfindung arbeitet „gierig", weshalb während jedes Durchlaufs (oder jeder Operation jedes Parsingmechanismus) Strich- oder Linienzusammenfügungsoperationen, jedoch keine Teilungen vorgenommen werden. Darüber hinaus kann der Mechanismus 302 mit geeigneten Tests und Toleranzen betrieben werden, sodass es nicht notwendig wird, zurückzukehren und eine unerwünschte Zusammenfügungsoperation zu berichtigen.
  • Als Ergebnis der Operation des Layoutanalysemechanismus 302 können die einzelnen Striche 600 eines elektronischen Dokumentes zu verknüpften Sätzen von Strichen kombiniert werden, die Worte W, Linien L und Blöcke B (oder Absätze), wo auch immer diese angemessen sind, enthalten. 6B ist eine grafische Darstellung 506 einer möglichen Datenstruktur für die Datenausgabe 504 aus einem Layoutanalysemechanismus 302. Wie sich aus einem Vergleich von 6A und 6B ergibt, enthält die Seite (oder das Dokument) 610 insgesamt dieselbe Strichinformation, wobei jedoch bestimmte Striche S 600 miteinander zur Bildung von Worten W 610 kombiniert oder verknüpft worden sind und bestimmte Worte W 610 miteinander zur Bildung einer Linie L 612 in der Datenstruktur von 6B zusammengefügt worden sind. Selbstverständlich kann ein Wort W 610 eine beliebige Anzahl von Strichen S 600 enthalten, und gleichfalls kann eine Linie L 612 eine beliebige Anzahl von Worten W 610 enthalten. Zudem können, obwohl dies bei dem spezifischen Beispiel eines Parsingbaumes gemäß 6B nicht dargestellt ist, zwei oder mehr Linien L 612 ebenfalls zur Bildung eines Blockes B 614 (oder eines Absatzes) zusammengefügt werden.
  • Zusätzlich zur Unterstützung der Definition der Struktur von Tinte in einem Dokument können die verschiedenen Knoten in dem Parsingbaum (beispielsweise die Knoten 600, 610, 612 und so weiter in 6B) verwendet werden, um Rauminformation im Zusammenhang mit den verschiedenen Niveaus in dem Baum zu speichern. Jeder Linienniveauknoten 612 kann beispielsweise eine Regressions-/Fittinglinie sämtlicher Punkte speichern, die Striche der Linie, die konvexe Hülle jedes Striches in der Linie und/oder eine andere erwünschte Information ausmachen. Zudem können die Parsingbaumdatenstrukturen dadurch modifiziert werden, dass verschiedene elementare Operationen an den Strichen, Worten, Linien und Blöcken, die darin enthalten sind, vorgenommen werden. Geeignete Operationen können beinhalten: das Hinzufügen, das Entfernen, das Zusammenfügen, das Teilen und das Reparenting. Kompliziertere Operationen können aus diesen elementaren Operationen zusammengesetzt werden. Da diese Operationen an dem Datenstrukturbaum ausgeführt werden, können die an den verschiedenen Knotenniveaus vorhandenen Statistiken automatisch derart aktualisiert werden, dass sie der neuen Struktur entsprechen.
  • 5 stellt eine schematische Übersicht über ein Beispiel eines geeigneten Layoutanalysemechanismus 302 bereit, der bei einigen Beispielen der vorliegenden Erfindung von Nutzen ist. Bei diesem Beispiel ist ein erster Schritt in der Layoutanalyseprozedur 302 ein zeitlicher Liniengruppierungsschritt 508, bei dem im Allgemeinen Merkmale von zeit lich benachbarten Strichen (beispielsweise von nacheinander geschriebenen Strichen) verglichen werden und, wenn möglich, zu „Linien" kombiniert werden. Verschiedene Faktoren können bei der Bestimmung dessen berücksichtigt werden, ob eine zeitliche Liniengruppierung aus zwei oder mehr zeitlich benachbarten Strichen vorgenommen werden sollte, so beispielsweise die Strichgröße, der Abstand zwischen Strichen, der Strichwinkel und dergleichen mehr. Sobald der Schritt 508 der zeitlichen Liniengruppierung beendet ist, wird als nächster Schritt in der Analyse 302 ein Schritt 510 der räumlichen Blockgruppierung ausgeführt, bei dem die physikalisch benachbarten zeitlichen Liniengruppierungen aus der Bildung in Schritt 508 verglichen und diejenigen zeitlichen Liniengruppierungen als räumliche Blöcke kombiniert werden, die nahe beieinander liegen. Verschiedene Faktoren können bei der Bestimmung dessen berücksichtigt werden, ob eine räumliche Blockgruppierung aus benachbarten zeitlichen Liniengruppierungen erstellt werden sollte, so beispielsweise die Strichgröße, der Abstand zwischen Strichen, der Linienwinkel und dergleichen mehr.
  • Die zeitlich gruppierten Linien (aus Schritt 508) können, wenn möglich, weiter gruppiert werden, wobei optional ihre räumliche Blockbeziehung oder Ausrichtung in dem Schritt 512 der räumlichen Liniengruppierung berücksichtigt wird. Der Schritt 512 der räumlichen Liniengruppierung muss die Zeit eines Striches im Vergleich zu einem anderen Strich nicht miteinbeziehen, obwohl Faktoren zusätzlich zu der räumlichen Beziehung der Linien miteinbezogen werden können, so beispielsweise der Linienwinkel, die Strichgröße und dergleichen mehr. Die Ergebnisse der Prozedur 510 der räumlichen Blockgruppierung gemäß vorstehender Beschreibung können als Faktor bei der Bestimmung dessen verwendet werden, ob eine räumliche Liniengruppierung zwischen zwei bestehenden zeitlichen Liniengruppierungen vorgenommen werden sollte.
  • Sobald die räumlichen Liniengruppierungen fertiggestellt sind, kann die Layoutanalyseprozedur 302 entsprechend diesem Ausführungsbeispiel anschließend die einzelnen Striche in den Liniengruppierungen zu einer oder mehreren räumlichen Wortgruppierungen 516 kombinieren, was beispielsweise von Faktoren wie dem Abstand zwischen Strichen, der Linienausrichtung, der Strichgröße und dergleichen mehr abhängt. Die sich ergebende Ausgabe 504 kann eine Datenstruktur 506 mit Strichen sein, die zu Worten, Linien und Blöcken gruppiert sind, was in Verbindung mit 6B erklärt wurde.
  • 5 zeigt darüber hinaus mit gestrichelten Linien einen optionalen Parsingmechanismus oder Schritt, der als Teil der Layoutanalyse 302 verwendet werden kann. Dieser optionale Schritt wird „Listenerfassung" 514 genannt. Oftmals neigen Menschen, wenn sie eine Liste erstellen, dazu, eine (vertikale) Spalte von Zahlen, Buchstaben oder Gliederungszeichen zu schreiben und anschließend die Listenelemente (in horizontaler Richtung einzutragen. Bisweilen schreiben Menschen auch zunächst den Inhalt der Liste und fügen später eine vertikale Spalte aus Zahlen, Buchstaben oder Gliederungszeichen hinzu. Der Listenerfassungsmechanismus 514 kann diese speziellen Umstände erfassen (beispielsweise durch Analyse der Ausrichtung und zeitlichen Abfolge der zeitlichen Liniengruppierungen und dergleichen) und kombiniert die Zahlen, Buchstaben oder Gliederungszeichen in der Liste mit dem entsprechenden Listenelementtext.
  • Die verschiedenen Schritte bei dem als Beispiel angegebenen Tintenanalysemechanismus 302 (5) können der Reihenfolge nach geändert oder auch ausgelassen werden, ohne dass man den Schutzbereich der Erfindung verlassen würde. So kann beispielsweise, falls erwünscht, der Schritt 512 der räumlichen Liniengruppierung vor dem Schritt 510 der räumlichen Blockgruppierung vorgenommen werden.
  • Die Ausgabedaten 504 von dem Layoutanalysemechanismus 302 können auf beliebige geeignete Weise verwendet werden, so beispielsweise in einem Klassifikationsmechanismus 306, der in 3 dargestellt ist, wobei von dort die Daten an beliebige andere geeignete Verarbeitungsmechanismen (beispielsweise der Anmerkungserkennung 314, der Handschriftenerkennung 310 und dergleichen mehr) weitergereicht werden können. Der Layoutanalysemechanismus 302 oder eine Kombination aus dem Layoutanalysemechanismus 302 und dem Klassifikationsmechanismus 306 können einen Parsermechanismus 406 gemäß Darstellung in Verbindung mit 4 bilden.
  • Selbstverständlich ist die vorliegende Erfindung nicht auf den Betrieb mit einem Layoutanalysemechanismus oder einem beliebigen speziellen Typ von Analysemechanismus beschränkt. Andere geeignete Mechanismen oder Prozeduren zum Gruppieren oder Verknüpfen einzelner Striche zu geeigneten Datenstrukturen oder auch eine beliebige andere geeignete Analyse können verwendet werden, ohne dass man den Schutzbereich der vorliegenden Erfindung verlassen würde. Darüber hinaus kann vor der Verarbeitung der Anwender, falls erwünscht, dem System mitteilen, dass bestimmte Striche stets zusammengruppiert werden sollen (beispielsweise durch Ziehen einer Linie oder eines Lassos um diese herum, durch Anstreichen oder durch auf andere Weise erfolgendes Auswählen von Eingabedatenstrichen, die miteinander verknüpft werden sollen).
  • IV. Ein InkDivider-Objekt und API
  • A. Allgemeine Beschreibung
  • Die Beschreibung fährt mit einer detaillierten Beschreibung von Beispielen für Parser und Anwendungsprogrammschnittstellen entsprechend der vorliegenden Erfindung fort, darunter ein spezifisches Beispiel, nämlich das InkDivider-Objekt (Tintenteilerobjekt). Eine Funktion der Systeme und Verfahren entsprechend der vorliegenden Erfindung (beispielsweise das InkDivider-Objekt) besteht darin, eine Sammlung von Tintenstrichen gemäß Bereitstellung durch eine Anwendung anzulegen und diese Striche in geparste Einheiten (Entitäten) mit spezifischer Granularität zu unterteilen (beispielsweise in Worte, Linien, Sätze, Absätze, Zeichnungen und dergleichen). Ohne ein geeignetes Parsen wird elektronische Tinte tendenziell zu granular (körnig) (beispielsweise mit einer zu großen Zahl von ungruppierten Strichen), oder sie wird tendenziell zu einem einzigen Tintenobjekt gruppiert, was ein gewünschtes Bewegen, Auswählen, Skalieren und andere Operationen insbesondere von einzelnen Tintenstrichen oder kleinen Gruppen von Tintenstrichen schwierig oder unmöglich macht. Die Systeme und Verfahren entsprechend der vorliegenden Erfindung enthalten beispielsweise ein InkDivider-Objekt und eine API und stellen eine Parsingtechnologie und Ergebnisse für die Entwickler bereit, wodurch die Codeschreiber in die Lage versetzt werden, die Ergebnisse des Parsingmechanismus beim Schreiben von Code für neue Anwendungen zu ihrem Vorteil zu nutzen.
  • Im Allgemeinen werden während einer Tintensitzung auf gewisse Art Tintenstriche zu einer Sammlung von Tintenstrichen, die in der Anwendung bereits vorhanden ist, hinzugefügt und/oder hieraus gelöscht. Zudem können während einer Tintensitzung bestehende Striche innerhalb einer Tintenstrichsammlung bewegt, größenmäßig geändert, teilweise gelöscht und/oder auf andere Weise modifiziert werden.
  • Endet eine Tintensitzung (gegebenenfalls inkrementell, während eine Tintensitzung stattfindet), so ruft das arbeitende Anwendungsprogramm den Parser (der beispielsweise in dem InkDivider-Objekt enthalten ist) auf, der die Striche zu Strichsätzen oder Gruppen mit verschiedenen Granularitäten verarbeitet (wenigstens die neuen Striche und/oder die geänderten Striche und/oder diejenigen Striche, die von den neuen und/oder geänderten Strichen seit dem vorherigen Aufruf des Parsers betroffen sind). Im Allgemeinen stellt bei einem Aufruf des Parsers das Anwendungsprogramm die Tintenstriche für den Parser bereit und empfängt bestimmte Information. In einigen Beispielen enthält die zurückge gebene Information einen Rückverweis, der die ursprünglichen Striche, die unterteilt worden sind, identifiziert. Systeme und Verfahren entsprechend einigen Beispielen der Erfindung können auch ein Verfahren (in diesem Beispiel „ResultByType" genannt) zum Erlangen einer bestimmten Sammlung von Strichen mit spezifischer Granularität bereitstellen. Das Anwendungsprogramm kann die Unterteilungsergebnisse abfragen, um Einheiten mit verschiedener Parsinggranularität zu ermitteln, was von dem gewünschten Granularitätstyp abhängt (beispielsweise Worte, Linien, Blöcke, Zeichnungen und dergleichen). Die Parsingergebnisse können darüber hinaus, falls notwendig und/oder erwünscht, das Aussehen einer Basislinie zum Zwecke des Berichtigens einer gewinkelten Schrift bezüglich einer horizontalen Basislinie vor dem Übermitteln dieser Daten an den Handschriftenerkenner aufweisen. Dies kann beispielsweise durch Erstellen einer Rotationsmatrix vorgenommen werden, die für die Codeschreiber zur Verfügung steht.
  • Man beachte, dass einzelne Tintenstriche zu mehreren Sammlungen von Tintenstrichen oder Gruppierungen mit verschiedener Granularität gehören können. So kann ein Strich beispielsweise Teil eines Wortes oder Teil eines Absatzes sein.
  • Eingedenk des allgemeinen Hintergrundes und der Übersicht werden nachstehend verschiedene Merkmale eines Tintenteilerobjekts und einer API anhand von Beispielen entsprechend der vorliegenden Erfindung detaillierter beschrieben. Während ein Großteil der nachfolgenden Diskussion ein bestimmtes Tintenteilerobjekt und damit verknüpfte Objekte, Eigenschaften und dergleichen mehr betrifft, erschließt sich einem Fachmann auf dem einschlägigen Gebiet, dass verschiedene Abwandlungen an den spezifischen Implementierungen gemäß nachstehender Beschreibung vorgenommen werden können, ohne den Schutzbereich der Erfindung zu verlassen.
  • B. Das Tintenteilerobjekt (InkDivider-Obket)
  • 7 zeigt allgemein den Inhalt eines als Beispiel angegebenen InkDivider-Objektes 700, das bei einigen Beispielen der vorliegenden Erfindung von Nutzen ist. Bei diesem Beispiel enthält das InkDivider-Objekt 700 zwei Eigenschaften 702, nämlich eine Strokes-Eigenschaft (Striche) 704 und eine RecognizerContext-Eigenschaft (Kontexterkennung) 706. Das dargestellte InkDivider-Objekt 700 enthält darüber hinaus ein Verfahren bzw. eine Methode 708, nämlich das Divide-Verfahren bzw. die Divide-Methode (Unterteilen) 710.
  • Die Strokes-Eigenschaft 704 gibt die Sammlung von Tintenstrichen aus und/oder setzt die Sammlung von Tintenstrichen, die dem Divide-Verfahren 710 unterzogen werden sollen. Die Striche werden allgemein an die Strokes-Eigenschaft 704 von dem verwendeten Anwendungsprogramm gesendet, das bestimmt, welche Striche zu der Sammlung von Strichen in der Strokes-Eigenschaft 704 hinzugefügt und/oder aus dieser entfernt und/oder auf andere Weise modifizieren sollen. Dies ist allgemein durch den Pfeil 712 in 7 gezeigt, der einlaufende Striche darstellt, die von dem Anwendungsprogramm gesendet werden (oder anderweitig auf beliebige geeignete und/oder gewünschte Weise an die Strokes-Eigenschaft 704 gesendet werden). Striche können darüber hinaus der Strokes-Eigenschaft 704 hinzugefügt und/oder aus dieser entfernt werden, und zwar vom letzten Anwender auf beliebige geeignete Weise, so beispielsweise durch eine Tinteneinfügeaktion, eine Tintenpasteaktion, eine Tintencut- und -löschaktion und dergleichen mehr. Falls erwünscht, muss die an die Strokes-Eigenschaft 704 übersandte Strichinformation nicht sämtliche Merkmale oder Eigenschaften der Tintenstriche, so beispielsweise Farbe, enthalten. Es ist vielmehr, falls erwünscht, ausreichend, nur die für das Parsing relevanten Merkmale oder Eigenschaften der Tintenstriche zu übersenden.
  • Die Eingabe- und Ausgabedaten für die Strokes-Eigenschaft 704 können in folgender Form vorliegen:
    [propputref] HRESULT Strokes ([in] InkStrokes* Strokes)
    [propget] HRESULT Strokes ([out, retval] InkStrokes** Strokes)
  • Die RecognizerContext-Eigenschaft 706 gibt den Erkenner, der verwendet und/oder mit dem InkDivider-Objekt 700 verknüpft werden soll, aus und/oder setzt diesen. Die Eigenschaft 706 ist bei wenigstens einigen Beispielen der vorliegenden Erfindung von Nutzen, da die gewünschte Parsingoperation die Erkennung handgeschriebener Texte auf Grundlage einer Sprache enthalten kann, die von der Standardsprache des Systems abweicht, mit der die Software oder das Anwendungsprogramm laufen. So kann beispielsweise ein stiftbasiertes Computersystem Englisch als Standardsprache für sein Betriebssystem und/oder seine Tastatur verwenden. Ist der Computeranwender zweisprachig oder nutzt ein anderer Anwender den Computer, so kann jedoch in gewissen Fällen der Anwender Notizen in einer Sprache schreiben oder erstellen, die nicht Englisch ist. Ist der Handschriftenerkenner mit englischer Standardsprache die einzige für das System zur Verfügung stehende Option, so kann das Ergebnis Fehler enthalten, da der Erkenner eine Erkennung an dem nicht auf Englisch handgeschriebenen Text vornimmt. Weitere spezialisierte Erkenner können zudem vom Anwendungscode gesetzt werden, so beispielsweise spezialisierte Erkenner zum Erkennen von musikalischen Symbolen, mathematischen Formeln und Symbolen, Zeichnungsobjekten und dergleichen mehr. Indem man Codeschreiber in die Lage versetzt, verschiedene Handschriftenerkenner einzustellen oder zu verwenden (darunter Erkenner für verschiedene Sprachen), können die resultierenden Ergebnisse der Handschriftenerkennung verbessert werden. Die Eigenschaft, dass Codeschreiber einen gewünschten Handschriftenerkenner setzen können, ist in 7 durch Pfeil 714 dargestellt.
  • Bei einigen Beispielen der Erfindung kann die RecognizerContext-Eigenschaft 706 standardmäßig auf einen „Nullwert" gesetzt werden, was bei diesen Beispielen bedeutet, dass die Standardsprache des Betriebssystems des Computers als Handschriftenerkennungssprache verwendet wird und/oder ein mit dem Betriebssystem arbeitender Erkenner als Erkenner verwendet wird, wenn nicht und bis die RecognizerContext-Eigenschaft 706 derart geändert wird, dass ein anderer Erkenner spezifiziert wird. Der Standard- oder Nullsprachenwert kann einer lokalen „Tastatur"-Standard-ID entsprechen, die während des anfänglichen System-Setups gesetzt wird. Dieses Standard- oder Nulleingabemerkmal ist in 7 durch den Pfeil 716 dargestellt und mit „NULL" bezeichnet.
  • Die Eingabe- und Ausgabedaten für die RecognizerContext-Eigenschaft 706 können die nachfolgenden Formen aufweisen:
    [propputref] Recognizer ([in] InkRecognzier* Recognizer)
    [propget] Recognizer ([out, retval] InkRecognizer** Recognizer)
  • Im Betrieb unternimmt bei wenigstens einigen Beispielen der Erfindung ein Parser einen ersten Durchlauf beim Bestimmen von Wortzwischenräumen in dem handgeschriebenen Text auf Grundlage von räumlichen und zeitlichen Metadaten in Verknüpfung mit den Tintenstrichen. Dies kann beispielsweise die Schritte der zeitlichen Liniengruppierung, der räumlichen Blockgruppierung und der räumlichen Liniengruppierung enthalten, die vorstehend allgemein im Zusammenhang mit 5 beschrieben worden sind. Diese Parsingoperationen können vergleichsweise schnell vorgenommen werden, wobei ihre Ergebnisse jedoch im Allgemeinen nicht die Detailtiefe und Genauigkeit aufweisen, die für einen Handschriftenerkenner und das zugehörige Sprachmodell notwendig sind. Da her wird bei wenigstens einigen Beispielen der Erfindung ein Handschriftenerkenner verwendet, der bei jeder handgeschriebenen „Linie" von Text einen zweiten Durchlauf unternimmt und Zwischenräume zwischen Worten unter Verwendung eines Wörterbuches akkurat bestimmt, das mit dem Handschriftenerkenner verknüpft ist, um so die Wortzwischenräume besser zu identifizieren. Der Erkenner kann zudem den handgeschriebenen Text in maschinengenerierten Text umwandeln (beispielsweise in ein Format, das für ein Textverarbeitungsprogramm, ein E-Mail-Programm, elektronische Kalender, Terminbücher und dergleichen geeignet ist).
  • 7 zeigt zudem ein Divide-Verfahren bzw. eine Divide-Methode 710, das einen Teil des InkDivider-Objektes 700 dieses Beispieles darstellt. Das Verfahren 710 unterteilt oder parst die verknüpften Striche (die es von der Strokes-Eigenschaft 704 erhält, siehe Pfeil 718) unter Verwendung des von der RecognizerContext-Eigenschaft 706 verwendeten Erkenners (siehe Pfeil 720). Das Divide-Verfahren 710 erzeugt ein InkDivisionResult-Objekt (Tintenteilungsergebnis) 800, das die Ergebnisse der Tintenteilung (oder des Parsings) enthält, und gibt dieses aus. Die Erstellung und Ausgabe des InkDivision-Objektes 800 ist in 7 durch den Pfeil 722 dargestellt. Ein Beispiel für ein verfügbares Ausgabedatenformat des Divide-Verfahrens 710 ist nachstehend gezeigt:
    HRESULT Divide ([out, retval] InkDivisionResult** divisionResults)
  • Bei wenigstens einigen Beispielen der Erfindung wird das Divide-Verfahren 710 synchron durchgeführt oder aufgerufen, während zusätzliche Tinte dem Dokument in dem Anwendungsprogramm hinzugefügt, aus diesem gelöscht oder dieses auf andere Weise modifiziert. In zusätzlichen Beispielen für Systeme und Verfahren entsprechend der Erfindung kann das Divide-Verfahren 710 in einem Hintergrund-Thread an Strichen arbeiten, die von der Strokes-Eigenschaft 704 bereitgestellt werden, und gibt kein InkDivisionResult 800 zurück, bis die gesamte Parsingoperation beendet ist. Durch das Arbeiten in einem Hintergrund-Thread und ohne Auswirkungen auf die weitere Stricheingabe oder Modifikation ist in vielen Fällen die Verwendung des Divide-Verfahrens 710 für den Anwender des stiftbasierten Computersystems transparent oder nahezu transparent und erzeugt keine spürbare Verarbeitungsverzögerung.
  • Bei jedem Aufruf des Divide-Verfahrens 710 kann ein neues InkDivisionResult-Objekt 800 erzeugt werden, das eine Momentaufnahme der Tintenparsingbaumdatenstruktur (siehe 6B) zum Zeitpunkt des Aufrufes des Divide-Verfahrens 710 effektiv erstellt.
  • Bei wenigstens einigen Beispielen der Erfindung liegt es im Verantwortungsbereich des Anwendungsprogramms, die Striche jedes InkDivisionResult-Objektes 800 (gemäß nachstehender detaillierterer Beschreibung) zu vergleichen, um eine Bestimmung dahingehend vorzunehmen, ob sich die Parsingergebnisse zwischen verschiedenen Aufrufen des Divide-Verfahrens 710 geändert haben.
  • Selbstverständlich kann, ohne den Schutzbereich der Erfindung zu verlassen, ein InkDivider-Objekt Verfahren, Eigenschaften und/oder andere Elemente zusätzlich zu und/oder anstelle von und/oder in Kombination mit den spezifischen Verfahren und Eigenschaften gemäß Darstellung in 7 enthalten. Beispielsweise kann ein InkDivider-Objekt zusätzlich eine LineHeight-Eigenschaft (Linienhöhe) enthalten (Alternativ kann die LineHeight-Eigenschaft bei einem anderen Objekt oder auf beliebige geeignete Weise bereitgestellt werden). Die LineHeight-Eigenschaft versetzt einen Codeschreiber in die Lage, als Eingabe eine erwartete Linienhöhe für die Textlinien einzugeben. Auf diese Weise können sich das Layoutanalysesystem und/oder das Klassifikationsanalysesystem (oder andere Systeme in dem Parser) während des Parsings dieser erwarteten LineHeight-Information bedienen und die Unterscheidung zwischen Textlinien und Zeichnungen oder Diagrammen besser bewerkstelligen. Durch Eingabe der LineHeight-Richtlinie in den Parser kann dieser effektiver und effizienter mehrere Linien (beispielsweise in der Absatzorientierung) oder einzelne Linien von Zeichnungen unterscheiden (So sind beispielsweise Zeichnungslinien üblicherweise größer als eine einzelne Linie in einer Handschrift).
  • Obwohl keine Beschränkung mit Blick auf die erwartete LineHeight-Größe der handschriftlichen Linien notwendig ist, akzeptieren die Systeme und Verfahren in einigen Fällen der Erfindung erwartete Linienhöhen, die in einen bestimmten Bereich fallen. Selbstverständlich kann der Bereich von erwarteten Linienhöhen stark variieren. In einigen Beispielen der Erfindung muss die erwartete Linienhöhe in einen Bereich zwischen einer minimalen Höhe von 100 Digitalisiererpixeln und einer maximalen Höhe von 50.000 Digitalisiererpixeln fallen, und zwar mit einer Standardhöhe von 1200 Pixeln. Versucht ein Codeschreiber, eine erwartete Linienhöhe außerhalb dieses Bereiches zu setzen, so kann die LineHeight-Eigenschaft eine Fehlermitteilung ausgeben. Alternativ kann die LineHeight-Eigenschaft automatisch die Höhe der Eingabelinien auf einen einschlägigen minimalen oder maximalen Höhenwert ändern, ohne eine Fehlermitteilung auszugeben (beispielsweise indem sie automatisch einen Wert der Linienhöhe von 50.000 einstellt, wenn ein Anwendungsprogrammcode versucht, den Wert auf 50.003 einzustellen). Als weitere Alternative kann ein Versuch des Setzens eines Wertes der Linienhöhe außerhalb des gültigen Bereiches zu einem einfachen Ignorieren dieses Wertes führen (und zu einem Zurückkehren zu dem vorherigen Wert der Linienhöhe oder dem Standardwert).
  • Als Ausgabe teilt die LineHeight-Eigenschaft dem Anwendungsprogramm den vorher gesetzten Wert für die LineHeight-Eigenschaft mit oder gibt den Standardwert aus, wenn kein vorheriger Wert gesetzt worden ist.
  • Die Eingabe- und Ausgabedaten für die LineHeight-Eigenschaft weisen entsprechend diesem Beispiel der Erfindung beispielweise die nachfolgenden Formen auf:
    HRESULT [propput] LineHeight ([in] Long LineHeight)
    HRESULT [propget] LineHeight ([out], retval] Long* LineHeight)
  • C. Das Tintenteilungsergebnis-Objekt (InkDivisionResult-Objekt)
  • 8 zeigt grafisch ein InkDivisionResult-Objekt 800 (Tintenteilungsergebnis-Objekt) entsprechend einigen Beispielen der Erfindung. Wie vorstehend ausgeführt worden ist, nimmt das Divide-Verfahren 710 des InkDivider-Objektes 700 ein Parsing an der Strichsammlung (die von der Strokes-Eigenschaft 704 ermittelt worden ist) auf Grundlage der ausgewählten RecognizerContext-Eigenschaft 706 vor und erzeugt ein InkDivisionResult-Objekt 800. Das InkDivisionResult-Objekt 800 erfasst die Datenstruktur, die sich aus den Unterteilungs- und/oder Parsingoperationen ergibt, die als „Parsingbaum" der in 6B dargestellten Form bei wenigstens einigen Beispielen der Erfindung betrachtet werden können. Die sich ergebende Datenstruktur, die in dem InkDivisionResult-Objekt 800 vorhanden ist, kann weiter verwendet werden, so beispielsweise bei nachfolgenden ResultByType-Operationen (die nachstehend detailliert beschrieben werden), um Tintendatensätze mit verschiedenen Graden der Granularität für eine gegebene Strichsammlung abzufragen.
  • Wie in 8 gezeigt ist, weist dieses Beispiel des InkDivisionResult-Objektes 800 eine Eigenschaft 802 mit dem Namen „Strokes" (Striche) 804 auf. Die Strokes-Eigenschaft 804 gibt bei Aufruf einen Verweis auf diejenigen Striche aus, die ursprünglich bei der Erstellung des InkDivisionResult-Objektes 800 verwendet worden sind. Das InkDivider-Objekt 700 bildet intern eine Datenstruktur, die einem spezifischen Satz von Strichen in einem zeitlichen Augenblick entspricht. Das Ink-Objekt, das diese Striche enthält, ist jedoch nicht statisch. Vielmehr können neue Striche hinzugefügt werden (entweder einzeln oder gruppenweise, so beispielsweise mittels der Pasteoperation), und es können zu einem bestimmten Zeitpunkt bestehende Striche gelöscht oder bewegt oder auf andere Weise modifiziert werden (und zwar auch dann, wenn eine Parsingoperation ausgeführt wird). Daher stellt die Strokes-Eigenschaft 804 in dem InkDivisionResult-Objekt 800 einen Anwendungsprogrammcode oder einen Clientcode als Mittel bereit, das bestimmt: (a) welche Striche einer Unterteilung unterzogen worden sind, um ein bestimmtes InkDivisionResult-Objekt 800 zu erzeugen, und (b) ob diese Striche seit der Ermittlung des letzten InkDivisionResult-Objektes einbezogen oder modifiziert worden sind (beispielsweise seit dem letzten Aufruf des Divide-Verfahrens 710). Die Strokes-Eigenschaft 804 ermöglicht darüber hinaus, dass der Anwendungscode oder der Clientcode zwei InkDivisionResult-Objekte vergleichen, um festzustellen, ob sich der Parsingbaum von einem Aufruf des Divide-Verfahrens zum nächsten geändert hat.
  • Die Strokes-Eigenschaft 804 des InkDivisionResult-Objektes 800 empfängt, enthält und/oder hält eine Liste von Strichen vor, die bei der Erstellung des InkDivisionResult-Objektes 800 verwendet worden sind. Dies ist in 8 durch einen Eingabepfeil 806 dargestellt. Die Eingabestrichdaten können beispielsweise aus der Strokes-Eigenschaft 704 des InkDivider-Objektes 700 oder auch aus einer beliebigen anderen geeigneten Quelle ermittelt oder eingeführt werden. Die Fähigkeit, Daten auszugeben, die die Eingabestriche darstellen können, die bei der Erstellung des InkDivisionResult-Objektes 800 verwendet werden, ist in 8 mit dem Pfeil 808 aus der Strokes-Eigenschaft 804 bezeichnet. Die Ausgabedaten 808 der Strokes-Eigenschaft 804 können die folgende Form aufweisen:
    [propget] HRESULT Strokes ([out, retval] InkStrokes** Strokes)
  • Da das InkDivider-Objekt 700 den Parsingmechanismus und das InkDivisionResult-Objekt 800 die Parsingbaumdatenstruktur für eine spezifische Tintenteilungsoperation einkapselt, wird es möglich, das InkDivider-Objekt 700 freizugeben (beispielsweise für weitere Operationen), während ein oder mehrere InkDivisionResult-Objekte 800 weiterhin bestehen bleiben.
  • Als Alternative können anstelle dessen, dass sie eine Strokes-Eigenschaft 804 in dem InkDivisionResult-Objekt 800 enthalten, der Clientcode oder der Anwendungspro grammcode die Strichinformation extern cachen (in einem Cache speichern). Es kann gleichwohl bei der wahrscheinlichen Erstellung mehrerer InkDivisionResult-Objekte 800 im Laufe einer Tintensitzung schwierig und rechentechnisch aufwändig werden, Paare von InkDivisionResult-Objekten 800 und die externen Tintenstrichdatensätze zu verwalten. Daher verringert die Bereitstellung der Strokes-Eigenschaft 804 als Teil des InkDivisionResult-Objektes 800 den Overhead für den Clientcode oder den Anwendungscode und unterstützt die effiziente Nutzung der InkDivider-API.
  • Das InkDivisionResult-Objekt 800 entsprechend diesem Beispiel enthält darüber hinaus ein Verfahren 810, das ResultByType (Ergebnis nach Typ) 812 genannt wird und in 8 dargestellt ist. Das ResultByType-Verfahren 812 gibt bei Aufruf eine Sammlung von Strichsammlungen (in Teilungseinheiten) aus, die sich aus einem gegebenen Division-Type (Art der Unterteilung, so beispielsweise Worte, Linien, Absätze, Zeichnungen und dergleichen mehr) ergeben. Das Verfahren 812 gibt beispielsweise Eingabestriche, die als Worte, Linien, Absätze, Zeichnungen und dergleichen gruppiert sind, in Abhängigkeit davon aus, ob der Clientcode oder Anwendungscode Worte, Linien, Absätze, Zeichnungen und dergleichen angefordert hat. Das Verfahren 812 kann, falls gewünscht, mehrfach aufgerufen werden, um Unterteilungsergebnisse für verschiedene Parsinggranularitäten abzufragen. Ein Aufruf kann beispielsweise Worte in der geparsten Strichsammlung bereitstellen, während ein weiterer Aufruf Linien und wieder ein anderer Absätze und so weiter aufrufen kann.
  • Die Eingabe für das ResultByType-Verfahren 812 enthält wenigstens den gewünschten InkDivisionType, der, wie vorstehend ausgeführt worden ist, bei einigen Beispielen Worte, Linien, Absätze, Zeichnungen und dergleichen bezeichnen kann. Diese Eingabe ist in 8 mit dem Eingabepfeil 814 bezeichnet. Die Eingabe, die die Sammlung von Strichsammlungen für einen gegebenen DivisionType enthält (beispielsweise ein InkDivisionUnits-Objekt) ist in 8 mit dem Ausgabepfeil 816 bezeichnet. Die Daten können folgendes Format aufweisen:
    HRESULT ResultByType ([in] InkDivisionType divisionType,
    [out, retval] InkDivisionUnits* divisionUnits)
  • Bei einigen Beispielen der Erfindung kann für den Fall, dass kein DivisionType spezifiziert ist (DivisionType = 0), wie in 8 durch den Pfeil 818 dargestellt ist, die ausgegebene InkDivisionUnits-Objektsammlung wenigstens bei einigen Beispielen der Erfin dung sämtliche Granularitäten enthalten, die von dem Parser identifiziert sind. Da einige Granularitäten andere Granularitäten subsumieren (So kann beispielsweise eine Linie mehrere Worte enthalten), kann die sich ergebende Sammlung überlappende DivisionUnits (Verteilungseinheiten) enthalten. Eine geeignete Standardgranularität (oder sogar keine Standardgranularität) kann selbstverständlich ohne Weiteres verwendet werden, ohne dass man den Schutzbereich der Erfindung verlassen würde. So kann beispielsweise bei einigen Versionen der Standard-DivisionType „Wort" sein, wenn nicht oder bis eine andere Granularität von dem Anwendercode oder dem Anwendungscode verwendet wird.
  • Wie in 8 dargestellt ist, kann das ResultByType-Verfahren 812 die Eingabedatenstruktur von dem Divide-Verfahren 710 des InkDivider-Objektes 700, wie durch den Pfeil 820 dargestellt ist, empfangen.
  • Selbstverständlich kann, ohne den Schutzbereich der Erfindung zu verlassen, ein InkDivisionResult-Objekt 800 Verfahren, Eigenschaften und/oder andere Elemente zusätzlich zu und/oder anstelle von und/oder in Kombination mit den spezifischen Verfahren und Eigenschaften gemäß Darstellung in 8 enthalten.
  • D. Das Tintenteilungseinheitenobjekt (InkDivisonUnits-Objekt)
  • 9 zeigt ein InkDivisionUnits-Objekt 900, das bei einigen Beispielen der Erfindung von Nutzen ist. Das Objekt 900 ist eine Sammelmappe (wrapper) für die Ergebnisse der Parsingoperation. Die Sammlung umfasst bei wenigstens einigen Beispielen der Erfindung üblicherweise erwartungsgemäß effektiv sämtliche Striche, die ursprünglich an das InkDivider-Objekt 700 übergeben worden sind. So kann beispielsweise eine Sammlung von Strichen, die in Worte unterteilt worden ist, durch eine Sammlung des InkDivisionUnits-Objektes 900 dargestellt werden, die ein einzelnes InkDivisionUnit-Objekt 1000 für jedes Wort enthält (siehe auch 10, die nachstehend noch detailliert beschrieben wird). Die Striche, die sich aus einem Erweitern der einzelnen InkDivisionUnit-Objekte 1000 zu ihren jeweiligen Strichen ergeben, sollen, so steht zu erwarten, zu dem ursprünglichen Satz von Strichen passen, der an das InkDivider-Objekt 700 weitergeleitet worden ist.
  • Wie in 9 dargestellt ist, enthält das InkDivisionUnits-Objekt 900 dieses Beispiels eine Eigenschaft 902, die Count (Zähler) 904 genannt wird. Die Count-Eigenschaft 904 stellt die Anzahl (oder Nummer) der Teilungseinheiten bereit, die in einer gegebenen Sammlung vorhanden sind, und macht diese Information der API für die Verwendung in dem Anwendungscode oder Clientcode verfügbar. So kann die Count-Eigenschaft 904 beispielsweise ein Anwendungsprogramm informieren, dass eine gegebene Strichsammlung eine Anzahl x von Worten und/oder eine Anzahl y von Linien und/oder eine Anzahl z von Absätzen enthält. Diese Daten können auf beliebige geeignete Weise bestimmt werden, so beispielsweise dadurch, dass die Parsingbaumdatenstruktur von 6B nach einer gegebenen Strichsammlung, die in dem InkDivisionResult-Objekt 800 vorhanden ist, durchsucht wird. Die Ausgabe der Count-Eigenschaft 904 ist in 9 durch den Pfeil 906 dargestellt. Die Ausgabedaten können folgendermaßen strukturiert sein.
    [propget] HRESULT Count ([out, retval] Long** Count)
  • Das InkDivisionUnits-Objekt 900 dieses Beispiels enthält darüber hinaus ein Verfahren 908, das Item 910 genannt wird. Das Item-Verfahren 910 gibt bei Aufruf ein spezifisches InkDivisionUnit-Objekt 1000 in der Sammlung von Strichen mit dem Indexwert (Index value) der Einheit in der Sammlung aus (beispielsweise „das vierte Wort ausgeben"). Die Ausgabe ist in 9 durch den Pfeil 912 dargestellt. Die Ausgabedaten des Item-Verfahrens 910 können folgendermaßen strukturiert sein.
    HRESULT Item ([in] Long index, [out, retval] InkDivisionUnit* divisionUnit)
  • Eine weitere Eigenschaft 902, die in dem InkDivisionUnits-Objekt 900 dieses Beispieles enthalten ist, wird „_NewEnum" 914 genannt. Die Eigenschaft 914 gibt für die Aufzählschnittstelle entweder IEnum VARIANT oder IEnum UNKNOWN für die bewertete Strichsammlung aus. Die Eigenschaft 914 kann zum Abrufen eines einzelnen Objektes in der bewerteten Tintenstrichsammlung, wie in 9 durch die Pfeile 916 beziehungsweise 918 dargestellt ist, verwendet werden. Die von dem _NewEnum-Verfahren 914 bewerteten Daten können im folgenden Format vorliegen:
    [propget] HRESULT NewEnum ([out, retval] IUnknown** _NewEnum)
  • Insbesondere sind bei diesem Beispiel der Erfindung (a) die Count-Eigenschaft 904 nebst dem Item-Verfahren 910 und (b) die _NewEnum-Eigenschaft 914 gemäß vorstehender Beschreibung effektiv zwei äquivalente Arten des Zugriffs auf die Elemente der Tintenstrichsammlung in Abhängigkeit von der Programmiersprache und dem Codie rungsstil, der vom Clientcode oder Anwendungsprogrammcode verwendet wird. Die Kombination des Item-Verfahrens 910 und der Count-Eigenschaft 904 kann in einer geläufigen „for"-Schleife verwendet werden, wohingegen die _NewEnum-Eigenschaft 914 bei einer "for each"-Konstruktion verwendet werden kann, die in einigen Programmiersprachen vorhanden ist.
  • Darüber hinaus kann selbstverständlich, ohne den Schutzbereich der Erfindung zu verlassen, ein InkDivisionUnits-Objekt 900 Eigenschaften, Verfahren und/oder andere Elemente zusätzlich zu und/oder anstelle von und/oder in Kombination mit den spezifischen Eigenschaften und Verfahren gemäß vorstehender Beschreibung im Zusammenhang mit 9 enthalten.
  • E. Das Tintenteilungseinheitsobjekt (InkDivisonUnit-Objekt)
  • Ein weiteres Objekt in der API entsprechend einigen Beispielen der Erfindung ist in 10 dargestellt und wird „InkDivisionUnit"-Objekt 1000 genannt. Das Objekt 1000 stellt ein einzelnes Element der Tintenstrichsammlung gemäß Ergebnis der Parsingoperation für die Granularität gemäß Spezifizierung durch die InkDivisionResult.ResultByType-Operation dar. So kann beispielsweise das InkDivisionUnit-Objekt 1000 ein einzelnes Wort einer geparsten Tintenstrichsammlung enthalten, wenn die spezifizierte Parsinggranularität (oder der Divisionstyp) „Wort" war.
  • Die erste Eigenschaft 1002 in diesem als Beispiel angegebenen Objekt 1000 ist die Strokes-Eigenschaft 1004. Die Strokes-Eigenschaft 1004 enthält diejenigen Striche, die in der Einheit enthalten sind, die sich aus der Tintenteilung ergeben (beispielsweise die Striche in dem Wort oder der Zeile oder dem Absatz in Abhängigkeit von der ausgewählten Granularität). Die Strokes-Eigenschaft 1004 verschafft den Codeschreibern einen einfachen Zugriff auf diejenigen Striche, die jedes Granularergebnis einer Parsingoperation bilden. Die Datenausgabe durch die Strokes-Eigenschaft 1004 oder durch Zugriff hierdurch kann (gemäß Angabe durch den Ausgabepfeil 1030) das folgende Format aufweisen.
    [propget] HRESULT Strokes ([out, retval] InkStrokes** Strokes)
  • Die RecognizedString-Eigenschaft 1006 ist ebenfalls in diesem Beispiel des InkDivisionUnit-Objektes 1000, wie in 10 gezeigt ist, enthalten. Die Ausgabe dieser Eigen schaft 1006, die in 10 durch den Pfeil 1032 dargestellt ist, ist ein maschinengenerierter Text, der sich aus der Handschriftenerkennungsoperation ergibt (und/oder ein Zeiger auf eine Datenspeicherstelle für diesen erkannten Text).
  • Dieses Beispiel des InkDivisionUnit-Objektes 1000 enthält darüber hinaus eine Eigenschaft mit dem Namen DivisionType (Divisionstyp) 1008, die in 10 dargestellt ist. Die Eigenschaft 1008 gibt die Art der Divisionseinheit in dem Objekt 1000 aus (beispielsweise Wort, Linie, Satz, Absatz, Zeichnung und dergleichen), wie in 10 durch den Ausgabepfeil 1034 dargestellt ist. Die Daten für die Ausgabe der DivisionType-Eigenschaft 1008 können im folgenden Format gegeben sein:
    [propget] HRESULT divisionType ([out, retval] InkDivisionType** divisionType)
  • Bei einigen Beispielen und/oder Verwendungen der Erfindung kann die DivisionType-Eigenschaft 1008 für den Fall von Nutzen sein, dass eine gegebene InkDivisionUnits-Objektsammlung 900 InkDivisionUnit-Objekte 1000 mit verschiedenen InkDivisionTypes enthält.
  • Eine weitere Eigenschaft, die bei wenigstens einigen Beispielen des InkDivisionUnit-Objektes 1000 vorhanden ist, ist die RotationTransform-Eigenschaft (Rotationstransformation) 1010. Die Eigenschaft 1010 gibt die Information über die Transformationsmatrix weiter, die beispielsweise zum Horizontaldrehen der Striche in dem InkDivisionUnit-Objekt 1000 von Nöten ist. Sie kann beispielsweise beim Drehen der Tintenstriche in dem Objekt 1000 auf eine horizontale Basislinie vor dem Übersenden der Striche an den Erkenner verwendet werden. Die Ausgabedaten aus der Eigenschaft 1010 können bei wenigstens einigen Beispielen der Erfindung das folgende Format aufweisen:
    [propget] HRESULT RotationTransform
    ([out, retval] InkTransform** RotationTransform)
  • Die Verfügbarkeit der Ausgabedaten der RotationTransform-Eigenschaft 1010 ist in 10 durch den Ausgabepfeil 1036 dargestellt.
  • Die bei wenigstens einigen Beispielen der Erfindung verfügbare RotationTransform-Eigenschaft 1010 stellt ein vorteilhaftes Merkmal dar, das bei Anwendungsprogrammen bereitsteht, bei denen Handschriften, die nicht horizontal geschrieben sind, immer noch genau geparst werden können. Im Allgemeinen nehmen viele bekannte Handschriftenerkenner keine interne Bearbeitung von nichthorizontal beschriebenen Linien vor, wobei die besten Erkennungsergebnisse bei derartigen Produkten im Allgemeinen dann auftreten, wenn die Basislinie der Handschrift horizontal ist. Bei bestimmten Parsersystemen berechnet der Parser automatisch eine Basislinie oder bestimmt diese oder wendet gegebenenfalls eine Rotationstransformation an, um Daten entsprechend einer horizontalen Linie zu ermitteln, wodurch die Handschriftenerkennungsfähigkeit des Handschriftenerkenners verbessert wird. Die RotationTransform-Eigenschaft 1010 ermöglicht dem Clientcode zu bestimmen, ob handgeschriebene Information horizontal gesammelt worden ist. Ein derartiger Clientcode kann sich dieser Eigenschaft bedienen, um die Handschrift eines Endanwenders „zu bereinigen", indem er sie dem Niveau nach ausgleicht, und/oder um die Linien oder anderen Formen in der Handschrift des Anwenders genau zu zeichnen.
  • Bei einigen Beispielen der Erfindung ist es notwendig, dass die einzelnen InkDivisionUnit-Objekte 1000 in derselben InkDivisionUnits-Sammlung 900 vorhanden sind, jedoch verschiedene RotationTransform-Eigenschaften 1010 aufweisen. Hat ein Anwender beispielsweise einen Kreis geschrieben und um sämtliche Worte gebeten, so enthält die InkDivisionUnits-Sammlung 900 sämtliche Worte, und jedes InkDivisionUnit-Objekt 1000 kann einen anderen Basislinienwinkel in der RotationTransform-Eigenschaft 1010 aufweisen.
  • Insbesondere kann die RotationTransform-Eigenschaft 1010 nicht für sämtliche InkDivisionUnit-Objekte 1000 relevant sein. So kann die Eigenschaft 1010 beispielsweise für die InkDivisionUnit „Wort" und die InkDivisionUnit „Linie", jedoch nicht notwendigerweise für „Zeichnung" oder „Absatz" notwendig sein. Falls erwünscht, kann der Parser für den InkDivisionUnit-Teilungstyp (DivisionType) von „Absatz", ohne den Schutzbereich der vorliegenden Erfindung zu verlassen, einen Drehwinkel des Absatzes auf Grundlage der einzelnen bildenden Linien berechnen. Darüber hinaus kann, falls erwünscht, der Parser den Drehwinkel einer Zeichnung bei wenigstens einigen Beispielen aus den in diesen Strichen beobachteten Mustern berechnen. Daher ist, während die RotationTransform-Eigenschaft 1010 für alle InkDivisionTypes vorhanden ist, dies nicht notwnendigerweise der Fall.
  • Das InkDivisionUnit-Objekt 1000 enthält darüber hinaus einen InkDivisionType 1022 namens Enum 1020, das ebenfalls in 10 dargestellt ist. Der gewünschte InkDivision Type kann durch den Clientcode oder den Anwendungsprogrammcode standardmäßig oder auf beliebige andere geeignete Weise eingesetzt werden. In seiner Ausgabe (die durch den Ausgabepfeil 1038 dargestellt ist) beschreibt dieses Enum 1022 den Typ von InkDivisionUnits, der für eine Parsingoperation erwünscht ist. Die Information kann beispielsweise von einer InkDivisionResult.ResultByType-Operation verwendet werden. Die InkDivisionTypes für das Enum 1020 können beispielsweise folgendermaßen definiert werden:
    InkDivisionType für Wort = 0
    InkDivisionType für Linie = 1
    InkDivisionType für Absatz = 2
    InkDivisionType für Zeichnung = 3
  • Selbstverständlich können auch andere Enums verwendet werden, ohne den Schutzbereich der Erfindung zu verlassen. So kann beispielsweise ein Enum-„Segment" verwendet werden, das entweder einem Wort oder einem Schriftzeichen entspricht, und zwar insbesondere zur Verwendung in Systemen, die für fernöstliche Sprachen ausgelegt sind.
  • Für den Fall, dass eine gegebene InkDivisionUnits-Objektsammlung InkDivisionUnit-Objekte mit verschiedenen InkDivisionTypes enthält, können sich die spezifischen Werte für Einträge in dem Enum derart ändern, dass sie beispielsweise in etwa folgendermaßen aussehen.
    Sämtliche InkDivisionTypes = 0
    InkDivisionType für Wort = 1
    InkDivisionType für Linie = 2
    InkDivisionType für Absatz = 4
    InkDivisionType für Zeichnung = 8
  • Auf diese Weise wird InkDivisionType zu einem Bitfeld, und es können einzelne Typen mittels ODER verknüpft werden, um eine Kombination von InkDivisionTypes zu spezifizieren, die sich aus der ResultByType-Operation ergeben soll.
  • Selbstverständlich kann, ohne den Schutzbereich der Erfindung zu verlassen, ein InkDivisionUnit-Objekt 1000 Eigenschaften, Verfahren, Enums und/oder andere Elemente zusätzlich zu und/oder anstelle von und/oder in Kombination mit den spezifischen Eigenschaften und Enums gemäß Darstellung in 10 beinhalten.
  • V. Der Betriebsablauf von InkDivider-Objekt und API
  • A. Leistung während einer Tintensitzung
  • Bei Verwendung können Tintenstriche zu der dem InkDivider-Objekt 700 zu eigenen Sammlung von Strokes-Eigenschaften 704 auf geeignete Weise hinzugefügt, hieraus entfernt und/oder auf andere Weise modifiziert werden, ohne den Schutzbereich der Erfindung zu verlassen. Eine vollständig neue Strokes-Eigenschaft 704 kann, falls erwünscht, beispielsweise jedes Mal geschrieben und eingeführt werden, wenn ein Strich zu einer bestehenden Strokes-Eigenschaft 704 hinzugefügt, aus dieser entfernt und/oder auf andere Weise modifiziert wird. Ein auf diese Weise erfolgendes Vorgehen führt jedoch sehr wahrscheinlich zu nicht hinnehmbaren Verarbeitungsverzögerungen, da der Computer bei jeder Änderung eines Striches ein Reparsing von sämtlichen Tintenstrichen der Strokes-Eigenschaft 704 vornehmen müsste.
  • Entsprechend enthält bei einigen Beispielen der Erfindung der Clientcode (oder der Anwendungsprogrammcode, der das InkDivider-Objekt 700 verwendet, Verfahren zum: (a) Hinzufügen einzelner Tintenstriche, (b) Hinzufügen von Sätzen von Tintenstrichen (beispielsweise durch eine Pasteoperation), (c) Entfernen von Tintenstrichen und (d) Entfernen von Sätzen von Tintenstrichen (beispielsweise durch eine Cutoperation) zu der dem InkDivider-Objekt zu eigenen Strokes-Eigenschaftssammlung 704 anstelle eines immer dann erfolgenden Ersetzens der gesamten Strokes-Eigenschaftssammlung 704, wenn ein Strich hinzugefügt, entfernt oder auf andere Weise modifiziert wird. Durch Verwenden von Verfahren, bei denen nur betroffene Striche in einer einem aktuellen InkDivider-Objekt zu eigenen Strokes-Eigenschaft 704 hinzugefügt, entfernt oder auf andere Weise modifiziert werden, kann die interne Parsingbaumdatenstruktur inkrementell aktualisiert werden. Wird beispielsweise ein Strich zu einer vorher geparsten Linie (beispielsweise der Querstrich eines „t") hinzugefügt, so kann, wenn der neue Strich dem InkDivider-Objekt 700 unter Verwendung eines Add-Verfahrens (beispielsweise über die Operation InkDivider.Strokes.Add(newstroke)) zugeleitet wird, die dem Parser zu eigene interne Parsingbaumdatenstruktur innerhalb eines bestimmten Abstandes von der Stelle des neuen Striches beziehungsweise der neuen Striche invalidiert bzw. ungültig gemacht werden, weshalb die Striche nur im unmittelbaren Bereich der neuen Striche neugeparst werden (was man auch als „schmutzige" Striche oder „schmutzige Knoten" bezeichnet), das heißt bei diesem Beispiel der neue Strich in Verbindung mit dem Buchstaben „t" und andere in der nahen Umgebung befindliche Striche. Bei einigen Beispielen dieses inkrementellen Strichparsings werden nicht nur die aktuellen neuhinzugefügten Tintenstriche geparst, sondern es werden auch zusätzliche Tintenstriche in der Nachbarschaft des neuen Striches unter Berücksichtigung des Vorhandenseins der neuen Striche neugeparst (reparsing). Bei einigen Beispielen der Erfindung wird ein bestimmter Bereich um den neuhinzugefügten, gelöschten oder auf andere Weise modifizierten Strich herum beziehungsweise um die neuhinzugefügten, gelöschten oder auf andere Weise modifizierten Striche herum einem Reparsing unterzogen (um sicherzustellen, dass die neuhinzugefügten, gelöschten oder modifizierten Striche im Kontext mit den sie umgebenden Strichen betrachtet werden, und um sicherzustellen, dass die umgebenden Striche im Kontext mit der letzten Modifikation betrachtet werden).
  • Bei einigen Beispielen nehmen die Systeme und Verfahren entsprechend der Erfindung so viel Parsing wie möglich im Hintergrund vor, ohne dass darauf gewartet würde, dass das Divide-Verfahren explizit von dem Clientcode oder dem Anwendungsprogrammcode aufgerufen würde. Wenn beispielsweise entweder die dem InkDivider-Objekt zu eigene Strokes-Eigenschaft 704 gesetzt wird oder Striche der dem InkDivider-Objekt zu eigenen Strokes-Eigenschaft 704 hinzugefügt, aus dieser entfernt oder auf andere Weise modifiziert werden, so erfolgt das Parsen unmittelbar in einem Hintergrund-Thread an einer „Momentaufnahme" der Parsingbaumdatenstruktur, wie allgemein im Zusammenhang mit 4 erläutert worden ist. Wenn daher der Clientcode oder der Anwendungsprogrammcode das Divide-Verfahren tatsächlich aufrufen (beispielsweise am Ende einer Tintensitzung), so muss das InkDivider-Objekt 700 lediglich (a) das Parsen der als Letztes hinzugefügten beziehungsweise gelöschten beziehungsweise modifizierten Striche vornehmen (das heißt, es stellt auf „schmutzige Knoten" ab, so diese vorhanden sind) und (b) sodann das neue InkDivisionResult-Objekt 800 erstellen und ausgeben.
  • B. Verhalten bei Rückkehr zu einer Tintensitzung
  • Erwarten Anwendungen, mehrfach mit Tintensitzungen zu beginnen und diese zu beenden, und „vertrauen" sie der Anwendung Objekte „an", so kann das InkDivider-Objekt 700 aufgerufen werden, um immer dann ein Reparsing an sämtlichen bestehenden Daten vorzunehmen, wenn das Anwendungsprogramm ein Tinte enthaltendes Dokument öffnet. Obwohl dies in einigen Situationen hinnehmbar sein kann, kann die Leistung darunter leiden, und es können Verarbeitungsverzögerungen insbesondere beim Öffnen von Dokumenten, die große Mengen von Tintendaten enthalten, auftreten.
  • Bei wenigstens einigen Beispielen der Erfindung sind zur Verbesserung der Leistung in derartigen Situationen für den Fall, dass bestehende Dokumente neugeöffnet werden, die folgenden Optionen von Nutzen.
  • 1. Das Vorhalten von Schattenobjekten
  • Verlässt ein Anwendungsprogramm eine Tintensitzung und vertraut dem Bildschirm Tintendaten an, so kann es bei wenigstens einigen Beispielen der Erfindung von Nutzen sein, Kopien der Striche in den Strokes-Eigenschaftssammlungen 1004 jedes InkDivisionUnit-Objektes 1000 zu erstellen und zu speichern, anstatt dass die ursprünglichen Striche aus der Sammlung geschnitten werden.
  • Anwendungen dieser Art können derart ausgestaltet werden, dass die Schattentintenobjekte von sämtlichen Strichen wie auch das InkDivider-Objekt 700 und seine Strokes-Eigenschaftssammlung 704 (Striche, die an den Tintenteiler/InkDivider angefügt sind) durchweg eines Parsings bedürfen. Wird das Divide-Verfahren aufgerufen (beispielsweise am Ende einer Tintensitzung), so sollte die Anwendung die Tintenobjekte aus dem Schattenobjekt in ihre jeweiligen Anwendungsobjekte kopieren anstatt schneiden.
  • Wird beliebige Tinte in den Anwendungsobjekten bearbeitet, während man nicht in einer Tintensitzung befindlich ist (so beispielsweise mittels Vornahme von anderen Operationen wie Skalieren oder Rotieren), so kann es für die Anwendung bei diesem Beispiel der Erfindung erforderlich sein, die Striche entsprechend diesem Anwendungsobjekt zu der Schattensammlung hinzuzufügen oder aus dieser zu entfernen. Wenn beispielsweise ein Zeichenobjekt, das in einem Textverarbeitungsprogramm vorgesehen ist, repositioniert wird, so muss das Schattentintenobjekt aktualisiert werden, um dieser Repositionierung gerecht zu werden.
  • Bei Rückkehr zu einer Tintensitzung müssen lediglich neue Striche hinzugefügt oder entfernt werden, bevor das Divide-Verfahren 710 erneut aufgerufen wird. Dies ermöglicht eine inkrementelle Verarbeitung der Tinte zwischen Tintensitzungen.
  • Im Allgemeinen ist zur Unterstützung des inkrementellen Parsings nur ein einzelnes Schattentintenobjekt erforderlich, sodass zwei physische Kopien eines gegebenen Tintenobjektes existieren und synchronisiert werden müssen. Für den Fall eines Zeichenanwendungsprogramms, das die Ergebnisse des InkDivider-Objektes 700 verwendet und getrennte Ink-Objekte für jedes der InkDivisionUnit-Objekte 1000 erstellt (sodass diese einzeln aktiviert und als Zeichen und Elemente bearbeitet werden können), ist ein einzelnes Schattentintenobjekt für jedes Ink-Objekt erforderlich, das das Zeichenanwendungsprogramm erstellt, wobei insgesamt immer noch zwei Kopien der Tinte vorhanden sind.
  • Der Vorteil dieses Verfahrens liegt im Leistungsgewinn bei einer Bewegung zwischen Tintensitzungen. Die Nachteile sind der Speicherfootprint und der Aufwand, der zum Synchronhalten der Sammlungen von Tintenobjekten notwendig ist.
  • 2. Reduktionsheuristik
  • Eine weitere Möglichkeit zur Verbesserung der Parsingleistung bei Rückkehr zu einer Tintensitzung (nach Verlassen der Sitzung) betrifft die Reduzierung des Datensatzes, an dem der Parser arbeiten soll. So ist es beispielsweise möglich, Heuristiken zu implementieren, die bestimmen, ob ein „anvertrautes" Tintenobjekt Nutzen aus dem Reparsing ziehen kann. Als Beispiel zur Darstellung sei der Fall genannt, dass eine Anwendung das Reparsing nur auf „anvertraute" Tintenobjekte beschränkt, die neue Tinte schneiden oder in einem gewissen räumlichen Abstand von der neuen Tinte angeordnet sind. In einigen Fällen kann in Abhängigkeit vom Szenario und/oder der Implementierung auch die z-Abfolge der „anvertrauten" Tintenobjekte ein Faktor für das Reparsing sein.
  • Obwohl diese Vorgehensweise anfänglich einfacher erscheint, als dies bei dem Lösungsansatz über Schattenobjekte gemäß vorstehender Diskussion der Fall ist, muss Sorgfalt darauf verwendet werden sicherzustellen, dass die meisten, wenn nicht alle Stri che, die zu InkDivisionUnits gehören, die der InkDivider modifizieren soll, in den Reduktionsheuristiken enthalten sind. Ein Fehler hierbei könnte zu Inkonsistenzen bei den Parsingergebnissen führen und damit nachteilige Auswirkungen auf einen Endanwender haben.
  • Darüber hinaus ist der interne Parser selbst besser geeignet zu entscheiden, welche Striche miteinbezogen werden sollen, da er über Kenntnisse des Invalidierungsschemas verfügt, das bei der Entscheidung verwendet wird, weiche Striche einem Reparsing unterzogen werden sollen. Ein Invalidierungsschema bedient sich einer radialen Invalidierung, obwohl auch andere Schemen verwendet werden können, ohne den Schutzbereich der Erfindung zu verlassen.
  • VI. Anwendungsprogrammierungsschnittstellen
  • Es sind zahlreiche Anwendungsprogrammierungsschnittstellen (APIs) möglich, um die verschiedenen Fähigkeiten der Tinten-API auszunutzen. Zu den Beispielen hierfür zählen:
    • (a) Ereignisse: Bei einigen Beispielen der Erfindung kann die Beendigung verschiedener Teile einer Parsingoperation (beispielsweise des Divide-Verfahrens 800 gemäß vorstehender Beschreibung) verschiedene Ereignisse auslösen, um beispielsweise den Clientcode zu benachrichtigen, dass wenigstens ein Teil der Parsingoperation beendet ist, dass wenigstens einige Parsingergebnisse zur Verfügung stehen und/oder dass der Parser erneut aufgerufen werden kann. Beispiele für derartige Ereignisse sind unter anderem die ParsingComplete- (Parsing beendet) und DivisionComplete-Ereignisse. Das ParsingComplete-Ereignis informiert bei einigen Beispielen der vorliegenden Erfindung das Anwendungsprogramm darüber, dass die Eingabetintenstriche an ihren jeweiligen Stellen in der Parsingbaumdatenstruktur (beispielsweise derjenigen von 6B) partitioniert worden sind. Der Erkenner hat zu diesem Zeitpunkt bei diesem Beispiel der Erfindung noch keine Verarbeitung an den Tintenstrichdaten vorgenommen, sodass einzelne Wort-für-Wort-Ergebnisse noch nicht zur Verfügung stehen. Das DivisionComplete-Ergebnis kann demgegenüber verwendet werden, um das Anwendungsprogramm davon in Kenntnis zu setzen, dass sämtliche Parsing- und Erkennungsoperationen vollständig sind. Bei dem vorstehend beschriebenen Beispiel wird bei Auslösen eines DivisionComplete-Ereignisses der Anwendungscode in Kenntnis gesetzt, dass ein InkDivisionResult-Objekt 800 unmittelbar zur Verfügung steht und dass das zugehörige Result ByType-Verfahren verwendet werden kann, um InkDivisionUnit-Objekte für die erwünschte Parsinggranularität abzurufen.
    • (b) Faktoid: Faktoide können zur Steuerung der Erkennung verwendet werden, so beispielsweise durch Informieren des Parsers über die erwartete Information oder die erwarteten Muster der einer Erkennung zu unterziehenden Tinte. Ein Faktoid kann beispielsweise einen Parser darüber informieren, dass ein einlaufender String in einem Feld für eine Postleitzahl befindlich ist. Der Parser kann dann nach bekannten fünfstelligen oder neunstelligen Mustern suchen. Zudem kann der Parser vorzugsweise Schriftzeichen als Zahlen erkennen, wenn sie in dem Feld für die Postleitzahl auftreten. So kann er beispielsweise vorzugsweise einen S-förmigen Strich als die Zahl „5" und nicht als den Buchstaben „S" erkennen und/oder vorzugsweise die Zahl „1" erkennen und nicht den Kleinbuchstaben „l" oder den Großbuchstaben „I".
    • (c) Schattenobjekte: Das InkDivider-Objekt 700 kann bei wenigstens einigen Beispielen ein Verfahren bereitstellen, durch das veranlasst wird, ein internes Schattentintenobjekt zu erstellen, auf das es verweist, anstelle eines extern verwalteten Tintenobjektes. Natürlich stellt InkDivider (oder das damit verknüpfte Schattentintenmanagerobjekt) auch Zugriffe auf das Schattentintenobjekt beziehungsweise die Schattentintenobjekte und Verfahren zu deren Verwaltung bereit.
    • (d) Reduktionsheuristiken: Die API des Parsers kann bei wenigstens einigen Beispielen der vorliegenden Erfindung auch derart erweitert werden, dass sie „empfohlene" Datensatzreduktionsmechanismen enthält, sodass sich die Entwickler für den Fall, dass die Anwendungsanforderungen eines Entwicklers kompatibel sind, nicht um die Reduktionsheuristiken kümmern müssen und anstelle dessen den Parser auf Bestleistungen einstellen können.
    • (e) Parserersetzung: Um Drittparteien in die Lage zu versetzen, einen Erkenner oder Parser, den sie benötigen, zu verwenden, kann die Parser-API eine „Plug-in"-Unterstützung für neue Erkenner und Parser enthalten, die von dem Anwender heruntergeladen werden. Diese alternativen Parsermechanismen verfügen natürlich über eigene Objektmodelle, die zu dem RecognizerContext-Objekt der API gemäß vorstehender Beschreibung analog sind.
  • VII. Ein alternatives Tintenteilerobjekt (InkDivider-Objekt)
  • 7 bis 10 zeigen ein Beispiel eines Tintenteilerobjektes und bestimmter Objekte, die damit verknüpft sind, entsprechend einigen Beispielen der vorliegenden Erfindung. 11 zeigt ein weiteres Beispiel eines InkDivider-Objektes 1100. Dieses Sample-Objekt 1100 kann verschiedene Eigenschaften 1102, Verfahren 1104, Enums 1106 und Ereignisse 1108 enthalten, von denen jedes nachstehend detailliert beschrieben wird.
  • Die Ink-Eigenschaft 1110 gibt einen Verweis auf ein Ink-Objekt oder die Striche, die zur Verarbeitung anstehen, aus oder setzt diesen. Die Eigenschaft 1110 ist mit der Strokes-Eigenschaft 704 gemäß vorstehender Beschreibung verwandt. Die Inks-Eigenschaft 1112 gibt eine Sammlung von Tintenobjekten aus, die von dem Divide-Verfahren 1120 (das nachstehend detailliert erläutert wird) verwendet wird. Die DivisionGranularity-Eigenschaft 1114 empfängt die Granularität, mit der die Tinte in der Ink-Eigenschaft 1110 von dem Divide-Verfahren 1120 geparst wird, oder setzt diese. Obwohl ein Standardwert (oder sogar kein Standardwert) verwendet werden kann, ohne den Schutzbereich der Erfindung zu verlassen, verwendet die DivisionGranularity-Eigenschaft 1114 bei einigen Beispielen der vorliegenden Erfindung den Standard einer „Wort"-Granularität. Die DivisionGranularity-Eigenschaft 1114 kann unter Verwendung von DivisionGranularity-Enum 1106 gesetzt werden, das beispielsweise Enums enthalten kann, die „Absätzen", „Linien", „Sätzen", „Worten", „Zeichnungen" und dergleichen mehr entsprechen. Die gewünschte DivisionGranularity kann von dem Clientcode oder dem Anwendungsprogrammcode als Standard oder auf beliebige andere geeignete Weise gesetzt werden.
  • Das Divide-Verfahren 1120 nimmt die Tintenparsingoperation an den Tintenstrichen vor, die in der Ink-Eigenschaft 1110 vorhanden sind, und zwar auf Grundlage der gesetzten DivisionGranularity-Eigenschaft 1114. Das DivisionComplete-Ergebnis 1130 wird ausgelöst, um das Anwendungsprogramm davon in Kenntnis zu setzen, dass das Divide-Verfahren 1120 seine Operation beendet hat. Die geparsten Ergebnisse des Divide-Verfahrens 1120 werden in die Inks-Eigenschaft 1112 geschrieben und können dem Anwendungsprogramm und dem Clientcode von dort aus, wie durch den Pfeil 1132 dargestellt ist, zur Verfügung gestellt werden. Sobald der Clientcode oder der Anwendungsprogrammcode das DivisionComplete-Ereignis 1130 empfängt, besitzt er davon Kenntnis, dass er die Inks-Eigenschaft 1112 und die Ergebnisse der Parsingoperation abrufen kann.
  • In Abhängigkeit von den spezifischen Eigenheiten der Implementierung kann die Inks-Eigenschaft 1112 zugänglich oder auch nicht zugänglich sein, während die Parsingoperation (das heißt das Divide-Verfahren 1120) ausgeführt und die interne Parsingbaumdarstellung der Tinte konstruiert wird.
  • Selbstverständlich kann, ohne den Schutzbereich der Erfindung zu verlassen, ein InkDivider-Objekt 1100 auch Eigenschaften, Verfahren, Enums, Ereignisse und/oder andere Elemente in Kombination mit und/oder zusätzlich zu und/oder anstelle von spezifischen Eigenschaften, Verfahren, Enums und Ereignissen gemäß Darstellung in 11 enthalten.
  • VIII. Schlussbetrachtung
  • Ungeachtet der Tatsache, dass die Erfindung im Zusammenhang mit verschiedenen spezifischen Beispielen beschrieben worden ist, stellen diese spezifischen Beispiele lediglich beispielhafte Ausführungen der Erfindung dar und beschränken diese nicht. Einem Fachmann auf dem einschlägigen Gebiet erschließt sich, dass beispielsweise ungeachtet der Tatsache, dass verschiedene spezifische Namen für Objekte, Eigenschaften, Verfahren, Enums, Ereignisse und dergleichen in der vorliegenden Beschreibung verwendet werden, diese spezifischen Namen lediglich Beispiele für mögliche Namen sind und keine Beschränkung der Erfindung darstellen sollen. Selbstverständlich können andere Namen für Objekte, Eigenschaften, Verfahren, Enums, Ereignisse und dergleichen verwendet werden, ohne den Schutzbereich der Erfindung zu verlassen. Darüber hinaus kann die spezifische Anordnung von Objekten, Eigenschaften, Verfahren, Enums, Ereignissen und dergleichen von den spezifischen Anordnungen gemäß vorliegender Beschreibung und Darstellung abweichen, ohne den Schutzbereich der vorliegenden Erfindung zu verlassen.
  • Darüber hinaus bedeutet der Umstand, dass ein spezifisches Merkmal oder eine spezifische Funktion der Erfindung in Verbindung mit einem spezifischen Beispiel beschrieben wird, nicht, dass dieses Merkmal oder diese Funktion auf die Verwendung mit diesem spezifischen Beispiel der Erfindung beschränkt ist oder dass jedes Beispiel dieses spezifische Merkmal oder diese spezifische Funktion enthalten muss. Vielmehr können, außer dies ist explizit anderweitig spezifiziert, die verschiedenen Merkmale und Funktionen gemäß vorstehender Beschreibung in jedem Beispiel der Erfindung frei verwendet werden. Einem Fachmann auf dem einschlägigen Gebiet erschließt sich, dass Änderungen und Abwandlungen an den als Beispiel angegebenen Ausgestaltungen der Erfindung vorgenommen werden können, ohne den Schutzbereich der Erfindung zu verlassen, der in den beigefügten Ansprüchen niedergelegt ist.

Claims (25)

  1. Verfahren, um Information für ein Anwendungsprogramm (420) verfügbar zu machen, umfassend: Speichern einer Vielzahl von Tintenstrichen (Federstrichen, „ink strokes"); Empfangen einer Teilungsanforderung von dem Anwendungsprogramm; Gruppieren (508516) der gespeicherten Tintenstriche in eine oder mehrere Gruppierungen von Strichen, die zumindest eine erste vorbestimmte Granularität haben, und in eine oder mehrere Gruppierungen von Strichen, die mindestens eine zweite vorbestimmte Granularität haben, in Erwiderung auf die Teilungsanforderung; und Verfügbarmachen für das Anwendungsprogramm von Information betreffend die eine oder mehreren Gruppierungen von Strichen, die mindestens die erste vorbestimmte Granularität haben und Verfügbarmachen für das Anwendungsprogramm von Information betreffend die eine oder mehreren Gruppierungen von Strichen, die mindestens die zweite vorbestimmte Granularität haben, durch eine Anwendungsprogrammierungsschnittstelle (700, 800, 900, 1000, 1100).
  2. Verfahren nach Anspruch 1, weiterhin umfassend: Verändern der gespeicherten Tintenstriche, um einen modifizierten Satz von Tintenstrichen zu erstellen; Empfangen einer zweiten Teilungsanforderung von dem Anwendungsprogramm; und Gruppieren (508516) des modifizierten Satzes von Tintenstrichen in eine oder mehrere Gruppierungen von Strichen, die die erste vorbestimmte Granularität haben, und in eine oder mehrere Gruppierungen von Strichen, die die zweite vorbestimmte Granularität haben, in Erwiderung auf die zweite Teilungsanforderung.
  3. Verfahren nach Anspruch 1, das weiterhin dazu dient, zwischen dem Anwendungsprogramm und einem Tintenteilungsobjekt (700) zu kommunizieren, wobei das Tintenteilungsobjekt die in Gruppen zu teilende Vielzahl von Tintenstrichen speichert, wobei das Abgeben der Teilungsanforderung ein Abgeben der Teilungsanforderung an das Tintenteilungsobjekt umfasst; und wobei das Verfahren weiterhin ein Aufrufen einer Teilungsmethode in Erwiderung auf die Teilungsanforderung umfasst, welche die gespeicherten Tintenstriche in die eine oder mehreren Gruppierungen von Strichen, die mindestens die erste vorbestimmte Granularität haben, gruppiert.
  4. Verfahren nach Anspruch 3, weiterhin umfassend: Informieren des Anwendungsprogramms, wenn die Teilungsmethode abgeschlossen ist.
  5. Verfahren nach Anspruch 3 oder 4, wobei während des Betriebs der Teilungsmethode die Sprache mindestens ein Faktor ist, der beim Gruppieren der gespeicherten Tintenstriche in die eine oder mehreren Gruppierungen von Strichen, die die erste vorbestimmte Granularität haben, berücksichtigt wird.
  6. Verfahren nach einem der Ansprüche 3 bis 5, wobei während des Betriebs der Teilungsmethode die Teilungsmethode zusätzlich die gespeicherten Tintenstriche in die eine oder mehreren Gruppierungen von Strichen gruppiert, die mindestens die zweite vorbestimmte Granularität haben.
  7. Verfahren nach einem der Ansprüche 3 bis 6, weiterhin umfassend: Ändern der gespeicherten Tintenstriche, um einen modifizierten Satz von Tintenstrichen zu erstellen; Empfangen einer zweiten Teilungsanforderung an das Tintenteilungsobjekt von dem Anwendungsprogramm; und Aufrufen der Teilungsmethode in Erwiderung auf die zweite Teilungsanforderung, welche die modifizierten Tintenstriche in eine oder mehrere Gruppierungen von Strichen gruppiert, die die erste vorbestimmte Granularität haben, und in eine oder mehrere Gruppierungen von Strichen, die die zweite vorbestimmte Granularität haben.
  8. Verfahren nach einem der Ansprüche 3 bis 6, weiterhin umfassend: Empfangen von Veränderungen für die gespeicherten Tintenstriche, um einen modifizierten Satz von Tintenstrichen zu erstellen; Abgeben einer zweiten Teilungsanforderung an das Tintenteilungsobjekt; und Aufrufen der Teilungsmethode, welche den modifizierten Satz von Tintenstrichen in eine oder mehrere Gruppierungen von Strichen gruppiert, die die erste vorbestimmte Granularität haben, und in eine oder mehrere Gruppierungen von Strichen, die die zweite vorbestimmte Granularität haben, in Erwiderung auf die zweite Teilungsanforderung.
  9. Verfahren nach einem der Ansprüche 1 bis 8, weiterhin umfassend: Empfangen eines modifizierten Satzes von Tintenstrichen; Empfangen einer zweiten Teilungsanforderung; und Gruppieren des modifizierten Satzes von Tintenstrichen in Erwiderung auf die zweite Teilungsanforderung in eine oder mehrere Gruppierungen von Strichen, die die erste vorbestimmte Granularität haben, und in eine oder mehrere Gruppierungen von Strichen, die die zweite vorbestimmte Granularität haben.
  10. Verfahren nach einem der Ansprüche 1 bis 9, wobei die für das Anwendungsprogramm verfügbar gemachte Information mindestens eine der einen oder mehreren Gruppierungen von Strichen enthält.
  11. Verfahren nach einem der Ansprüche 1 bis 10, wobei die für das Anwendungsprogramm verfügbar gemachte Information Information enthält, die eine Anzahl der einen oder mehreren Gruppierungen von Strichen, die die erste vorbestimmte Granularität haben, angibt.
  12. Verfahren nach einem der Ansprüche 1 bis 11, wobei die für das Anwendungsprogramm verfügbar gemachte Information maschinengenerierten Text enthält, der mindestens einer der einen oder mehreren Gruppierungen von Strichen entspricht.
  13. Verfahren nach einem der Ansprüche 1 bis 3 oder 9, weiterhin umfassend: Informieren des Anwendungsprogramms, wenn die Gruppierung abgeschlossen ist.
  14. Verfahren nach einem der Ansprüche 1 bis 13, wobei zumindest ein Teil der Information bezüglich der einen oder mehreren Gruppierungen von Strichen, die für das Anwendungsprogramm verfügbar gemacht wurde, in einem Tintenteilungsergebnisobjekt (800) gespeichert wird.
  15. Verfahren nach einem der Ansprüche 1 bis 4 oder 9, wobei die Sprache mindestens ein Faktor ist, der beim Gruppieren der gespeicherten Tintenstriche in die eine oder mehreren Gruppierungen von Strichen, die die erste vorbestimmte Granularität haben, berücksichtigt wird.
  16. Verfahren nach einem der Ansprüche 1 bis 15, wobei die erste vorbestimmte Granularität aus der Gruppe ausgewählt wird, die besteht aus: Wort, Linie, Absatz, Satz und Zeichnung.
  17. Verfahren nach einem der Ansprüche 1 bis 16, das weiterhin dazu dient, zwischen einem Parser (422) und dem Anwendungsprogramm zu kommunizieren und weiterhin umfasst: Senden von Daten, die die Vielzahl von Tintenstrichen repräsentieren, von dem Anwendungsprogramm an den Parser; und Bereitstellen von Parsing-Information an den Parser.
  18. Verfahren nach Anspruch 17, wobei das Bereitstellen der Parsing-Information ein Setzen eines Erkennungszeichens (Erkenners, „recognizer") enthält, der beim Gruppieren der Tintenstriche in eine oder mehrere Gruppierungen von Strichen, die mindestens die erste vorbestimmte Granularität haben, verwendet werden soll.
  19. Verfahren nach Anspruch 17 oder 18, wobei das Bereitstellen der Parsing-Information ein Setzen einer Sprache enthält, die beim Gruppieren der Tintenstriche in eine oder mehrere Gruppierungen von Strichen, die mindestens die erste vorbestimmte Granularität haben, benutzt werden soll.
  20. Verfahren nach einem der Ansprüche 17 bis 19, wobei das Bereitstellen der Parsing-Information ein Setzen der ersten vorbestimmten Granularität enthält.
  21. Verfahren nach einem der Ansprüche 17 bis 20, wobei das Bereitstellen der Parsing-Information ein Setzen einer erwarteten Linienhöhe für Textlinien enthält, die in den Tintenstrichen enthalten sind.
  22. Computerlesbares Medium (111, 120, 170, 190, 192) mit computerausführbaren Befehlen zur Durchführung eines Verfahrens, Information für ein Anwendungsprogramm (420) verfügbar zu machen, wobei das Verfahren umfasst: Speichern einer Vielzahl von Tintenstrichen (Federstrichen, „ink strokes"); Empfangen einer Teilungsanfordenung von dem Anwendungsprogramm; Gruppieren (508516) der gespeicherten Tintenstriche in eine oder mehrere Gruppierungen von Strichen, die zumindest eine erste vorbestimmte Granularität haben, und in eine oder mehrere Gruppierungen von Strichen, die mindestens eine zweite vorbestimmte Granularität haben, in Erwiderung auf die Teilungsanforderung; und Verfügbarmachen für das Anwendungsprogramm von Information betreffend die eine oder mehreren Gruppierungen von Strichen, die mindestens die erste vorbestimmte Granularität haben, und Verfügbarmachen für das Anwendungsprogramm von Information betreffend die eine oder mehreren Gruppierungen von Strichen, die mindestens die zweite vorbestimmte Granularität haben, durch eine Anwendungsprogrammierungsschnittstelle (700, 800, 900, 1000, 1100).
  23. Computerlesbares Medium nach Anspruch 22, weiterhin umfassend computerausführbare Befehle, die darauf gespeichert sind, um das Verfahren nach einem der Ansprüche 2 bis 21 durchzuführen.
  24. Computersystem (100, 109, 201, 410), das dazu eingerichtet ist, Information für ein Anwendungsprogramm (420) verfügbar zu machen und umfasst: eine Speichereinrichtung (111, 120, 170, 190, 192) zum Speichern einer Vielzahl von Tintenstrichen; Mittel (420) zum Empfangen einer Teilungsanforderung von dem Anwendungsprogramm; Mittel (422) zum Gruppieren (508516) der gespeicherten Tintenstriche in Erwiderung auf die Teilungsanforderung in eine oder mehrere Gruppierungen von Strichen, die mindestens eine erste vorbestimmte Granularität haben, und in eine oder mehrere Gruppierungen von Strichen, die mindestens eine zweite vorbestimmte Granularität haben; und eine Anwendungsprogrammierungsschnittstelle (700, 800, 900, 1000, 1100) zum Verfügbarmachen von Information betreffend die eine oder mehreren Gruppierungen von Strichen, die mindestens eine erste vorbestimmte Granularität haben, für das Anwendungsprogramm und zum Verfügbarmachen von Information betreffend die eine oder mehreren Gruppierungen von Strichen, die mindestens die zweite vorbestimmte Granularität haben, für das Anwendungsprogramm.
  25. Computersystem nach Anspruch 24, weiterhin umfassend Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 2 bis 21.
DE60314977T 2003-01-21 2003-11-14 Tintensegmentierer und zugehöriges Programm Expired - Lifetime DE60314977T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/347,331 US7218779B2 (en) 2003-01-21 2003-01-21 Ink divider and associated application program interface
US347331 2003-01-21

Publications (2)

Publication Number Publication Date
DE60314977D1 DE60314977D1 (de) 2007-08-30
DE60314977T2 true DE60314977T2 (de) 2007-12-06

Family

ID=32712337

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60329340T Expired - Lifetime DE60329340D1 (de) 2003-01-21 2003-11-14 Tintenteiler und damit verbundenes Anwendungsprogramm
DE60314977T Expired - Lifetime DE60314977T2 (de) 2003-01-21 2003-11-14 Tintensegmentierer und zugehöriges Programm

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE60329340T Expired - Lifetime DE60329340D1 (de) 2003-01-21 2003-11-14 Tintenteiler und damit verbundenes Anwendungsprogramm

Country Status (12)

Country Link
US (1) US7218779B2 (de)
EP (2) EP1811428B1 (de)
JP (1) JP4499407B2 (de)
KR (1) KR100975504B1 (de)
CN (1) CN1517904B (de)
AT (2) ATE367621T1 (de)
AU (2) AU2003266779B2 (de)
BR (1) BR0306010A (de)
CA (1) CA2449073C (de)
DE (2) DE60329340D1 (de)
MX (1) MXPA03011669A (de)
RU (1) RU2358316C2 (de)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US7751623B1 (en) 2002-06-28 2010-07-06 Microsoft Corporation Writing guide for a free-form document editor
US7079713B2 (en) 2002-06-28 2006-07-18 Microsoft Corporation Method and system for displaying and linking ink objects with recognized text and objects
US7218779B2 (en) * 2003-01-21 2007-05-15 Microsoft Corporation Ink divider and associated application program interface
US20040243852A1 (en) * 2003-05-28 2004-12-02 Rosenstein Adam H. Method, system and software for state signing of internet resources
US7454393B2 (en) * 2003-08-06 2008-11-18 Microsoft Corporation Cost-benefit approach to automatically composing answers to questions by extracting information from large unstructured corpora
CN100414559C (zh) * 2003-08-21 2008-08-27 微软公司 电子墨水处理方法和系统
EP1656612B1 (de) * 2003-08-21 2011-10-26 Microsoft Corporation Elektronische tintenverarbeitung
BR0306695A (pt) * 2003-08-21 2005-05-24 Microsoft Corp Processamento de tinta eletrônica
US7616333B2 (en) * 2003-08-21 2009-11-10 Microsoft Corporation Electronic ink processing and application programming interfaces
US7721226B2 (en) 2004-02-18 2010-05-18 Microsoft Corporation Glom widget
US7659890B2 (en) 2004-03-19 2010-02-09 Microsoft Corporation Automatic height adjustment for electronic highlighter pens and mousing devices
US7574048B2 (en) * 2004-09-03 2009-08-11 Microsoft Corporation Freeform digital ink annotation recognition
US7702750B2 (en) 2004-09-29 2010-04-20 Citrix Systems, Inc. System and method for event detection and re-direction over a network using a presentation level protocol
US8069226B2 (en) 2004-09-30 2011-11-29 Citrix Systems, Inc. System and method for data synchronization over a network using a presentation level protocol
US20060085740A1 (en) * 2004-10-20 2006-04-20 Microsoft Corporation Parsing hierarchical lists and outlines
US7518749B2 (en) * 2004-11-12 2009-04-14 Microsoft Corporation Analysis alternates in context trees
US8214754B2 (en) 2005-04-15 2012-07-03 Microsoft Corporation Registration of applications and complimentary features for interactive user interfaces
US7928964B2 (en) 2005-04-22 2011-04-19 Microsoft Corporation Touch input data handling
US20060267958A1 (en) * 2005-04-22 2006-11-30 Microsoft Corporation Touch Input Programmatical Interfaces
US7986307B2 (en) * 2005-04-22 2011-07-26 Microsoft Corporation Mechanism for allowing applications to filter out or opt into tablet input
US7680332B2 (en) * 2005-05-30 2010-03-16 Microsoft Corporation Grouping lines in freeform handwritten text
US7526737B2 (en) * 2005-11-14 2009-04-28 Microsoft Corporation Free form wiper
CN101495990B (zh) * 2005-12-02 2011-09-14 思杰系统有限公司 用于提供从代理服务器到虚拟计算环境的身份验证证明以访问远程资源的方法和设备
US8509563B2 (en) * 2006-02-02 2013-08-13 Microsoft Corporation Generation of documents from images
US8930834B2 (en) 2006-03-20 2015-01-06 Microsoft Corporation Variable orientation user interface
US20080040692A1 (en) * 2006-06-29 2008-02-14 Microsoft Corporation Gesture input
US9304675B2 (en) * 2006-09-06 2016-04-05 Apple Inc. Portable electronic device for instant messaging
US20080195931A1 (en) * 2006-10-27 2008-08-14 Microsoft Corporation Parsing of ink annotations
US8315482B2 (en) * 2007-06-26 2012-11-20 Microsoft Corporation Integrated platform for user input of digital ink
JP4960817B2 (ja) * 2007-09-19 2012-06-27 キヤノン株式会社 画像処理装置、および画像処理方法
US8169436B2 (en) 2008-01-27 2012-05-01 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
US8504624B2 (en) * 2009-09-08 2013-08-06 Ricoh Co., Ltd. Stroke and image aggregation and analytics
US8751844B2 (en) * 2009-09-24 2014-06-10 Citrix Systems, Inc. Systems and methods for attributing an amount of power consumption to a workload
US20130067366A1 (en) * 2011-09-14 2013-03-14 Microsoft Corporation Establishing content navigation direction based on directional user gestures
JP5458196B2 (ja) * 2012-03-02 2014-04-02 株式会社 資生堂 塗布動作評価装置、塗布動作評価方法、及び塗布動作評価プログラム
JP2013246732A (ja) * 2012-05-28 2013-12-09 Toshiba Corp 手書き文書検索装置、方法及びプログラム
KR101337872B1 (ko) * 2013-04-04 2013-12-06 주식회사 디오텍 잉크 텍스트 데이터 편집장치 및 잉크 텍스트 데이터 편집방법
JP6109020B2 (ja) * 2013-09-10 2017-04-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 文書の分割・結合方法、装置、プログラム。
US20150104778A1 (en) * 2013-10-11 2015-04-16 Chi-Chang Liu System and method for computer based mentorship
US20150116283A1 (en) * 2013-10-24 2015-04-30 Livescribe Inc. Paper Strip Presentation Of Grouped Content
EP3072039B1 (de) * 2013-11-19 2019-08-14 Wacom Co., Ltd. Verfahren und system zur erzeugung von tintendaten, darstellung von tintendaten, tintendatenmanipulation und tintendatenkommunikation
JP2015148946A (ja) * 2014-02-06 2015-08-20 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
US10698597B2 (en) * 2014-12-23 2020-06-30 Lenovo (Singapore) Pte. Ltd. Reflow of handwriting content
US9613263B2 (en) * 2015-02-27 2017-04-04 Lenovo (Singapore) Pte. Ltd. Ink stroke grouping based on stroke attributes
US10643067B2 (en) * 2015-10-19 2020-05-05 Myscript System and method of handwriting recognition in diagrams
US10324618B1 (en) * 2016-01-05 2019-06-18 Quirklogic, Inc. System and method for formatting and manipulating digital ink
US10755029B1 (en) 2016-01-05 2020-08-25 Quirklogic, Inc. Evaluating and formatting handwritten input in a cell of a virtual canvas
US20180173688A1 (en) * 2016-12-15 2018-06-21 Myscript System and method for management of handwritten diagram connectors
EP3736677A1 (de) 2019-05-10 2020-11-11 MyScript Verfahren und zugehörige vorrichtung zur auswahl und bearbeitung von handschrifteingabeelementen
EP3754537B1 (de) 2019-06-20 2024-05-22 MyScript Verarbeitung der handschriftlichen texteingabe in einem freien handschreibmodus
EP3772015B1 (de) 2019-07-31 2023-11-08 MyScript Textzeilenextraktion
EP3796145B1 (de) 2019-09-19 2024-07-03 MyScript Verfahren und entsprechende vorrichtung zur auswahl von grafischen objekten
KR20210073196A (ko) * 2019-12-10 2021-06-18 삼성전자주식회사 필기 입력을 처리하는 방법 및 그 장치
US11531454B2 (en) * 2020-12-10 2022-12-20 Microsoft Technology Licensing, Llc Selecting content in ink documents using a hierarchical data structure
US11587346B2 (en) * 2020-12-10 2023-02-21 Microsoft Technology Licensing, Llc Detecting ink gestures based on spatial and image data processing
CN112869352B (zh) * 2021-02-04 2021-12-21 上海工程技术大学 一种插画绘图练习用工作台
US20230315271A1 (en) * 2022-03-18 2023-10-05 Sony Group Corporation Collaborative whiteboard for meetings

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2089784C (en) * 1992-04-15 1996-12-24 William Joseph Anderson Apparatus and method for disambiguating an input stream generated by a stylus-based user interface
US5903668A (en) * 1992-05-27 1999-05-11 Apple Computer, Inc. Method and apparatus for recognizing handwritten words
US5425110A (en) * 1993-04-19 1995-06-13 Xerox Corporation Method and apparatus for automatic language determination of Asian language documents
US5517578A (en) 1993-05-20 1996-05-14 Aha! Software Corporation Method and apparatus for grouping and manipulating electronic representations of handwriting, printing and drawings
JPH09319829A (ja) * 1996-06-03 1997-12-12 Nec Corp オンライン文字認識装置
US5999896A (en) * 1996-06-25 1999-12-07 Microsoft Corporation Method and system for identifying and resolving commonly confused words in a natural language parser
JP3825087B2 (ja) * 1996-06-28 2006-09-20 松下電器産業株式会社 手書きデータ編集装置
US5892843A (en) * 1997-01-21 1999-04-06 Matsushita Electric Industrial Co., Ltd. Title, caption and photo extraction from scanned document images
US5889523A (en) 1997-11-25 1999-03-30 Fuji Xerox Co., Ltd. Method and apparatus for dynamically grouping a plurality of graphic objects
JP2000285251A (ja) * 1999-03-31 2000-10-13 Hitachi Ltd 手書き入力編集システム
US7564995B1 (en) 2000-03-07 2009-07-21 Apple Inc. Method and apparatus for acquiring and organizing ink information in pen-aware computer systems
EP1272918A1 (de) * 2000-04-13 2003-01-08 QUALCOMM Incorporated Verfahren und vorrichtung zur eingabe von zeichen aus mehreren strichen
US7298903B2 (en) * 2001-06-28 2007-11-20 Microsoft Corporation Method and system for separating text and drawings in digital ink
US7050632B2 (en) * 2002-05-14 2006-05-23 Microsoft Corporation Handwriting layout analysis of freeform digital ink input
US20060188162A1 (en) * 2002-10-31 2006-08-24 Microsoft Corporation Common interface for ink trees
US7218779B2 (en) * 2003-01-21 2007-05-15 Microsoft Corporation Ink divider and associated application program interface

Also Published As

Publication number Publication date
BR0306010A (pt) 2005-05-17
AU2003266779A1 (en) 2004-08-05
EP1450294A1 (de) 2004-08-25
RU2358316C2 (ru) 2009-06-10
KR100975504B1 (ko) 2010-08-11
ATE367621T1 (de) 2007-08-15
US7218779B2 (en) 2007-05-15
EP1811428B1 (de) 2009-09-16
JP4499407B2 (ja) 2010-07-07
RU2003136812A (ru) 2005-05-27
DE60329340D1 (de) 2009-10-29
DE60314977D1 (de) 2007-08-30
MXPA03011669A (es) 2004-10-15
KR20040067818A (ko) 2004-07-30
EP1450294B1 (de) 2007-07-18
EP1811428A1 (de) 2007-07-25
CA2449073A1 (en) 2004-07-21
AU2010201687B2 (en) 2011-08-11
CN1517904A (zh) 2004-08-04
US20040141648A1 (en) 2004-07-22
JP2004227564A (ja) 2004-08-12
EP1450294B9 (de) 2008-08-13
ATE443299T1 (de) 2009-10-15
AU2010201687A1 (en) 2010-05-20
AU2003266779B2 (en) 2010-01-28
CN1517904B (zh) 2012-07-04
EP1450294A8 (de) 2006-06-07
CA2449073C (en) 2012-01-24

Similar Documents

Publication Publication Date Title
DE60314977T2 (de) Tintensegmentierer und zugehöriges Programm
DE60316503T2 (de) Klassifikationsanalyse von Freiformeingaben mit digitaler Tinte
DE60308952T2 (de) Verfahren und System zur Anzeige und Verknüpfung von Gegenständen aus elektronischer Tinte mit erkanntem Text und Objekten
DE69428489T2 (de) Verfahren und System zur Erzeugung von für die Datenverarbeitung bedeutenden Verknüpfungen zwischen uninterpretierten Daten in einem auf Graphik basierten Computersystem
DE60314563T2 (de) Überlagerung mit elektronischer Tinte
DE60314940T2 (de) Inkrementales System zur Echtzeitanalyse digitaler Tinte
DE69718959T2 (de) Formloses Formular und papierbasierte Benutzeroberflächen
DE60308944T2 (de) Layoutanalyse eines handschriftlichen Dokuments für Freiform-Eingabe mit digitaler Tinte
DE69434434T2 (de) Verfahren und gerät um text- und bilddaten zu synchronisieren, anzeigen und manipulieren
DE69807483T2 (de) Verfahren zum darstellen von glyphen unter verwendung einer bibliothek von gestaltungsdiensten
DE69511786T2 (de) Zeichenerkennungsgerät und Verfahren zur Steuerung desselben
DE69731418T2 (de) Such- und Wiederauffindungssystem für Dokumente mit Suchverfahren von teilweise passenden, benutzergezeichneten Anmerkungen
DE69328802T2 (de) Vorrichtung und Verfahren zur Identifizierung von Eingabedaten, die von einer Stift-basierten Benutzerschnittstelle erzeugt werden
DE69033079T2 (de) Aufbereitung von Text in einem Bild
DE69400869T2 (de) System zum transkribieren von texteingaben
DE69916225T2 (de) Verfahren und System zur Wartung von Freiformtinteannotationen auf ändernden Ansichten
DE69520123T2 (de) Handschrifterkennungssystem
DE69610478T2 (de) Zeichenerkennungssystembestimmung von abgetasteten und "echtzeit"-handgeschriebenen zeichen
EP0424803B1 (de) Verfahren zur mindestens teilweisen Umsetzung von Bilddaten in Text mit Vorbereitung für nachfolgende Speicherung oder Weiterverarbeitung
DE69324186T2 (de) Datenverwaltungsverfahren und -gerät
DE69332132T2 (de) Anzeige der Wechselwirkung zwischen Anwendungsprogrammen und Daten
DE102012202558A1 (de) Erzeugung einer Abfrage aus dargestellten Textdokumenten unter Anwendung virtueller Magnete
DE112018005616T5 (de) Blockweise extraktion von dokumentmetadaten
DE69426046T2 (de) Auf vom Menschen erzeugten Bildern basierender Datenzugriff
DE10105941A1 (de) System und Verfahren zum automatischen Zuweisen eines Dateinamens zu einem gescannten Dokument

Legal Events

Date Code Title Description
8364 No opposition during term of opposition