DE112009004951T5 - Verfahren und System zur Dokumentenrekonstruktion - Google Patents

Verfahren und System zur Dokumentenrekonstruktion Download PDF

Info

Publication number
DE112009004951T5
DE112009004951T5 DE112009004951T DE112009004951T DE112009004951T5 DE 112009004951 T5 DE112009004951 T5 DE 112009004951T5 DE 112009004951 T DE112009004951 T DE 112009004951T DE 112009004951 T DE112009004951 T DE 112009004951T DE 112009004951 T5 DE112009004951 T5 DE 112009004951T5
Authority
DE
Germany
Prior art keywords
document
computer
readable medium
instructions
elements
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.)
Pending
Application number
DE112009004951T
Other languages
English (en)
Inventor
Philip Andrew Mansfield
Michael Robert Levy
Derek B. Clegg
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of DE112009004951T5 publication Critical patent/DE112009004951T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/117Tagging; Marking up; Designating a block; Setting of attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/163Handling of whitespace
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/413Classification of content, e.g. text, photographs or tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/414Extracting the geometrical structure, e.g. layout tree; Block segmentation, e.g. bounding boxes for graphics or text

Abstract

Verschiedene Ausführungsformen der Erfindung verwenden verschiedene Techniken zur Analyse eines unstrukturierten Dokuments, um ein strukturiertes Dokument zu definieren. Das unstrukturierte Dokument enthält zahlreiche primitive Elemente, aber es enthält keine strukturellen Elemente, die die strukturellen Beziehungen zwischen dem primitiven Elementen und/oder strukturelle Attribute des Dokuments beruhend auf diesen primitiven Elementen spezifizieren. Um das strukturierte Dokumente zu definieren, werden die primitiven Elemente des unstrukturierten Dokuments verwendet, um verschiedene geometrische Attribute des unstrukturierten Dokuments zu identifizieren. Die identifizierten geometrischen Attribute und anderen Attribute der primitiven Elemente werden verwendet, um strukturelle Elemente zu definieren, wie beispielsweise assoziierte primitive Elemente (z. B. Worte, Absätze, zusammen geführte Grafen, usw.), Tabellen, Führungen, Spaltenzwischenräume, usw., sowie um den Lesefluss durch die primitiven und strukturellen Elemente zu definieren. Verschiedene Verfahren zur Verbesserung der Effizienz der geometrischen Analyse und des Dokumentenrekonstruktionsprozesses (z. B. Hierarchische Profilierung, effiziente Clusteranalysetechniken, effiziente Datenstrukturen) werden bereitgestellt.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich auf Dokumentenrekonstruktion. Insbesondere bezieht sich die Erfindung auf Verfahren zur Definition eines strukturierten Dokuments aus einem unstrukturierten Dokument, zur Verbesserung der Effizienz solcher Prozesse und zur Verbesserung der Anzeige von und Interaktion mit strukturierten Dokumenten.
  • HINTERGRUND DER ERFINDUNG
  • Dokumente werden oft als nichts anderes definiert als eine Sammlung primitiver Elemente, die auf einer Seite an bestimmten Stellen gezeichnet werden. Beispielsweise könnte eine PDF(portable document format)-Datei keine Definition einer Struktur aufweisen und stattdessen nichts mehr darstellen als Anweisungen zum Zeichnen von Glyphen, Formen und Bitmaps an verschiedenen Positionen.
  • Ein Benutzer kann ein solches Dokument auf einem Standardmonitor betrachten und die Struktur ableiten. Weil allerdings eine solche Datei nur eine Sammlung primitiver Elemente darstellt, hat eine Anwendung zur Dokumentenbetrachtung keine Kenntnis von der beabsichtigten Struktur des Dokuments. Beispielsweise wird eine Tabelle als eine Folge von Linien und/oder Rechtecken mit Text zwischen den Zeilen dargestellt, die ein menschlicher Betrachter als eine Tabelle erkennt. Dagegen hat die das Dokument darstellende Anwendung keinen Hinweis darauf, dass die Textgruppierungen beruhend auf den Zeilen und Spalten in Beziehung zueinanderstehen, weil das Dokument derartige Information nicht enthält. Gleichermaßen hat die Anwendung keine Hinweise für den Textfluss entlang einer Seite (beispielsweise den Fluss von einer Spalte zur nächsten oder den Fluss um ein eingebildetes Bild herum), oder verschiedene andere wichtige Qualitäten, die durch einen menschlichen Benutzer sofort bestimmt werden können.
  • Wenn ein Benutzer das Dokument nur auf einem Standardmonitor betrachtet, wird dieser Mangel an Kenntnis über die Dokumentenstruktur nicht immer ein Problem sein. Es wäre jedoch oft wertvoll für einen Leser, wenn er in der Lage wäre, auf die Datei zuzugreifen und sie zu editieren, als ob sie ein durch ein Textverarbeitungsprogramm, eine Bildbearbeitungsanwendung usw. erzeugtes Dokument wäre, das eine Struktur und Beziehungen zwischen Elementen aufweist.
  • Daher besteht ein Bedarf für Verfahren, die ein strukturiertes Dokument rekonstruieren können. Gleichermaßen besteht ein Bedarf für Verfahren, die die Vorteile einer solchen rekonstruierten Dokumentenstruktur nutzen können, um die Anzeige des Dokuments zu idealisieren (beispielsweise für Geräte mit kleinen Bildschirm, wo es nicht realistisch ist, das gesamte Dokument auf einmal auf dem Bildschirm anzuzeigen), oder um die intelligente Auswahl von Elementen des Dokuments zu ermöglichen.
  • In der modernen Welt verlagern sich mehr und mehr Computeranwendungen auf handgehaltene Geräte (beispielsweise Mobiltelefone, Medienspieler usw.). Dementsprechend müssen Dokumentenrekonstruktionstechnologien auf solchen Geräten einsetzbar sein, welche im Allgemeinen eine geringere Rechenleistung aufweisen als ein Standardpersonalcomputer. Allerdings setzt die Dokumentenrekonstruktion oft ziemlich rechen- und speicherintensive Prozeduren ein, wie beispielsweise Clusteranalyse, und nutzt einen großen Speicherumfang. Daher besteht ein zusätzlicher Bedarf für Technologien, die eine größere Effizienz bei der Dokumentenrekonstruktion im Allgemeinen und insbesondere bei der Clusteranalyse ermöglichen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Verschiedene Ausführungsformen der Erfindung verwenden verschiedene Technologien zur Analyse eines unstrukturierten Dokuments, um ein strukturiertes Dokument zu definieren. In einigen Ausführungsformen enthält das unstrukturierte Dokument zahlreiche primitive Elemente, aber es enthält keine strukturellen Elemente, die die strukturellen Beziehungen zwischen den primitiven Elementen und/oder strukturelle Attribute des Dokuments beruhend auf diesen primitiven Elementen spezifizieren. Demgemäß verwenden einige Ausführungsformen zu Definition des strukturierten Dokuments die primitiven Elemente des unstrukturierten Dokuments, um verschiedene geometrische Attribute des unstrukturierten Dokuments zu identifizieren, und dann die identifizierten geometrischen Attribute sowie andere Attribute der primitiven Elemente einzusetzen, um strukturelle Elemente, wie beispielsweise assoziierte primitive Elemente (z. B. Worte, Absätze, eingefügte Graphen usw.), Tabellen, Orientierungshilfen, Spaltenzwischenräume usw. zu definieren, sowie auch den Lesefluss durch die primitiven und strukturellen Elemente zu bestimmen.
  • Wie schon erwähnt, verwenden einige Ausführungsformen primitive Elemente, um verschiedene geometrische Attribute zu identifizieren. Zum Beispiel stellen einige Ausführungsformen ein Verfahren bereit, das Begrenzungen zwischen Mengen primitiver Elemente und durch die Begrenzungen begrenzte Bereiche identifiziert. Das Verfahren verwendet die identifizierten Bereiche, um strukturelle Elemente für das Dokument zu definieren, und definiert ein strukturiertes Dokument beruhend auf den primitiven Elementen und den strukturellen Elementen. In einigen Ausführungsformen, umfasst das Definieren struktureller Elemente die separate Analyse jedes Bereiches, um Beziehungen zwischen Mengen primitiver Elemente in dem bestimmten Bereich zu erzeugen. In einigen Ausführungsformen umfasst das Definieren des strukturierten Dokuments die Identifikation hierarchischer Beziehungen zwischen den identifizierten Bereichen.
  • Einige Ausführungsformen stellen ein Verfahren bereit, dass ein unstrukturiertes Dokument analysiert, welches zahlreiche Worte enthält, wobei jedes Wort eine assoziierte Menge von Glyphen darstellt und jede Glyphe Positionskoordinaten aufweist. Das Verfahren identifiziert Cluster von Positionswerten, wobei jeder Positionswert mit einem Wort assoziiert ist, eine Basis zur Ausrichtung der Worte darstellt und von den Positionskoordinaten der Glyphen dieses Wortes abgeleitet ist. Beruhend auf den identifizierten Clustern von Positionswerten definiert das Verfahren für die Worte einen Satz von Begrenzungselementen, die einen Satz von Ausrichtungsführungen für die Worte identifizieren. Das Verfahren definiert ein strukturiertes Dokument beruhend auf den Glyphen und den definierten Begrenzungselementen. Einige Ausführungsformen definieren auch wenigstens einen Leerraum zwischen einem Paar von Begrenzungselementen und definieren des Weiteren das strukturierte Dokument beruhend auf dem Leerraum. Einige Ausführungsformen identifizieren die Cluster von Positionswerten durch Dichteclusterung.
  • Einige Ausführungsformen verwenden die identifizierten geometrischen Attribute sowie andere Attribute der primitiven Elemente, um strukturelle Elemente zu definieren und auch den Lesefluss durch die primitiven und strukturellen Elemente zu bestimmen. Beispielsweise stellen einige Ausführungsformen ein Verfahren bereit, das ein unstrukturiertes Dokument analysiert, welches zahlreiche Glyphen enthält, von denen jede eine Position in dem unstrukturierten Dokument aufweist. Beruhend auf den Positionen der Glyphen erzeugt das Verfahren Assoziationen zwischen verschiedenen Mengen von Glyphen um verschiedene Mengen von Glyphen als unterschiedliche Worte zu identifizieren. Das Verfahren erzeugt Assoziationen zwischen verschiedenen Mengen von Worten, um verschiedene Mengen von Worten als unterschiedliche Absätze zu identifizieren. Das Verfahren definiert Assoziationen zwischen Absätzen, die nicht kontinuierlich sind, um eine Lesereihenfolge durch die Absätze zu bestimmen. Um Assoziationen zwischen verschiedenen Mengen von Worten zu erzeugen, um so unterschiedliche Mengen von Worten als unterschiedliche Absätze zu identifizieren, erzeugen einige Ausführungsformen Assoziationen zwischen verschiedenen Mengen von Worten in Form verschiedener Textzeilen und erzeugen Assoziationen zwischen verschiedenen Mengen von Textzeilen als unterschiedliche Absätze.
  • Einige Ausführungsformen stellen ein Verfahren bereit, das Begrenzungen zwischen Mengen von Glyphen identifiziert und identifiziert, dass mehrere der Begrenzungen eine Tabelle bilden. Das Verfahren definiert ein tabellenartiges strukturelles Element beruhend auf der Tabelle, welche mehrere in einer Mehrzahl von Zeilen und Spalten angeordnete Zellen enthält, wobei jede Zelle eine assoziierte Menge von Glyphen enthält. Einige Ausführungsformen identifizieren, dass die Begrenzungen eine Tabelle bilden, indem sie eine Menge von Begrenzungen identifizieren, welche eine größere rechtwinklige Form bilden, sowie verschiedene rechtwinklige Formen, die innerhalb der größeren rechtwinkligen Form enthalten sind. In einigen Ausführungsformen werden zumindest einige der identifizierten Begrenzungen beruhend auf den Positionen der assoziierten Mengen von Glyphen erschlossen, die die Zellen formen.
  • Einige Ausführungsformen stellen ein Verfahren zur Analyse eines unstrukturierten Dokuments bereit, welches zahlreiche primitive Grafikelemente enthält von denen jedes als ein einzelnes Objekt definiert ist. Das Dokument weist eine Zeichenreihenfolge auf, die die Reihenfolge angibt, in welcher die primitiven Grafikelemente gezeichnet werden. Das Verfahren identifiziert Positionsbeziehungen zwischen aufeinanderfolgenden primitiven Grafikelementen in der Zeichenreihenfolge. Beruhend auf den Positionsbeziehungen definiert das Verfahren ein einziges strukturelles Grafikelement aus mehreren primitiven Grafikelementen. Einige Ausführungsformen identifizieren eine Positionsbeziehung zwischen einem ersten und einem zweiten primitiven Grafikelement, die in der Zeichenreihenfolge aufeinanderfolgen, durch Berechnung einer Größe eines strukturellen Grafikelements, das das erste und das zweite primitive Grafikelement umfasst.
  • Einige Ausführungsformen stellen Verfahren zur Erhöhung der Effizienz der geometrischen Analyse und der Dokumentenrekonstruktion bereit. Beispielsweise liefern einige Ausführungsformen ein Verfahren, das einen Standardsatz von Dokumentenrekonstruktionsoperationen zur Definition eines strukturierten Dokuments bereitstellt, welches eine Mehrzahl primitiver Elemente umfasst. Das Verfahren stellt einen hierarchischen Satz von Profilen bereit, wobei jedes Profil (i) einen Satz von Dokumentenrekonstruktionsergebnissen enthält, sowie (ii) Ergebnisse für die Modifikation der Dokumentenrekonstruktionsoperationen, wenn Dokumentenrekonstruktionszwischenergebnisse mit den potentiellen Dokumentenrekonstruktionsergebnissen für das Profil übereinstimmen. Anweisungen von einem Profil auf einer niedrigeren Ebene in der Hierarchie überschreiben Anweisungen von einem Profil auf einer höheren Ebene. In einigen Ausführungsformen umfassen die Anweisungen für ein bestimmtes Profil eine Untermenge von Profilen auf einer niedrigeren Ebene des hierarchischen Satzes von Profilen, die geprüft werden sollten, wenn die Dokumentenrekonstruktionszwischenergebnisse mit den potentiellen Dokumentenrekonstruktionsergebnissen für das Profil übereinstimmen.
  • Sobald ein strukturiertes Dokument definiert ist, stellen einige Ausführungsformen verschiedene Techniken zur Idealisierung der Benutzerinteraktion mit dem strukturierten Dokument bereit. Beispielsweise liefern einige Ausführungsformen ein Verfahren zur Anzeige eines strukturierten Dokuments, das eine Hierarchie struktureller Elemente enthält und das durch Analyse eines unstrukturierten Dokuments generiert wurde. Das Verfahren zeigt das strukturierte Dokument auf dem Gerät (beispielsweise einem Gerät mit kleinem Bildschirm) an. Das Verfahren empfängt eine interessierende Position in dem Dokument und identifiziert beruhend auf der interessierenden Position ein strukturelles Element innerhalb der Hierarchie als einen interessierenden Bereich. Das Verfahren modifiziert die Anzeige des Dokuments, um den identifizierten interessierenden Bereich zu markieren. Einige Ausführungsformen identifizieren das strukturelle Element durch Identifikation eines strukturellen Elements auf der niedrigsten Ebene der Hierarchie, welche die interessierende Position enthält und durch Identifikation struktureller Elemente auf höheren Ebenen der Hierarchie, welche das auf der niedrigsten Ebene identifizierte strukturelle Element enthalten, bis ein als ein interessierender Bereich qualifiziertes strukturelles Element erreicht wird. Einige Ausführungsformen empfangen auch eine Eingabe, um sich aus dem interessierenden Bereich zu bewegen und die Anzeige des Dokuments zu modifizieren, um einen strukturell in Beziehung stehenden interessierenden Bereich zu markieren.
  • Einige Ausführungsformen stellen ein Verfahren zur Definition einer Textauswahl in einem unstrukturierten Dokument bereit, das zahlreiche Glyphen enthält. Das Verfahren identifiziert assoziierte Mengen von Glyphen sowie eine Lesereihenfolge, die einen Lesefluss durch die Glyphen spezifiziert. Das Verfahren zeigt das Dokument an und empfängt einen Startpunkt sowie einen Endpunkt für eine Textauswahl innerhalb des angezeigten Dokuments. Das Verfahren definiert eine Auswahl von Text vom Startpunkt zum Endpunkt durch Verwendung der identifizierten Mengen von Glyphen und dem beabsichtigten Lesefluss. In einigen Ausführungsformen sind die assoziierten Mengen von Glyphen Absätze und die Lesereihenfolge spezifiziert einen Lesefluss von einem ersten Absatz zu einem zweiten Absatz, die nicht unmittelbar aufeinanderfolgen.
  • Einige Ausführungsformen stellen Verfahren bereit, die die Effizienz der Prozesse zur geometrischen Analyse und zur Dokumentenrekonstruktion verbessern. Einige Ausführungsformen verwenden Clusteranalyse für die geometrische Analyse und/oder Dokumentenrekonstruktion, wobei es sich um einen rechenintensiven Prozess handeln kann. Dementsprechend stellen einige Ausführungsformen ein Verfahren bereit, das für ein unstrukturiertes Dokument, welches zahlreiche primitive Elemente enthält, die durch ihre Position in dem Dokument definiert sind, eine Struktur definiert. Das Verfahren identifiziert eine paarweise Gruppierung von zueinander nächsten primitiven Elementen und sortiert die paarweise primitiven Elemente beruhend auf einer Reihenfolge von den engsten zu den weitesten Paaren. Das Verfahren speichert einen einzigen Wert, der identifiziert, welche der paarweise primitiven Elemente ausreichend beabstandet sind, um eine Partition zu bilden. Das Verfahren verwendet den gespeicherten Wert, um die Partitionen zu identifizieren und zu analysieren, um die strukturellen Elemente für das Dokument zu definieren.
  • Einige Ausführungsformen stellen auch Verfahren zur Verwendung effizienter Datenstrukturen bereit. Beispielsweise liefern einige Ausführungsformen mehrere verschiedene Prozesse zu Analyse und Manipulation eines unstrukturierten Dokuments, welches zahlreiche primitive Elemente enthält. Einige Ausführungsformen stellen auch einen Speicher für mit den primitiven Elementen assoziierte Daten bereit. Zumindest einige der Daten werden in einem von dem der Prozesse separierten Speicherbereich gespeichert und durch wenigstens zwei verschiedene Prozesse gemeinsam benutzt. Die Prozesse greifen auf die Daten durch Verwendung von Referenzen auf die Daten zu. Die Daten werden durch die Prozesse nicht repliziert.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die neuen Merkmale der Erfindung sind in den anhängenden Ansprüchen angegeben. Allerdings werden zum Zwecke der Erklärung mehrere Ausführungsformen der Erfindung in den nachfolgenden Figuren angegeben.
  • 1 illustriert den übergreifenden Rekonstruktionsfluss einiger Ausführungsformen.
  • 2 illustriert eine Seite eines Dokuments und diverse Ergebnisse aus der geometrischen Analyse und Dokumentenrekonstruktion für einige in Bezug auf die Seite ausgeführte Ausführungsformen.
  • 3 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Identifikation von Bereichen einer Seite eines Dokuments und zur Erzeugung eines Bereichsbaums für die Seite in einigen Ausführungsformen.
  • 4 illustriert eine Seite und eine Abfolge für die Identifikation von Bereichen auf der Seite und die Erzeugung eines Bereichsbaums für die Seite in einigen Ausführungsformen.
  • 5 illustriert eine Seite eines Dokuments, das mehrere Bereiche enthält.
  • 6 illustriert eine Seite, die Grafik für Bereichsgrenzen und verschiedene Bereiche einschließlich Rotationsgruppen enthält.
  • 7 illustriert gemäß einiger Ausführungsformen einen Bereichsbaum für die Seite aus 5.
  • 8 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Definition von Rotationsgruppen auf einer Seite.
  • 9 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Identifikation von Bereichsgrenzen und Überschneidungen.
  • 10 illustriert eine Seite, die verschiedene Grafiken und Text enthält.
  • 11 illustriert die Bereichsgrenzenintervalle und Überschneidungen für die Seite aus 10,
  • 12 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Identifikation von Bereichen.
  • 13 und 14 illustrieren die Anwendung des Prozesses aus 12 zur Identifikation der Bereiche der Seite aus 10.
  • 15 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Erzeugung eines Bereichsbaums.
  • 16 illustriert die Bereiche der Seite aus 10 der Größe nach sortiert und in einem Knotengraphen angeordnet.
  • 17 illustriert konzeptionell die Softwarearchitektur einer Bereichsanalyseanwendung einiger Ausführungsformen.
  • 18 illustriert einen übergreifenden Prozess einiger Ausführungsformen zur Identifikation von Führungen und Spaltenzwischenräumen in einem Dokument.
  • 19 illustriert eine Seite mit zwei Textspalten und die für die Seite identifizierten Führungen und Spaltenzwischenräume.
  • 20 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Durchführung einer Dichteclusterung.
  • 21 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Bestimmung linker Ausrichtungsführungen.
  • 22 bis 24 illustrieren die Identifikation einer linken Ausrichtungsführung auf einer Seite.
  • 25 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Bestimmung rechter Ausrichtungsführungen.
  • 26 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Bestimmung von Spaltenzwischenräumen für einen Bereich eines Dokuments.
  • 27 bis 29 illustrieren die Identifikation eines Spaltenzwischenraums auf einer Seite.
  • 30 illustriert konzeptionell die Softwarearchitektur einer Anwendung zur Analyse von Führungen und Spaltenzwischenräumen einiger Ausführungsformen.
  • 31 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Bestimmung des Layouts und des Flusses eines Dokuments.
  • 32 illustriert eine Abfolge für die Bestimmung des Layouts und der Flussinformation für eine Seite eines Dokuments in einigen Ausführungsformen.
  • 33 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Identifikation und Zusammenführung von Textzeilen.
  • 34 illustriert eine Seite mit sechs Gruppen überlappender Textzeilen.
  • 35 illustriert die Zusammenführung der Gruppen von Textzeilen aus 34.
  • 36 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Durchführung einer Differenzclusterung.
  • 37 illustriert ein Beispiel für eine Differenzclusterung.
  • 38 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Aufteilung von Textzeilen.
  • 39 illustriert eine Abfolge, die das Erkennen wo Textzeilen auf einer Seite aufzuteilen sind, zeigt.
  • 40 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Gruppierung von Textzeilen in Absätze.
  • 41 illustriert die Identifikation von Absätzen auf einer Seite.
  • 42 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Identifikation von Spalten und Layouts in einem Teil eines Dokuments.
  • 43 und 44 illustrieren Absätze auf zwei verschiedenen Seiten.
  • 45 und 46 illustrieren die Erzeugung von Flussgraphen für die Seiten aus den 43 und 44.
  • 47 illustriert konzeptionell die Softwarearchitektur einer Anwendung zur Layout- und Flussanalyse in einigen Ausführungsformen.
  • 48 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Identifikation von Tabellen in einem Teil eines Dokuments.
  • 49 illustriert ein Beispiel einer Tabelle mit vollständigen Grenzen.
  • 50 illustriert ein Beispiel einer Tabelle mit verbundenen aber unvollständigen Grenzen.
  • 51 illustriert ein Beispiel einer Tabelle ohne Grenzen.
  • 52 illustriert ein Beispiel einer Tabelle mit unterbrochenen Grenzen.
  • 53 illustriert konzeptionell einen Prozess einiger Ausführungsformen zu Identifikation von Tabellen, die einen vollständigen Satz von Grenzen aufweisen, und zur Definition der Zellen, Zeilen und Spalten der identifizierten Tabellen.
  • 54 illustriert eine Seite, die eine Tabelle mit vollständigen Grenzen enthält.
  • 55 illustriert konzeptionell einen Prozess einiger Ausführungsformen zu Identifikation und Rekonstruktion von Tabellen, die einen verbundenen Satz von Grenzen aufweisen.
  • 56 illustriert eine Abfolge, die die Identifikation und die Rekonstruktion einer Tabelle mit einem verbundenen Satz von Grenzen zeigt.
  • 57 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Identifikation und Rekonstruktion von Tabellen ohne Grenzen oder mit unterbrochenen Grenzen.
  • 58 bis 60 illustrieren die Anwendung des Prozesses aus 57 auf eine Seite zu Identifikation einer Tabelle mit unterbrochenen Grenzen.
  • 61 illustriert konzeptionell die Softwarearchitektur einer Anwendung zur Tabellenidentifikation in einigen Ausführungsformen.
  • 62 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Verbindung einzelner Graphen in zusammengeführte Graphen.
  • 63 illustriert die Zusammenführung von Graphen auf einer Seite.
  • 64 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Durchführung von Grenzclusterung zur Identifizierung von Graphen, die zusammengeführt werden sollten sowie zur Zusammenführung dieser Graphen.
  • 65 illustriert zwei Seiten, von denen jede zwei grafische Objekte aufweist, für die die Streuung berechnet wird.
  • 66 illustriert einen Prozess einiger Ausführungsformen zur Verarbeitung eines Clusters in Untersequenzen.
  • 67 illustriert konzeptionell eine Anwendung zur Zusammenführung von Graphen einiger Ausführungsformen zur Identifikation von Graphen, die zusammengeführt werden sollten, und zur Assoziation der Graphen zu einer Grafik.
  • 68 illustriert konzeptionell einen Prozess einiger Ausführungsformen, der Profile verwendet, um die Verarbeitung von Inhalten dem Typ der Inhalte anzupassen.
  • 69 illustriert ein Dokument, das dem Profil eines #10 Kuverts entspricht.
  • 70 illustriert einen hierarchischen Satz von Profilen einiger Ausführungsformen.
  • 71 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Verarbeitung von Inhalten gemäß hierarchischer Profile.
  • 72 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Durchführung einer Dokumentenrekonstruktion unter Verwendung hierarchischer Profile.
  • 73 illustriert, wie einige Ausführungsformen das aktive Profil mit der niedrigsten Ebene identifizieren, das ein bestimmtes Verfahren implementiert.
  • 74 bis 77 illustrieren einen beispielhaften Seitenprofilzuordnungsprozess einiger Ausführungsformen für vier verschiedene Seiten.
  • 78 illustriert konzeptionell einen Prozess in einigen Ausführungsformen zur Anzeige eines Dokuments beruhend auf einer Identifikation einer interessierenden Position.
  • 79 illustriert eine Abfolge auf einem Gerät mit kleinem Bildschirm, auf dem eine interessierende Position ausgewählt und die Anzeige dementsprechend modifiziert wird, gemäß einiger Ausführungsformen der Erfindung.
  • 80 illustriert einen ersten detaillierten Prozess einiger Ausführungsformen zu Identifikation eines interessierenden Bereichs und zur Anwendung von Transformationen um den interessierenden Bereich auf einer Anzeigevorrichtung zu zeichnen.
  • 81 illustriert einen zweiten detaillierten Prozess einiger Ausführungsformen zur Identifikation eines interessierenden Bereichs und zur Anwendung von Transformationen, um den interessierenden Bereich auf einer Anzeigevorrichtung zu zeichnen.
  • 82 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Anzeige eines semantisch rekonstruierten Dokuments.
  • 83 illustriert eine Anwendung des Prozesses aus 82 in einigen Ausführungsformen.
  • 84 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Navigation zwischen Bereichen in einem semantisch rekonstruierten Dokument.
  • 85 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Modifikation eines Layouts eines semantisch rekonstruierten Dokuments für ein Gerät mit kleinem Bildschirm.
  • 86 illustriert eine Seite eines Dokuments, wie es auf einem großen Bildschirm angezeigt würde und die Anzeige eines Teils der Seite auf einem Gerät mit kleinem Bildschirm gemäß einiger Ausführungsformen der Erfindung.
  • 87 illustriert konzeptionell einen Prozess einiger Ausführungsformen zu Bestimmung einer Textauswahl in einem semantisch rekonstruierten Dokument.
  • 88 illustriert eine Abfolge für die Auswahl von Text auf einer Seite eines semantisch rekonstruierten Dokuments gemäß einiger Ausführungsform.
  • 89 illustriert einen ersten detaillierten Prozess einiger Ausführungsformen zur Definition einer Textauswahl in einem semantisch rekonstruierten Dokument.
  • 90 illustriert einen ersten Startpunkts und Endpunkts für eine Auswahl auf einer Seite eines semantisch rekonstruierten Dokuments.
  • 91 illustriert eine durch die Start- und Endpunkte aus 90 definierte Auswahl gemäß dem Prozess aus 89.
  • 92 illustriert einen zweiten Startpunkt und Endpunkt für eine Auswahl auf einer Seite eines semantisch rekonstruierten Dokuments.
  • 93 illustriert eine durch die Start- und Endpunkte aus 92 definierte Auswahl gemäß dem Prozess aus 89.
  • 94 illustriert einen zweiten detaillierten Prozess einiger Ausführungsformen zu Definition einer Textauswahl in einem semantisch rekonstruierten Dokument.
  • 95 illustriert eine durch die Start- und Endpunkte aus 90 definierte Auswahl gemäß dem Prozess aus 94.
  • 96 illustriert eine durch die Start- und Endpunkte aus 92 definierte Auswahl gemäß dem Prozess aus 94.
  • 97 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur semantischen Rekonstruktion eines Dokuments auf einem Gerät mit limitierten Ressourcen unter Verwendung von Clusteranalyse.
  • 98 illustriert eine Abfolge in einigen Ausführungsformen, durch die ein Dokument semantisch rekonstruiert wird.
  • 99 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Partitionierung eines Datensatzes durch Verwendung indirekt sortierter Felder.
  • 100 illustriert die Partitionierung eines Datensatzes mit neun Datenelementen.
  • 101 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Durchführung von Clusteranalysen mit mehreren gleichzeitigen Entfernungsskalen.
  • 102 illustriert konzeptionell die Softwarearchitektur einer Clusteranalyseanwendung einiger Ausführungsformen zur Durchführung von Clusteranalysen.
  • 103 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur effizienten Rekonstruktion eines Dokuments.
  • 104 illustriert eine Abfolge, mit der ein Dokument gemäß dem Prozess aus 103 aufgegliedert und analysiert wird.
  • 105 illustriert die Art und Weise, in der gemäß einiger Ausführungsformen der Erfindung Daten gespeichert werden.
  • 106 illustriert konzeptionell ein API, das Dokumentenrekonstruktionsprozesse unter Verwendung effizienter Speicherverwaltungstechnologien durchführt.
  • 107 illustriert konzeptionell die Softwarearchitektur einer Anwendung einiger Ausführungsformen zu Rekonstruktion, Anzeige und Interaktion mit einem Dokument.
  • 108 illustriert konzeptionell einen Prozess einiger Ausführungsformen zur Herstellung eines computerlesbaren Mediums, das ein Computerprogramm wie die 107 beschriebene Anwendung speichert.
  • 109 illustriert konzeptionell ein Computersystem, mit dem einige Ausführungsformen der Erfindung implementiert sind.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • In der nachfolgenden Beschreibung werden zahlreiche Details zum Zwecke der Erklärung angegeben. Der Fachmann wird jedoch erkennen, dass die Erfindung ohne die Verwendung dieser spezifischen Details praktiziert werden kann. Beispielsweise werden die nachfolgend beschriebenen Techniken wohl in einigen Fällen als in einer bestimmten Reihenfolge stattindend beschrieben. Allerdings werden die Techniken in einigen Ausführungsformen in einer von der beschriebenen abweichenden Reihenfolge ausgeführt. Des Weiteren wird der Fachmann erkennen, dass während die Techniken für Sprachen beschrieben werden, die von links nach rechts gelesen werden (beispielsweise Englisch) die Techniken einfach für Rechts-nach-links-Sprachen angepasst werden können.
  • I. Überblick
  • Einige Ausführungsformen der Erfindung stellen neue Verfahren zur Definition eines strukturierten Dokuments ausgehend von einem unstrukturierten Dokument bereit. In einigen Ausführungsformen ist ein unstrukturiertes Dokument ein Dokument, das so definiert ist, dass es ausschließlich primitive Elemente wie beispielsweise Farmen (z. B. Vektorgrafik), Bilder (z. B. Bitmaps), und Glyphen enthält. In einigen Ausführungsformen ist eine Glyphe eine visuelle Darstellung eines Textzeichens (z. B. eines Buchstabens, einer Zahl, eines Satzzeichens oder eines anderen Zeilenzeichens), eine Sammlung von Zeichen oder ein Teil eines Zeichens. In einigen Ausführungsformen kann eine Glyphe eine vorspezifizierte Sammlung von skalierbaren Vektorgrafiken einschließlich von Pfaddefinitionen für die Kontur der Glyphe sein. In einigen Ausführungsformen kann eine Glyphe ein vorspezifiziertes Rasterbild oder eine Sammlung von für verschiedene Größen optimierten Rasterbildern sein. Als ein Beispiel könnte das Zeichen „i” durch eine einzige Glyphe dargestellt werden, die ein Pfad mit zwei Unterpfaden ist, einen für die Kontur des Punktes und einen für die Kontur des unteren Teils. Als ein anderes Beispiel wird die Kombination dreier Zeichen „ffi”, wenn aufeinanderfolgend auftretend, manchmal durch eine einzige als Ligatur bezeichnete Glyphe dargestellt, die in einer leicht unterschiedlichen Weise als die einzelnen auftretenden Zeichen gezeichnet wird. Als ein drittes Beispiel werden akzentuierte Zeichen, wie beispielsweise „ê” manchmal durch mehr als eine Glyphe dargestellt (z. B. eine für das Zeichen und eine für den Akzent) und manchmal werden sie durch eine einzige Glyphe dargestellt (Kombinieren des Akzents mit dem Zeichen).
  • In einigen Ausführungsformen spezifiziert das unstrukturierte Dokument keinerlei Beziehung oder Assoziation zwischen den primitiven Elementen, während es in anderen Ausführungsformen ein Minimum solcher Beziehungen und Assoziationen spezifiziert. In einigen Ausführungsformen kann das unstrukturierte Dokument einen gewissen Grad von Struktur aufweisen, aber die Struktur ist nicht erkennbar oder ihr wird nicht vertraut. In einigen Ausführungsformen hat das unstrukturierte Dokument eine unbekannte Struktur oder es wird angenommen, dass es unstrukturiert ist.
  • Einige Ausführungsformen erzeugen aus dem unstrukturierten Dokument ein strukturiertes Dokument, das Assoziationen und Beziehungen zwischen dem primitiven Elementen, Gruppierungen und Reihenfolgen der primitiven Elemente sowie Eigenschaften der Gruppen aus primitiven Elementen enthält. Beispielsweise verwenden einige Ausführungsformen die primitiven Elemente des unstrukturierten Dokuments, um mehrere geometrische Attribute des unstrukturierten Dokuments zu identifizieren und diese identifizierten geometrischen Attribute (zusammen mit anderen Attributen der primitiven Elemente) zu verwenden, um strukturelle Elemente zu definieren. Strukturelle Elemente einiger Ausführungsformen umfassen assoziierte primitive Elemente (z. B.
  • Wörter, Absätze, zusammengeführte Graphen, usw.), Führungen, Spaltenzwischenräume, Textfluss, Tabellen, usw.. Diese strukturellen Elemente stehen in einigen Ausführungsformen in hierarchischer Weise in Beziehung zueinander (z. B. ein Absatz enthält Textzeilen, eine Textzeile enthält Wörter und ein Wort enthält primitive Glyphen). In einigen Ausführungsformen dient das strukturierte Dokument zweierlei Zwecken – es identifiziert assoziierte Elemente (z. B. die Elemente, aus denen eine Tabelle besteht) und es identifiziert eine Flussreihenfolge durch die primitiven Elemente (z. B. die Reihenfolge, in der ein Mensch erwartungsgemäß die primitiven Elemente des Dokuments liest).
  • Nach dem Empfang eines unstrukturierten Dokuments wird das Dokument in einigen Ausführungsformen zunächst in seine Bestandselemente aufgegliedert (z. B. primitive Elemente und ihre assoziierte Information wie beispielsweise Koordinatenpositionen, Zeichenreihenfolge usw.). Beispielsweise könnte ein großer Textblock in dem unstrukturierten Dokument als eine Anzahl von Zeichenglyphen definiert sein, wobei jede x- und y-Koordinaten hat, an denen ihr Anker auf einer bestimmten Seite zusammen mit einem Skalenfaktor angeordnet ist, welcher die Größe jeder Glyphe bestimmt (und jeglicher anderer linearer Transformation, die anzuwenden ist), wobei jede Glyphe auf der Seite in einer bestimmten Reihenfolge zu zeichnen ist (relevant für die Zusammenführungsoperation, die ausgeführt wird, wenn eine Glyphe eine andere überlappt). Einige Ausführungsformen führen dann eine geometrische Analyse in Bezug auf die primitiven Elemente aus, um geometrische Attribute des Dokuments zu definieren. Beispielsweise analysieren einige Ausführungsformen die primitiven Elemente, um Begrenzungen zwischen primitiven Elementen und durch die Begrenzungen eingeschlossene Bereiche zu identifizieren.
  • 1 illustriert den übergreifenden Fluss für einige Ausführungsformen. Wie gezeigt wird ein Dokument 100 zunächst (in einigen Ausführungsformen nach einer Aufgliederung zur Identifikation der primitiven Elemente) durch die Module zur geometrischen Analyse 110 analysiert. Die Module zur geometrischen Analyse 110 analysieren ein Dokument, um geometrische Attribute wie beispielsweise Begrenzungen und durch die Begrenzungen eingeschlossene Bereiche zu identifizieren. In einigen Ausführungsformen umfassen die Bereiche Zonen, die durch primitive Elemente wie beispielsweise gerade Linien und enge Rechtecke (d. h. bestimmte primitive Formen und Bilder) begrenzt sind.
  • 2 illustriert eine Seite 200 eines eingehenden Dokuments und verschiedene Ergebnisse der geometrischen Analyse und der Dokumentenrekonstruktion. Das eingehende Dokument ist ein unstrukturiertes Dokument, das eine Sammlung primitiver Elemente aufweist, die ein das Dokument betrachtender Mensch als Text, Grenzen, eine Tabelle und ein grafisches Objekt erkennen würde. Das Analyseergebnis 205 illustriert, das die Module zur geometrischen Analyse 110 in dem Dokument 200 zwei Zonen Z1 240 und Z2 245 erkannt haben, die durch Begrenzungen 250 voneinander getrennt sind.
  • In einigen Ausführungsformen enthalten die durch die Module zur geometrischen Analyse 110 identifizierten Begrenzungen auch Ausrichtungsführungen. In einigen Ausführungsformen ist eine Ausrichtungsführung eine vertikale Kante, die durch den Beginn oder das Ende von Wörtern gebildet wird (z. B. an der linken Kante einer Spalte von linksbündig ausgerichtetem Text). Gleichermaßen umfassen in einigen Ausführungsformen die durch die geometrische Analyse identifizierten Bereiche Lücken aus Leerräumen zwischen Gruppen von Glyphen (z. B. zwischen Führungen). Diese Lücken werden in einigen Ausführungsformen als Spaltenzwischenräume bezeichnet.
  • Das Analyseergebnis 210 illustriert eine Linksausrichtungsführung 212 an der linken Kante der ersten Textspalte sowie einen Spaltenzwischenraum 214, der sich über den Leerraum zwischen den zwei Textspalten erstreckt (der Einfachheit halber sind die anderen Führungen sowie die Textspalten nicht gezeigt). Wie in 1 illustriert besteht die Ausgabe der semantischen Analysemodule 110 einiger Ausführungsformen aus den Zonen 105, den Führungen 115 und den Spaltenzwischenräumen 125.
  • Die ausgegebenen Daten der Module zur geometrischen Analyse 110 werden an die Dokumentenrekonstruktionsmodule 120 gesendet. Die Dokumentenrekonstruktionsmodule 120 führen den Prozess der Analyse des unstrukturierten Dokuments fort, um ein strukturiertes Dokument zu definieren. In einigen Ausführungsformen erzeugen Dokumentenrekonstruktionsmodule 120 Assoziationen zwischen primitiven Elementen, um zusammenhängende strukturelle Elemente wie beispielsweise Text, Tabellen und Formen zu definieren. Einige Ausführungsformen definieren auch eine Hierarchie der strukturellen Elemente sowie Beziehungen zwischen den strukturellen Elementen.
  • Beispielsweise erzeugen in einigen Ausführungsformen Dokumentenrekonstruktionsmodule 120 Assoziationen zwischen Glyphen, Mengen von Glyphen, Mengen von Mengen von Glyphen usw.. Einige Ausführungsformen assoziieren einzelne Glyphen zu Worten, Worte zu Textzeilen, Textzeilen zu Absätzen usw.. Das Analyseergebnis 215 illustriert, dass einzelne Zeilen 217 und Absätze 219 innerhalb der ersten Textspalte identifiziert werden.
  • Die Dokumentenrekonstruktionsmodule 120 identifizieren auch das Layout der Glyphen, um den Textfluss durch die Glyphen zu definieren. Insbesondere identifizieren einige Ausführungsformen zur Definition des Textflusses eine Lesereihenfolge durch die Glyphen (oder durch die Mengen von Glyphen), welche die Reihenfolge darstellt, in der erwartungsgemäß ein Mensch die Glyphen auf einer Seite lesen würde (z. B. vom Ende einer ersten Spalte zum Beginn einer zweiten Spalte, dann ein separates Textfeld in der Mitte auslassend, usw.). Das Analyseergebnis 220 illustriert, dass innerhalb des Dokuments 200 zwei Spalten identifiziert werden und dass der Lesefluss 222 vom Ende der ersten Spalte zum Beginn der zweiten Spalte verläuft. In einigen Ausführungsformen erfolgt die Identifikation und Definition von Layout und Fluss unter Verwendung der Zonenergebnisse 205, der Führungs- und Spaltenzwischenraumergebnisse 210 sowie der Glyphenassoziationsergebnisse 215.
  • Die Dokumentenrekonstruktionsmodule 120 definieren auch andere strukturelle Elemente in einem Dokument, die Assoziationen zwischen primitiven Elementen sind, welche keine Glyphen sind, oder zwischen strukturellen Elementen. Beispielsweise identifizieren in einigen Ausführungsformen die Dokumentenrekonstruktionsmodule 120 Tabellen in einem Dokument als Assoziationen zwischen durch die Module zur geometrischen Analyse 110 identifizierten Bereichen sowie die Glyphen und Mengen von Glyphen innerhalb der Bereiche. Beispielsweise assoziieren einige Ausführungsformen Bereiche als Zellen einer Tabelle und die Glyphen innerhalb jedes Bereichs als die Tabelleninformation. Das Analyseergebnis 225 illustriert die Identifikation einer Tabelle 227 mit neun Zellen 229 im Dokument 200 durch die Dokumentenrekonstruktionsmodule 120. Einige Ausführungsformen assoziieren die primitiven Elemente, welche Tabelle bilden, durch Definition eines tabellenartigen strukturellen Elements. Während in dem ursprünglichen Dokument das was als Tabelle angesehen wurde, als eine nicht assoziierte Sammlung von primitiven Elementen (Linien und Glyphen) definiert war, werden nach der Rekonstruktion die Zellen in dem tabellenartigen strukturellen Element als Tabellenzellen identifiziert und sie sind individuell oder kollektiv editierbar. Wie außerdem illustriert, verwendet die Tabellenidentifikation und -rekonstruktion die Zonenergebnisse 205, die Glyphenassoziationsergebnisse 315 und die Layout- und Flussergebnisse 220.
  • Einige Ausführungsformen identifizieren auch, wann zwei oder mehrere primitive Grafikelemente oder grafische Objekte (z. B. Formen, Bilder, Fotografien, Bitmaps usw.) in dem Dokument als ein strukturelles grafisches Element gruppiert werden sollten. Beispielsweise können zwei zum großen Teil überlappende Objekte ein Element sein, das als zwei Formen oder Bilder in dem unstrukturierten Dokument definiert ist. Die Dokumentenrekonstruktionsmodule 120 führen diese zwei Objekte zu einem Objekt zusammen. Das Analyseergebnis 230 illustriert, dass die zwei primitiven Formen (ein Stern und ein Hexagon) aus dem ursprünglichen Dokument 200 durch die Dokumentenrekonstruktionsmodule 120 in eine Grafik 232 zusammengeführt wurden.
  • Wie in i illustriert, umfassen Beispiele für der Ausgabe der Dokumentenrekonstruktionsmodule 120 semantische Hierarchiedaten 135 (z. B. Assoziationen von Glyphen), Layout- und Flussdaten 145, Tabellendaten 155, sowie Daten zusammengeführter Graphen 165. Des Weiteren wird in einigen Ausführungsformen ein Teil dieser Informationen auch zwischen den verschiedenen Dokumentenrekonstruktionsmodulen 120 ausgetauscht. 2 illustriert, dass diese gesamte Information verwendet wird, um ein strukturiertes Dokument 235 zu definieren. Das strukturierte Dokument 235 hat dieselbe Erscheinung wie das unstrukturierte Dokument 200, aber das strukturierte Dokument 235 enthält Informationen über die strukturellen Elemente und die Assoziationen, Beziehungen sowie die Hierarchie der Elemente, durch die ein Editieren, eine intuitivere Anzeige usw. ermöglicht werden.
  • Die Daten von den Dokumentenrekonstruktionsmodulen 120 (wie auch in einigen Ausführungsformen die Daten von den Modulen zur geometrischen Analyse 110) werden durch die Dokumentenanzeige- und Interaktionsmodule 130 verwendet. Die Dokumentenanzeige- und Interaktionsmodule 130 ermöglichen es einem Benutzer das Dokument zu betrachten, zu editieren, zu scrollen usw. Beispielsweise illustriert die Abfolge 140 ein in Form zweier Textspalten angezeigtes Dokument auf einer handgehaltenen Vorrichtung, die aufrecht gehalten wird. Wenn die handgehaltene Vorrichtung auf ihre Seite gedreht wird, wird der Text in den zwei Spalten in drei Spalten umgeordnet. Diese Umordnung kann nicht mit einem unstrukturierten Dokument durchgeführt werden, weil sie auf den Assoziationen zwischen Elementen, insbesondere dem Textfluss durch Glyphen beruht, der nicht Teil des unstrukturierten Dokuments ist.
  • In einigen Ausführungsformen können die Dokumentenanzeige- und Interaktionsmodule 130 auch ein durch einen Benutzer ausgewähltes strukturelles Element erkennen (z. B. einen Absatz, ein grafisches Objekt usw.) und intelligent zoomen, um das ausgewählte Element anzuzeigen. In einigen Ausführungsformen wählt der Benutzer eine interessierende Position aus (d. h. eine bestimmte Position innerhalb eines angezeigten Dokuments) und die Anzeige- und Interaktionsmodule 130 identifizieren ein qualifiziertes strukturelles Element innerhalb der Hierarchie struktureller Elemente. Einige Ausführungsformen definieren bestimmte Typen struktureller Elemente als qualifizierte strukturelle Elemente. Das qualifizierte strukturelle Element wird verwendet, um einen interessierenden Bereich zu definieren, der in einigen Ausführungsformen in der Anzeige markiert wird.
  • Die Abfolge 150 illustriert eine Auswahl eines Absatzes 170 (z. B. durch Auswahl einer interessierenden Position innerhalb des Absatzes) und die nachfolgende intelligente Anzeige des Absatzes und von benachbartem Text. Die Dokumentenanzeige- und Interaktionsmodule 130 stellen auch andere Merkmale bereit, wie beispielsweise die intelligente Auswahl von Text- und Grafikobjekten, intelligentes Scrollen durch ein Dokument usw.
  • Einige Ausführungsformen verwenden hierarchische Profile, um spontan zu ändern, wie die geometrische Analyse und die Dokumentenrekonstruktion ausgeführt werden, wobei Zwischenanalysen und Rekonstruktionsergebnisse verwendet werden. Einige Ausführungsformen prüfen die Zwischenergebnisse gegen Profile, die anzeigen, welchen Inhaltstyp ein Dokument enthält, und verändern den Rekonstruktionsprozess entsprechend. In einigen Ausführungsformen können die hierarchischen Profile die Analyse- und Rekonstruktionsmodule anweisen, mehr oder weniger Prozesse auszuführen, Prozesse anders auszuführen, oder Prozesse zu wiederholen. Wenn beispielsweise Analysezwischenergebnisse anzeigen, dass ein Dokument eine Seite lang ist, eine Textspalte aufweist und keine Formen oder Bilder, dann werden einige Ausführungsformen nur Prozesse ausführen, um die Glyphen in Worte, Zeilen und Absätze zu assoziieren. Eine Tabellenidentifikation, beispielsweise, wird nicht durchgeführt.
  • Einige Ausführungsformen setzen verschiedene neue Effizienztechniken zur effizienteren Speicher- und Prozessverwendung ein. Beispielsweise führen einige Ausführungsformen einige der oben beschriebenen Prozesse durch Verwendung von Clusteranalyse aus, wobei es sich um eine Technik handelt, die verwendet wird, um Gruppen von Elementen zu identifizieren, die auf irgendeine Weise in räumlicher Nähe zu anderen Elementen stehen. Einige Ausführungsformen verwenden Clusteranalyse, um Führungen beruhend auf zahlreichen Worten zu identifizieren, welche mit derselben oder nahezu derselben x-Koordinate beginnen, enden, darum zentriert sind oder anderweitig daran ausgerichtet sind. Einige Ausführungsformen verwenden Clusteranalyse um Lücken verschiedener Größe zwischen Glyphen zu erkennen, um so Abstände zwischen Worten und Lücken, die größer sind als diejenigen zwischen Worten, zu identifizieren. Einige Ausführungsformen verwenden Clusteranalyse auch, um primitive Grafiken (z. B. Formen, Bilder) zu identifizieren, die zu einer einzigen Grafik zusammengeführt werden sollten.
  • Einige Ausführungsformen führen Clusteranalysen effizient durch, indem sie geordnete Daten verwenden (z. B. Positionsdaten primitiver Elemente), die auf unsortierte Daten referenzieren, und indem sie Partitionen der Daten unter Verwendung eines einzigen Wertes speichern. Eine Partition, wie dieser Begriff in der vorliegenden Erfindung verwendet wird, teilt eine Folge oder eine linear geordnete Menge in Unterfolgen auf, die Untermengen der Folge mit derselben Ordnungsbeziehung sind. Des Weiteren, hat eine Partition die Eigenschaften, dass (i) jedes Mitglied der Originalfolge in exakt einer der Unterfolgen der Partition enthalten ist, und dass (ii) beim Vorliegen zweier Unterfolgen S und T der Partition gemäß der Ordnungsrelation entweder alle Mitglieder von S kleiner sind als alle Mitglieder von T oder alle Mitglieder von T kleiner sind als alle Mitglieder von S. Das Abspeichern einer Partition als ein einziger Wert ermöglicht in einigen Ausführungsformen eine effizientere Ausführung verschiedener Clusteranalysefunktionen, wie beispielsweise die Untersuchung mehrerer Partitionen.
  • Einige Ausführungsformen gewinnen in dem Dokumentenrekonstruktionsprozess auch dadurch an Effizienz, dass sie eine Anwendungsprogrammierschnittstelle (API) verwenden, die den Umfang des Gruppierens von Daten minimiert, während sie dem Benutzer des API (z. B. einem Programmierer oder einer das API verwendenden Anwendung) gegenüber erscheint, als ob die Daten frei modifizierter seien. Einige Ausführungsformen speichern Daten in einem zufällig angeordneten Feld, definieren dann ein sortiertes Feld von Referenzen auf die Daten und verwenden dann dieses sortierte Feld für zahlreiche Sammlungsobjekte (z. B. Zeichenfolgenobjekte, die Sammlungen von Zeichendaten sind), um die Verwendung von Speicher und die Verarbeitung zu optimieren. Diese beiden Effizienzverbesserungen sowie weitere werden in einigen Ausführungsformen verwendet, um die Ausführung von Dokumentenrekonstruktionen auf einem Gerät mit limitierten Ressourcen, beispielsweise einem Mobiltelefon, einem Medienspieler usw. (z. B. einem iPhone®) zu ermöglichen.
  • Wenngleich der oben beschriebene Überblick über einige Ausführungsformen unter Bezugnahme auf die in den 1 und 2 illustrierten Beispiele erfolgte, wird der Fachmann erkennen, dass diese Beispiele nur als beispielhafte Ausführungsformen gemeint waren, die die Merkmale und Operationen für einige Ausführungsformen der Erfindungen einführen. Der Fachmann wird realisieren, dass viele Ausführungsformen Merkmale und Operationen aufweisen, die sich von den in den 1 und 2 illustrierten unterscheiden. Beispielsweise würde der Fachmann erkennen, dass wenngleich die geometrische Analyse als ein Satz von Modulen 110 beschrieben wurde, einige Ausführungsformen nicht notwendigerweise alle geometrischen Attribute auf einmal identifizieren. Beispielsweise führen einige Ausführungsformen zuerst eine Untermenge der geometrischen Analyse durch (z. B. Bereichsanalyse, um einen oder mehrere Bereiche in dem Dokument zu identifizieren) und dann werden Führungen und Spaltenzwischenräume Bereich für Bereich identifiziert.
  • Nachfolgend werden detailliertere Beispiele einiger Ausführungsformen beschrieben. Abschnitt II beschreibt die Identifikation von Bereichen (d. h. Zonen) eines Dokuments beruhend auf primitiven Begrenzungselementen und der Definition einer hierarchischen Struktur (z. B. eines Dokumenten-Objekt-Modells), die das Rahmenwerk für ein strukturiertes Dokument bildet. Abschnitt III beschreibt dann die Identifikation von Begrenzungselementen für Glyphen (z. B. Ausrichtungsführungen) und insbesondere von Leerräumen zwischen Ausrichtungspunkten (Spaltenzwischenräume). Als nächstes beschreibt Abschnitt IV im Detail die Erzeugung von Assoziationen zwischen Glyphen und Mengen von Glyphen, um strukturelle Elemente wie beispielsweise Worte, Textzeilen, Absätze, Spalten usw. zu definieren, sowie die Definition einer Flussreihenfolge durch diese strukturellen Elemente (sowie durch andere Elemente wie beispielsweise Grafiken, Tabellen usw.). Abschnitt V beschreibt die Identifikation von Tabellen aus primitiven Elementen sowie die Erzeugung von Assoziationen zwischen den primitiven Elementen, um ein tabellenartiges strukturelles Element zu bilden, während Abschnitt VI die Identifikation primitiver Grafikelemente beschreibt, die zusammen gruppiert werden sollten, sowie die Erzeugung von Assoziationen zwischen derartigen primitiven Elementen zur Definition von zusammengesetzten Grafikelementen. Als nächstes beschreibt Abschnitt VII die Modifikation der Inhaltsverarbeitung (unter Verwendung des Beispiels einer Dokumentenrekonstruktion wie im Detail in den Abschnitten II–VI beschrieben) beruhend auf einem Vergleich von Verarbeitungszwischenergebnissen mit einem Satz vordefinierte Profile, wodurch die Effizienz und Genauigkeit der Inhaltsverarbeitung verbessert werden kann.
  • Als nächstes beschreibt Abschnitt VIII im Detail verschiedene Aspekte der Verwendung eines strukturierten Dokuments (z. B. eines durch ein Dokumenten-Objekt-Modell definierten Dokuments), um das Dokument auf einem Gerät mit kleinem Bildschirm (z. B. einem handgehaltenen Telefon oder Medienspieler) anzuzeigen. Sowohl die Anpassung der Dokumentenanzeige an den kleinen Bildschirm als auch die Anzeige eines identifizierten interessierenden Bereichs werden diskutiert. Abschnitt IX beschreibt die Verwendung des strukturierten Dokuments zur Definition einer Auswahl von Text (oder anderer Elemente des Dokuments) in Reaktion auf eine Benutzereingabe.
  • Danach beschreibt Abschnitt X verschiedene Verfahren zur Verbesserung der Effizienz von Clusteranalysetechniken, die (zusätzlich zu anderen Verwendungen) während des Dokumentenrekonstruktionsprozesses für die Identifikation von Ausrichtungsführungen, Wort- und Glyphenabständen sowie zusammengesetzten Grafiken verwendet werden. Dann beschreibt Abschnitt XI im Detail Verfahren und Datenstrukturen, die ein effizienteres Aufgliedern und Analysieren eines Dokuments ermöglichen. Diese Datenstrukturen illustrieren eine Methode zur Erzeugung von Assoziationen zwischen Glyphen (z. B. um Worte, Textzeilen, Absätze usw. zu bilden), die in dem Dokumentenrekonstruktionsprozess verwendet werden kann. Der Fachmann wird jedoch erkennen, dass viele andere Wege zur Erzeugung von Assoziationen zwischen primitiven Elementen (z. B. Glyphen, grafischen Elementen, usw.) zur Definition struktureller Elemente (z. B. von Absätze, Tabellen, zusammengesetzten Grafiken, usw.) möglich sind, wie in der Fachwelt wohlbekannt. Als nächstes beschreibt Abschnitt XII die Softwarearchitektur einer Dokumentenrekonstruktionsanwendung einiger Ausführungsformen und Abschnitt XIII beschreibt ein Computersystem, das einige Ausführungsformen der Erfindung implementiert.
  • II. Bereichsanalyse
  • Wenn sich auf einer Seite mehrere Artikel, Abschnitte oder Informationskategorien befinden, dann sind diese oft durch Linien, Bilder oder Formen umrissen. Wenngleich ein Mensch die Art und Weise leicht identifizieren kann, mit der grafische Hinweise beabsichtigen anzuzeigen, wie die Seite in Bereiche aufgeteilt ist, stellt dies für einen Computer ein nichttriviales Problem dar {insbesondere wenn eine Mischung von grafischen primitiven Elementen auftritt, von denen einige als Seiteninhalt beabsichtigt sind, während andere dazu dienen sollen Inhaltsbereiche zu umreißen).
  • Einige Ausführungsformen der Erfindung stellen Verfahren zur Identifikation von Begrenzungen und durch diese Begrenzungen begrenzte Bereiche (z. B. Zonen) beruhend auf den primitiven Elementen (z. B. den Formen und Bildern) eines unstrukturierten Dokuments bereit. In einigen Ausführungsformen werden die Bereiche in der nachfolgenden Rekonstruktion des Dokuments sowie für die Untergliederung weiterer Rekonstruktionsprozesse verwendet. Einige Ausführungsformen erzeugen einen Bereichsgraph (d. h. eine hierarchische Struktur wie beispielsweise einen Baum), in den Inhalte eingetragen sind und der die Assoziation von Inhalten mit dem Bereich ermöglicht, in welchem sich der Inhalt befindet. Einige Ausführungsformen führen die Bereichsidentifikation seitenweise durch.
  • 3 illustriert konzeptionell einen Prozess 300 in einigen Ausführungsformen zur Identifikation von Bereichen auf einer Seite eines Dokuments und die Erzeugung eines Bereichsbaums für die Seite. Der Prozess 300 wird im Zusammenhang mit 4 beschrieben. 4 illustriert die Abfolge der Identifikation von Bereichen auf einer Seite 400 eines Dokuments und der Erzeugung eines Bereichsbaums 430 für die Seite, gemäß einigen Ausführungsformen. Wie in 3 gezeigt, beginnt der Prozess 300 mit dem Empfangen (bei 305) einer Seite eines Dokuments. In einigen Fällen umfasst ein Dokument zahlreiche Seiten (z. B. ein elektronisches Buch), während in anderen Fällen ein Dokument nur aus einer Seite bestehen wird (z. B. ein Werbeflyer).
  • Als nächstes identifiziert der Prozess (bei 310) Bereiche auf der Seite. In einigen Ausführungsformen umfasst das Identifizieren von Bereichen das Identifizieren von Bereichsgrenzen und Überschneidungen und sodann das Durchlaufen der Bereichsgrenzen zur Identifikation der Bereiche. Bezug nehmend auf das Beispiel aus 4 identifiziert der Prozess 300, dass die Seite 400 fünf Bereiche enthält: die Bereiche A 405, B 410, C 415, D 420 und E 425.
  • Nach der Identifikation der Bereiche erzeugt der Prozess 300 (bei 315) einen Bereichsgraph (d. h. eine hierarchische Struktur wie beispielsweise einen Baum) für die Seite. Der Bereichsbaum illustriert die Hierarchie der Bereiche. Beispielsweise illustriert der Bereichsbaum 430, dass ein Bereich für die Seite (Knoten P) vier Bereiche A, B, C und D enthält. Außerdem enthält Bereich D den Bereich E, da sich der Bereich E vollständig innerhalb des Bereichs D befindet. In einigen Ausführungsformen ist ein erster Bereich ein Elternteil eines zweiten Bereichs, wenn sich der zweite Bereich vollständig innerhalb des ersten Bereichs befindet. In einigen Ausführungsformen können ein Elternteil und ein Kind eine oder mehrere Begrenzungen gemeinsam haben.
  • Nach der Erzeugung des Bereichsgraphs fügt der Prozess 300 den Inhalt der Seite in den Bereichsgraph ein. Der Prozess endet dann. In einigen Ausführungsformen enthält eine Seite Text, Grafiken oder andere Inhalte. Jede bestimmte Inhaltsgruppierung (z. B. ein Bild, ein Absatz, eine Spalte usw.) wird als ein Kind des kleinsten Bereichs angeordnet, der die bestimmte Inhaltsgruppierung vollständig enthält. In einigen Ausführungsformen wird das Einfügen der Inhaltsobjekte in den Bereichsgraph später im Dokumentenrekonstruktionsprozess durchgeführt, sobald der Inhalt weiter analysiert wurde (z. B. Gruppieren von Text in Absätze, identifizieren von Tabellen, usw.). Außerdem aktualisieren einige Ausführungsformen den Bereichsgraf mit Inhaltsunterbäumen für jeden Bereich, während die Dokumentenrekonstruktion ausgeführt wird.
  • A. Terminologie
  • 5 illustriert eine Seite 500 eines Dokuments, das verschiedene Bereiche enthält. Die Seite 500 enthält zahlreiche Bereichsbegrenzungen, einschließlich der Bereichsbegrenzungen 505509. Bereichsbegrenzungen sind in einigen Ausführungsformen horizontale oder vertikale (d. h. geradlinige) Streifen mit einer Stärke, die durch die Bereichsgrenzengrafik definiert ist, die zu der Bereichsbegrenzung beiträgt. Die Stärke einer Bereichsbegrenzung ist in einigen Ausführungsformen die Breite, in seiner schmalen Richtung, eines aufrecht stehenden Begrenzungskastens der Bereichsgrenzengrafiken, die zu der Bereichsgrenze beitragen. In einigen Ausführungsformen ist ein aufrecht stehender Begrenzungskasten für ein bestimmtes Element oder eine Menge von Elementen das kleinste aufrecht stehende Rechteck (in dem analysierten Koordinatensystem), das das Element oder die Menge von Elementen vollständig umschließt.
  • Bereichsgrenzengrafiken sind grafische Objekte (z. B. Formen, Bilder, Linien) auf einer Seite, die entweder schmale Rechtecke sind, oder einen aufrecht stehenden Begrenzungskasten aufweisen, der ein schmales Rechteck ist. Beispielsweise sind die Bereichsbegrenzungen 505509 allesamt Linien mit einer bestimmten (relativ geringen) Dicke. In einigen Ausführungsformen umfassen die Bereichsgrenzengrafiken relativ schmale Objekte, deren vollständige oder teilweise Darstellung die gesamte Bereichsbegrenzung oder einen Teil davon ausfüllt. In einigen Ausführungsformen umfassen die Bereichsgrenzengrafiken auch Objekte, deren Begrenzungen zu einer Bereichsgrenze beitragen (z. B. kann eine Seite eines gefüllten Polygons eine Bereichsbegrenzung ganz oder teilweise anzeigen, selbst wenn das Polygon selbst nicht schmal ist und nicht in die Bereichsbegrenzungen hineinpasst).
  • Bereichsgrenzengrafiken müssen jedoch keine perfekten geraden Linien sein oder perfekt geradlinig. Beispielsweise illustriert 6 eine Seite 600, die Bereichsgrenzengrafiken 605 enthält. Die Bereichsgrenzengrafiken 605 sind keine perfekten Vertikalstreifen: stattdessen sind sie Bilder von Zweigen, die fast senkrecht ausgerichtet sind. Einige Ausführungsformen werden die Grafik als Bereichsbegrenzungsgrafik erkennen, andere Ausführungsformen dagegen nicht.
  • Seite 500 in 5 enthält auch zahlreiche Überschneidungen von Bereichsgrenzen, wie zum Beispiel die Überschneidungen 510 und 511. In einigen Ausführungsformen ist eine Bereichsgrenzenüberschneidung eine rechtwinklige Überschneidung einer horizontalen Bereichsgrenze mit einer vertikalen Bereichsgrenze. Wie die Überschneidung 511 illustriert, muss sich eine Bereichsgrenzenüberschneidung nicht am Ende einer Bereichsgrenze befinden. In einigen Ausführungsformen unterteilen Bereichsgrenzenüberschneidungen in der Mitte einer Bereichsgrenze die Bereichsgrenze in ein oder mehrere Bereichsgrenzenintervalle. Beispielsweise wird die untere Bereichsgrenze der Seite 500 in die Bereichsgrenzenintervalle 515, 516, 517 und 518 unterteilt.
  • Ein Bereich ist daher ein geschlossener Bereich, der durch eine Sammlung von Bereichsgrenzenintervallen begrenzt ist, die in einigen Ausführungsformen eine aufrecht stehende geradlinige Form bilden. Aufrecht stehende geradlinige Formen sind jegliche Polygone, die durch horizontale und vertikale Liniensegmente gebildet werden können, einschließlich aber nicht beschränkt auf aufrecht stehende Rechtecke, wobei es sich um Rechtecke handelt, die aus horizontalen und vertikalen Liniensegmenten gebildet sind. Jeder Bereich hat eine aufrecht stehende geradlinige äußere Begrenzung, die eine Form ist, welche aus den äußeren Seiten ihrer Bereichsgrenzen-Begrenzungsrechtecke gebildet wird. Jeder Bereich hat auch eine aufrecht stehende geradlinige innere Begrenzung, die eine Form ist, welche von den inneren Seiten ihrer Bereichsgrenzen-Begrenzungsrechtecke gebildet wird.
  • Die Seite 500 enthält die Bereiche P 526 (die Seitenbegrenzungen), A 520 (einen bogenförmigen Bereich, der die dünnen Streifen auf der linken und der rechten Seite sowie den Bereich oberhalb der Zonen C und D umfasst), B 521, C 522 (der linke Bereich, der eine gemeinsame Grenze mit dem Bereich E aufweist), D 523 (der rechte Bereich, der ein Spiegelbild des Bereichs C ist), E 524 und G 525. in einigen Ausführungsformen haben die Bereiche äußere Begrenzungen sowie innere Begrenzungen, die durch die äußeren und inneren Seiten der Bereichsgrenzen definiert sind.
  • 7 illustriert einen Bereichsbaum 700 für die Seite 500, mit einer Zone P (den Seitengrenzen) als Elternteil der Bereiche A, C, E und D; wobei der Bereich B ein Kind des Bereichs A ist; und der Bereich G ein Kind des Bereichs D. Die Bereiche B, E und G stellen Beispiele für Inseln dar. Eine Insel ist ein Bereich, der kein Grenzintervall mit seinem Elternbereich gemeinsam hat. Obwohl der Bereich E seine Grenzintervalle mit den Bereichen C und D gemeinsam hat, ist keiner davon ein Elternteil des Bereichs E, weil keiner dieser Bereiche tatsächlich den Bereich E umschließt. Der Bereichsbaum illustriert auch, dass die Knoten durch die Inhalte, die sie enthalten, gefüllt wurden. In einigen Ausführungsformen wird der Teil eines Dokumenten-Objekt-Modells (DOM) für jede Seite auf den Knoten des Bereichsbaums der Seite gebildet. Ein Dokumenten-Objekt-Modell ist eine Darstellung eines Dokuments als ein Graph, dessen Knoten Objekte sind. In einigen Ausführungsformen ist dieser Graph ein Baum, seine Blättern entsprechenden Knoten stellen primitive Elemente dar und seine nicht Blättern entsprechenden Knoten sind Strukturobjekte, die die Beziehungen zwischen ihren Kindsknoten sowie die Eigenschaften ausdrücken, die diese Kindsknoten als Gruppe haben. In einigen Ausführungsformen stellt die Reihenfolge der Kinder eines Knotens die Lesereihenfolge dieser Kinder dar. In einigen Ausführungsformen ist der Wurzelknoten ein Dokumentenknoten, seine Kinder sind Seitenknoten, der Bereichsbaum geht von jedem Seitenknoten aus, ein Flussbaum (einschließlich von Knoten, die Strukturen wie Tabellen, Textkästchen, Layouts, Spalten, Absätze, Listen und Textzeilen enthalten) geht von einigen der Bereichsknoten aus und primitive Elemente (wie beispielsweise Glyphen, Formen und Bilder) darstellende primitive Elemente sind die Kinder einiger der Knoten in dem Flussbaum. In einigen Ausführungsformen enthalten die Strukturknoten zusätzlich zu den Beziehungen, die durch die Eltern-Kind Beziehungen des Baums (seine direkten Graphenränder) ausgedrückt werden, Eigenschaften, welche Beziehungen zwischen den Knoten ausdrücken. Beispielsweise kann ein Absatz, der eine neue Spalte beginnt, eine Fortsetzung des Absatzes sein, der eine vorausgehende Spalte beendet, ohne einen Absatzumbruch zwischen den beiden. In diesem Fall gebe es in dem Baum zwei Absatzknoten, jeder mit einem anderen Spaltenknotenelternteil, aber sie hätten Eigenschaften, die aufeinander zeigen, um so anzuzeigen, dass es sich um zwei Knoten handelt, die jeweils Teile eines einzigen gemeinsamen Absatzes darstellen. Ein DOM ist in einigen Ausführungsformen eine hierarchische Darstellung eines Dokuments, die alle strukturellen Elemente des Dokuments enthält. Einige Ausführungsformen definieren Inhalt als Kind eines bestimmten Bereichs, wenn der Inhalt vollständig innerhalb der äußeren Begrenzungen eines bestimmten Bereichs angeordnet ist und dabei nicht vollständig innerhalb der äußeren Begrenzungen irgendeines Kindes des bestimmten Bereichs liegt. Als solche enthält der Bereich B Kopftext, die Bereiche C und D enthalten Standardtext und die Bereiche E und D enthalten Bilder.
  • B. Rotationsgruppen
  • Einige Ausführungsformen definieren verschiedene Rotationsgruppen auf einer Seite und analysieren die Bereiche und Inhalte jeder Rotationsgruppe separat. In einigen Ausführungsformen ähneln Rotationsgruppen Bereichen, mit der Ausnahme dass sie keinerlei Bereichsgrenzen aufweisen. Stattdessen ist eine Rotationsgruppe so definiert, dass sie sämtliche Inhalte enthält, die um denselben Winkel gedreht wird (oder nahezu denselben Winkel innerhalb einer bestimmten Schwelle, die ausreichend klein ist, so dass es für den menschlichen Betrachter schwer ist, einen Unterschied zu sehen). 8 illustriert konzeptionell einen Prozess 800 einiger Ausführungsformen zur Definition von Rotationsgruppen auf einer Seite. Wie gezeigt, empfängt Prozess 800 (bei 805) eine Seite eines Dokuments. In einigen Fällen ist die Seite die einzige Seite des Dokuments, während in anderen Fällen die Seite eine von mehreren Seiten ist. Einige Ausführungsformen führen eine Rotationsgruppenanalyse für ein einseitiges Dokument (oder einen mehrseitigen Abschnitt) auf einmal statt seitenweise aus.
  • Der Prozess bestimmt dann (bei 810) den Drehwinkel für jedes Objekt auf einer Seite. In einigen Ausführungsformen wird für unregelmäßig geformte Bilder angenommen, dass sie einen Drehwinkel von null aufweisen. Beispielsweise ist das Bild in Zone E auf Seite 500 unregelmäßig geformt und würde keinen von null verschiedenen Drehwinkel erhalten. Horizontal ausgerichteter Text hat ebenfalls einen Drehwinkel von null, während Text, der nicht entlang der x-Achse ausgerichtet ist, einen Drehwinkel erhält. Beispielsweise würde der Text in Region F 530 der Seite 500 einen Drehwinkel von ungefähr –45 Grad aufweisen. Gleichermaßen würde der Text 610 („organisch” und „rein”) auf Seite 600 seinen eigenen Drehwinkel haben. In Ausführungsformen, die auch grafische Objekte in Rotationsgruppen anordnen, würden die rechtwinkligen Bilder 615 oberhalb des Texts 610 denselben Drehwinkel aufweisen wie der Text 610.
  • Als nächstes ordnet der Prozess 800 (bei 815) die Objekte nach ihrem Drehwinkel. Der Prozess bestimmt dann (bei 820) die Objekte im Cluster mit einer Streuung des Drehwinkels, die unterhalb einer bestimmten Schwelle liegt. In einigen Ausführungsformen ist die Streuung, welche mit der bestimmten Schwelle verglichen wird, gleich dem größten Drehwinkel in der Gruppe abzüglich des kleinsten Drehwinkels in der Gruppe. Die Verwendung einer von null verschiedenen Schwelle erlaubt die Gruppierung unter Berücksichtigung von kleinen Fehlern in der Inhaltsdefinition im ursprünglich empfangenen Dokument (z. B. eine Textzeile, die nur ganz leicht von der Horizontalen abweicht).
  • Der Prozess 800 analysiert dann (bei 825) jede Rotationsgruppe separat. Der Prozess endet dann. Auf den meisten Seiten wird der größte Teil der Analyse die aufrechte (Winkel null) Gruppe einbeziehen. Einige Ausführungsformen führen keine Bereichsanalyse für Gruppen durch, die nicht die aufrechte Gruppe sind, und klassifizieren stattdessen einfach den Inhalt der gedrehten Gruppen als Kinder der Seite als Ganzes. In einigen Ausführungsformen hat jede Rotationsgruppe ein Koordinatensystem, in dem ihr Inhalt aufrecht erscheint. In solchen Ausführungsformen hat jede Rotationsgruppe ihren eigenen Bereichsbaum mit Inhalten, die in das DOM für das Dokument passen. Einige Ausführungsformen definieren eine Rotationsgruppe für jeden unterscheidbaren Winkel, um den der Inhalt der Seite gedreht wird. Die Analyse für jede Gruppe wird nachfolgend im Detail beschrieben.
  • C. Identifizieren von Bereichsgrenzen und Überschneidungen
  • 9 illustriert konzeptionell einem Prozess 900 einiger Ausführungsformen zur Identifizierung von Bereichsgrenzen und Überschneidungen. Der Prozess 900 wird im Zusammenhang mit 10 beschrieben. 10 illustriert eine Seite 1000, die verschiedene Grafiken sowie Text enthält.
  • Wie in 9 gezeigt, empfängt der Prozess (bei 900) eine Rotationsgruppe und normalisiert die Gruppe zu einem aufrechten Koordinatensystem. In einigen Ausführungsformen umfasst die Normalisierung der Gruppe zu einem aufrechten Koordinatensystem die Definition eines Koordinatensystems für die Gruppe auf solche Weise, dass alle Objekte in der Gruppe vertikal oder horizontal sind (z. B. sind Textzeilen in dem Koordinatensystem horizontal). Die nachfolgende Erläuterung erfolgt unter der Annahme, dass die Rotationsgruppe die aufrechte (Winkel null) Gruppe ist. Der Fachmann wäre in der Lage dieselben Techniken auf Rotationsgruppen mit von null verschiedenen Winkeln in einem Koordinatensystem anzuwenden, in dem deren Inhalte aufrecht erscheinen. Einige Ausführungsformen entfernen Inhalte von anderen Rotationsgruppen bevor sie die Bereichsidentifikation für eine bestimmte Rotationsgruppe ausführen. Beispielsweise würden einige Ausführungsformen den Text 610 und das Bild 615 von Seite 600 in 6 entfernen, bevor sie die Bereichsidentifikation und -analyse in dem aufrechten geradlinigen Koordinatensystem durchführen.
  • Der Prozess identifiziert dann (bei 910) potentielle Bereichsgrenzen. In einigen Ausführungsformen umfassen potentielle Bereichsgrenzen jegliche horizontale oder vertikale grafische Objekte, die ausreichend schmal sind. Die Feststellung, ob ein bestimmtes grafisches Objekt ausreichend schmal ist, verwendet in einigen Ausführungsformen ein absolutes Maß (z. B. wenn die kleinere Dimension des aufrechten Begrenzungsrechtecks des grafischen Objekts kleiner als 1/24 Inch ist). In anderen Ausführungsformen verwendet die Feststellung ein relatives Maß (z. B. die größere Dimension des aufrechten Begrenzungsrechtecks ist gleich der achtfachen Größe der kleineren Dimension), oder eine Kombination aus absoluten und relativen Maßen (z. B. die enge Dimension könnte bis zu 1/12 eines Inch betragen, aber das relative Maß von 8:1 gilt). Einige Ausführungsformen passen die Schwelle abhängig von der Größe der Seite an. Beispielsweise könnten die obigen Beispiele auf eine Standard 8.5 × 11 Inch Seite gelten, während eine viel größere Seite größere potenzielle Bereichsgrenzen haben könnte.
  • Bezug nehmend auf 10 enthält die Seite 1000 mehrere Linien, die als potentielle Bereichsgrenzen klassifiziert würden: die horizontalen Grenzen 10051010 und die vertikalen Grenzen (10111016). Allerdings würde das grafische Objekt 1020 im Allgemeinen nicht als potentielle Bereichsgrenze betrachtet werden, da es in der x-Richtung zu breit ist.
  • Einige Ausführungsformen identifizieren auch sämtliche aufrechten geradlinigen Formen, welche zumindest eine Schwellengröße aufweisen, und verwenden die Seiten dieser Formen als potentielle Bereichsgrenzen. In einigen Ausführungsformen ist die Schwellengröße eine bestimmte Fläche, während in anderen Ausführungsformen eine Schwellenbreite sowie eine Schwellenhöhe überschritten werden müssen. Beispielsweise könnte das Objekt 1020 eine Fläche aufweisen, die groß genug ist, um seine Kanten als potentielle Bereichsgrenzen zu qualifizieren, aber es ist zu schmal, um einen separaten Bereich darzustellen. Das Sternobjekt 1025 andererseits ist keine aufrechte geradlinige Form und somit würden seine Kanten nicht als Bereichsgrenzen qualifiziert sein. Als solche würden diese Objekte einfach als Inhalt (insbesondere grafische Objekte) klassifiziert werden, die sich in dem einen oder anderen Bereich befinden. Einige Ausführungsformen bestimmen die Begrenzungen jeder als die Seite einer aufrechten geradlinigen Form identifizierten potenziellen Bereichsbegrenzung als das die Seite begrenzende aufrechte Rechteck, einschließlich der Strichstärke wenn vorhanden. Einige Ausführungsformen enthalten auch die Seitenbegrenzungen als Bereichsbegrenzungen, wenn sie in dem Koordinatensystem der Rotationsgruppe aufrecht und geradlinig sind.
  • Nach dem identifizieren potentieller Bereichsgrenzen entfernt der Prozess 900 (bei 915) Grenzen oder Teile von Grenzen, die sich mit anderen Objekten auf der Seite überschneiden. Beispielsweise wird die potentielle Grenze 1015 durch das Sternobjekt 1025 verdeckt und würde als solches in zwei potentielle Bereichsgrenzen unterteilt werden (die Fläche oberhalb des Sterns und die Fläche unterhalb des Sterns). Einige Ausführungsformen entfernen auch Bereichsgrenzen, die sich mit Zeichenbegrenzungskästchen überschneiden. In einigen Ausführungsformen ist ein Zeichenbegrenzungskästchen für ein bestimmtes Zeichen das kleinste Rechteck, das das Zeichen vollständig umschließt. Beispielsweise kreuzt die potentielle Bereichsgrenze 1010 die Zeichen „Lore ipsum”. Von daher würden einige Ausführungsformen die potentielle Bereichsgrenze 1010 von der Betrachtung ausschließen. Als nächstes führt der Prozess 900 (bei 920) Grenzen zusammen. Einige Ausführungsformen führen Grenzen zusammen, die parallel sind und entweder überlappen oder nahezu überlappen. Grenzen überlappen, wenn sich ihre Begrenzungen überschneiden. Wenn beispielsweise zwei sehr enge Rechtecke verschiedener Breite so gezeichnet werden, dass eines das andere umschließt, dann würden die zwei potentiellen Bereichsgrenzen zusammengeführt werden. Einige Ausführungsformen dehnen die Begrenzungen leicht aus (sowohl in der Breite als auch der Länge der potenziellen Bereichsgrenzen, um Überlappungen zu prüfen. Dementsprechend würden die Grenzen 1013 und 1014 in 10 in eine Bereichsgrenze 1027 mit einer Stärke zusammengeführt werden, die größer ist als die der Grenzen 1013 und 1014.
  • Der Prozess 900 stellt dann fest (bei 923), ob irgendeine zusammengeführte Grenze noch unverarbeitet ist. Wenn keine Grenzen zusammengeführt wurden oder wenn alle zusammengeführten Grenzen verarbeitet wurden, wird der Prozess bei 945 wie nachfolgend beschrieben fortgesetzt. Andernfalls wählt der Prozess (bei 925) eine unverarbeitete zusammengeführte Grenze aus. Der Prozess stellt dann fest (bei 930), ob die zusammengeführte Grenze zu breit ist, oder ob sie zu viele Bereichsgrenzengrafiken enthält. In einigen Ausführungsformen ist eine zusammen geführte Grenze zu breit, wenn ihre Breite in der schmalen Richtung oberhalb einer bestimmten Schwelle liegt. In einigen Ausführungsformen ist der Test für die Breite derselbe, wie dafür, ob ein grafisches Objekt schmal genug ist, um zunächst als eine Bereichsgrenze klassifiziert zu werden. Wenn der Prozess feststellt, dass die Grenze nicht zu breit ist, dann wird der Prozess bei 923 wie oben beschrieben fortgeführt. Andernfalls, wenn die zusammengeführte Grenze zu breit ist, löscht der Prozess (bei 935) die zusammengeführte Grenze als Kandidat für eine potentielle Bereichsgrenze und klassifiziert sie als sein einziges grafisches Objekt, um dann bei 923 fortzufahren. Dies könnte beispielsweise passieren, wenn ein Bild als eine Folge von schmalen Rechtecken gezeichnet wird oder wenn ein Balkendiagramm mit schmalen und eng benachbarten Balken gezeichnet wird.
  • Sobald alle zusammengeführten Grenzen untersucht wurden, identifiziert der Prozess (bei 945) Überschneidungen von Bereichsgrenzen. Wie oben erläutert werden Bereichsgrenzenüberschneidungen immer dort identifiziert, wo eine horizontale Grenze eine vertikale Grenze schneidet. Einige Ausführungsformen identifizieren auch Nahezu-Überschneidungen und klassifizieren diese als Überschneidungen. Um Nahezu-Überschneidungen zu finden, werden Grenzen um einen kleinen Betrag ausgeweitet und dann auf Überschneidungen geprüft. Einige Ausführungsformen weiten die Grenzen um einen festen Betrag aus (z. B. ein Viertel eines Inch), während andere Ausführungsformen jede Grenze um einen Betrag ausweiten, der einem Prozentsatz der Länge dieser bestimmten Bereichsgrenze entspricht. Wenn die verlängerten Grenzen überschneiden, wird die Nahezu-Überschneidung als eine Überschneidung klassifiziert und die zwei Grenzen werden ausgeweitet, um die Breite der jeweils anderen vollständig zu kreuzen. Beispielsweise überschneiden sich die Grenzen 1027 und 1008 in 10 nicht ganz. Sie sind sich allerdings nah genug, dass sie als eine Überschneidung klassifiziert und so verlängert würden, dass sie überschneiden.
  • Der Prozess eliminiert dann (bei 950) Grenzen mit weniger als zwei Überschneidungen. Sobald eine Grenze entfernt wurde, müssen alle Grenzen, die sich mit der entfernten Grenze überschnitten, erneut geprüft werden, um festzustellen, ob sie immer noch wenigstens zwei Überschneidungen aufweisen. In der Beispielsseite 1000 würden die Grenze 1006 und die zwei verbleibenden Teile der Grenze 1015 entfernt, da sie keine Bereichsgrenzenüberschneidungen aufweisen. Sobald die Bereichsgrenzen und Überschneidungen identifiziert sind, kürzt der Prozess (bei 955) die Bereichsgrenzen, um alle Teile zu entfernen, die sich über die äußersten Überschneidungen hinaus erstrecken. Beispielsweise erstrecken sich die Grenzen 1027 und 1009 über ihre Überschneidung hinaus. Diese würden gekürzt werden, um nur noch bis zur äußersten Grenze der jeweils anderen zu reichen. Nach dem Kürzen der Grenzen speichert der Prozess (bei 960) die Bereichsgrenzen- und Überschneidungsinformationen zur zukünftigen Verwendung (z. B. bei der Identifizierung von Bereichen). Der Prozess endet dann.
  • An diesem Punkt wurden die Bereichsgrenzenintervalle und die Bereichsgrenzenüberschneidungen alle bestimmt. 11 illustriert vertikale Bereichsgrenzenintervalle 1105, 1115, 1125, 1135, 1145, 1155, 1165, und 1175, sowie horizontale Bereichsgrenzenintervalle 1110, 1120, 1130, 1140, 1150, 1160, 1170 und 1180. 11 illustriert auch Bereichsgrenzenüberschneidungen 1102, 1112, 1113, 1122, 1123, 1132, 1133, 1142, 1143, 1152, 1162, 1172, 1182 und 1192.
  • D. Identifizieren von Bereichen
  • Sobald die Bereichsgrenzen und die Bereichsgrenzenüberschneidungen identifiziert sind, können die Bereiche identifiziert werden. 12 illustriert konzeptionell einen Prozess 1200 einiger Ausführungsformen für das Identifizieren von Bereichen. Der Prozess 1200 wird im Zusammenhang mit den 13 und 14 beschrieben. Die 13 und 14 illustrieren die Anwendung des Prozesses 1200, um die Bereiche der Seite 1000 zu identifizieren. Jede der Figuren ist als eine Abfolge illustriert. 13 illustriert eine Abfolge 13051330 zum Identifizieren einer ersten Bereichsgrenze. Pfeile in 13 illustrieren Richtungsvektoren und gestrichelte Linien illustrieren einen Pfad, der durch die Bereichsgrenzenintervalle genommen wird, um einen Bereich zu definieren. 14 illustriert die durch den Prozess 1200 identifizierten Bereiche.
  • Wie in 12 gezeigt, empfängt der Prozess 1200 (bei 1205) Bereichsgrenzen und Überschneidungen für eine Gruppe oder Seite. In einigen Ausführungsformen sind die Bereichsgrenzen und Überschneidungen die Ausgabe des oben beschriebenen Prozesses 900. Der Prozess stellt dann (bei 1207) fest, ob es irgendwelche Bereichsgrenzenintervalle gibt. Wenn es keine gibt, endet der Prozess. Andernfalls ordnet der Prozess (bei 1210) jedem Bereichsgrenzenintervall zwei Richtungsvektoren zu (d. h. horizontale Intervalle haben nach rechts und links zeigende Vektoren und vertikale Intervalle haben aufwärts oder abwärts zeigende Vektoren). 13 illustriert (bei 1305), dass jedes der Grenzintervalle für die Seite 1000 mit Richtungsvektoren in beiden Richtungen beginnt.
  • Als nächstes wählt der Prozess (bei 1215) ein Grenzintervall b, eine Überschneidung i und eine Richtung d aus. Einige Ausführungsformen wählen den Startpunkt zufällig aus, während andere Ausführungsformen eine Heuristik verwenden, wie beispielsweise die am weitesten oben und links liegende Überschneidung in einer bestimmten Richtung. 13 illustriert (bei 1305) eine Zufallsauswahl mit einem Startpunkt bei der Überschneidung 1182 mit einer Aufwärtsbewegung entlang dem Intervall 1115. Der Prozess 1200 schreitet dann (bei 1220) von der Überschneidung i in der Richtung d fort, bis er die nächste Überschneidung erreicht.
  • Sobald die Überschneidung erreicht wird, stellt der Prozess (bei 1225) fest, ob die Überschneidung die bei 1215 ausgewählte Startüberschneidung ist. Wenn die Überschneidung die ursprüngliche Startüberschneidung ist, wird der Prozess bei 1265 wie nachfolgend beschrieben fortgesetzt. Andernfalls stellt der Prozess (bei 1230) fest, ob der Pfad durch die Bereichsgrenzenintervalle an der Überschneidung im Uhrzeigersinn abbiegen kann. Wenn der Pfad im Uhrzeigersinn abbiegen kann, so tut der Pfad dies (bei 1235). Der Prozess wird dann bei 1255 wie nachfolgend beschrieben fortgesetzt. Wenn der Pfad nicht im Uhrzeigersinn abbiegen kann, stellt der Prozess fest (bei 1240), ob der Pfad geradeaus durch die Überschneidung fortgesetzt werden kann. Wenn der Pfad geradeaus fortgesetzt werden kann, dann tut der Pfad dies (bei 1245). Der Prozess schreitet dann zu 1255 fort, wie nachfolgend beschrieben. Wenn der Pfad nicht geradeaus fortgesetzt werden kann, biegt der Pfad (bei 1250) entgegen dem Uhrzeigersinn zu dem nächsten Grenzintervall ab. Durch die in den Schritten 1230 und 1240 erfolgten Auswahlen zeigt der Prozess 1250 eine Präferenz für ein Abbiegen im Uhrzeigersinn an jeder Grenzüberschneidung. Einige Ausführungsformen werden stattdessen eine Präferenz für ein Abbiegen entgegen dem Uhrzeigersinn zeigen, was dieselben Ergebnisse liefert.
  • Der Prozess setzt (bei 1255) das neue Grenzintervall als das aktuelle Grenzintervall b und die neue Überschneidung als die aktuelle Überschneidung i fest. Der Prozess setzt dann (bei 1260) die Richtung d so fest, dass sie von der Überschneidung i aus entlang der Grenze b verläuft. Der Prozess schreitet dann bei 1220 wie oben beschrieben fort.
  • Sobald die ursprüngliche Überschneidung erreicht wird, definiert der Prozess 1200 (bei 1265) einen Bereich Z als die Menge der Grenzintervalle, die seit der Operation 1215 durchlaufen wurden. Wie oben bemerkt, illustriert 13 das Durchlaufen einer Gruppe von Bereichsgrenzenintervallen gemäß dem Prozess 1200. Bei 1305, nachdem das von der Überschneidung 1182 aufwärts verlaufende Intervall 1145 für den Start ausgewählt wurde (durch den Kreis und den kurzen Pfeil in der Figur gezeigt), erreicht der Pfad die Überschneidung 1112. Ein Abbiegen im Uhrzeigersinn ist eine Option, so dass der Pfad (bei 1310) zum Intervall 1120 abbiegt, dann nochmals im Uhrzeigersinn bei Überschneidung 1122 zum Intervall 1155. Der Pfad biegt dann (bei 1315) nochmals im Uhrzeigersinn bei Überschneidung 1132 zum Intervall 1150 ab, aber dann kann er bei der Überschneidung 1142 weder im Uhrzeigersinn abbiegen noch geradeaus fortgesetzt werden. Stattdessen biegt der Pfad entgegen dem Uhrzeigersinn zum Intervall 1145 ab und dann nochmals bei Überschneidung 1152 zum Intervall 1160, um weiter zur Überschneidung 1162 zu verlaufen. Bei der Überschneidung 1162 biegt der Pfad (bei 1320) im Uhrzeigersinn zum Intervall 1145 ab, dann nochmals im Uhrzeigersinn bei Überschneidung 1172 zum Intervall 1180. Intervall 1180 leitet den Pfad zur ursprünglichen Überschneidung 1182 zurück.
  • 13 illustriert (bei 1325) den Bereich 1300, der durch das Durchlaufen der Intervalle 1115, 1120, 1155, 1150, 1145, 1160, 1175 und 1180 definiert wurde, sowie die bei diesem Durchlaufen verwendeten Richtungsvektoren. Auf den Prozess 1200 zurückkommend, nach dem Definieren (bei 1265) des Bereichs Z, entfernt der Prozess (bei 1270) die Richtungsvektoren, die verwendet wurden, um den Bereich Z zu durchlaufen. 13 illustriert (bei 1330) die Bereichsgrenzenintervalle der Seite 1000, wobei die zum Durchlaufen des Bereichs 1300 verwendeten Richtungsvektoren entfernt wurden.
  • Als nächstes entfernt der Prozess 1200 (bei 1275) alle Grenzintervalle ohne verbleibende Richtungsvektoren. Dies wird nicht auftreten, nachdem der erste Bereich identifiziert wurde, es kann aber auftreten, nachdem irgendeiner der weiteren Bereiche identifiziert wurde. Wenn der Bereich Z eine Insel ist (d. h. ein Bereich der mit seinem Elternteil keine Grenzen gemeinsam hat), dann klassifiziert der Prozess 1200 (bei 1280) den Bereich als solche. In Ausführungsformen, in denen die Präferenz für ein Abbiegen im Uhrzeigersinn besteht, wird dann ein Bereich, der durch ein Durchlaufen seines Mittelpunkts in einer Richtung entgegen dem Uhrzeigersinn definiert ist, eine Insel sein.
  • Der Prozess stellt dann fest (bei 1285), ob irgendwelche Bereichsgrenzenintervalle übrig sind. Wenn mehrere Bereichsgrenzenintervalle verbleiben, wird der Prozess (bei 1215) wie oben beschrieben fortgesetzt. Andernfalls, sobald alle Bereichsgrenzenintervalle in beiden Richtungen verwendet wurden, hat der Prozess alle Bereiche für die Seite definiert. Der Prozess speichert dann (bei 1290) die Bereichsinformationen. Dann endet der Prozess.
  • 14 illustriert die Fortsetzung des Prozesses 1200, angewandt auf die Seite 1000. Der Einfachheit halber illustriert 14 nicht jede Bewegung für das Durchlaufen der Bereichsgrenzenintervalle. Zunächst werden, beginnend mit irgend einer der Überschneidungen 1113, 1123, 1133 und 1143, die beiden Bereiche 1435 und 1440 identifiziert. Diese Bereiche sind Duplikate voneinander wie dies im Falle von Inseln sein wird, die keine Kinder haben, welche keine Inseln sind. Einige Ausführungsformen entfernen Duplikatbereiche. Andere Ausführungsformen dagegen behandeln die Bereiche als zwei: einen, der ein regulärer Bereich ist, sowie den anderen, der eine Insel ist. Als nächstes resultiert ein Beginn bei Überschneidung 1192 im Bereich 1445 (den Seitengrenzen), weil alle möglichen Abbiegungen von den Seitengrenzen weg Bewegungen entgegen dem Uhrzeigersinn wären. Schließlich lässt dies die Bereiche 1450 und 1455 übrig, die durchlaufen und entfernt werden. Sobald alle Bereiche durchlaufen wurden, gibt es keine verbleibenden Bereichszonenintervalle mehr.
  • E. Erzeugen des Bereichsbaums
  • Sobald die Bereiche identifiziert wurden, kann der Bereichsgraph (Bereichsbaum) erzeugt werden. Der Bereichsbaum wird in einigen Ausführungsformen bei einer Dokumentenrekonstruktion verwendet, die bereichsweise erfolgt. 15 illustriert konzeptionell einen Prozess 1500 einiger Ausführungsformen zur Erzeugung eines Bereichsbaums. Wie gezeigt, empfängt der Prozess (bei 1505) Bereiche und Inhaltsobjekte. In einigen Ausführungsformen wurden diese Bereiche durch einen Prozess wie beispielsweise Prozess 1200 identifiziert. Der Prozess sortiert dann (bei 1510) die Bereiche nach der Fläche. Einige Ausführungsformen behandeln zum Zwecke der Bereichssortierung eine Insel als großer als eine Nichtinsel, wenn ihre Flächen übereinstimmen.
  • Als nächstes wählt der Prozess (bei 1515) den kleinsten Bereich als z. Der Prozess stellt darin (bei 1520) fest, ob der Bereich z bereits einen Knoten in dem Bereichsgraph für die Seite aufweist. Wenn z einen Knoten hat, dann wird der Prozess bei 1530 wie nachfolgend beschrieben fortgesetzt. Andernfalls, wenn z noch keinen Knoten hat, definiert der Prozess 1500 (bei 1525) einen Knoten für den Bereich z.
  • Als nächstes wählt der Prozess (bei 1530) den nächstkleineren Bereich als Bereich p aus. Der Prozess stellt dann (bei 1535) fest, ob der Bereich p den Bereich z enthält (d. h., ob die äußeren Begrenzungen des Bereichs z sich vollständig innerhalb der äußeren Begrenzungen des Bereichs p befinden). Wenn der Bereich p im Bereich z enthält, bestimmt der Prozess (bei 1540), dass der Bereich z ein Kind des Bereichs p ist. Beruhend darauf definiert der Prozess (bei 1545) einen Knoten für den Bereich p in dem Knotengraphen. Der Prozess definiert dann (bei 1550) eine Kante von Bereich p zum Bereich z. Dann schreitet der Prozess zu 1565 fort, wie unten beschrieben.
  • Wenn der Prozess bei 1535 feststellt, dass der Bereich p den Bereich z nicht enthält, stellt der Prozess (bei 1555) fest, ob es irgendwelche Bereiche gibt, die größer sind als der aktuelle Bereich p. Wenn es verbleibende größere Bereiche gibt, schreitet der Prozess zu 1530 fort und wählt den nächst kleineren Bereich als Bereich p aus, um zu prüfen ob der neue Bereich p ein Elternteil von Bereich z ist. Andernfalls, wenn es keine Bereiche gibt, die größer als der Bereich p sind, dann stellt der Prozess (bei 1560) fest, dass der Bereich z keine Elternbereiche aufweist.
  • Als nächstes stellt der Prozess (bei 1565) fest, ob es irgendwelche Bereiche gibt, die größer sind als der Bereich z. Wenn es größere Bereiche gibt, dann entfernt der Prozess (bei 1570) den Bereich z aus der Gruppe von Bereichen, aus denen die Auswahl stattfindet, und wird bei 1515 fortgesetzt, um einen anderen Bereich zur Eltern-Kind-Analyse auszuwählen.
  • 16 illustriert die Bereiche 1435 (A), 1440 (A'), 1455 (B), 1450 (C), 1300 (D) und 1445 (E) auf Seite 1000 (in 10 gezeigt) der Größe nach sortiert (A' ist die Insel für A) und in dem Knotengraph 1600 angeordnet. Unter Verwendung des Prozesses 1500 würde erst ein Knoten für den Bereich A (den kleinsten Bereich) definiert werden, dann würden die Bereiche geprüft werden, bis der Prozess feststellte, dass der Inselbereich A' ein Elternteil des Bereichs A ist, an welchem Punkt der Bereich A in dem Knotengraph definiert würde, und eine Kante von A' nach A definiert würde. Als nächstes würde der Bereich D als Elternteil des Inselbereichs A' bestimmt und sodann würden die Bereiche B, C und D alle als Kinder des Inselbereichs E bestimmt werden, der keine Eltern aufweist. In einigen Ausführungsformen wechseln sich Ebenen von Bereichen und Inselbereichen im Bereichsgraph immer ab. Auf diese Weise finden sich die Inseln E und A' auf der ersten bzw. dritten Ebene des Graphen 1600 und die Bereiche B, C, D und A finden sich auf der zweiten bzw. vierten Ebene.
  • Sobald alle Bereiche analysiert wurden, schreitet der Prozess nach 1573 fort und stellt fest, ob es irgendwelche unverarbeiteten Inhaltsobjekte gibt. Wenn es keine Inhaltsobjekte gibt (d. h. das Dokument ist bis auf Bereichsgrenzen leer) oder wenn alle Inhaltsobjekte verarbeitet wurden, dann schreitet der Prozess nach 1597 fort, wie unten beschrieben. Andernfalls schreitet der Prozess nach 1575 fort und wählt ein Inhaltsobjekt c. Der Prozess definiert dann (bei 1580) einen Knoten für das Objekt c. Ein Inhaltsobjekt ist in einigen Ausführungsformen ein primitives Objekt (z. B. eine Glyphe, eine Form oder ein Bild). Der Prozess bestimmt dann (bei 1585) den kleinsten Bereich x, der das Inhaltsobjekt c enthält. Sobald der das Inhaltsobjekt c enthaltende Bereich x bestimmt ist, definiert der Prozess (bei 1590) eine Kante im Bereichsgraph von dem Bereich x zum Inhaltsobjekt c. Wenn alle Objekte hinzugefügt wurden, speichert der Prozess (bei 1597) den Bereichsgraph. Dann endet der Prozess.
  • In einigen Ausführungsformen wird der Inhalt in jedem Bereich weiteranalysiert (z. B. Gruppieren von Text in Absätze, Identifizieren von Tabellen, usw.). Des Weiteren aktualisieren einige Ausführungsformen den Bereichsgraph bei der Ausführung der Dokumentenrekonstruktion mit Inhalts-Unterbäumen für jeden Bereich, wobei diese Inhalts-Unterbäume Strukturknoten enthalten, welche die hierarchische Gruppierung der primitiven Objekte der Zone darstellen. Indem die Bereichsanalyse zuerst ausgeführt wird, stellt man sicher, dass Inhalte von verschiedenen Bereichen nicht in den nachfolgenden Schritten der Dokumentenrekonstruktion unpassend gruppiert werden.
  • In einigen Ausführungsformen bereitet die Identifikation geometrischer Attribute wie beispielsweise von Begrenzungen und den durch diese Begrenzungen begrenzten Bereichen (z. B. Zonen) die Bühne für die weitere Dokumentenrekonstruktion. Beispielsweise können Profile von der Bereichsgeometrie abhängen und strukturelle Elemente wie beispielsweise Tabellen oder Textkästchen können aus der Bereichsgeometrie erkannt werden.
  • F. Softwarearchitektur
  • In einigen Ausführungsformen werden die oben beschriebenen Bereichsanalyseprozesse in Form einer Software implementiert, die auf einer bestimmten Maschine wie beispielsweise einem Computer, einem Medienspieler, einem Mobiltelefon (z. B. einem iPhone®) oder einer anderen handgehaltenen oder in ihren Ressourcen limitierten Vorrichtung abläuft (oder auf einem computerlesbaren Medium gespeichert ist). 17 illustriert konzeptionell die Softwarearchitektur einer Bereichsanalyseanwendung 1700 einiger Ausführungsformen zur Durchführung einer Bereichsanalyse für ein Dokument. In einigen Ausführungsformen ist die Anwendung eine selbstständige Anwendung oder sie ist in eine andere Anwendung (z. B. eine Dokumentenrekonstruktionsanwendung) integriert, während in anderen Ausführungsformen die Anwendung innerhalb eines Betriebssystems implementiert sein könnte.
  • Die Bereichsanalyseanwendung 1700 enthält ein Grenzidentifikationsmodul 1705, ein Intervall- und Überschneidungsidentifikatiansmodul 1710, ein Bereichsidentifikationsmodul 1715 und einen Bereichsgraphgenerator 1720 sowie einen Bereichsinformationsspeicher 1725.
  • 17 illustriert auch Dokumenteninhalte 1730. Das Grenzidentifikationsmodul 1705 empfängt Informationen aus dem Dokumenteninhalt 1730. In einigen Ausführungsformen sind diese Informationen über alle Grafiken (z. B. Formen, Bilder, Linien, usw.) in dem Dokument. Das Grenzidentifikationsmodul 1705 identifiziert potentielle Bereichsgrenzen und reicht diese Informationen an das Intervall- und Überschneidungsidentifikationsmodu1 1710 sowie an den Bereichsinformationsspeicher 1725 weiter. In einigen Ausführungsformen führt das Grenzidentifikationsmodul 1705 den Prozess 900 teilweise oder vollständig aus.
  • Das Intervall- und Überschneidungsidentifikationsmodul 1710 empfängt Bereichsgrenzeninformationen von dem Grenzidentifikationsmodul 1705 und/oder dem Bereichsinformationsspeicher 1725. Das Intervall- und Überschneidungsidentifikationsmodul 1710 identifiziert Bereichsgrenzenüberschneidungen und Bereichsgrenzenintervalle beruhend auf den potentiellen Bereichsgrenzen, die durch das Modul 1705 identifiziert wurden. Die identifizierten Bereichsgrenzenüberschneidungen und Bereichsgrenzenintervalle werden an das Bereichsidentifikationsmodul 1715 weitergeleitet und in dem Bereichsinformationsspeicher 1725 gespeichert. In einigen Ausführungsformen führt das Intervall- und Überschneidungsidentifikationsmodul 1710 den Prozess 900 teilweise oder vollständig aus.
  • Das Bereichsidentifikationsmodul 1715 empfängt Bereichsgrenzeninformationen von dem Bereichsidentifikationsmodul 1705, Bereichsgrenzenüberschneidungs- und Bereichsgrenzenintervallinformationen von dem Intervall- und Überschneidungsidentifikationsmodul 1710, und/oder Informationen von dem Bereichsinformationsspeicher 1725. Das Bereichsidentifikationsmodul 1715 identifiziert Bereiche beruhend auf der Information von den Modulen 1705 und 1715. Die identifizierten Bereiche werden an den Bereichsgraphgenerator weitergeleitet und in dem Bereichsinformationsspeicher 1725 gespeichert. In einigen Ausführungsformen führt das Bereichsidentifikationsmodul 1715 den Prozess 1200 teilweise oder vollständig aus.
  • Das Bereichsgraphgeneratormodul 1720 empfängt Bereichsinformationen von dem Bereichsidentifikationsmodul 1715 und/oder dem Bereichsinformationsspeicher 1725, sowie Inhaltsinformationen aus den Dokumenteninhalten 1730. Der Bereichsgraphgenerator 1720 definiert den Bereichsgraph für ein Dokument beruhend auf den Bereichsinformationen und füllt den Bereichsgraph mit Inhaltsinformationen. In einigen Ausführungsformen füllt der Bereichsgraphgenerator 1720 Uhr den Bereichsgraph wenn Inhaltsinformationen durch andere Rekonstruktionsprozesse identifiziert werden, wie durch solche in den nachfolgenden Abschnitten beschriebene. In einigen Ausführungsformen führt der Bereichsgraphgenerator 1720 den Prozess 1500 teilweise oder vollständig aus.
  • In einigen Ausführungsformen werden die Ergebnisse der durch die oben beschriebenen Module oder andere Module ausgeführten Prozesse in einem elektronischen Speicher (z. B. als Teil eines Dokumenten-Objekt-Modells) gespeichert. Das Dokumenten-Objekt-Modell kann dann verwendet werden, um das Dokument auf einer elektronischen Anzeigevorrichtung (z. B. einem handgehaltenen Gerät, einem Computerbildschirm, usw.) so anzuzeigen, dass ein Benutzer das Dokument betrachten und/oder damit (z. B. mittels eines berührungsempfindlichen Bildschirms, einer Cursorsteuerungsvorrichtung, usw.) interagieren kann.
  • III. Führungs- und Spaltenzwischenraumanalyse
  • Einige Ausführungsformen der Erfindung stellen Verfahren zur Identifikation geometrischer Attribute wie beispielsweise von Begrenzungen (z. B. Ausrichtungsführungen) und von Leerräumen (z. B. Lücken aus ungefüllten Leerräumen zwischen Gruppen von Glyphen, Spaltenzwischenräume genannt) in einem Dokument oder einem Teil eines Dokuments bereit. In einigen Ausführungsformen ist ein Spaltenzwischenraum der Leerraum zwischen zwei Führungspunkten (z. B. zwischen einem Rechtsausrichtungspunkt und einem Linksausrichtungspunkt). Die Identifikation von Führungen und Spaltenzwischenräumen wird in einigen Ausführungsformen in nachfolgenden Rekonstruktionsprozeduren verwendet, wie beispielsweise der Spaltenidentifikation und dem Aufteilen von Textzeilen. Einige Ausführungsformen identifizieren Führungen und Spaltenzwischenräume bereichsweise oder seitenweise.
  • 18 illustriert einen übergreifenden Prozess 1800 einiger Ausführungsformen zur Identifikation von Führungen und Spaltenzwischenräumen in einem Dokument. Der Prozess 1800 wird im Zusammenhang mit 19, die eine Seite 1900 mit zwei Textspalten illustriert, sowie den auf der Seite 1900 identifizierten Führungen und Spaltenzwischenräumen beschrieben. Wie in 18 gezeigt, empfängt der Prozess 1800 (bei 1805) einen Teil eines Dokuments. Dieser Teil kann aus mehreren Seiten, einer Seite oder einem durch eine vorausgehende Bereichsanalyse identifizierten Bereich bestehen. Der Dokumententeil kann Worte enthalten, die mittels anderswo in dieser Anmeldung beschriebener Verfahren aus Glyphenprimitiven rekonstruiert wurden.
  • Der Prozess wendet dann (bei 1810) eine Clusteranalyse an, um Führungen für den empfangenen Dokumententeil zu bestimmen. Clusteranalyse ermöglicht es dem Prozess, x-Koordinaten zu bestimmen, an denen die Enden oder die Anfänge von Worten zusammengruppiert sind, wodurch diese x-Koordinaten zu wahrscheinlichen Ausrichtungsführungen werden. Wie erwähnt, illustriert
  • 19 eine Seite 1900 mit zwei Textspalten. Die Seite 1900 enthält einen Satz von Führungen 1905. Einige Ausführungsformen bestimmen die ersten und letzten Zeilen von Spalten als Führungen, während andere Ausführungsformen nur Links- und Rechtsausrichtungsführungen bestimmen. Einige Ausführungsformen identifizieren auch Führungen für andere Ausrichtungen, wie zum Beispiel eine Zentrierungsführung oder die Ausrichtung von Dezimalpunkten in Zahlenlisten. Die Clusteranalyse und der Prozess zur Bestimmung von Führungen werden in größerem Detail nachfolgend beschrieben.
  • Als nächstes bestimmt der Prozess (bei 1815) die Spaltenzwischenräume des Dokumententeils. Einige Ausführungsformen verwenden Informationen aus der Operation 1810, um die Spaltenzwischenräume zu bestimmen. 19 illustriert einen Spaltenzwischenraum 1910, der für die Seite 1900 zwischen der Rechtsausrichtungsführung von Spalte eins und der Linksausrichtungsführung von Spalte zwei bestimmt ist. Einige Ausführungsformen behandeln die Seitenränder als Spaltenzwischenräume, während andere Ausführungsformen dies nicht tun. Sobald die Führungen und Spalterzwischenräume bestimmt sind, verwendet der Prozess 1800 (bei 1820) die Führungen und Spaltenzwischenräume zur weiteren Rekonstruktion des Dokuments. Dann endet der Prozess.
  • A. Dichteclusterung
  • Einige Ausführungsformen bestimmen Rechts- und Linksausrichtungsführungen, indem sie Textzeilen suchen, die bei derselben oder nahezu derselben x-Koordinate auf einer Seite beginnen oder enden, und indem sie bestimmen, ob ausreichende Hinweise dafür existieren, dass die x-Koordinate tatsächlich ein Ausrichtungspunkt ist. Einige Ausführungsformen verwenden eine Form der Clusteranalyse, die Dichteclusterung genannt wird, um die Ausrichtungsführungen zu bestimmen. Die Dichteclusterung einiger Ausführungsformen nutzt die Vorteile der weiter unten in Abschnitt X beschriebenen Speicher- und Verarbeitungseffizienzen, so dass sie auf einem Gerät mit limitierten Ressourcen (z. B. einem iPhone®) ausgeführt werden kann.
  • Dichteclusterung ist oft auf Probleme anwendbar, bei denen eine substantielle Menge von „Rauschen” oder Zufallsdaten mit ansonsten klar sichtbaren Clustern gemischt ist. Wenn die Daten aus einem Satz realer Zahlen bestehen, werden die Cluster als Untermengen identifiziert, die gegebene Dichterandbedingungen optimal erfüllen. Die Randbedingungen werden im Allgemeinen so entwickelt, dass sie Untermengen heraussuchen, die relativ dichter sind als andere. Beispielsweise verwenden einige Ausführungsformen eine Minimal größe eines Clusters und eine maximale Streuung eines Clusters als Randbedingungen.
  • 20 illustriert konzeptionell einen Prozess 2000 einiger Ausführungsformen zur Durchführung einer Dichteclusterung. Wie gezeigt, empfängt der Prozess (bei 2005) einen Satz von Eingangsdaten. In einigen Ausführungsformen bestehen die Eingangsdaten aus Koordinatendaten von Zeichenglyphen auf einer Seite. Beispielsweise sind bei der Verwendung von Dichteclusterung zum Auffinden von Linksausrichtungsführungen die Eingangsdaten die x-Koordinaten des Ankers des ersten Buchstabens für jedes Wort auf der Seite.
  • Der Prozess sortiert dann (bei 2010) den Satz der Eingangsdaten. Einige Ausführungsformen sortieren die Daten in aufsteigender Reihenfolge, während andere Ausführungsformen die Daten in absteigender Reihenfolge sortieren. Beispielsweise werden im Falle der Verwendung von Dichteclusterung zur Bestimmung von Ausrichtungsführungen die Daten (x-Koordinatenwerte) vorn niedrigsten zum höchsten x-Koordinatenwert sortiert, so dass wenn zwei x-Koordinatenwerte gleich sind, sie in den sortierten Daten aufeinanderfolgen (außer wenn es andere Worte mit demselben x-Koordinatenwert gibt, die zwischen die beiden fallen). Einige Ausführungsformen erzeugen ein neues Feld für die sortierten Daten, während einige Ausführungsformen ein indirekt sortiertes Feld von Indizes verwenden, wie nachfolgend in Abschnitt X beschrieben.
  • Als nächstes stellt der Prozess 2000 (bei 2012) fest, ob der Satz wenigstens zwei Datenelemente enthält. Wenn nicht, dann endet der Prozess, da es nichts zu clustern gibt. Andernfalls wird der Prozess damit fortgesetzt, (bei 2015) den Satz von Differenzen zwischen nachfolgenden Daten in dem sortierten Satz zu bestimmen. Ein solcher Satz wird einen Wert weniger aufweisen als der Satz von Eingangsdaten. Wenn sich beispielsweise auf einer Seite drei Worte befinden, dann sind die zwei Werte in dem Satz der Differenzen die Differenz zwischen den x-Koordinatenwerten des ersten und des zweiten Worts sowie die Differenz zwischen den x-Koordinatenwerten des zweiten und des dritten Worts.
  • Als nächstes setzt der Prozess (bei 2020) eine Variable d auf die höchste nicht ausgewertete Differenz innerhalb des Satzes von Differenzen. Wenn beispielsweise die Differenzen für einen Satz von Worten 0.7 Inch, 0.2 Inch, 0.0 Inch und 0.4 Inch betragen, dann würde die variable d zunächst auf 0.7 Inch gesetzt werden. Der Prozess partitioniert dann (bei 2025) die sortierten Daten wo immer die Differenz größer oder gleich d ist, um einen Satz von Untermengen der Daten zu bilden. Die erste Partition wird die sortierten Daten immer nur bei Differenzen gleich d partitionieren, weil d auf die größte Differenz gesetzt wird. In dem obigen Beispiel von fünf Datenwerten mit den Differenzen 0.7, 0.2, 0.0 und 0.4 würde die Partitionierung zwei Untermengen erzeugen (den ersten Wert in einer Untermenge und die anderen vier in der anderen Untermenge).
  • Der Prozess bestimmt dann (bei 2030) die Menge S von Untermengen, die bestimmte Randbedingungen für das zu lösende Problem erfüllen. In einigen Ausführungsformen besteht der Zweck der Randbedingungen darin, Untermengen zu bestimmen, die relativ dichter sind als die anderen Untermengen. Einige Ausführungsformen verwenden zwei Dichterandbedingungen: eine minimale Clustergröße (d. h. die minimale Anzahl von Werten in der Untermenge) sowie eine maximale Clusterstreuung (d. h. die größte erlaubte Differenz zwischen dem größten und dem kleinsten Wert in der Untermenge). Im Falle der Verwendung von Dichteclusterung zur Bestimmung von Ausrichtungsführungen verwenden einige Ausführungsformen eine minimale Clustergröße, die ein Bruchteil der gesamten Zeilenanzahl der gerade ausgewerteten Seite oder des gerade ausgewerteten Bereichs ist, während andere Ausführungsformen eine Konstante verwenden. Einige Ausführungsformen verwenden eine maximale Streuung, die ein Bruchteil des Medians der Schriftgröße des jeweils ersten (für Linksausrichtung) oder letzten (für Rechtsausrichtung) Zeichens der Worte ist.
  • Sobald die Menge S von Untermengen, welche die Randbedingungen erfüllen, bestimmt ist, stellt der Prozess (bei 2035) fest, ob S leer ist. Wenn S leer ist, wird der Prozess bei 2055 wie nachfolgend beschrieben fortgesetzt. Wenn S wenigstens eine Untermenge enthält, evaluiert der Prozess (bei 2040) eine Optimierungsfunktion für S. Einige Ausführungsformen verwenden eine Optimierungsfunktion, die diejenige Menge S sucht, welche die größte Untermenge aufweist, die die Randbedingungen erfüllt. Andere Ausführungsformen verwenden eine Optimierungsfunktion, die versucht die Summe der Quadrate eines bestimmten Wertes (z. B. der Größe der Untermenge minus der minimalen Clustergröße) über alle die Randbedingungen erfüllenden Untermengen zu maximieren. Noch andere Ausführungsformen verwenden eine der oben genannten Optimierungsfunktionen und verwenden dann bei Gleichstand die andere. Andere Optimierungsfunktionen werden in anderen Ausführungsformen eingesetzt.
  • Als nächstes stellt der Prozess (bei 2045) beruhend auf der Optimierungsfunktion fest, ob die Menge S die bislang optimale ist. Wenn S nicht optimal ist, dann wird der Prozess bei 2055 wie nachfolgend beschrieben fortgesetzt. Andernfalls, wenn S optimal ist, speichert der Prozess (bei 2050) S als die beste bislang gefundene Menge von Clustern. Der erste Durchlauf (in dem d die größte Differenz ist) wird an diesem Punkt stets optimal sein, falls S nicht leer ist. In nachfolgenden Durchläufen wird das aktuelle S mit der gespeicherten Menge von Clustern verglichen.
  • Der Prozess stellt dann (bei 2055) fest, ob es noch irgendwelche nichtausgewerteten Differenzen gibt. Einige Ausführungsformen prüfen jede mögliche Partition, um die optimale Menge von Clustern zu finden. Einige solcher Ausführungsformen verwenden die unten im Abschnitt X beschriebenen Effizienztechniken, um eine schnellere und effizientere Verarbeitung zu ermöglichen.
  • Wenn der Prozess feststellt, dass es nichtausgewertete Differenzen gibt, wird der Prozess bei 2020 wie oben beschrieben fortgesetzt.
  • Andernfalls gibt der Prozess (bei 2060), sobald alle Differenzen ausgewertet wurden, die aktuell gespeicherte optimale Menge (oder eine leere Menge, wenn keine die Randbedingungen erfüllenden Cluster gefunden wurden) als die endgültige Menge von Clustern aus. Im Falle der Bestimmung von Ausrichtungsführungen, würde die endgültige Menge von Clustern aus Gruppen von Worten bestehen, die sehr nahe beieinander liegende x-Koordinaten aufweisen. Dann endet der Prozess. Der Durchschnittsfachmann wird erkennen, dass der Prozess 2000 zusätzlich zu den Dichterandbedingungen und dem optimalen Maß eine Konsistenzrandbedingung von den Clustern fordert; nämlich, dass clusterinterne Differenzen zwischen nacheinander folgenden Werten in einem Cluster nie größer oder gleich Differenzen zwischen Clustern sein werden, weil die Daten immer bei allen Differenzen partitioniert werden, die größer oder gleich einem spezifizierten Abstandsminimum sind.
  • B. Bestimmen von Ausrichtungsfürungen
  • Wie oben erwähnt, bestimmen einige Ausführungsformen Rechts- und Linksausrichtungsführungen durch Suchen von assoziierten Glyphenmengen (z. B. Worte, Textzeilen), die an derselben oder nahezu derselben x-Koordinate auf einer Seite beginnen oder enden, sowie durch Feststellen, ob ausreichende Hinweise dafür vorliegen, dass die x-Koordinate tatsächlich ein Ausrichtungspunkten ist. Einige Ausführungsformen verwenden ähnliche aber nicht identische Prozesse, um Linksausrichtungsführungen und Rechtsausrichtungsführungen zu finden.
  • 21 illustriert konzeptionell einen Prozess 2100 einiger Ausführungsformen zur Bestimmung von Linksausrichtungsführungen. Teile des Prozesses 2100 werden im Zusammenhang mit den 2224 beschrieben. Die 2224 illustrieren den Prozess zur Identifikation einer Linksausrichtungsführung auf einer Seite 2200. Wie in 21 gezeigt, legt der Prozess 2100 (bei 2105) die Eingangsdaten für eine Dichteclusterung als die x-Koordinaten der linken Kante der Worte in einem Bereich eines Dokuments fest. In einigen Ausführungsformen ist der Bereich eine Seite oder eine Zone einer Seite. In einigen Ausführungsformen ist die linke Kante eines bestimmten Wortes die x-Koordinate des Ankers für die erste Glyphe in dem bestimmten Wort, die auf die für die Glyphe erwartete linke Ausrichtungsposition angepasst ist.
  • Der Prozess bestimmt dann (bei 2110) gewünschte Clustereigenschaften. In einigen Ausführungsformen sind die Clustereigenschaften die oben beschriebenen Randbedingungen für die Dichteclusterung. Einige Ausführungsformen verwenden zwei Dichterandbedingungen: eine minimale Clustergröße (d. h. die minimale Anzahl von Werten in der Untermenge) sowie eine maximale Clusterstreuung (d. h. die größte erlaubte Differenz zwischen dem größten und dem kleinsten Wert in der Untermenge). In dem Fall, dass die Dichteclusterung zur Bestimmung von Ausrichtungsführungen verwendet wird, verwenden einige Ausführungsformen eine minimale Clustergröße, die ein Bruchteil der gesamten Anzahl von Zeilen auf der Seite oder der auszuwertenden Zone ist, während andere Ausführungsformen eine Konstante verwenden. Einige Ausführungsformen verwenden eine maximale Streuung, die ein Bruchteil des Medians der Schriftgröße für die ersten (für Linksausrichtung) oder letzten (Rechtsausrichtung) Zeichen der Worte ist. Bei einem Beispiel für Randbedingungen beträgt die minimale Clustergröße 5% der Gesamtzahl der Textzeilen in dem Bereich und die maximale Streuung beträgt 10% des Medians der Schriftgröße.
  • Als nächstes wendet der Prozess (bei 2115) eine Dichteclusterung auf die Eingangsdaten an, wobei die bestimmten Clustereigenschaften verwendet werden, um Cluster aus x-Koordinatenwerten zu bestimmen, welche Ausrichtungsführungen darstellen könnten. Einige Ausführungsformen verwenden Prozess 2000 wie oben beschrieben.
  • Prozess 2100 stellt dann fest (bei 2117), ob es irgendwelche nichtausgewerteten Cluster gibt. Wenn es keinen Cluster gibt oder alle Cluster ausgewertet sind, endet der Prozess. Andernfalls wählt der Prozess (bei 2120) einen Cluster aus (d. h. einen der durch die Clusteranalyse ausgegebenen Cluster). Der Prozess legt dann (bei 2125) eine Linksausrichtungsführung als ein Rechteck fest, mit den minimalen bzw. maximalen x-Koordinaten als die kleinsten bzw. größten Werte innerhalb des Clusters und den minimalen bzw. maximalen y-Koordinaten als dem Anfang bzw. dem Ende der Seite. In einigen Fällen werden die minimale und die maximale x-Koordinate dieselbe sein, da alle x-Koordinaten in dem Cluster denselben Wert haben werden. In anderen Fällen geben kleine Störungen oder zufällig in den Cluster gelangte Worte dem Rechteck eine von Null verschiedene Breite.
  • 22 illustriert eine Seite 2200 einiger Ausführungsformen mit einer potentiellen Linksausrichtungsführung 2205. Die minimale x-Koordinate des Rechtecks 2205 wird durch die linke Kante der rechten Spalte 2215 festgelegt, während die maximale x-Koordinate durch das Wort „tate” 2210 in der Mute der Seite festgelegt wird, weil der Beginn des Wortes 2210 nah genug am Beginn derjenigen Worte legt, die die linke Kante der rechten Spalte bilden, um durch den Dichteclusterungsprozess mit diesen Worten zusammengruppiert zu werden.
  • Der Prozess 2100 entfernt dann (bei 2130) das Rechteck bei y-Koordinaten, die die Randbedingungen nicht erfüllen, beruhend auf einer Analyse der Worte, die in dem Rechteck beginnen und von Worten, die das Rechteck kreuzen. Der Prozess fährt dann bei 2117 wie oben beschrieben fort. Einige Ausführungsformen entfernen einen Teil des Rechtecks an jeder Stelle, bei der ein Wort links von dem Rechteck beginnt und in das Rechteck hineinkreuzt. Das Rechteck wird auch bei jeder y-Koordinate entfernt, die sich zwischen zwei kreuzenden Worten befindet, welche nicht eine ausreichende Anzahl von Grenzworten zwischen sich aufweisen. Ein Grenzwort ist ein Wort, das auf oder bei einer der Kanten des Rechtecks beginnt. Einige Ausführungsformen verwenden eine Bedingung, dass zwischen kreuzenden Worten zumindest fünf Grenzworte sind und dass wenigstens eines dieser fünf Grenzworte das auf seiner Textzeile am weitesten links liegende sein muss oder von dem vorausgehenden Wort auf seiner Textzeile durch mehr als einen normalen Wortabstand getrennt sein muss. Einige Ausführungsformen benutzen Prozesse um Wortabstände und größere Lücken zu bestimmen, die in der US Veröffentlichung Nr. 2007/0250497 mit dem Titel „Semantic Reconstruction” von Mansfield et al. beschrieben sind, welche hierin durch Verweis aufgenommen wird. Einige Ausführungsformen verwenden andere Bedingungen (z. B. weniger oder mehr als fünf Grenzworte, zwischen kreuzenden Worten), um die Operation 2130 auszuführen.
  • 23 illustriert die Seite 2200 und das Rechteck 2205, bei dem die kreuzenden Worte für das Rechteck 2205 eingekreist sind. Die kreuzenden Worte enthalten unter anderem die Worte 2340 („reprehenderit”) und 2315 („dolore”). Es befinden sich zwei Grenzworte 2210 („tate”) und 2325 („esse”) zwischen den kreuzenden Worten 2340 und 2315; wenn allerdings die Bedingung für Grenzworte zwischen kreuzenden Worten gleich drei oder größer ist, dann würde das Rechteck bei diesem Abschnitt ebenso entfernt werden. Einige Ausführungsformen führen die Entfernung nur zwischen im größten Anstieg bis zum größten Abstieg der kreuzenden Worte durch sowie für nichtqualifizierte Bereiche zwischen kreuzenden Worten. Andere Ausführungsformen entfernen auch Bereiche, die sich wahrscheinlich jenseits der Ausrichtungsführungen befinden, wie zum Beispiel den Bereich von dem kreuzenden Wort 2330 („autir”) bis zur Grenze des Wortes 2335 („reprehenderit”) darüber.
  • 24 illustriert Linksausrichtungsführungen 2405 und 2410 für die Seite 2200. Wegen des herausgehobenen Bereichs in der Mitte der Seite verlaufen die Linksausrichtungsführungen an dieser bestimmten x-Koordinate nicht entlang der Länge der gesamten Seite 2200.
  • Wie oben erwähnt, verwenden einige Ausführungsformen einen dem Prozess 2100 ähnlichen Prozess zur Bestimmung der Rechtsausrichtungsführungen. 25 illustriert konzeptionell einen Prozess 2500 einiger Ausführungsformen zur Bestimmung der Rechtsausrichtungsführungen. Wie gezeigt, legt der Prozess (bei 2505) die Eingangsdaten für die Dichteclusterung als die x-Koordinaten der rechten Kante von Worten in einem Bereich eines Dokuments fest. Der Bereich ist in einigen Ausführungsformen eine Seite oder eine Zone auf einer Seite. In einigen Ausführungsformen ist die rechte Kante eines bestimmten Wortes die x-Koordinate des Ankers der letzten Glyphe in dem bestimmten Wort plus der x-Koordinate für den Vorrückvektor für die letzte Glyphe in dem Wort, angepasst an die für die Glyphe erwartete Rechtsausrichtungsposition.
  • Der Prozess bestimmt dann (bei 2510) gewünschte Clustereigenschaften. In einigen Ausführungsformen sind die Clustereigenschaften die oben beschriebenen Randbedingungen für Dichteclusterung. Einige Ausführungsformen verwenden zwei Dichterandbedingungen: eine minimale Clustergröße (d. h. die minimale Anzahl von Werten in der Untermenge) sowie eine maximale Clusterstreuung (d. h. die größte erlaubte Differenz zwischen dem größten und dem kleinsten Wert in der Untermenge). Im Falle der Verwendung von Dichteclusterung zur Bestimmung von Ausrichtungsführungen verwenden einige Ausführungsformen eine minimale Clustergröße, die ein Bruchteil der gesamten Zeilenanzahl der gerade ausgewerteten Seite oder der gerade ausgewerteten Zone ist, während andere Ausführungsformen eine Konstante verwenden. Einige Ausführungsformen verwenden eine maximale Streuung, die ein Bruchteil des Medians der Schriftgröße des jeweils ersten (für Linksausrichtung) oder letzten (für Rechtsausrichtung) Zeichens der Worte ist. Bei einem Beispiel für Randbedingungen beträgt die minimale Clustergröße 5% der Gesamtzahl der Textzeilen in dem Bereich und die maximale Streuung beträgt 10% des Medians der Schriftgröße.
  • Als nächstes wendet der Prozess (bei 2515) eine Dichteclusterung auf die Eingangsdaten an, wobei die bestimmten Clustereigenschaften verwendet werden, um Cluster aus x-Koordinatenwerten zu bestimmen, die Ausrichtungsführungen darstellen könnten. Einige Ausführungsformen verwenden Prozess 2000 wie oben beschrieben.
  • Der Prozess 2100 stellt dann fest (bei 2517), ob es irgendwelche nichtausgewerteten Cluster gibt. Wenn es keinen Cluster gibt oder alle Cluster ausgewertet sind, endet der Prozess. Andernfalls wählt der Prozess (bei 2520) einen Cluster aus (d. h. einen der durch die Clusteranalyse ausgegebenen Cluster). Der Prozess legt dann (bei 2525) eine Linksausrichtungsführung als ein Rechteck fest, mit den minimalen bzw. maximalen x-Koordinaten als den kleinsten bzw. größten Werte innerhalb des Clusters und den minimalen bzw. maximalen y-Koordinaten als dem Anfang bzw. dem Ende der Seite. In einigen Fällen werden die minimale und die maximale x-Koordinate dieselbe sein, da alle x-Koordinaten in dem Cluster denselben Wert haben werden. In anderen Fällen geben kleine Störungen oder zufällig in den Cluster gelangte Worte dem Rechteck eine von Null verschiedene Breite.
  • Der Prozess entfernt dann (bei 2530) das Rechteck bei y-Koordinaten, die die Randbedingungen nicht erfüllen, beruhend auf einer Analyse der Worte, die in dem Rechteck enden, und von Worten, die das Rechteck kreuzen. Der Prozess fährt dann bei 2517 wie oben beschrieben fort. Einige Ausführungsformen entfernen einen Teil des Rechtecks an jeder Stelle, bei der ein Wort kreuzt oder in dem Rechteck beginnt und rechts von dem Rechteck endet. Das Rechteck wird auch bei jeder y-Koordinate entfernt, die sich zwischen zwei kreuzenden Worten befindet, welche nicht eine ausreichende Anzahl von Grenzworten zwischen sich aufweisen. Ein Grenzwort ist ein Wort, das auf oder bei einer der Kanten des Rechtecks endet. Einige Ausführungsformen verwenden eine Bedingung, dass zwischen kreuzenden Worten zumindest fünf Grenzworte sind und dass wenigstens eines dieser fünf Grenzworte das auf seiner Textzeile am weitesten rechts liegende sein muss oder von dem nächsten Wort auf seiner Textzeile durch mehr als einen normalen Wortabstand getrennt sein muss. Einige Ausführungsformen benutzen Prozesse, die in der oben genannten US Veröffentlichung Nr. 2007/0250497 beschrieben sind, um Wortabstände und größere Lücken zu bestimmen. Einige Ausführungsformen verwenden andere Bedingungen (z. B. weniger oder mehr als fünf Grenzworte, zwischen kreuzenden Worten), um die Operation 2530 auszuführen.
  • C. Bestimmen von Spaltenzwischenräumen
  • Nach dem Bestimmen der Führungen bestimmen einige Ausführungsformen dann Spaltenzwischenräume des Bereiches (z. B. der Zone, der Seite, usw.). Einige Ausführungsformen verwenden Informationen aus dem Prozess zur Bestimmung von Führungen (z. B. Prozesse 2000 und 2500), um die Gruppierungen von unbeschriebenen Leerräumen zwischen assoziierten Glyphen (z. B. Spaltenzwischenräume) des Bereiches zu bestimmen. Einige Ausführungsformen verwenden auch andere Ausrichtungspunkte zusätzlich zu Führungen zur Bestimmung von Spaltenzwischenräumen in einem Bereich.
  • 26 illustriert konzeptionell einen Prozess 2600 einiger Ausführungsformen zur Bestimmung von Spaltenzwischenräumen für einen Bereich. Teile des Prozesses 2600 werden im Zusammenhang mit den 2729 beschrieben. Die 2729 illustrieren den Prozess zur Identifizierung eines Spaltenzwischenraums auf einer Seite 2700.
  • Wie in 26 gezeigt, empfängt der Prozess (bei 2605) Ausrichtungsinformationen. In einigen Ausführungsformen bestehen diese Informationen aus den durch die Prozesse 2100 und 2500 bestimmten Führungen. Einige Ausführungsformen schließen andere Ausrichtungspunkten sowie Führungen ein. Beispielsweise werden in einigen Ausführungsformen die Enden von Textzeilen in einem linksbündig ausgerichteten (unjustierten) Text als Rechtausrichtungspunkte behandelt. Dies ermöglicht die Identifizierung von Spaltenzwischenräumen in Spaltenlücken, selbst wenn an der rechten Kante der ersten Spalte keine Führung gefunden wird. Gleichermaßen werden in einigen Ausführungsformen die linke Kante von rechtsbündig ausgerichtetem Text oder beide Kanten von zentriertem Texts als Ausrichtungspunkte betrachtet.
  • Der Prozess 2600 stellt dann (bei 2607) fest, ob es irgendwelche nichtbearbeiteten Rechtsausrichtungspunkte gibt. Wenn es keine Rechtsausrichtungspunkte gibt, oder alle verarbeitet wurden, endet der Prozess. Andernfalls wählt der Prozess (bei 2610) einen Rechtsausrichtungspunkt. In einigen Ausführungsformen identifiziert der Prozess den am weitesten links liegenden Rechtsausrichtungspunkt zuerst, während er in anderen Ausführungsformen einen zufälligen Rechtsausrichtungspunkt auswählt.
  • Der Prozess stellt dann (bei 2615) fest, ob ein Linksausrichtungspunkt zwischen dem ausgewählten Rechtsausrichtungspunkt und der rechten Kante des Bereichs existiert. Wenn es keine Linksausrichtungspunkte gibt, wird der Prozess bei 2607 fortgeführt, wie oben beschrieben. Andernfalls, wenn es wenigstens einen Linksausrichtungspunkt zwischen. dem Rechtsausrichtungspunkt der Bereichskante gibt, identifiziert der Prozess (bei 2620) den nächsten Linksausrichtungspunkt, indem er von dem ausgewählten Rechtsausrichtungspunkt ausgehend nach rechts über den Bereich wandert. Es ist die Fläche zwischen diesen beiden Punkten, die der Prozess prüft, um festzustellen, ob es einen Spaltenzwischenraum gibt.
  • Sobald die Rechts- und Linksausrichtungspunkte identifiziert sind, legt der Prozess (bei 2625) einen Spaltenzwischenraum als ein Rechteck mit dem Rechtsausrichtungspunkt als der minimalen x-Koordinate und dem Linksausrichtungspunkt als der maximalen x-Koordinate fest. Die minimalen bzw. maximalen y-Koordinaten des Rechtecks sind der Beginn bzw. das Ende der Seite. 27 illustriert die Seite 2700 und ein Rechteck 2705, das auf einen möglichen Spaltenzwischenraum zu prüfen ist. Die minimale x-Koordinate ist der Rechtsausrichtungspunkt an der rechten Kante der ersten Spalte und die maximale x-Koordinate der Linksausrichtungspunkt an der linken Kante der zweiten Spalte.
  • Als nächstes entfernt der Prozess (bei 2630) den Spaltenzwischenraum bei y-Koordinaten, die nicht die Randbedingungen erfüllen, beruhend auf einer Analyse der Worte, die in das Rechteck hineinkreuzen und das Rechteck umranden. Einige Ausführungsformen entfernen einen Teil des Rechtecks an jeder Stelle, an der ein Wort in das Rechteck hineinkreuzt oder darin beginnt. Das Rechteck wird auch bei jeder y-Koordinate entfernt, die sich zwischen zwei kreuzenden Worten befindet, welche nicht eine ausreichende Anzahl von Grenzworten zwischen sich aufweisen. Ein Grenzwort für einen Spaltenzwischenraum ist ein Wort, das an der linken Kante des Rechtecks endet oder an der rechten Kante des Rechtecks beginnt. Einige Ausführungsformen verwenden eine Bedingung, dass zwischen kreuzenden Worten zumindest fünf Grenzworte sind und dass wenigstens eines dieser fünf Grenzworte das auf seiner Textzeile am weitesten links liegende sein muss oder von dem vorausgehenden Wort auf seiner Textzeile durch mehr als einen normalen Wortabstand getrennt sein muss. Einige Ausführungsformen benutzen Prozesse, die in der oben genannten US Veröffentlichung Nr. 2007/0250497 beschrieben sind, um Wortabstände und größere Lücken zu bestimmen. Einige Ausführungsformen verwenden andere Bedingungen (z. B. weniger oder mehr als fünf Grenzworte zwischen kreuzenden Worten), um die Operation 2630 auszuführen. Der Prozess wird bei 2607 wie oben beschrieben fortgesetzt.
  • 28 illustriert die Seite 2700 und das Rechteck 2705, wobei die kreuzenden Worte für das Rechteck 2705 eingekreist sind. Die kreuzenden Worte umfassen unter anderem die Worte 2810 (”cillum”) und 2815 („nulla”). Zwischen den kreuzenden Worten 2810 und 2815 befindet sich ein Grenzwort 2820 („eu”); wenn allerdings die Bedingung für Grenzworte zwischen kreuzenden Worten zwei oder größer ist, dann würde das Rechteck durch diesen Abschnitt ebenfalls entfernt werden. Einige Ausführungsformen entfernen nur von dem größten Anstieg zu dem größten Abfall kreuzender Worte sowie nichtqualifizierende Bereiche zwischen kreuzenden Worten. Andere Ausführungsformen entfernen auch Bereiche, die sich wahrscheinlich jenseits der Spaltenzwischenräume befinden.
  • 29 illustriert Spaltenzwischenräume 2905 und 2910 für die Seite 2700. Wegen des herausgehobenen Bereiches in der Mitte der Seite, verläuft der Spaltenzwischenraum zwischen den zwei Hauptspalten nicht über die gesamte Länge der Seite.
  • Einige Ausführungsformen verwenden die Führungen und Spaltenzwischenräume während des gesamten semantischen Rekonstruktionsprozesses. Beispielsweise werden Spaltenzwischenräume verwendet, um Textzeilen aufzuteilen und Spalten zu identifizieren. Prozesse, die unten in Abschnitt IV beschrieben werden.
  • D. Softwarearchitektur
  • In einigen Ausführungsformen werden die oben beschriebenen Führungs- und Spaltenzwischenraumanalyseprozesse in Form einer Software implementiert, die auf einer bestimmten Maschine, wie beispielsweise einem Computer, einem Medienspieler, einem Mobiltelefon (z. B. einem iPhone®) oder anderen handgehaltenen oder ressourcenlimitierten Geräten abläuft (oder auf einem computerlesbaren Medium gespeichert ist). 30 illustriert konzeptionell die Softwarearchitektur einer Anwendung 3000 zur Führungs- und Spaltenzwischenraumanalyse einiger Ausführungsformen zur Identifizierung von Führungen und Spaltenzwischenräumen in einem Dokument. In einigen Ausführungsformen ist die Anwendung eine unabhängige Anwendung oder sie ist in eine andere Anwendung integriert (beispielsweise einer Dokumentenrekonstruktionsanwendung), während in anderen Ausführungsformen die Anwendung innerhalb eines Betriebssystems implementiert sein könnte.
  • Die Anwendung 3000 zur Führungs- und Spaltenzwischenraumanalyse umfasst ein Führungsidentifikationsmodul 3005, ein Dichteclusterungsmodul 3010 und ein Spaltenzwischenraumsidentifikationsmodul 3015, sowie einen Speicher 3020 für Führungs- und Spaltenzwischenrauminformationen.
  • 30 illustriert auch Dokumenteninhalte 3025. Das Führungsidentifikationsmodul 3005 empfängt Informationen aus den Dokumenteninhalten 3025. Das Führungsidentifikationsmodul 3005 analysiert die Dokumenteninhalte, um Ausrichtungsführungen in dem Dokument zu identifizieren. Die identifizierten Führungen werden an das Spaltenzwischenraumidentifikationsmodul 3015 weitergegeben, sowie an den Speicher 3020 für Führungs- und Spaltenzwischenrauminformationen und an die Dokumenteninhalte 3025. In einigen Ausführungsformen führt das Führungsidentifikationsmodul 3005 die Prozesse 2100 und 2500 teilweise oder vollständig aus.
  • Das Führungsidentifikationsmodul 3005 leitet die Informationen auch an das Dichteclusterungsmodul 3010 weiter und empfängt Informationen von diesem. Das Dichteclusterungsmodul 3010 empfängt Eingangsdaten von dem Führungsidentifikationsmodul 3005 und/oder dem Speicher 3025 für Führungs- und Spaltenzwischenrauminformationen und führt eine Dichteclusterung mit den Eingangsdaten aus, um potentielle Führungen zu bestimmen. In einigen Ausführungsformen führt das Dichteclusterungsmodul 3010 den Prozess 2000 teilweise oder vollständig aus.
  • Das Spaltenzwischenraumidentifikationsmodul 3015 empfängt Informationen von dem Führungsidentifikationsmodul 3005 und aus den Dokumenteninhalten 3025. Das Spaltenzwischenraumidentifikationsmodul analysiert die empfangenen Informationen, um Führungen in dem Dokument zu identifizieren. Die identifizierten Spaltenzwischenräume werden an den Speicher 3020 für Führungs- und Spaltenzwischenrauminformationen und an die Dokumenteninhalte 3025 weitergeleitet. In einigen Ausführungsformen führt das Spaltenzwischenraumidentifikationsmodul 3015 den Prozess 2600 teilweise oder vollständig aus.
  • In einigen Ausführungsformen werden die Ergebnisse der durch die oben beschriebenen Module oder andere Module ausgeführten Prozesse in einem elektronischen Speicher gespeichert (z. B. als Teil eines Dokumenten-Objekt-Modells). Das Dokumenten-Objekt-Modell kann dann zur Anzeige des Dokuments auf einer elektronischen Anzeigevorrichtung (z. B. einem handgehaltenen Gerät, Computerbildschirm, usw.) angezeigt werden, so dass ein Benutzer das Dokument betrachten und/oder damit interagieren kann (z. B. über einen berührungsempfindlichen Bildschirm, eine Cursorsteuerungsvorrichtung, usw.).
  • IV. Bestimmen des Layouts und des Flusses
  • Dokumente haben allgemein eine implizite Struktur und einen Inhaltsfluss. Insbesondere erzeugen geordnete Folgen von Zeichen (und Zeilengrafiken) Worte, geordnete Folgen von Worten erzeugen Textzeilen (oder überbrücken Textzeilen mit einem Trennungsstrich), geordnete Folgen von Textzeilen erzeugen Absätze, geordnete Folgen von Absätzen erzeugen Spalten (oder erstrecken sich über Spalten), geordnete Folgen von Spalten erzeugen Layouts und geordnete Folgen von Layouts erzeugen Abschnitte eines Dokuments. Wenn diese Struktur nicht in dem Dateiformat eines elektronischen Dokuments bereitgestellt ist, war die Struktur für Software bislang nicht zugreifbar. Während ein bloßes Betrachten eines Dokuments nicht nötiger Weise eine Dokumentenstruktur erfordert, benötigten Anwendungen zum Editieren, Importieren, Durchsuchen, Stilanpassen oder zum anderweitigen Ändern des Zwecks eines Dokuments Kenntnisse über die Dokumentenstruktur und den Fluss, um richtig funktionieren zu können.
  • Einige Ausführungsformen der Erfindung stellen Verfahren zum Bestimmen des Layouts und des Flusses eines Dokuments oder eines Bereichs eines Dokuments bereit. Dies umfasst die Bestimmung der semantischen Hierarchie (z. B. der Worte, Zeilen und Absätze eines Dokuments) sowie der Layouteigenschaften, wie zum Beispiel der Spalten und wie die Spalten für das beabsichtigte Lesen des Dokuments zusammenpassen. In einigen Ausführungsformen besteht das Ziel der Prozesse darin, die Reihenfolge zu identifizieren, in der ein Mensch das Dokument vom Anfang zum Ende lesen würde.
  • 31 illustriert konzeptionell einen Prozess 3100 einiger Ausführungsformen zur Bestimmung des Layouts und des Flusses eines Dokuments. Der Prozess 3100 wird im Zusammenhang mit 32 beschrieben. 32 illustriert eine Folge von verschiedenen Layout- und Flussinformationen, die für eine Seite 3200 eines Dokuments mit zwei Textspalten bestimmt werden. In 32 wird man erkennen, dass der Inhalt der Seite 3200 nicht entscheidend ist, sondern dass die Zeilen, Absätze usw. wichtig sind. Wie in 31 gezeigt, empfängt der Prozess 3100 (bei 3105) einen Teil eines Dokuments. In einigen Ausführungsformen ist der Teil das gesamte Dokument, oder ein Abschnitt, eine Seite oder ein Bereich.
  • Der Prozess identifiziert dann (bei 3110) Textzeilen in dem empfangenen Dokument. Dies umfasst das Identifizieren von Zeichen, die eine Grundlinie gemeinsam haben, und wenn erforderlich das Zusammenführen vorläufiger Zeilen (z. B. Tief- und Hochstellungen). 32 illustriert die Identifikation der Zeilen 3205 und 3210. Der Zeilenidentifikationsprozess einiger Ausführungsformen wird in größerem Detail nachfolgend im Unterabschnitt A beschrieben.
  • Als nächstes identifiziert der Prozess (bei 3115) Worte in dem Text. Einige Ausführungsformen verwenden Differenzclusterung, wie in der oben genannten US Veröffentlichung 2007/0250497 beschrieben, um Worte in dem Text zu identifizieren. 32 illustriert die Identifikation von Worten auf Seite 3200, einschließlich des Wortes 3215 („Lorem”) aus Zeile 3205 sowie des Wortes 3220 („amet”) aus Zeile 3210. Der Wortidentifikationsprozess wird auch in größerem Detail nachfolgend im Unterabschnitt B beschrieben.
  • Der Prozess teilt dann (bei 3120) die Textzeilen dort auf, wo der Text nicht kontinuierlich ist. 32 illustriert, dass die Zeile 3205 in zwei Zeilen 3225 und 3230 aufgeteilt wird, und die Zeile 3210 wird in die Zeilen 3235 und 3240 aufgeteilt. Der Zeilenaufteilungsprozess einiger Ausführungsformen wird in größerem Detail nachfolgend im Unterabschnitt C beschrieben.
  • Nach dem Aufteilen der Zeilen ordnet der Prozess (bei 3125) die Textzeilen in Absätzen an. 32 illustriert die Absätze 3245 und 3250, die auf Seite 3200 identifiziert wurden. Der Absatzidentifikationsprozess wird in größerem Detail nachfolgend im Unterabschnitt D beschrieben.
  • Zuletzt ordnet der Prozess (bei 3130) die Absätze in Spalten und Layouts an. 32 illustriert die Spalten 3255 und 3260, die auf Seite 3200 identifiziert wurden. Der Spalten- und Layoutidentifikationsprozess wird in größerem Detail nachfolgend im Unterabschnitt E beschrieben.
  • Einige Ausführungsformen führen nicht alle Operationen des Prozesses 3100 auf einmal aus. Stattdessen führen einige davon andere Dokumentenrekonstruktionsprozesse zwischen den Operationen des Prozesses 3100 aus. Beispielsweise bestimmen einige Ausführungsformen Textzeilen und die Worte innerhalb des Textes aber identifizieren dann Führungen und Spaltenzwischenräume, bevor sie die Textzeilen aufteilen.
  • A. Anfängliche Zeilenidentifikation
  • Wie oben erwähnt, müssen in einigen Ausführungsformen Textzeilen identifiziert werden. Weil nicht jedes Zeichen in einer bestimmten Textzeile nötiger Weise stets eine gemeinsame Grundlinie haben wird, versuchen einige Ausführungsformen Zeilen zusammen zu führen, beruhend auf Hinweisen darauf, dass es beabsichtigt ist, die Zeichen in den zwei Zeilen als Teil derselben Textzeile zu lesen (z. B. Hochstellungen und Tiefstellungen).
  • 33 illustriert konzeptionell einen Prozess 3300 einiger Ausführungsformen zum Identifizieren und Zusammenführen von Textzeilen. Der Prozess 3300 wird im Zusammenhang mit den 34 und 35 beschrieben. 34 illustriert eine Seite 3400 mit sechs Gruppen 34053430 von überlappenden Textzeilen und 35 illustriert das Zusammenfassen dieser Textzeilengruppen gemäß einiger Ausführungsformen der Erfindung.
  • Wie in 33 gezeigt, empfängt der Prozess (bei 3305) einen Teil eines Dokuments. In einigen Ausführungsformen ist der Teil eine Seite eines Dokuments, oder ein Bereich einer Seite, usw. Der Prozess stellt dann fest (bei 3307), ob es in dem Dokumentteil irgendwelche Zeichen gibt. Wenn keine vorliegen, dann endet der Prozess. Andernfalls assoziiert der Prozess (bei 3310) Zechen, die eine gemeinsame Grundlinie aufweisen, als vorläufige Textzeilen. In einigen Ausführungsformen weisen Zeichen eine gemeinsame Grundlinie auf, wenn Sie denselben y-Koordinaten-Ankerpunkt aufweisen. Im Allgemeinen wird ein Assoziieren von Zeichen, die eine gemeinsame Grundlinie aufweisen, Zeilen aus Standardtext zusammen gruppieren. Einige Ausführungsformen verwenden eine kleine Schwelle, so dass die y-Koordinaten-Ankerpunkte in einer vorläufigen Textzeile nicht exakt gleich sein müssen, sondern sie unterhalb der kleinen Schwelle voneinander beanstandet sein müssen.
  • Als nächstes identifiziert der Prozess (bei 3315) Gruppen von Textzeilen, die vertikal überlappen. In einigen Ausführungsformen überlappen zwei Zeilen vertikal, wenn das Begrenzungsrechteck der ersten Zeile in den y-Koordinatenwerten mit dem Begrenzungsrechteck der zweiten Zeile überlappt. 35 illustriert die Seite 3400 mit sechs Gruppen von vertikal überlappenden. Textzeilen: den Zeilen 3505 und 3506, den Zeilen 3510 und 3511, den Zeilen 3515 und 3516, den Zeilen 3520, 3521 und 3522, den Zeilen 3525 und 3526 und den Zeilen 3530 und 3531. Die Zeile 3520 ist zusammen mit Zeile 3522 in einer Gruppe assoziiert, weil beide mit der Zeile 3521 überlappen, obwohl sie nicht gegenseitig überlappen. Obwohl es sogar keinen horizontalen Überlapp gibt, werden die Zeilen 3530 und 3531 zunächst in einigen Ausführungsformen zusammengruppiert, da sie vertikal überlappen.
  • Der Prozess wählt dann (bei 3320) eine nicht ausgewertete Gruppe und partitioniert (bei 3325) die Gruppe in Abschnitte, wobei die Textzeilen verschiedener Abschnitte keine horizontalen Überlappungen aufweisen. In einigen Ausführungsformen überlappen zwei Textzeilen horizontal, wenn die x-Koordinaten des Begrenzungskastens der ersten Textzeile mit den x-Koordinaten des Begrenzungskastens der zweiten Textzeile überlappen. Beispielsweise werden die Zeilen 3530 und 3531 an diesem Punkt partitioniert, weil sie nicht horizontal überlappen und daher wahrscheinlich nicht als dieselbe Zeile betrachtet würden. Einige Ausführungsformen erweitern das Maß für horizontales Überlappen beim Beginn und am Ende der Textzeilen um einen kleinen Abstand (z. B. um die Hälfte des Raums für ein Zeichen), so dass verschobene Zeichen (z. B. Tiefstellungen und Hochstellungen) am Beginn oder am Ende einer Zeile zusammengeführt werden. Beispielsweise gibt es keinen horizontalen Überlapp zwischen den Zeilen 3510 und 3511, aber sie werden nicht partitioniert, weil das Ende der Zeile 3510 nah genug am Beginn der Zeile 3511 liegt.
  • Nach der Partitionierung der ausgewählten Gruppe wählt der Prozess (bei 3330) einen nichtausgewerteten Abschnitt aus der Gruppe aus und sortiert (bei 3335) die Zeilen in dem Abschnitt von oben nach unten. Wenn somit der ausgewählte Abschnitt mit den Zeilen 35203522 ausgewählt ist, würden die Zeilen so sortiert, dass die Zeile 3520 die erste, die Zeile 3521 die zweite und die Zeile 3523 die dritte wären. Verschiedene Ausführungsformen sortieren die Zeilen aufsteigend, absteigend, nach der Grundlinie oder gemäß einem anderen Maß für die vertikale Position einer Zeile.
  • Der Prozess wählt dann (bei 3340) die oberste nichtausgewertete Zeile in dem Abschnitt aus. Als nächstes wählt der Prozess (bei 3345) das erste (für Links-nach-rechts-Sprachen von links lesend) nichtausgewerteten Zeichen in der ausgewählten Zeile aus. Der Prozess stellt (bei 3350) fest, ob das ausgewählte Zeichen in die nächste Zeile überführt werden kann. Einige Ausführungsformen erlauben das Überführen eines Zeichens in die nächste Zeile, wenn das ausgewählte Zeichen nicht signifikant mit irgendeinem Zeichen in der nächsten Zeile überlappt. Einige Ausführungsformen erlauben einen kleinen horizontalen Überlapp zwischen Zeichen. Für links-nach-rechts-Sprachen, erlauben einige Ausführungsformen einen geringeren Überlapp für die linke Seite des nach unten zu überführenden Zeichens als an der rechten Seite des nach unten zu überführenden Zeichens, um herkömmliche Zwischenraumanpassungen für versetzte Zeichen zu berücksichtigen.
  • Des Weiteren erlauben einige Ausführungsformen einen beliebigen Überlappungsgrad, wenn die ursprüngliche Einfügungsreihenfolge der überlappenden Zeichen aufeinanderfolgend ist. Die Einfügungsreihenfolge ist in einigen Ausführungsformen die Reihenfolge, in der die Zeichen auf der Seite gezeichnet werden. Oft (wenngleich nicht immer) werden die Zeichen in der Reihenfolge geschrieben, in der sie gelesen werden sollen, so dass es, wenn zwei vertikal und horizontal überlappende Zeichen in der Einführungsreihenfolge benachbart sind, wahrscheinlich ist, dass es beabsichtigt ist, sie gemeinsam zu lesen.
  • Wenn der Prozess feststellt, dass das ausgewählte Zeichen in die nächste Zeile überführt werden kann, dann überführt der Prozess (bei 3355) das ausgewählte Zeichen in die nächste Zeile. Der Prozess schreitet dann zu 3365 fort, wie nachfolgend beschrieben. Andernfalls, wenn das ausgewählte Zeichen nicht überführt werden kann, behält der Prozess (bei 3360) das ausgewählte Zeichen in der ausgewählten Zeile.
  • Als nächstes stellt der Prozess (bei 3365) fest, ob die ausgewählte Zeile weitere Zeichen enthält. Wenn es in der gerade ausgewählten Zeile weitere Zeichen gibt, dann schreitet der Prozess bei 3345 damit fort, das nächste nichtausgewertete Zeichen in der Zeile auszuwählen. Andernfalls, wenn alle Zeichen in der Zeile ausgewertet wurden, stellt der Prozess (bei 3370) fest, ob die gegenwärtige Auswahl weitere Zeilen enthält. Wenn es in dem gegenwärtig ausgewählten Abschnitt weitere Zeilen gibt, dann schreitet der Prozess zu 3340 fort, um die nächste nichtausgewertet Zeile auszuwählen.
  • Andernfalls, wenn alle Zeilen in dem Abschnitt ausgewertet wurden, stellt der Prozess (bei 3375) fest, ob die ausgewählte Gruppe weitere Abschnitte enthält. Wenn es in der gerade ausgewählten Gruppe weitere Abschnitte gibt, dann schreitet der Prozess bei 3330 fort, um einen anderen Abschnitt auszuwählen und Zeilen in diesem Abschnitt zusammenzuführen. Andernfalls, wenn alle Abschnitte in der Gruppe ausgewertet wurden, stellt der Prozess (bei 3380) fest, ob es in dem Dokumententeil noch irgendwelche weiteren auszuwertenden Gruppen gibt. Wenn es weitere Gruppen gibt, dann schreitet der Prozess bei 3320 fort, um eine andere Gruppe auszuwählen. Andernfalls, wenn alle Gruppen ausgewertet wurden, dann ist die Zeilenzusammenführung für den Dokumententeil beendet und der Prozess endet.
  • 35 illustriert das Ergebnis der Zeilenzusammenführung in einigen Ausführungsformen für Seite 3500. Die Zeile 3506 kann nach unten in die Zeile 3505 überführt werden, so dass die Zeile 3505 nun das hochgestellte „m” aus Zeile 3506 enthält, während die Zeile 3506 leer ist und daher entfernt wird. Wenngleich es keinen horizontalen Überlapp zwischen den Zeilen 3510 und 3511 gibt, liegt das Ende der Zeile 3510 nah genug beim Beginn der Zeile 3511, so dass sie nicht partitioniert werden und die gesamte Zeile 3510 kann nach unten in 3511 überführt werden. Beide Zeichen in Zeile 3516 werden nach unten in die Zeile 3515 überführt.
  • Die Zeilen 35203522 können nicht vollständig zusammengeführt werden. Das Zeichen „b” in Zeile 3520 wird zunächst nach unten in Zeile 3521 überführt. Dann, wird das Zeichen „A” in Zeile 3521 nach unten in die Zeile 3522 überführt, da es nicht mit dem Zeichen „c” überlappt. Allerdings wird das Zeichen „b” nicht nach unten in die Zeile 3522 überführt, weil es vollständig mit dem Zeichen „c” überlappt. Daher enthält die Zeile 3521 nur „b”, die Zeile 3522 enthält „A” und „c” und Zeile 3520 ist leer. Wie oben beschrieben werden einige Ausführungsformen „b” in die Zeile 3522 überführen, wenn „b” und „c” in der Einfügereihenfolge benachbart sind.
  • Auf ähnliche Weise werden die Zeilen 3525 und 3526 nicht zusammengeführt. Alle Zeichen in Zeile 3526 überlappen signifikant mit einem oder mehreren Zeichen in Zeile 3525, und sie werden daher nicht nach unten in Zeile 3525 überführt. Es ist unwahrscheinlich, dass das „T” in Zeile 3526 in der Einfügereihenfolge für Seite 3500 zwischen dem „h” und dem „n” der Zeile 3525 liegt. Schließlich werden die Zeilen 3530 und 3531 nicht zusammengeführt, weil es zwischen den Zeilen keinen horizontalen Überlapp gibt und sie somit bei der Operation 3325 partitioniert werden.
  • B. Identifizieren von Worten und Lücken unter Verwendung von Differenzclusterung
  • 36 illustriert konzeptionell einen Prozess 3600 einiger Ausführungsformen zur Durchführung einer Differenz-Clusteranalyse. Viele Formen von Clusteranalysen erfordern eine Kenntnis der Anzahl der Gruppen/Cluster, weil es mehrere Ebenen/Hierarchien von Clusterungen geben kann. Wenn Clusteranalyse beispielsweise verwendet wird, um Himmelsobjekte zu gruppieren, dann bestimmt die Anzahl der Cluster, ob die Clusteranalyse Objekte auf der Ebene von Sternen, Sonnensystemen, Galaxien oder Superclustern gruppieren wird. Wenn allerdings Clusteranalyse beispielsweise verwendet wird, um die strukturellen Beziehungen zwischen Inhaltselementen zu entdecken, dann ist in vielen Fällen die Anzahl der Gruppen nicht bekannt. Beispielsweise kann im Falle einer Textseite nicht angenommen werden, dass die Glyphen Worte erzeugen, die Worte zu Zeilen kombiniert sind und die Gruppen von Zeilen Absätze bilden, weil das Dokument zwei oder mehr Textspalten aufweisen kann, so dass eine gegebene ursprüngliche Textzeile Teile von zwei oder mehreren Absätzen enthalten kann.
  • In einigen Ausführungsformen ist die Clusteranalyse ein Satz von Techniken, die auf eine Sammlung von Datenpunkten angewendet werden können, um Punkte in Cluster zu gruppieren, die einen geringeren Abstand voneinander haben, als zu Punkten eines anderen Clusters. In einigen Ausführungsformen wird Clusteranalyse auf Datenpunkte angewandt, die die horizontalen und vertikalen Lücken zwischen Objekten, wie beispielsweise Glyphen, Worten und Textzeilen darstellen. Beispielsweise verwenden einige Ausführungsformen k-means Clusteranalyse, die nun beschrieben wird. Beginnend mit einer Sammlung von Zahlen (p1, ..., pN), die räumliche Lücken repräsentiert und einem bekannten Wert für k (der Anzahl der Cluster) wird die Technik verwendet, um die Zahlen in k Cluster C1, ..., Ck zu partitionieren, die durch Ungleichungen der Form Cj = {pi| aj ≤ pi < aj + 1} definiert sind, wobei a1, ... ak+1 eine aufsteigende Folge ist. Vor der Anwendung der k-means-Technik, werden die Differenzen pi+1 – pi der Größe nach sortiert und die k – 1 größten Differenzen werden als die Partitionspunkte genommen. Wenn beispielsweise pi+1 – pi eine der größten Differenzen ist, dann ist pi+1 in einem anderen Cluster als pi und pi+1 ist einer der aufeinanderfolgenden Werte aj. k-means Clusteranalyse wird dann angewandt, um wiederholt die Cluster zu verfeinern. Die k-means Technik umfasst das Bestimmen des Mittelwerts der Anzahl in jeden Cluster, dann das Umverteilen der pi in Cluster durch ihre Assoziation mit dem am nächsten liegenden berechnenden Mittelwert. Dies wird wiederholt ausgeführt, bis dadurch keine Änderungen mehr in den Clustern oder ihren Mittelwerten bewirkt werden.
  • In einigen Ausführungsformen wird eine Technik verwendet, die hier offenbart und als „Differenzclusterung” bezeichnet wird, um die Anzahl der Ebenen struktureller Beziehungen, die zwischen den Inhaltselementen, welche einen gegebenen Quellinhalt umfassen, und/oder eine oder mehrere hierarchische Beziehungen zwischen solchen Ebenen zu bestimmen, sowie eine oder mehrere Charakteristika, die verwendet werden können, um auf jeder der bestimmten Ebenen festzustellen, ob ein Inhaltselement mit einem anderen Inhalt in Beziehung steht. In einigen Ausführungsformen verwendet die Differenzclusterung die k-means Technik zusammen mit anderen Techniken. In dem in 36 gezeigten Beispiel werden Differenzen zwischen den Positionen von Inhaltselementen (Abstände) unter Verwendung einer Differenzclusteranalyse analysiert. In einigen Ausführungsformen können die Inhaltselemente durch Analyse des Abstands zwischen den Inhaltselementen zumindest teilweise unter Verwendung der Gruppierungsdaten für die Abstände gruppiert werden. In einigen Ausführungsformen wird jede Richtungskomponente der Abstände separat analysiert. Beispielsweise wir eine Differenzclusteranalyse bezüglich der horizontalen Komponente verwendet, um zwischen Zeichenabständen, Wortabständen und Spaltenabständen zu unterscheiden. Eine Differenzclusteranalyse bezüglich der vertikalen Komponente kann verwendet werden, um in einigen Ausführungsformen Zeilenabstände, Absatzabstände und Textkastenabstände zu unterscheiden. Der Prozess 3600 illustriert konzeptionell eine Differenzclusteranalyse für eine einzelne Richtungskomponente. Der Prozess kann nochmals verwendet werden, um eine oder mehrere zusätzliche Richtungskomponenten zu analysieren. In einigen Ausführungsformen werden die Ergebnisse der Durchführung von Differenzclusteranalysen entlang einer oder mehrerer Dimensionen zusammen kombiniert, um die strukturellen Beziehungen zwischen Inhaltselementen auf einer oder mehreren Ebenen zu bestimmen.
  • Wie in 36 gezeigt, empfängt der Prozess 3600 (bei 3605) einen Teil eines Dokuments. Der Prozess identifiziert dann (bei 3610) die Positionen der Elemente in dem Dokument. In einigen Ausführungsformen umfassen die Elemente Zeichen, Glyphen, Bilder, Zeilen, Zeichnungen, Kästchen, Zellen, Ränder und/oder verschiedene andere Inhaltselemente. In einigen Ausführungsformen umfassen die Positionen der Elemente das Bestimmen und/oder Zuweisen einer oder mehrerer Ortskoordinaten-Komponenten für die Elemente. In einigen Ausführungsformen werden die Positionen der Elemente in einer Reihenfolge organisiert. Wenn beispielsweise die horizontalen Abstände von Zeichen analysiert werden, werden die Zeichen in aufsteigender horizontaler Koordinatenreihenfolge für jede Zeile von Zeichen organisiert. In einigen Ausführungsformen ist es gewünscht, dass die Positionskoordinatenwerte der Elemente mit den Abständen zwischen den Elementen assoziiert sind und die Positionswerte werden bezüglich der Breite/Länge des Elements kompensiert. Wenn beispielsweise ein kompensierter horizontaler Koordinatenwert (x-Koordinate) für ein Element in der n-ten Position einer organisierten Reihenfolge von Elementen bestimmt wird, wird die folgende Formel verwendet:
    Figure 00700001
    wobei X ' / n der kompensierte Ortskoordinatenwert ist, Xn der ursprüngliche Positionskoordinatenwert ist und Wi die Breite eines Elements in der i-ten Position ist. In einigen Ausführungsformen beruht die Breite eines Elements auf dem Zeichen, das es darstellt, der Schriftsatzgröße, dem Stil des Zeichens usw.. Einige Ausführungsformen bestimmen einen kompensierten Positionskoordinatenwert, indem sie für jedes Zeichen bekannte Ankerkoordinaten verwenden und diese Koordinaten für jedes einzelne Zeichen um die Breite dieses bestimmten Zeichens anpassen.
  • Als nächstes bestimmt der Prozess (bei 3615) die Differenzen erster Ordnung zwischen den Positionen benachbarter Elemente. In einigen Ausführungsformen ist ein Element zu einem anderen Element benachbart, wenn die zwei Elemente mit wenigstens einem gleichen Positionskoordinatenkomponentenwert in wenigstens einem anderen Positionskoordinatenkomponentenwert zueinander benachbart angeordnet sind. Beispielsweise sind zwei Glyphen zueinander benachbart, wenn die beiden Glyphen zu derselben Textzeile gehören und keine andere Glyphe zwischen ihnen existiert. In einigen Ausführungsformen haben zwei Elemente wenigstens eine gleiche Positionskoordinatenkomponente, wenn die Differenz zwischen korrespondierenden Positionskoordinatenkomponentenwerten der Elemente unterhalb eines Grenzwertes liegt oder innerhalb eines Wertbereichs. In verschiedenen Ausführungsformen ist ein Element zu einem anderen Element benachbart, wenn die beiden Elemente in einer Reihenfolge und/oder Organisation zueinander benachbart sind, die mit den identifizierten Positionen der Elemente assoziiert ist. In einigen Ausführungsformen ist die Differenz erster Ordnung zwischen den Positionen die Differenz zwischen den breiten/längen-kompensierten Positionskoordinatenwerten. Wenn beispielsweise die Differenz zwischen kompensierten Horizontalkoordinatenwerten (x-Koordinate) für die benachbarten Elemente in der n-ten und (n + i)-ten Position einer organisierten Reihenfolge kompensierter horizontaler Koordinaten bestimmt wird, dann wird in einigen Ausführungsformen die folgende Formel verwendet. ΔXn = X ' / n+1 – X ' / n
  • In einigen Ausführungsformen ist Differenz erster Ordnung mit dem Zwischenraum zwischen Glyphen in dem Inhalt assoziiert. Als nächstes sortiert der Prozess 3600 (bei 3620) die Differenzen erster Ordnung. In einigen Ausführungsformen umfasst das Organisieren der Differenzen erster Ordnung ein Ordnen der Differenzen erster Ordnung in einer aufsteigenden Reihenfolge. In einigen Ausführungsformen, umfasst das Organisieren der Differenzen erster Ordnung ein Zuordnen eines Gewichtswertes an eine oder mehrere der Differenzen erster Ordnung und ein Organisieren der Differenzen erster Ordnung wenigstens teilweise unter Verwendung des bzw. der Gewichtswerte(s). Beispielsweise wird in einigen Ausführungsformen der tatsächliche Glyphenabstand durch einen erwarteten Glyphenabstand für jedes spezifische Paar von Glyphen, das in dem Zeichensatz vorhanden ist, dividiert und seine Schriftsatzmetrik einschließlich Größe, Standardbuchstabenabstand und einer Tabelle von Proportionalschriftwerten in der Schriftsatzdatei gespeichert. Dieses Verhältnis von tatsächlichem zu erwartetem Abstand wird nach aufsteigenden Werten geordnet und die Werte dieses Verhältnisses werden für den gesamten Rest des Differenzclusterung anstelle der Differenzen erster Ordnung verwendet.
  • Der Prozess bestimmt dann (bei 3625) Differenzen zweiter Ordnung zwischen den sortierten Differenzen erster Ordnung. Wenn beispielsweise die Differenz zweiter Ordnung zwischen Differenzen erster Ordnung an einer i-ten und einer (i + 1)-ten Position einer organisierten Reihenfolge von Differenzen erster Ordnung bestimmt wird, dann wird die folgende Formel verwendet: Δ2X1 = ΔX(i +1 ) – ΔX(i)
  • Wobei Δ2Xi die i-te Differenz zweiter Ordnung, ΔXi die Differenz erster Ordnung an der i-ten Position der sortierten Differenzen erster Ordnung und ΔXi+1 die Differenz erster Ordnung an der (i + 1)-ten Position derselben sortierten Differenzen erster Ordnung sind. In einigen Ausführungsformen sind die Differenzen zweiter Ordnung mit Differenzen zwischen den Abständen der Glyphen assoziiert.
  • Als nächstes bestimmt der Prozess 3600 (bei 3630) die Anzahl der Clusterebenen durch Analyse der Differenzen zweiter Ordnung. In einigen Ausführungsformen umfasst das Analysieren der Differenzen zweiter Ordnung das Organisieren der bestimmten Differenzen zweiter Ordnung. In einigen Ausführungsformen umfasst das Organisieren der Differenzen zweiter Ordnung ein Ordnen der Differenzen zweiter Ordnung in einer aufsteigenden Reihenfolge und/oder eine grafische Darstellung der Differenzen zweiter Ordnung in einer Reihenfolge aufsteigender Werte für die Differenzen zweiter Ordnung. In einigen Ausführungsformen umfasst das Organisieren der Differenzen zweiter Ordnung ein Zuordnen eines Gewichtswertes zu einer oder mehreren der Differenzen zweiter Ordnung. In einigen Ausführungsformen umfasst das Organisieren der Differenzen zweiter Ordnung ein Gruppieren der Differenzen zweiter Ordnung in eine oder mehrere Gruppen. In einigen Ausführungsformen wird jede Differenz zweiter Ordnung entweder als eine Differenz zwischen Gruppen oder eine Differenz innerhalb einer Gruppe kategorisiert.
  • Differenzen innerhalb einer Gruppe sind mit relativ geringeren Werten für die Differenzen zweiter Ordnung assoziiert und können Differenzen zweiter Ordnung von Differenzen erster Ordnung innerhalb derselben Clustergruppe repräsentieren. Ein Beispiel für eine Differenz innerhalb einer Gruppe ist die relativ geringe Variation, die man für die zeichenbreitenkompensierten Abstände zwischen Buchstaben in demselben Wort erwarten würde. Differenzen zwischen Gruppen sind mit relativ größeren Differenzwerten assoziiert und können Differenzen zweiter Ordnung von Differenzen erster Ordnung zwischen verschiedenen Clustergruppen repräsentieren. Ein Beispiel für eine Differenz zwischen Gruppen ist die relativ große Differenz zwischen dem Abstand zwischen zwei Worten auf der einen Seite und dem Abstand zwischen zwei Buchstaben innerhalb desselben Wortes auf der anderen Seite.
  • In einigen Ausführungsformen wird die Kategorisierung von Differenzen zweiter Ordnung in Werte innerhalb einer Gruppe und Werte zwischen Gruppen dadurch erreicht, dass eine 2-means Clusteranalyse auf die geordneten Differenzwerte zweiter Ordnung angewendet wird; insbesondere durch Wählen von (p1, ..., pN) als {Δ2X1, ..., Δ2XN} in aufsteigender Reihenfolge. Auf ähnliche Weise kann jede andere Clusteranalysetechnik, die ausreichend ist um zwei Cluster von Datenwerten zu unterscheiden, auf die geordneten Werte der Differenzen zweiter Ordnung angewendet werden. Die Differenzen innerhalb einer Gruppe sind dann innerhalb des ersten Clusters C1 = {pi| a1 ≤ pi < a2} und die Differenzen zwischen Gruppen sind in dem zweiten Cluster C2 = {pi| a2 ≤ pi < a3} wobei a1 < a2 < a3. In einigen Ausführungsformen ist die Anzahl der Ebenen, in die die Inhaltselemente beruhend auf ihren analysierten räumlichen Beziehungen wie oben beschrieben organisiert werden sollen, um eins größer, als die Anzahl der Differenzen zwischen Gruppen, die durch Differenzclusteranalyse gefunden wurden. Wenn beispielsweise zwei Differenzen zwischen Gruppen existieren, dann ist die Anzahl der strukturellen Ebenen gleich drei. Um ein einfaches Beispiel zu nehmen, betrachte man Zeichen, die Worte bilden, die auf einer einzigen Textzeile liegen. Die Differenzen erster Ordnung in den Abständen zwischen Zeilen in der x-x-Richtung würde eine Differenz zweiter Ordnung zwischen Zeichenabständen und Wortabständen (eine Differenz zwischen Gruppen) liefern, die zwei Strukturebenen (Worte und Zeilen) angezeigt. Wäre der Text in zwei Spalten angeordnet gewesen, dann wäre eine weitere Differenz zweiter Ordnung (zwischen Wortabständen und Spaltenabständen) detektiert worden, um insgesamt zwei Differenzen zwischen Gruppen zu liefern, und damit drei strukturelle Ebenen in der x-Richtung (Worte, Zeilen und Spalten) anzuzeigen. Ein Wiederholen der Analyse in der y-Richtung und Kombinieren der Ergebnisse würde, wenn auf den bestimmten Inhalt anwendbar, in einigen Ausführungsformen weitere strukturelle Ebenen (z. B. Absätze usw.) identifizieren, die sich in den Abständen zwischen Zeichen und Gruppen von Zeichen manifestieren.
  • Der Prozess bestimmt dann (bei 3635) Charakteristika für jede Clusterebene. Der Prozess endet dann. In einigen Ausführungsformen umfasst das Bestimmen der Charakteristika ein Feststellen, welche Differenz erster Ordnung (und/oder welcher Bereich von Differenzen erster Ordnungen) mit welcher Clusterebene assoziiert ist. In einigen Ausführungsformen umfasst das Bestimmen der Charakteristika das Berechnen eines statistischen Wertes, der mit den mit einer Clusterebene assoziierten Differenzen erster Ordnung assoziiert ist. Beispielsweise können durch Bestimmung des Durchschnitts, des Minimums, des Maximum des mit einer Clusterebene assoziierten Anteils der Differenzen erster Ordnung der durchschnittliche, der minimale sowie der maximale Abstand zwischen Glyphen in dem Inhalt bestimmt werden.
  • Sei L die Anzahl der Clusterebenen. In einigen Ausführungsformen wird L durch zählen der Anzahl der Punkte in dem zweiten Cluster von Differenzen zweiter Ordnung und addieren von 1 berechnet. Als nächstes können für jede Ebene die Gruppen von zu der Ebene korrespondierenden Differenzen erster Ordnung bestimmt werden und auf jeder Ebene können die Cluster der kompensierten Xn'-Werte bestimmt werden, beispielsweise auf einem der folgenden zwei Wege.
  • Eine Möglichkeit besteht darin, eine L-means Clusteranalyse für die Differenzen erster Ordnung durchzuführen. Die resultierenden L Cluster sind die Gruppen der jeweils zu einer der Ebenen korrespondierenden Differenzen erster Ordnung. Als nächstes wird die Anzahl Km von Clustern von Xn' in der Ebene m berechnet, indem die Anzahl der Punkte in den (m + 1)-ten, (m + 2)-ten, ... und L-ten Clustern von Differenzen erster Ordnung plus 1 addiert werden. Schließlich ist die Km-means-Analyse auf die kompensierten Xn' Werte anzuwenden, um die Km Cluster der Ebene m zu erzeugen.
  • Eine zweite Möglichkeit besteht darin, dass bei der ursprünglichen Berechnung jeder Differenz erster Ordnung ΔXn = Xn+1' – Xn' ihr Wert zusammen mit dem Index n gespeichert wird, der verwendet werden kann, um jedes der Paare sukzessiver x-Werte zu identifizieren, die subtrahiert wurden, um diese Differenz zu erzeugen. Der Wert und die Indexreferenz sind in einer einzigen „Differenz erster Ordnung”-Datenstruktur zu speichern. Gleichermaßen ist bei der ursprünglichen Berechnung jeder Differenz zweiter Ordnung ihr Wert zusammen mit einer Indexreferenz zu speichern, die verwendet werden kann, um jedes der Paare sukzessiver „Differenzen erster Ordnung”-Daten zu identifizieren, deren Werte subtrahiert wurden, um diese Differenz zu erzeugen. Nun ist für jede Differenz zweiter Ordnung in dem zweiten Cluster (d. h. für jede Differenz zwischen Gruppen) ihre Indexreferenz zu verwenden, um einen Partitionspunkt in den Differenzen erster Ordnung zu identifizieren. Das bedeutet, dass der Index ein Paar von Differenzen erster Ordnung identifiziert, die partitioniert sind, um zu separaten Clustern zu gehören. Ein Partitionieren auf diese Weise produziert L Cluster von Differenzen erster Ordnung, die zu den L Clusterebenen in den ursprünglichen Daten korrespondieren. Nun werden die Cluster von X' Werten auf Ebene n wie folgt identifiziert: für jede Daten von Differenzen erster Ordnung in dem (m + 1)-ten, (m + 2)-ten, ... und L-ten Cluster von Differenzen erster Ordnung ist ihre Indexreferenz als ein Partitionspunkt in den Xn' Werten zu verwenden.
  • 37 illustriert ein Beispiel für eine Differenzclusterung. In einigen Ausführungsformen ist das Beispiel von 37 mit dem Prozess 3600 aus 36 assoziiert. Gruppen von Werten für Differenzen erster Ordnung 3705, 3710 und 3715 sind in einer Reihenfolge vom niedrigsten Wert zum höchsten Wert auf einer mit den Werten der Differenzen erster Ordnung assoziierten Zeile gezeichnet. Jeder Punkt ist mit einem Differenzwert assoziiert, z. B. der Differenz von einem Textzeichen oder einer anderen Glyphe zu einer benachbarten, und in 37 sind die Punkte nicht aufeinander überlagert abgebildet, um das Beispiel klar zu illustrieren.
  • In dem gezeigten Beispiel sind die Daten mit horizontalen Leerräumen zwischen Glyphen assoziiert. Durch Ordnen der Werte der Differenzen erster Ordnung illustriert das Beispiel drei Gruppen 3705, 3710 und 3715 von Werten der Differenzen erster Ordnung. Die Gruppe 3705 von Werten von Differenzen erster Ordnung ist mit den Leerräumen zwischen den Glyphen assoziiert, aus denen Worte zusammengesetzt sind. Die Gruppe 3710 von Werten von Differenzen erster Ordnung ist mit den Leerräumen zwischen Worten assoziiert. Die Gruppe 3715 von Werten von Differenzen erster Ordnung ist mit den Leerräumen zwischen Spalten assoziiert. Für jedes Paar von benachbarten Werten von Differenzen erster Ordnung wird ein Wert von Differenzen zweiter Ordnung bestimmt (d. h. die Differenz zwischen einer Differenz erster Ordnung und einer benachbarten Differenz erster Ordnung) und dann in aufsteigender Reihenfolge auf einer Zeile gezeichnet, die mit Werten von Differenzen zweiter Ordnung assoziiert ist. Die Gruppen 3720, 3725 und 3730 von Werten von Differenzen zweiter Ordnung enthalten jeweils einen oder mehrere Punkte, die mit den Werten von Differenzen zweiter Ordnung assoziiert sind. In einigen Ausführungsformen ist der Punkt 3725 ein Mitglied einer Gruppe von assoziierten Punkten von Differenzen zweiter Ordnung, die eine Gruppe von Werten von Differenzen zweiter Ordnung umfasst.
  • In einigen Ausführungsformen ist der Punkt 3730 ein Mitglied einer Gruppe von assoziierten Punkten von Differenzen zweiter Ordnung, die eine Gruppe von Werten von Differenzen zweiter Ordnung umfasst. In einigen Ausführungsformen wird 3720 als ein Cluster identifiziert und 3725 wird zusammen mit 3730 als ein zweiter Cluster identifiziert. Werte von Differenzen zweiter Ordnung zwischen den Werten von Differenzen erster Ordnung innerhalb derselben einzelnen Gruppe von Werten von Differenzen erster Ordnung (Differenzen zwischen Gruppen) sind in einer Gruppe 3720 von Werten von Differenzen zweiter Ordnung enthalten. Beispielsweise in einem Textdokument variieren typischerweise der zeichenbreitekompensierte Abstand zwischen Zeichen innerhalb eines Wortes oder der Abstand zwischen verschiedenen Paaren von Worten nur leicht. Die Differenz zweiter Ordnung zwischen benachbarten Punkten zwischen Gruppen in den Gruppen 3705 und 3710 ist im Punkt 3725 enthalten. Die Differenz zweiter Ordnung zwischen benachbarten Punkten zwischen Gruppen in den Gruppen 3710 und 3715 ist in Punkt 3730 enthalten. Da es in dem Beispiel zwei Werte von Differenzen zweiter Ordnung zwischen Gruppen gibt, gibt es zwei plus eins (drei) Gruppenebenen (in diesem Beispiel Worte, Sätze oder Teile davon auf einer Textzeile innerhalb einer Spalte, und Spalten). Durch Bestimmen des Minimums und des Maximums der Werte von Differenzen erster Ordnung in der Gruppe 3705 kann ein minimaler und ein maximaler Abstand zwischen Glyphen, aus denen die Worte zusammengesetzt sind, bestimmt werden, und auf ähnliche Weise können die Gruppen 3710 und 3715 verwendet werden, um Wortabstände und Spaltenabstände entsprechend zu bestimmen.
  • In einigen Ausführungsformen werden die mit jeder Gruppenebene assoziierten minimalen und maximalen Abstände verwendet, um Inhaltselemente (z. B. Glyphen) entsprechend zu gruppieren, wie beispielsweise durch Identifikation von Zeichengruppen, die Worte umfassen, durch Gruppieren von Worten in Textzeilen innerhalb einer Spalte usw.. Durch die Verwendung von durch Clusteranalyse bestimmten Daten werden die Glyphen in die bestimmten Gruppenebenen gruppiert. Es ist möglich die Analyse schnell und automatisch in Bezug auf beliebige Inhalte durchzuführen, teilweise weil es nicht erforderlich ist im Voraus zu wissen, wie viele Gruppenebenen es in der Struktur des Inhalts oder anderen zu analysierenden Sammlungen von Elementen gibt. Unabhängig von der Anzahl der Gruppenebenen wird die Anzahl der Ebenen in nur zwei Prozessschritten bestimmt. Durch Bestimmen des Durchschnitts der Werte der Differenzen erster Ordnung in Gruppe 3705 kann der durchschnittlichen Abstand zwischen Glyphen, aus denen Worte zusammengesetzt sind, bestimmt werden. Auf ähnliche Weise können andere statistische Quantitäten für die Glyphen, aus denen Worte zusammengesetzt sind, bestimmt werden. Gleichermaßen kann eine Analyse von Werten von Differenzen erster Ordnung in den Gruppen 3710 und 3715 verwendet werden, um statistische Quantitäten zu bestimmen, die für Wortabstände und Spaltenabstände relevant sind.
  • G. Aufteilen von Zeilen
  • Einige Ausführungsformen teilen Textzeilen auf, nachdem Wort- und Abschnittsumbruchsinformation erzeugt wird. Textzeilen werden beispielsweise aufgeteilt, wo die Textzeile mehr als eine Spalte breit ist, da der Text in den zwei (oder mehr) Abschnitten wahrscheinlich nicht dafür gedacht ist, zusammen gelesen zu werden. Einige Ausführungsformen verwenden Führungs- und Spaltenzwischenrauminformationen, die von den oben im Abschnitt III beschriebenen Vorgängen abgeleitet wird, zusammen mit Information von der Unterschiedsgruppierung (z. B. Abschnittslücken, usw.), um die Textzeilen aufzuteilen.
  • 38 erläutert konzeptionell einen Vorgang 3800 einiger Ausführungsformen zum Aufteilen von Textzeilen. Teile des Vorgangs 3800 werden in Bezug auf 39 beschrieben werden. 39 erläutert eine Sequenz, die die Identifizierung, wo Zeilen auf einer Seite 3900 aufgeteilt werden sollten, zeigt. Wie in 38 gezeigt, empfängt der Vorgang 3800 (bei 3805) Textzeilen, Führungs- und Spaltenzwischenrauminformation und Abschnittsumbruchsinformation für einen Teil eines Dokuments. Information über Textzeilen ist der Ausgang des Vorgangs 3300 in einigen Ausführungsformen, und Führungs- und Spaltenzwischenrauminformation ist der Ausgang von Vorgängen 2100, 2500 und 2600 in einigen Ausführungsformen. Die Information über den Abschnittsumbruch (oder die Abschnittslücke) ist einer der Ausgänge der Unterschiedsgruppierung, wie sie in der oben erwähnten US-Veröffentlichung Nummer 2007/0250497 beschrieben wird, sowie in einigen oben beschriebenen Ausführungsformen. In einigen Ausführungsformen ist das Dokument Teil des gesamten Dokuments, ein Abschnitt, eine Seite oder ein Bereich einer Seite.
  • Anschließend sortiert der Vorgang (in 3810) die empfangenen Textzeilen basierend Auf der Y-Koordinate ihrer Grundlinien. Ausgehend vom Seitenfuß wählt der Vorgang (in 3815) die unterste uneingeschätzte Textzeile aus und identifiziert (in 3820) potenzielle Aufteilungen in der ausgewählten Zeile. Einige Ausführungsformen definieren eine potenzielle Aufteilung als eine beliebige Lücke zwischen zwei Wörtern in einer Zeile, die entweder (1) eine Abschnittslücke ist, wie durch Unterschiedsgruppierungen definiert, oder (2) eine Führung oder einen Spaltenzwischenraum umfasst, der dadurch geht. Andere Ausführungsformen verwenden nur die eine oder die andere, oder andere Definitionen für potenzielle Aufteilungen.
  • Der Vorgang bestimmt dann (in 3822), oh potenzielle Aufteilungen identifiziert wurden. Wenn keine identifiziert wurde, fährt der Vorgang zu 3845 fort, der unten beschrieben wird. Sonst wählt der Vorgang (in 3825) eine potenzielle Aufteilung aus der aktuell ausgewählten Textzeile aus. Der Vorgang bestimmt dann (in 3830), ob das x-Intervall der potenziellen Aufteilung das x-Intervall einer beliebigen potenziellen Aufteilung aus der vorherigen Textzeile überlappt. Die erste eingeschätzte Textzeile wird keine vorherige Textzeile aufweisen und es wird daher keine überlappenden potenziellen Aufteilungen geben. Wenn das x-Intervall der aktuell ausgewählten potenziellen Aufteilung das x-Intervall einer potenziellen Aufteilung von der vorherigen Zeile nicht überlappt, fährt der Vorgang zu 3822 fort, der oben beschrieben wurde. Sonst assoziiert der Vorgang (in 3835) die überlappenden potenziellen Aufteilungen. Der Vorgang fährt dann zu 3822 fort, der oben beschrieben wurde.
  • Wenn es keine uneingeschätzten potenziellen Aufteilungen mehr gibt, bestimmt der Vorgang (in 3845), ob es noch Zeilen einzuschätzen gibt. Wenn es noch übrige Zeilen gibt, fährt der Vorgang zu 3815 fort, um potenzielle Aufteilungen in der nächsten Zeile zu identifizieren und sie zur Überlappung zu testen.
  • Wenn alle Zeilen eingeschätzt wurden, wurden dann alle potenziellen Aufteilungen im Dokumentteil identifiziert und assoziiert. Der Vorgang führt dann mehrere Abläufe aus, um falsche Positive (d. h. potenzielle Aufteilungen, die eigentlich keine Textzeile aufteilen sollten) zu eliminieren. Der Vorgang bestimmt (in 3847), ob Gruppen von potenziellen Aufteilungen identifiziert wurden. Wenn keine identifiziert wurde, ist der Vorgang beendet. Sonst wählt der Vorgang (in 3850) eine Gruppe von assoziierten potenziellen Aufteilungen aus und definiert (in 3855) einen rechteckigen Streifen, der vollständig durch die potenziellen Aufteilungen der ausgewählten Gruppe durchgeht. In einigen Ausführungsformen weist der Streifen ein x-Intervall auf, dass die Kreuzung der x-Intervalle aller potentiellen Aufteilungen in der ausgewählten Gruppe ist (d. h. das x-Intervall für einen Streifen, wovon zwei potenzielle Aufteilungen sich kaum überlappen, wird sehr dünn sein).
  • 39 erläutert eine Seite 3900 mit mehreren Textzeilen. Die meisten Textzeilen sind zwischen zwei Spalten aufgeteilt. Die Grundlinien sind jedoch dieselben in beiden Spalten. Jede Zeile von der ersten Spalte wäre daher in derselben Zeile wie eine Zeile von der zweiten Spalte vor dem Zeilenaufteilungsvorgang. 39 zeigt auch vier rechteckige Streifen 3905, 3910, 3915 und 3920 von assoziierten potenziellen Aufteilungen.
  • Nach dem Definieren des rechteckigen Streifens für die ausgewählte Gruppe bestimmt der Vorgang (in 3860), ob der Streifen weniger breit als eine Schwellenanzahl von Textzeilen ist. Streifen, die eine oder nur einige Textzeilen breit sind, stellen nicht wahrscheinlich eine eigentliche Aufteilung beim Lesen dar, sondern können Tabs innerhalb einer Zeile oder anderen Nicht-Umbruchslücken sein. werden manchmal durch Unterschiedsgruppierungen, wo eine Lücke zwischen Wörtern aufgrund von Blocksatz-Text sehr breit ist, gefunden. Wenn der Streifen weniger breit als die Schwellenanzahl von Zeilen ist, entfernt der Vorgang (in 3865) die Gruppe aus der Liste von potenziellen Aufteilungen und wird die Textzeilen nicht an diesen Plätzen aufteilen. Der Vorgang fährt dann zu 3890 fort, der unten beschrieben wird. Auf Seite 3900 werden die potenziellen Aufteilungen, die die Streifen 3910 und 3920 bilden, entfernt, da sie nicht genug Aufteilungen aufweisen, um ein wahrscheinlicher Spaltenumbruch zu sein. Die potenziellen Aufteilungen sind eher Tabs oder große Wortlücken.
  • Wenn der Streifen zumindest so breit wie die Schwellenanzahl von Zeilen ist, bestimmt der Vorgang (in 3870), ob der aktuelle Streifen innerhalb einer Schwellendistanz von einem anderen Streifen ist. Einige Ausführungsformen berücksichtigen nur vorherige Streifen, welche getestet und noch nicht entfernt wurden, bei der Bestimmung, ob ein anderer Streifen innerhalb eines Schwellenwerts vom aktuellen Streifen ist. Wenn der aktuelle Streifen innerhalb der Schwellendistanz von einem andern Streifen ist, entfernt der Vorgang (in 3876) die Gruppe mit einem vertikal kürzeren Streifen (in einigen Fällen, bei welchen alle Zeilen dieselbe Größe aufweisen, handelt es sich um den Streifen, der weniger Textzeilen breit ist). Der Vorgang fährt dann zu 3890 fort, der unten beschrieben wird.
  • Die Streifen 3905 und 3916 der Seite 3900 sind beide geeignet, genug Textzeilen breit zu sein, um den Vorgang 3860 zu bestehen. In einigen Ausführungsformen sind jedoch die Streifen zu nah aneinander, um beide beibehalten zu werden. Die Gruppe von potenziellen Aufteilungen, die den Streifen 3906 bilden, wird daher entfernt, da der Streifen 3916 der längere der beiden Streifen ist. In einigen Ausführungsformen vermeidet es der Vorgang, dass Listenaufzählungspunkte oder Nummern von den Elementen, auf die sie sich beziehen, geteilt werden und vermeiden auch andere potenziell problematische Aufteilungen.
  • Wenn der aktuelle Streifen nicht zu nahe an einem anderen Streifen ist, bestimmt der Vorgang (in 3880), ob der Streifen eine Schwellenanzahl von aufeinander folgenden potenziellen Aufteilungen aufweist, die keine Abschnittslücken sind. In einigen Ausführungsformen ist es möglich, eine Führung und/oder einen Spaltenzwischenraum zu identifizieren, wo Wortkanten zufällig ausgerichtet sind. Dies ist besonders wahrscheinlich, wenn der Text in einer Monospace-Schriftart (beispielsweise Courier) angezeigt wird. Wenn der Streifen zumindest diese Schwellenanzahl von aufeinander folgenden Lücken potenzieller Spaltungen aufweist, entfernt der Vorgang (in 3885) die Gruppe aus der Liste von potenziellen Aufteilungen und wird nicht die Textzeilen an diesen Plätzen aufteilen.
  • Anschließend bestimmt der Vorgang (in 3890), ob es noch Gruppen von potenziellen Aufteilungen gibt, die nicht gegen die unterschiedlichen Schwellenerfordernisse getestet wurden. Wenn es noch Gruppen gibt, fährt der Vorgang zu 3850 fort, um die nächste Gruppe von potenziellen Aufteilungen auszuwählen und einzuschätzen. Sonst, wenn alle Gruppen eingeschätzt wurden, teilt der Vorgang (in 3895) die Textzeilen unter Verwendung von einer beliebigen der Aufteilungen, die nicht entfernt wurden, auf. Der Vorgang kommt dann zum Ende. In dem für die Seite 3900 gezeigten Fall sind die einzigen Aufteilungen, die verwendet würden, diejenigen in der Mitte, die die zwei Textspalten aufteilen.
  • Während der Vorgang 3800 unter Verwendung von drei spezifischen Tests (Vorgänge 3860, 3870 und 3880) zur Entfernung von Gruppen von potenziellen Aufteilungen beschrieben wird, verwenden einige Ausführungsformen nur einen Untersatz von diesen, während andere Ausführungsformen andere Tests verwenden, welche nicht gezeigt werden, um potenzielle Aufteilungen von der Berücksichtigung zu eliminieren.
  • D. Absatzidentifizierung
  • In einigen Ausführungsformen, wenn Textzeilen verschmolzen und aufgeteilt wurden, werden die Zeilen in Absätze gruppiert. 40 erläutert konzeptionell einen Vorgang 4000 von einigen Ausführungsformen zur Gruppierung von Textzeilen in Absätze. Teile des Vorgangs 4000 werden in Bezug auf 41 beschrieben werden. 41 zeigt die Identifizierung von Absätzen auf einer Seite 4100 eines Dokuments. Wie in 40 gezeigt empfängt der Vorgang 4000 (in 4005) Textzeilen für einen Dokumentabschnitt. Die Textzeilen wurden bereits verschmolzen (beispielsweise durch den Vorgang 3300) und aufgeteilt (beispielsweise durch den Vorgang 3800) in einigen Ausführungsformen, bevor der Vorgang 4000 durchgeführt wird. In einigen Ausführungsformen ist der Teil des Dokuments ein gesamtes Dokument, ein Abschnitt des Dokuments, eine Seite, ein Bereich, usw.
  • Der Vorgang bestimmt (in 4007), ob es Zeilen im Teil des Dokuments gibt. Wenn es keine gibt, kommt der Vorgang zum Ende. Sonst, ausgehend vom Kopf des empfangenen Teils des Dokuments, wählt der Vorgang (in 4010) die erste uneingeschätzte Textzeile im Teil des Dokuments aus. Der Vorgang bestimmt dann (in 4015), ob es mehr als eine Textzeile unterhalb der ausgewählten Zeile gibt. In einigen Ausführungsformen müssen die Zeilen innerhalb einer bestimmten vertikalen Distanz voneinander sein, damit die niedrigere Zeile unterhalb der ausgewählten Zeile zu den Zwecken des Vorgangs 4015 berücksichtigt wird. Einige Ausführungsformen erfordern zumindest drei Textzeilen, um Urteile darüber zu machen, ob Zeilen zum selben Absatz gehören. In einigen Ausführungsformen wird dieses Erfordernis gezwungen, da zwei Abstände (d. h. der Abstand zwischen der ersten und zweiten Textzeile und zwischen der zweiten und dritten Textzeile) notwendig sind, um einen Vergleich zu machen.
  • Wenn es zwei oder mehr Zeilen unterhalb der ausgewählten Textzeile gibt, fährt der Vorgang zu 4030 fort, der unten beschrieben wird. Sonst, wenn weniger als zwei Zeilen unterhalb der ausgewählten Textzeile sind, setzt der Vorgang (in 4020) die ausgewählte Zeile alleine in einen Absatz. Der Vorgang bestimmt dann (in 4025), ob es noch Zeilen im Teil des Dokuments gibt. Wenn es keine Zeilen mehr gibt (d. h. wenn es nur eine Textzeile im Teil des Dokuments gibt), kommt der Vorgang zum Ende. Sonst, wenn es noch Zeilen gibt, fährt der Vorgang zu 4010 fort und wählt die nächste Textzeile aus.
  • Wenn es zwei oder mehr Textzeilen unterhalb der in 4010 ausgewählten Zeile gibt (d. h. die erste Zeile im aktuellen Absatz), identifiziert der Vorgang (in 4030) die nächsten zwei Zeilen unterhalb der ausgewählten Textzeile. Der Vorgang bestimmt dann (in 4035), oh der Abstand und die Ausrichtung zwischen den drei Zeilen konsistent ist. In einigen Ausführungsformen involviert diese Bestimmung das Prüfen, oh die vertikale Distanz von der ersten bis zur zweiten Zeile dieselbe wie die vertikale Distanz von der zweiten bis zur dritten Zeile ist. Einige Ausführungsformen verwenden die Grundlinien der Textzeilen, um den vertikalen Abstand zu bestimmen. In einigen Ausführungsformen werden Ausrichtungsunterschiede identifiziert, wenn eine der Zeilen als eingerückte Zeile anfängt oder links von den anderen Zeilen aufhört, wodurch ein wahrscheinlicher Anfang oder ein wahrscheinliches Ende eines Absatzes signalisiert werden.
  • Wenn der Abstand und die Ausrichtung nicht konsistent sind, wendet der Vorgang (in 4040) heuristische Regeln an, um zu bestimmen, ob eine der identifizierten Zeilen in den Absatz mit der ausgewählten ersten Zeile hinzugefügt werden soll. In einigen Ausführungsformen, beispielsweise, wenn die ersten zwei Zeilen nah aneinander sind und die dritte Zeile weiter unten ist, werden die ersten zwei Zeilen in einen Absatz gesetzt und die dritte Zeile ist der Anfang des nächsten Absatzes. In ähnlicher Weise, in anderen Ausführungsformen, wenn die erste Zeile weiter von der zweiten und dritten Zeile ist, ist der erste Absatz ein Absatz mit einer Zeile und der nächste Absatz beginnt mit der zweiten Zeile. Ähnliche Regeln werden in anderen Ausführungsformen zu Ausrichtungsunterschieden zwischen den Zeilen verwendet. Nach der Anwendung der heuristischen Regeln fährt der Vorgang zu 4010 fort, um die nächste uneingeschätzte Textzeile auszuwählen (d. h. die nächste Zeile, die noch nicht zu einem Absatz zugewiesen ist) und einen neuen Absatz anzufangen.
  • Wenn der Abstand und die Ausrichtung zwischen den drei Zeilen konsistent sind, setzt der Vorgang (in 4045) alle drei Zeilen in denselben Absatz. Einige Ausführungsformen identifizieren auch Abstands- und Ausrichtungseigenschaften des Absatzes. Beispielsweise identifizieren einige Ausführungsformen Absätze als linksbündig, rechtsbündig, Blocksatz, in den Mittelpunkt ausgerichtet, usw. Einige Ausführungsformen lassen mehrere Möglichkeiten offen (beispielsweise einen Absatz mit einer eingerückten ersten Zeile, alle drei Zeilen rechtsbündig oder sehr nah und die unteren zwei Zeilen linksbündig könnten möglicherweise ein beliebiger von den drei Elementen sein, bestehend aus linksbündig, rechtsbündig oder Blocksatz).
  • Nach der anfänglichen Phase der Identifizierung des Anfangs eines neuen Absatzes versucht der Vorgang 4000, Zeilen in den Absatz hinzuzufügen. In einigen Ausführungsformen ist die Zeilenhinzufügung basierend auf den Abstands- und Ausrichtungseigenschaften, die aus den drei Zeilen, die den Anfang des Absatzes bilden, bestimmt worden. In anderen Ausführungsformen, wenn Zeilen hinzugefügt werden, welche mit den Abstands- und Ausrichtungseigenschaften für den Absatz nicht in Konflikt stehen, werden die Abstands- und Ausrichtungseigenschaften basierend auf weiteren Beweisen verfeinert.
  • Anschließend bestimmt der Vorgang (in 4047), ob es noch Zeilen im Teil des Dokuments gibt. Wenn es keine Zeilen mehr gibt (d. h. der Teil des Dokuments weist genau drei Zeilen auf), kommt der Vorgang zum Ende. Sonst identifiziert der Vorgang (in 4050) die nächste Textzeile im Teil des Dokuments. Der Vorgang bestimmt dann (in 4055), ob es eine Diskrepanz im Abstand oder in der Ausrichtung zwischen dem aktuellen Absatz und der identifizierten nächsten Zeile. Wenn es eine Diskrepanz gibt, beendet der Vorgang den Absatz und fährt zu 4010 fort, welcher oben beschrieben wurde. In so einem Fall wird die vor kurzem mit einer Diskrepanz versehene Zeile die in 4010 ausgewählte Zeile sein.
  • Sonst, wenn der Abstand und die Ausrichtung abgeglichen sind, fügt der Vorgang (in 4060) die Zeile in den aktuellen Absatz hinzu. Der Vorgang fährt dann zu 4047 fort, der oben beschrieben wurde. In einigen Ausführungsformen wird eine Ausrichtungsdiskrepanz gefunden, wenn die identifizierte nächste Textzeile eine der Eigenschaften (beispielsweise Blocksatz) des Absatzes nicht erfüllt. In ähnlicher Weise, wenn der Abstand zwischen der letzten Zeile im Absatz und der nächsten Zeile erhöht wird, im Vergleich zu dem des Absatzes, wird dann eine Abstandsdiskrepanz in einigen Ausführungsformen gefunden.
  • Einige Ausführungsformen verwenden andere Stoppbedingungen (beispielsweise Bedingungen, die dazu führen, dass die identifizierte Zeile nicht in den Absatz hinzugefügt wird). Einige Ausführungsformen erkennen beispielsweise, wenn das erste Wort auf der identifizierten Zeile in den unbeschriebenen Bereich am Ende der letzten Zeile eines linksbündigen Absatzes passen würde. Wenn dies der Fall ist, wird angenommen, dass die neue Zeile ein Teil des nächsten Absatzes ist, da, wenn sie ein Teil des aktuellen Absatzes wäre, wäre dann das Wort im unbeschriebenen Raum am Ende der letzten Zeile, statt eine neue Zeile zu starten. In ähnlicher Weise erkennen einige Ausführungsformen eine Einrückung als einen Hinweis auf einen neuen Absatz. Eine dritte Bedingung einiger Ausführungsformen ist, ob die identifizierte Zeile einheitlich stilisiert (beispielsweise alle fett oder mit einer größeren Schriftart) und unterschiedlich vom Stil eines beliebigen Buchstabens auf der vorherigen Zeile ist.
  • Wenn der Vorgang 4000 fertig gestellt wurde, werden alle Absätze im Teil des Dokuments identifiziert und alle Textzeilen einem Absatz zugewiesen. Einige Ausführungsformen verwenden dann die Absätze zum Identifizieren von Spalten und Layouts.
  • 41 zeigt eine Seite 4100 mit vier Absätzen. Die Anwendung des Vorgangs 4000 auf diese Seite (wo die Seite der Teil des Dokuments ist) führt zur Identifizierung der Absätze 4105, 4110, 4115 und 4120. Der Vorgang einiger Ausführungsformen würde mit der Gruppierung der erster drei Zeilen zusammen starten und wäre mit der Hinzufügung der vierten und fünften Zeilen fortgefahren, bis die sechste Zeile 4125 eine Abstands- und Ausrichtungsdiskrepanz aufweist, wobei der Absatz 4105 bei fünf Zeilen bleibt. Der Vorgang würde dann bei der sechsten Zeile anfangen und die Abstands- und Ausrichtungsdiskrepanz zwischen den zwei Zeilen unten bemerken. Da die sechste Zeile weiter von der siebten und achten Zeile ist als diese voneinander sind, ist die sechste Zeile die Gesamtheit des Absatzes 4110 und der nächste Absatz 4115 beginnt mit der siebten. Zeile. Die Absätze 4115 und 4120 werden auf ähnliche Weise identifiziert.
  • E. Spalten- und Layoutidentifizierung
  • Einige Ausführungsformen setzten Absätze in Spalten und Layouts nach der Identifizierung der Absätze. In einigen Ausführungsformen ist eine Spalte eine vertikal geordnete Gruppe von Absätzen, in denen sich der Text auf schlüssige Weise von oben nach unten liest. In einigen Ausführungsformen ist ein Layout eine Sammlung von sich nicht überlappenden Spalten und ein lineares Layout ist in einigen Ausführungsformen eine horizontal geordnete Gruppe von Spalten, in denen sich der Text auf schlüssige Weise von oben in der ganz linken Spalte bis nach unten in der ganz rechten Spalte. Einige Ausführungsformen klassifizieren beispielsweise eine einfache Seite mit unsegmentierten Textzeilen und ohne Header oder Fußzeilen als ein einfaches lineares Layout mit einer Spalte.
  • 42 zeigt konzeptionell einen Vorgang 4200 zur Identifizierung von Spalten und Layouts in einem Teil eines Dokuments in einigen Ausführungsformen. Der Vorgang 4200 wird in Bezug auf die 43 bis 46 beschreiben werden. Die 43 und 44 zeigen Absätze auf zwei unterschiedlichen Seiten 4300 und 4400, und 45 und 46 zeigen jeweils die Erzeugung von Flussdiagrammen für die beiden Seiten 4300 und 4400.
  • Wie in 42 gezeigt empfängt der Vorgang 4200 (in 4205) Informationen für Absätze für den Teil des Dokuments. Der Teil des Dokuments ist, in einigen Ausführungsformen, ein gesamtes Dokument, ein Abschnitt eines Dokuments, eine Seite, ein Bereich, usw. In einigen Ausführungsformen wird die Absatzinformation mittels des Vorgangs 4000, der oben beschrieben wurde, bestimmt. Der Vorgang bestimmt dann, ob es Absätze auszuwählen gibt. Wenn es keine gibt, kommt der Vorgang zum Ende.
  • Sonst wählt der Vorgang (in 4210) einen Absatz aus. In einigen Ausführungsformen werden die Absätze im Teil des Dokuments gemäß der Ordnung ausgewählt, ausgehend oben links, wobei, in anderen Ausführungsformen, die Absätze in einer zufälligen Ordnung ausgewählt werden.
  • Anschließend berechnet der Vorgang (in 4215) den In-Order, Out-Order, Left-Order und Right-Order sowie Sätze von Absätzen, die jeden dieser Werte begleiten. Der Out-Order eines Absatzes p wird in einigen Ausführungsformen unter Verwendung eines Satzes B(p) berechnet. Der Satz B(p) ist anfänglich alle Absätze unterhalb des Absatzes p im Teil des Dokuments, der p horizontal überlappt (d. h. der die x-Koordinaten überlappt). 43 zeigt beispielsweise eine Seite 4300 mit elf Absätzen, umfassend den Absatz P 4305. Der Satz B(P) ist anfänglich {Q, R, S, T, U}. Anschließend wird der Absatz, der von p am nächsten gelegen ist, als q identifiziert und alle Absätze, die den Absatz q horizontal überlappen, werden vom Satz B(P) entfernt. Im Fall des Absatzes P 4305 ist der Absatz Q 4310 der am nächsten gelegene Absatz zu Absatz P und die Absätze R 4315, S 4320, T 4325 und U 4330 werden vom Satz B(P) entfernt. An diesem Punkt ist der Satz B(P) {Q}.
  • Einige Ausführungsformen fahren dann bis zum nächstgelegenen Absatz bis p fort, der anfänglich im Satz B(p) war, und entfernen Absätze von B(p), welche unten sind und diesen nächstgelegenen Absatz horizontal überlappen. Andere Ausführungsformen fahren bis zum nächstgelegenen Absatz bis p fort, der in Satz B(p) bleibt, und entfernen Absätze von B(p), der diesen Absatz horizontal überlappt. In beiden Fällen im Beispiel von der 43 ist der Satz B(P) für den Absatz P 4305 {Q}. Der Out-Order von p ist dann die Kardinalität (d. h. die Anzahl von Elementen) des Satzes B(p). Dies wird für jeden Absatz in B(p) wiederholt. In diesem Fall ist daher der Out-Order vom Absatz P 4305 1. Als Beispiel eines Absatzes mit einem Out-Order, der größer als 1 ist, für den Absatz R 4315, ist der Satz B(R) {S, X}, so dass der Out-Order vom Absatz R 4315 2 ist.
  • Der In-Order eines Absatzes p wird auf ähnliche Weise zum Out-Order in einigen Ausführungsformen durch Verwendung eines Satzes A(p) berechnet. Der Satz A(p) ist anfänglich alle Absätze im Teil des Dokuments oberhalb von p, die p horizontal überlappen. Der Absatz, der an p nächstgelegen ist, wird als Absatz q ausgewählt, und die Absätze, die den Absatz q horizontal überlappen, werden von A(p) entfernt. Dies wird dann für jeden der Absätze in A(p) wiederholt. In dem Beispiel der Seite 4300 ist der Satz A(P) für den Absatz P 4305 der Leersatz, während der Satz A(R) für den Absatz R 4315 {Q, W} ist. Der In-Order eines Absatzes p ist die Kardinalität (d. h. die Anzahl von Elementen) des Satzes A(p).
  • Der Left-Order und Right-Order eines Absatzes p werden auch auf ähnliche Weise in einigen Ausführungsformen berechnet, unter Verwendung eines Satzes L(p) (Absätze links von p und die p vertikal überlappen, mittels derselben Entfernungsregeln) und eines Satzes R(p) (Absätze rechts von p und die p vertikal überlappen, mittels derselben Entfernungsregeln). Einige Ausführungsformen verwenden L(p) und R(p) für Flussgraphen (siehe unten), wenn bestimmt wurde (beispielsweise durch ein externes Mittel), dass die Sprachrichtung von oben nach unten ist. Für die Seite 4300 ist der Satz R(P) für den Absatz P 4305 {V}, während der Satz L(V) für den Absatz V 4335 {P} ist. Die Sätze L(R) und R(R) für den Absatz R 4315 sind beide leer.
  • Wenn der In-Order, Out-Order, Left-Order und Right-Order für den ausgewählten Absatz berechnet wurden, bestimmt der Vorgang 4200 (in 4220), ob mehr Absätze bestehen, für welche die unterschiedlichen Werte berechnet werden müssen. Wenn noch Absätze bestehen, fährt der Vorgang zu 4210 fort, um einen anderen Absatz auszuwählen.
  • Sonst, wenn die Werte für alle Absätze berechnet werden, erzeugt der Vorgang (in 4225) einen Flussgraphen für die Absätze. Der Flussgraph von einigen Ausführungsformen wird so erzeugt, dass jeder Absatz im Teil des Dokuments, der eingeschätzt wird, ein Knoten ist. Eine gerichtete Kante wird vom Knoten für einen Absatz p zu jedem Knoten für die Absätze im Satz A(p) gezogen. Dies ist dasselbe, in einigen Ausführungsformen, wie das Ziehen einer gerichteten Kante von jedem Knoten für die Absätze im Satz B(p) zum Knoten für den Absatz p. 45 zeigt einen anfänglichen Flussgraphen 4501 für die Seite 4300.
  • Anschließend identifiziert der Vorgang 4200 (in 4230) Seitenansprachen. In einigen Ausführungsformen werden identifizierte Seitenansprachen vom Flussgraphen entfernt. Eine Seitenansprache, in einigen Ausführungsformen, ist ein Textelement auf einer Seite, das dafür gedacht wird, in einer Ordnung gelesen zu werden, die vom Rest des Textes auf der Seite unabhängig ist. Einige Beispiele von Seitenansprachen umfassen Kopfzeilen und Fußzeilen, Fußnoten, Margennoten, Seitenleisten und andere Textblöcke, die unter anderen Elementen angeordnet werden, wie Zitate in großer Schriftart in einem Zeitschriftenartikel.
  • Einige Ausführungsformen identifizieren Seitenansprachen basierend auf einer Kombination der Geometrie des Textelements, seiner Position auf der Seite, seiner Flusseigenschaften (In-Order, Out-Order, Left-Order, und Right-Order) und den Stileigenschaften seiner Elemente. Beispielsweise, wenn ein Vertex v einen Absatz mit einer Zeile enthält, der nah am Kopf einer Seite ist, ist die Distanz vom Absatz mit einer Zeile zu einem beliebigen Element in A(υ) mehr als die Höhe einer Zeile, L(υ) ≤ 1, R(υ) ≤ 1, und alle Vertexe in L(υ) und R(υ) teilen diese Bedingungen, dann klassifizieren einige Ausführungsformen den Absatz als eine Kopfzeilenseitenansprache. Erfordernisse für eine Kopfzeflenseitensprache sind ähnlich in einigen Ausführungsformen, außer der Suche nach der Distanz zum Seitenfuß und zu Elementen in G (υ).
  • Einige Ausführungsformen identifizieren auch Seitenleisten, die in Spalten herausragen (und nicht in ihrem eigenen Bereich sind), zufällig angeordnete Textkästen, kleine Textbisschen mit keiner offensichtlichen Beziehung zu einem anderen Text (beispielsweise Figurlegenden), usw. als Seitenansprachen. Einige Ausführungsformen treffen diese Bestimmungen (sowie andere Bestimmungen von Flusseigenschaften) basierend auf einer reinen Textanalyse, während andere Ausführungsformen Bilder in die Analyse involvieren (beispielsweise als weiterer Beweis für eine Figurlegende). In einigen Ausführungsformen identifizieren beispielsweise einige Ausführungsformen Absätze mit einer einzigen Zeile, die entfernt von allen Elementen in A(p) und B(p) sind, als isolierte kleine Absätze. Legenden werden in einigen Ausführungsformen identifiziert, wenn ein Absatz mit einer einzigen Textzeile durch die Grenzen eines Bildes eingeschlossen ist, und in bestimmten Arten mit den Bildgrenzen ausgerichtet ist (beispielsweise in den Mittelpunkt in der Nähe vom Fuß ausgerichtet, in den Mittelpunkt in der Nähe vom Kopf ausgerichtet, usw.).
  • Wenn die rechteckigen Grenzkästen von zwei oder mehr Absätzen sich kreuzen, identifizieren einige Ausführungsformen alle Absätze als Kreuzungsseitenansprachen außer einem. Beispielsweise, wenn angenommen wird, dass zwei Absätze, p und q, sich überlappen, und B(p) = {q, r}, wenn r einen In-Order von 1 hat oder wenn q in A(r) ist, dann ist q eine Kreuzungsseitenansprache in einigen Ausführungsformen, einige Ausführungsformen klassifizieren als Kreuzungsseitenansprache jeden Absatz p, dessen Stil und/oder Ausrichtungseigenschaften mit den Absätzen in A(p) oder B(p) nicht konsistent sind. Wenn zwei Absätze sich kreuzen, und keine der Regeln oben zutrifft, klassifizieren einige Ausführungsformen den Absatz mit einem kleineren Bereich als Seitenansprache.
  • Nach der Erzeugung des Flussgraphen für die Absätze im Teil des Dokuments verschmilzt der Vorgang 4200 (in 4235) Knoten des Flussgraphen in Spalten. Einige Ausführungsformen verschmelzen Knoten für Absätze p und q wenn A(p) = {q} und B(q) = {p}. Dies weist darauf hin, dass die Absätze p und q in derselben Spalte in einigen Ausführungsformen sind. In einigen Ausführungsformen wird der neue Knoten pq folgendes aufweisen: A(pq) A(q), B(pq) = B(p), L(pq) = L(p) + L(q) und R(pq) = R(p) + R(q). In 45 ist beispielsweise der Flussgraph 4501 so geändert, dass die Knoten S 4520, T 4525, und U 4530 in den Knoten STU 4575 im geänderten Flussgraph 4502 verschmolzen werden. Die anderen Knoten werden auf ähnliche Weise geändert.
  • 46 zeigt einen Flussgraph 4601 für die Seite 4400 der 44, nachdem die Knoten anfänglich in Spalten verschmolzen wurden. Einige Ausführungsformen identifizieren den Absatz R 4420 als Seitenansprache, da er zwei Spalten überspannt und Absätze sowohl auf der linken Seite als auf der rechten Seite aufweist. Einige Ausführungsformen entfernen daher den Knoten R 4620 vom Flussgraph 4601. Dies ermöglicht eine weitere Verschmelzung der Knoten in Spalten.
  • Wenn die Seitenansprachen identifiziert wurden (und, in einigen Ausführungsformen, vom Flussgraph entfernt), partitioniert der Vorgang 4200 (in 4240) den Flussgraphen in Layouts. Einige Ausführungsformen definieren Beschriftungen für Erweiterungs- und Reduzierungskanten als Teil des Partitionierungsvorgangs. In einigen Ausführungsformen, wenn der Out-Order eines Absatzes p größer als 1 ist, und der In-Order jedes Absatzes q im Satz B(p) 1 ist, dann ist die Kante von p zu jedem q in B(p) eine Erweiterungskante. Auf ähnliche Wiese, in einigen Ausführungsformen, wenn der In-Order eines Absatzes p größer als 1 ist, und der Out-Order jedes Absatzes q in A(p) 1 ist, dann sind die Kanten von jedem q in A(p) zu p eine Reduzierungskante. 45 zeigt, dass die Kanten, die zum Knoten R 4515 führen, beide Reduzierungskanten sind, und die Kanten, die vom Knoten R 4515 wegführen, beide Erweiterungskanten sind.
  • Das Partitionieren von einigen Ausführungsformen prüft jeden Vertex v, dessen Kanten alle beschriftet sind. Wenn der In-Order von υ größer als 1 ist, definieren einige Ausführungsformen eine Partition, deren Elemente B(υ) sind, solange A(p) = {υ} für jeden p in B(υ). Auf ähnliche Weise, wenn der Out-Order von υ größer als 1 ist, definieren einige Ausführungsformen eine Partition, deren Elemente A(υ) sind, solange B(p) = {υ} für jeden p in A(υ). Wenn beide Partitionen möglich sind, wird der Vertex υ als Alleinpartition definiert. Basierend auf diesen Regeln wird der Flussgraph 4502 in drei Partitionen, 4511, 4512 und 4513 partitioniert.
  • Einige Ausführungsformen setzen die übrigen Knoten in eine oder mehrere Partitionen, so dass die kleinste Anzahl von Partitionen ohne jegliche geometrische Überlappung zwischen den Partitionen definiert wird. Aufgrund einer komplexen Seitenstruktur verwenden einige Ausführungsformen lockerere Partitionierungsregeln als diejenigen, die oben beschrieben wurden. Beispielsweise, wenn eine Partition von einem Knoten υ kreiert werden könnte, außer dass der Out-Order von υ größer als 1 ist, dann werden Elemente von A(υ), welche entfernt von υ und dünn in Bezug auf υ sind, in einigen Ausführungsformen eliminiert. Wenn nur ein Element in A(υ) bleibt, werden die Kanten von v zu den entfernten Vertexen entfernt und das Partitionieren wird fortgesetzt. Wenn das Partitionieren fertig ist, ist der Vorgang 4200 beendet.
  • In einigen Ausführungsformen entspricht jede Partition einem linearen Layout und jeder der endgültigen (verschmolzenen) Knoten entspricht einer Spalte. Wenn die Partitionen definiert sind, berechnen einige Ausführungsformen Eigenschaften des Teils des Dokuments, wie die Spaltenzwischenraumbreite, Margen, in-line oder fließende Bilder, usw.
  • Ferner wird Layout- und Flussinformation (umfassend Wort-, Zeilen-, Satz-, und Spaltendaten) auf markante Weise bei der Anzeige des Dokuments verwendet und ermöglicht eine robustere Benutzerinteraktion mit dem Dokument, wie unten in Abschnitten VIII und IX beschrieben. Beispielsweise, in einigen Ausführungsformen, möchte ein Benutzer ein komplexes Dokument ansehen, dass mehrere Textspalten, Bilder, Seitenansprachen, Legenden, usw. enthält, und möchte in der Lage sein, den gesamten Text des Dokuments in einen Texteditierer kopieren und einfügen. Damit dies möglich wird, wird eine Leseordnung jedem der Elemente im Dokument zugewiesen, welche es versucht, die Ordnung zu identifizieren, in welcher ein Mensch die Elemente des Dokuments durchlesen würde.
  • Beispielsweise weisen einige Ausführungsformen Leseordnungen Spalten zu, so dass die Leseordnung der erwarteten Ordnung folgt, in der ein Mensch die Spalten vom Anfang bis zum Ende des Dokuments oder der Seite lesen würde. Andere Ausführungsformen weisen Leseordnungen anderen Strukturelementen (beispielsweise Absätze, Wörter, usw.) zu. In einigen Ausführungsformen, wenn der Benutzer den gesamten Text eines solchen Dokuments in eine andere Anwendung kopiert und einfügt, erscheint der Text in der Anwendung in der Ordnung, in welcher ein Mensch ihn lesen würde. Das ist in Kontrast mit Kopieren und Einfügen aus einer Standard-PDF-Datei, welche den ganzen Text in einer strikten oben-unten Konfiguration ordnet.
  • Einige Ausführungsformen fügen auch Bilder und Formen in die Leseordnung ein. Einige Ausführungsformen werden beispielsweise ein bestimmtes Bild als assoziiert mit einer bestimmten Textspalte identifizieren und das Bild entweder vor oder nach der Textspalte einfügen (basierend auf dem Nachweis im Dokument). Einige Ausführungsformen, als Beispiel, identifizieren, dass ein Bild mit der Legende für das Bild assoziiert ist und fügen das Bild in die Leseordnung unmittelbar vor seiner Legende ein.
  • Einige Ausführungsformen definieren auch Links zwischen Layouts (z. B. eine Verlinkung zwischen Seiten) oder zwischen Bereichen. Einige Ausführungsformen können beispielsweise einen Fortsetzungstext erkennen (beispielsweise den Text in einer Zeitung, der darauf hinweist, dass eine Geschichte auf einer anderen Seite fortgesetzt wird) und können den Text im Layout mit dem Fortsetzungstext zum Layout, wo der Text fortgesetzt wird, verlinken. Einige Ausführungsformen versuchen eine solche Verlinkung nur, wenn ein Profil übereinstimmt, was darauf hinweist, dass eine Verlinkung ausgeführt werden sollte. Beispielsweise, wenn ein Dokument als eine Zeitung identifiziert wurde, dann werden einige Ausführungsformen nach einem Fortsetzungstext suchen.
  • E. Software-Architektur
  • In einigen Ausführungsformen werden die oben beschriebenen Layout- und Flussanalysevorgänge als Software implementiert, die auf einer bestimmten Maschine läuft, wie einem Computer, einem Medienwiedergabegerät, einem Mobilfunktelefon (beispielsweise einem iPhone®), oder anderen tragbaren Geräten oder Geräten mit begrenzten Ressourcen (oder in einem computerlesbaren Medium gespeichert). 47 zeigt konzeptionell die Softwarearchitektur einer Layout- und Flussanalyseanwendung 4700 von einigen Ausführungsformen zur Identifizierung von Layout- und Flusseigenschaften eines Dokuments. In einigen Ausführungsformen ist die Anwendung eine selbstständige Anwendung oder wird in eine andere Anwendung integriert (beispielsweise eine Anwendung zur Dokumentenrekonstruktion), während in anderen Ausführungsformen die Anwendung innerhalb eines Betriebssystems implementiert werden könnte. Die Layout- und Flussanalyseanwendung 4700 enthält ein Modul zur Zeilenidentifizierung 4705, ein Modul zur Zeilenverschmelzung 4710, ein Modul zur Wortidentifizierung, 4715, ein Modul zur Unterschiedsgruppierung 4720, ein Modul zur Zeilenaufteilung 4725, ein Modul zur Absatzidentifizierung 4730, ein Modul zur Spalten- und Layoutidentifizierung 4735, und einen Ordnungsberechner 4740.
  • 47 zeigt auch den Dokumentinhalt 4745. Das Modul zur Zeilenidentifizierung 4705 empfängt Informationen vom Dokumentinhalt 4730. In einigen Ausführungsformen ist diese Information eine Information über die Position der Buchstaben. Das Modul zur Zeilenidentifizierung 4705 identifiziert Buchstaben mit einer gemeinsamen Grundlinie auf einer Seite und weist sie einer Zeile zu. Das Modul zur Zeilenidentifizierung leitet Informationen an, und empfängt Information vom Modul zur Zeilenverschmelzung 4710. Das Modul zur Zeilenverschmelzung identifiziert Gruppen von Zellen, die sich vertikal überlappen, und bestimmt, oh die Zeilen verschmolzen werden sollten. In einigen Ausführungsformen führt das Modul zur Zeilenverschmelzung 4710 einen Teil oder das Ganze vom Vorgang 3300 aus, der oben beschrieben wurde. Das Modul zur Zeilenverschmelzung 4710 leitet diese Informationen zurück an das Modul zur Zeilenidentifizierung 4705, das die endgültigen Textzeilen identifiziert. Das Modul zur Zeilenidentifizierung 4705 leitet die Zeileninformation zurück an den Dokumentinhalt 4745 , sowie an das Modul zur Zeilenaufteilung 4725.
  • Das Modul zur Wortidentifizierung 4715 empfängt auch Informationen vom Dokumentinhalt 4745. In einigen Ausführungsformen ist diese Information Information über die Position der Buchstaben im Dokument. Das Modul zur Wortidentifizierung 4715 identifiziert Buchstaben, die als Wörter zusammen gruppiert werden sollten. Das Modul zu Wortidentifizierung 4715 leitet Informationen an, und empfängt Informationen vom Modul zur Unterschiedsgruppierung 4720. Das Modul zur Unterschiedsgruppierung 4720 führt eine Unterschiedsgruppierung auf den Buchstaben des Dokuments aus, um unterschiedliche Lückenpegel zwischen Buchstaben (beispielsweise Wortlücken, Segmentlücken, usw.) zurückzugeben. Das Modul zur Wortidentifizierung 4715 verwendet die Ergebnisse der Unterschiedsgruppierung, um die Wörter zu identifizieren. Das Modul zur Wortidentifizierung 4715 gibt seine Ergebnisse (sowie andere Ergebnisse der Unterschiedsgruppierung, wie Segmentlücken) an den Dokumentinhalt 4745, sowie an das Modul zur Zeilenaufteilung 4725.
  • Das Modul zur Zeilenaufteilung 4725 empfängt Zeileninformationen vom Modul zur Zeilenidentifizierung und Lückeninformationen. vom Modul zur Wortidentifizierung, sowie andere Informationen (beispielsweise Spaltenzwischenrauminformation) vom Dokumentinhalt 4745. Das Modul zur Zeilenaufteilung 4725 identifiziert, wo Zeilen aufgeteilt werden sollten, und gibt neue Zeileninformationen basierend auf diesen Zeilenaufteilungen aus. Die neue Zeileninformation wird an den Dokumentinhalt 4745 , sowie an das Modul zur Absatzidentifizierung 4745 weitergegeben. In einigen Ausführungsformen führt das Modul zur Zeilenaufteilung 4725 einen Teil oder das Ganze von Vorgang 3800.
  • Das Modul zur Absatzidentifizierung 4730 empfängt Zeileninformationen vom Modul zur Zeilenaufteilung 4725, sowie andere Informationen (z. B. Ausrichtungsinformationen) vom Dokumentinhalt 4745. Das Modul zur Absatzidentifizierung 4730 identifiziert, welche Zeilen in Absätze gruppiert werden sollten und gibt die Ergebnisinformation aus. Die Absatzinformation wird an den Dokumentinhalt 4745, sowie an das Modul zur Spalten- und Layoutidentifizierung 4735 weitergegeben. In einigen Ausführungsformen Führt das Modul zur Absatzidentifizierung 4730 einen Teil oder das Ganze vom Vorgang 4000.
  • Das Modul zur Spalten- und Layoutidentifizierung 4735 empfängt Absatzinformationen vom Modul zur Absatzidentifizierung 4730, sowie andere Informationen (z. B. Bereichsinformationen) von Dokumentinhalt 4745. Das Modul zur Spalten- und Layoutidentifizierung 4735 gruppiert Absätze in Spalten und gruppiert Spalten in Layouts. Das Modul zur Spalten- und Layoutidentifizierung 4735 gibt Informationen an und empfängt Informationen vom Ordnungsberechner 4740. Der Ordnungsberechner 4740 empfängt Absatzinformationen vom Modul 4735 und berechnet den In-Order, Out-Order, Left-Order, und Right-Order (sowie die entsprechenden Sätze A, B, L und R) für die Absätze. Diese Information wird dann an das Modul 4735 zur Verwendung bei der Erzeugung eines Flussgraphen zurückgegeben. Die Ergebnisse vorn Modul zur Spalten- und Layoutidentifizierung 4735 werden an den Dokumentinhalt 4745 weitergeleitet. In einigen Ausführungsformen führt das Modul zur Spalten- und Layoutidentifizierung 4745 einen Teil oder das Ganze von Vorgang 4200, der oben beschrieben wurde.
  • In einigen Ausführungsformen werden die Ergebnisse der durch die oben beschriebenen Module oder andere Module ausgeführten Vorgänge in einem elektronischen Speicher (beispielsweise als Teil eines Dokumentobjektmodells) abgespeichert. Das Dokumentobjektmodell kann dann zur Anzeige des Dokuments auf einem elektronischen Anzeigegerät (beispielsweise einem tragbaren Gerät, einem Computerbildschirm usw.) verwendet werden, so dass ein Benutzer das Dokument ansehen und/oder mit ihm interagieren kann (beispielsweise über einen Berührungsbildschirm, ein Cursorsteuergerät usw.).
  • V. Tabellenidentifizierung
  • Einige Ausführungsformen der Erfindung identifizieren Tabellen in einem Dokument. Einige Ausführungsformen identifizieren Zellen, Reihen, und Spalten für die Tabellen und ermöglichen die Tabellen zum Editieren, Exportieren zu einem Arbeitsplatz, usw. Bereichsinformationen von den oben im Abschnitt II beschriebenen Vorgängen, sowie Layout- und Flussinformationen von den oben im Abschnitt IV beschriebenen Vorgängen werden im Vorgang zur Tabellenidentifizierung einiger Ausführungsformen verwendet. Einige Ausführungsformen können Tabellen identifizieren und rekonstruieren, selbst wenn die Tabellen als eine nichtbezogene Gruppe von Grafiken gezeichnet sind, die sich überlappende Form und Bilder enthält, wie es üblich ist, wenn die Tabelle Effekte enthält, wie Extrusionen und Schatten.
  • 48 zeigt konzeptionell einen Vorgang 4800 einiger Ausführungsformen zur Identifizierung von Tabellen in einem Teil eines Dokuments. Wie gezeigt, empfängt der Vorgang (in 4805) Bereichs- und Layoutinformationen für einen Teil eines Dokuments. In einigen Ausführungsformen ist die Bereichsinformation der Ausgang von oben im Absatz II beschrieben Vorgängen, und die Layoutinformation ist der Ausgang von oben im Abschnitt N beschriebenen Vorgängen. In einigen Ausführungsformen ist der Teil des Dokuments eine Seite des Dokuments, oder ein Bereich einer Seite, usw.
  • Der Vorgang identifiziert dann (in 4810) Tabellen mit vollständigen Grenzen. 49 zeigt ein Beispiel einer Tabelle 4900 mit vollständigen Grenzen. Einige Ausführungsformen klassifizieren jeden Bereich, der eine Insel ist (wie oben in Abschnitt II definiert), die vollständig durch zwei oder mehr Bereiche partitioniert wird, deren Grenzen alle rechteckigen Rechtecke sind. Diese Partitionierungsrechtecke sind daher die Zellen der Tabelle. Die Identifizierung von Tabellen mit vollständigen Grenzen wir im Detail im Unterabschnitt A unten beschrieben.
  • Der Vorgang 4800 identifiziert dann (in 4815) Tabellen mit verbundenen Grenzen. 50 zeigt ein Beispiel einer Tabelle 5000 mit verbundenen aber unvollständigen Grenzen. Eine Tabelle weist verbundene Grenzen in einigen Ausführungsformen auf, wenn alle Grenzen der Tabelle, die tatsächlich gezeichnet sind, sich einander kreuzen, so dass jeder Grenze mit einer anderen Grenze über einen Satz von Verbindungen verbunden ist. Die Tabelle 5000 weist unvollständige Grenzen auf, da die äußeren Grenzen der Tabelle nicht gezeichnet sind. Die Identifizierung von Tabellen mit verbundenen, aber unvollständigen Grenzen wird im Detail im Unterabschnitt B unten beschrieben.
  • Der Vorgang 4800 identifiziert dann (in 4820) Tabellen ohne Grenzen oder mit unterbrochenen Grenzen. 51 zeigt ein Beispiel einer Tabelle 5100 ohne Grenzen. 52 zeigt ein Beispiel einer Tabelle 5200 mit unterbrochenen Grenzen. Die Tabelle 5200, im Gegensatz zur Tabelle 5100, weist keine gezeichneten Grenzen auf, aber die Grenzen bilden keinen verbundenen Satz. Für Tabellen, deren Grenzen keinen verbundenen Satz bilden, erfordern einige Ausführungsformen die Verwendung von Layoutinformationen, um die Tabellen zu identifizieren. Die Identifizierung von Tabellen ohne Grenzen oder mit unterbrochenen Grenzen wird im Detail im Unterabschnitt C unten beschrieben.
  • Wenn alle Tabellen im Teil des Dokuments identifiziert wurden, definiert der Vorgang (in 4825) die durch Editiersoftware und andere Software zugänglichen Tabellen. Der Vorgang wird dann beendet. In einigen Ausführungsformen ermöglicht es einem Benutzer, individuelle Zellen der Tabelle zu editieren, Reihen und Spalten der Tabelle auszuwählen, die Tabelleninformation auf eine intelligente Art und Weise in ein Arbeitsblatt zu kopieren, usw.
  • A. Tabellen mit vollständigen Grenzen
  • Einige Ausführungsformen der Erfindung identifizieren Tabellen, in denen alle Grenzen mit einer Kombination von Grenzengrafiken (z. B. Zeilen, dünne Rechtecke, dünne Bilder, Grenzen von gefühlten Rechtecken, usw.) gezeichnet sind. Vorgänge von einigen Ausführungsformen zur Identifizierung dieser Grenzengrafiken und zur Verwendung der Grenzengrafiken, um Bereiche zu identifizieren, werden oben im Abschnitt II beschrieben.
  • 53 zeigt konzeptionell einen Vorgang 5300 von einigen Ausführungsformen zur Identifizierung von Tabellen, die einen vollständigen Satz von Grenzen aufweisen und die die Zellen, Reihen, und Spalten der identifizierten Tabellen definieren. In einigen Ausführungsformen wird der Vorgang 5300 auch verwendet, um Tabellen mit unvollständigen oder ohne Grenzen zu identifizieren oder definieren, wenn implizierte Grenzen für diese Tabellen identifiziert wurden. Solche Vorgänge werden im Detail in den Unterabschnitten B und C beschrieben. Der Vorgang 5300 wird im Bezug auf 54 beschrieben werden.
  • 54 zeigt eine Seite 5400, die eine Tabelle mit vollständigen Tabellen aufweist.
  • Wie die 53 zeigt, empfängt der Vorgang (in 5305) Bereichsinformation für einen Teil eines Dokuments. In einigen Ausführungsformen ist der Teil des Dokuments das gesamte Dokument, ein Abschnitt des Dokuments, oder eine Seite des Dokuments. Die Bereichsinformation in einigen Ausführungsformen ist Information, die von den oben im Abschnitt II beschriebenen Vorgängen ausgegeben wird und Bereichsgrenzen- und Kreuzungsinformationen sowie die identifizierten Bereiche und Bereichsgraphinformationen enthält.
  • Vorgang 5300 identifiziert dann (in 5310) Inseln, die vollständig durch zwei oder mehr Bereiche partitioniert sind, wobei alle rechteckig sind. Wie oben beschrieben, ist in einigen Ausführungsformen eine Insel ein Bereich, der ein Grenzenintervall mit ihrem Elternbereich teilt. 54 zeigt eine Seite 5400, die eine Insel 5401 enthält, die durch Rechtecke partitioniert ist. Wie gezeigt partitionieren die 13 Rechtecke die Insel 5401, so dass der Bereich der Seite, der durch die 13 rechteckigen Bereiche abgedeckt ist, genau derjenige der Insel 5401 ist. Die Insel 5401 wird daher als eine Tabelle identifiziert.
  • Der Vorgang bestimmt dann (in 5311), ob es unbearbeitete Inseln unter denjenigen, die in 5310 identifiziert wurden, gibt. Wenn keine identifiziert wurde, oder all diejenigen, die identifiziert wurden, als Tabellen bearbeitet wurden, endet der Vorgang. Sonst wählt der Vorgang (in 5314) die nächste identifizierte Insel aus. In einigen Ausführungsformen gibt es keine bestimmt Ordnung in den identifizierten Inseln, solange sie alle bearbeitet werden.
  • Der Vorgang 5300 sortiert dann (in 5315) die horizontalen Grenzen in der ausgewählten Insel von der höchsten zur niedrigsten. Einige Ausführungsformen sortieren basierend auf der oberen Grenze der Grenze, so dass die Grenze mit der höchsten oberen Grenze als erste kommt. Die horizontalen Grenzen in einigen Ausführungsformen sind die horizontalen Grenzenintervalle innerhalb der als Tabelle identifizieren Insel und umfassen die Grenzen der Insel. 54 zeigt 16 horizontale Grenzenintervalle 54055420. In einigen Ausführungsformen werden die horizontalen Grenzenintervalle durch einen Vorgang wie den Vorgang 900, der oben im Abschnitt II beschrieben wurde, identifiziert.
  • Nachdem die horizontalen Grenzenintervalle in Ordnung sortiert wurden, wählt der Vorgang (in 5320) die erste uneingeschätzte horizontale Grenze aus und definiert (in 5325) die nächste horizontale Gitterlinie der Tabelle. Im Beispiel der 54 ist entweder das Grenzenintervall 5405 oder 5406 die erste ausgewählte Grenze, an welchem Punkt die horizontale Gitterlinie 1 definiert wird.
  • Der Vorgang weist dann (in 5330) die ausgewählte Grenze der aktuellen Gitterlinie zu und setzt die vertikale Spanne der Gitterlinie zur Kreuzung der y-Intervalle aller Grenzen, die der Gitterlinie zugewiesen werden. Infolgedessen, wenn die aktuell ausgewählte Grenze die erste der aktuellen Gitterlinie zuzuweisende Grenze ist, ist das y-Intervall der Gitterlinie einfach das y-Intervall der Grenze. Wenn jedoch mehrere Grenzen der Gitterlinie zugewiesen werden, erhält das y-Intervall der Gitterlinie die y-Intervalle aller zugewiesenen Grenzen.
  • Der Vorgang bestimmt dann (in 5335), ob es noch horizontale Grenzen gibt, die der Gitterlinie noch nicht zugewiesen wurden. Wenn es keine horizontalen Grenzen mehr gibt, fährt der Vorgang zu 5345 fort, der unten beschrieben wird. Sonst, wenn es noch übrige Grenzen gibt, bestimmt der Vorgang (in 5340) ob das y-Intervall der nächsten Grenze das y-Intervall der aktuellen Gitterlinie überlappt. Wenn die y-Intervalle sich nicht überlappen, wurden alle Grenzen in der aktuellen Gitterlinie definiert, und der Vorgang fährt zu 5320 fort, um die nächste Grenze auszuwählen und eine neue Gitterlinie anzufangen. Jedoch, wenn die y-Intervalle sich überlappen, fährt der Vorgang zu 5330 fort, um die Grenze der aktuellen Gitterlinie zuzuweisen, das y-Intervall der Gitterlinie zu aktualisieren, und zur nächsten Grenze fortzufahren.
  • Wie in 45 gezeigt, nachdem entweder die Grenze 5404 oder 5406 als die erste Grenze für die Insel 5401 ausgewählt wurde, würde die andere Grenze von diesen beiden als nächste ausgewählt und zur horizontalen Gitterlinie 1 hinzugefügt. Die horizontale Gitterlinie 2 würde als nächste definiert, umfassend Grenzen 5407 und 5408, und so weiter, bis nach unten bis zur horizontalen Gitterlinie G (Grenzen 54185420).
  • Wenn alle horizontalen Grenzen den Gitterlinien zugewiesen wurden, berücksichtigt der Vorgang 5300 die vertikalen Grenzen. Der Vorgang 5300 sortiert (in 5345) die vertikalen Grenzen in der ausgewählten Insel von links nach rechts. Einige Ausführungsformen sortieren basierend auf der linken Grenze der Grenze, so dass Grenze mit der linken Grenze ganz links die erste ist. Die vertikalen Grenzen in einigen Ausführungsformen sind die vertikalen Grenzintervalle innerhalb der Insel, die als Tabelle identifiziert wurde, und umfassend die Grenzen der Insel. 54 zeigt 18 vertikale Grenzenintervalle 54255442. In einigen Ausführungsformen werden die vertikalen Grenzenintervalle durch einen Vorgang wie den Vorgang 900, der oben im Abschnitt II beschrieben wurde, identifiziert.
  • Nachdem die vertikalen Grenzenintervalle in der Ordnung sortiert wurden, wählt der Vorgang (in 5350) die erste uneingeschätzte vertikale Grenze aus und definiert (in 5355) die nächste vertikale Gitterlinie der Tabelle. Im Beispiel der 54 ist einer der Grenzenintervalle 54265428 die erste ausgewählte Grenze, an welchem Punkt die vertikale Gitterlinie 1 definiert ist.
  • Der Prozess weist dann (in 5360) die ausgewählte Grenze der aktuellen Gitterlinie zu und setzt die horizontale Spanne der Gitterlinie zur Kreuzung der x-Intervalle aller Grenzen, die der Gitterlinie zugewiesen sind. Infolgedessen, wenn die aktuell ausgewählte Grenze die erste der aktuellen Gitterlinie zuzuweisende Grenze ist, ist das x-Intervall einfach das x-Intervall der Grenze. Wenn jedoch mehrere Grenzen der Gitterlinie zugewiesen werden, enthält das x-Intervall der Gitterlinie die x-Intervalle aller zugewiesenen Grenzen.
  • Der Vorgang bestimmt dann (in 5365), ob es noch vertikale Grenzen gibt, die der Gitterlinie nicht zugewiesen wurden. Wenn es keine übrigen Grenzen mehr gibt, fährt der Vorgang zu 5375 fort, der unten beschrieben wird. Sonst, wenn es noch übrige Grenzen gibt, bestimmt der Vorgang (in 5370), ob das x-Intervall der nächsten Grenze das x-Intervall der aktuellen Gitterlinie überlappt. Wenn die x-Intervalle sich nicht überlappen, wurden alle Grenzen in der aktuellen Gitterlinie definiert und der Vorgang fährt zu 5350 fort, um die nächste Grenze auszuwählen und eine neue Gitterlinie anzufangen. Sonst, wenn die x-Intervalle sich überlappen, fährt der Vorgang zu 5360 fort, um die Grenze der aktuellen Gitterlinie zuzuweisen, das x-Intervall der Gitterlinie zu aktualisieren, und zur nächsten Grenze fortzufahren.
  • Nachdem eine der Grenzen 54255428 als die erste Grenze für die Insel 5401 ausgewählt wurde, wird eine der anderen drei Grenzen ausgewählt und der vertikalen Gitterlinie 1 hinzugefügt. Wenn alle vier von diesen Grenzen der vertikalen Gitterlinie 1 hinzugefügt wurden, wird die vertikale Gitterlinie 2 als nächste definiert, umfassend die Grenzen 54295433, und so weiter bis zur vertikalen Gitterlinie 4 (Grenzen 54385442).
  • Wenn alle vertikalen Grenzen eingeschätzt wurden, wurden alle Gitterlinien für die Tabellen definiert. Ein Fachmann würde erkennen, dass, während der Vorgang 5300 horizontale Gitterlinien vor den vertikalen Gitterlinien definiert, einige Ausführungsformen vertikale Gitterlinien zuerst definieren.
  • Der Vorgang weist dann (in 5375) Reihen- und Spaltennummern den Zellen der Tabelle zu. Jeder der Bereiche, der die Insel partitioniert, ist eine Zelle in einigen Ausführungsformen. In einigen Ausführungsformen umspannt eine Zelle die Reihen von der Gitterlinie ihrer oberen Grenze zu einem weniger als die Gitterlinie ihrer unteren Grenze. Beispielsweise umspannt eine Zelle 5450 in 54 die Reihen 1 und 2, da ihre obere Grenze ein Teil einer horizontalen Gitterlinie 1 ist und ihre untere Grenze ein Teil einer horizontalen Gitterlinie 3 ist. Auf ähnliche Weise, in einigen Ausführungsformen, umspannt eine Zelle die Reihen von der Gitterlinie ihrer linken Grenze zu einem weniger als die Gitterlinie ihrer rechten Grenze. Beispielsweise umspannt die Zelle 5450 die Spalte 1, da ihre linke Grenze Teil der vertikalen Gitterlinie 1 ist und ihre rechte Grenze Teil der vertikalen Gitterlinie 2 ist.
  • Wenn die Struktur der Tabelle (d. h., die Gitterlinien, Zellen, Reihen und Spalten) rekonstruiert wurde, bestimmt der Vorgang (in 5380) Stilinformationen für die Tabelle. Der Vorgang fährt dann zu 5311, der oben beschrieben wurde, fort, um zu bestimmen, ob es noch identifizierte Inseln gibt, die als Tabellen zu bearbeiten sind. In einigen Ausführungsformen kommt die Tabellenstilinformation von den Grenzengrafiken, die die Bereichsgrenzen bilden, sowie von Hintergrundgrafiken. Beispielsweise, wenn es mehrere Hintergrundformen gibt, die eine bestimmte Zelle abdecken oder kreuzen, bestimmen einige Ausführungsformen die resultierende Form, Farbe oder Bildwiedergabe durch Zusammensetzen der verschiedenen Hintergrundformen, und Abschneiden zur Grenze der Gitterlinie wenn notwendig. Auf ähnliche Weise bestimmen einige Ausführungsformen die Farben der Zellengrenze basierend auf einem gewichteten Mittelwert von Formfarben, die durchzeigen. Die Gewichte im gewichteten Mittelwert basieren auf dem Betrag des Bereichs, der sich für jede Farbe in einigen Ausführungsformen zeigt. Einige Ausführungsformen erkennen auch Grenzenstile, wie Schatten oder Extrusionen.
  • In einigen Ausführungsformen ermöglichen das Identifizieren einer Tabelle und Bestimmen der Struktur der Tabelle, dass die Tabelle verwendet wird, als ob sie durch einen üblichen Wortprozessor statt durch einen Satz unbezogener Grafiken erzeugt würde. In einigen Ausführungsformen können beispielsweise Benutzer die Zellen der Tabelle individuell editieren, die Information zu einem Arbeitsblatt exportieren, die Tabellendaten sortieren usw.
  • Einige Ausführungsformen verwenden nur den Vorgang 5300, um Tabellen zu identifizieren. Dadurch werden jedoch nur Tabellen mit einem vollständigen Satz von Grenzen identifiziert. Andere Ausführungsformen verwenden Vorgänge, die in den Unterabschnitten B und C unten beschrieben sind, um Tabellen zu identifizieren, welche keine vollständigen Grenzengrafiken aufweisen, aber sonst die Struktur und das Layout einer Tabelle aufweisen.
  • B. Tabellen mit verbundenen Grenzen
  • Zusätzlich zu den Tabellen, die einen vollständigen Satz von Grenzen aufweisen, identifizieren einige Ausführungsformen Tabellen, die einen unvollständigen, aber verbundenen Satz von Grenzen aufweisen. 50 zeigt eine solche Tabelle 5000. Einige Ausführungsformen verwenden Vorgänge, um implizierte Grenzen zu definieren, die bezweckte Tabellengrenzen sein könnten, wenden dann einen Vorgang wie den oben beschriebenen an, um die aktuelle Tabelle zu identifizieren und rekonstruieren.
  • 55 zeigt konzeptionell einen Vorgang 5500 von einigen Ausführungsformen zum Identifizieren und Rekonstruieren von Tabellen, die einen verbundenen Satz von Grenzen aufweisen. Der Vorgang 5500 wird im Bezug auf 56 beschrieben werden. 56 zeigt eine Sequenz des Identifizierens einer Tabelle mit verbundenen aber unvollständigen Grenzen auf einer Seite 5600.
  • Wie in 55 gezeigt, empfängt der Vorgang 5500 (in 5505) einen Satz von potentiellen Bereichsgrenzen und Grenzenkreuzungen für einen Teil eines Dokuments. In einigen Ausführungsformen werden die potentiellen Bereichsgrenzen und Kreuzungen durch den Vorgang 900, wie oben in Abschnitt II beschrieben, bestimmt. Andere Ausführungsformen verwenden andere Vorgänge, um die potentiellen Bereichsgrenzen für einen Teil eines Dokuments zu bestimmen. Der Teil des Dokuments in einigen Ausführungsformen ist das ganze Dokument, ein Abschnitt des Dokuments oder eine Seite des Dokuments.
  • Anschließend definiert der Vorgang 5500 (in 5510) einen Satz U, der alle potentiellen Bereichsgrenzen, die in 5505 empfangen wurden, enthält. Der Vorgang bestimmt dann (in 5515), oh U leer ist. Wenn der Satz leer ist, wird der Vorgang beendet, da es keine Bereichsgrenzen gibt, welche verbunden werden könnten.
  • Sonst, wenn der Satz U mindestens eine Bereichsgrenze enthält, wählt der Vorgang (in 5520) eine Grenze b von U aus und definiert einen neuen verbundenen Satz C. Einige Ausführungsformen fangen mit der Grenze, die am obersten, ganz links oder am nächsten zur oberen linken Ecke liegt, an oder verwenden eine andere Heuristik, um zu bestimmen, welche Grenze zuerst ausgewählt werden soll. Andere Ausführungsformen wählen die Grenze b zufällig aus. Die ausgewählte Grenze b wird dann aus denn Satz U entfernt (in 5525) und zum Satz C hinzugefügt. Der verbundene Satz C, in einigen Ausführungsformen, ist ein Satz von Grenzen, welche alle über einen Satz von Kreuzungen verbunden sind.
  • Der Vorgang wählt dann (in 5530) eine Grenze z aus dem Satz U aus, welche für die aktuelle Grenze b noch nicht eingeschätzt wurde und bestimmt (in 5535), ob die Grenze z die Grenze b kreuzt. In einigen Ausführungsformen involviert das Bestimmen, ob die Grenze z die Grenze b kreuzt, das Bestimmen, ob eine der empfangenen Kreuzungen die Grenze z zur Grenze b verbindet. Wenn sich die Grenzen nicht kreuzen, fährt der Vorgang zu 5545 fort, der unten beschrieben ist. Sonst, wenn sich die Grenzen kreuzen, fügt der Vorgang (in 5540) die Grenze z zum aktuellen verbundenen Satz C hinzu und setzt z in eine Warteschleife. Einige Ausführungsformen verwenden die Warteschleife, um die Grenzen in einem verbundenen Satz zu beobachten, welche für weitere Verbindungen eingeschätzt werden sollen, bevor zum nächsten verbundenen Satz fortgefahren wird.
  • Anschließend bestimmt der Vorgang (in 5545), ob Grenzen im Satz U zur Kreuzung mit der aktuellen Grenze b noch nicht eingeschätzt wurden. Wenn noch Grenzen bestehen, fährt der Vorgang zu 5530 fort, um eine andere Grenze z auszuwählen und zu bestimmen, ob die neue Grenze z die aktuelle Grenze z kreuzt.
  • Sonst, wenn alle Grenzen in U zur Kreuzung mit der aktuellen Grenze b eingeschätzt wurden, bestimmt der Vorgang 5500 (in 5550), ob die Warteschleife leer ist. Wenn es zumindest eine Grenze in der Warteschleife gibt, setzt der Vorgang (in 5555) die nächste Grenze in der Warteschleife als die nächste ausgewählte Grenze b. Der Vorgang fährt dann zu 5525 fort, um einzuschätzen, ob die in U bestehenden Grenzen die neu ausgewählte Grenze b kreuzen.
  • Sonst, wenn die Warteschleife leer ist, wurden alle Elemente des aktuellen verbundenen Satzes C zugewiesen und der Vorgang bestimmt (bei 5560), ob der Satz U leer ist. Wenn U nicht leer ist, fährt dann der Vorgang zu 5520 fort, um eine neue Grenze b auszuwählen und einen neuen verbundenen Satz C zu definieren.
  • Wenn U leer ist, dann wurden alle Grenzen bearbeitet und in ihre jeweiligen verbundenen Sätze gesetzt. 56 zeigt eine Seite 5600 mit sieben Grenzen 56055635. Durch Anwendung dieses Vorgangs 5500 werden die sieben Grenzen den drei verbundenen Sätzen 5640 (umfassend die Grenze 5605), 5645 (umfassend die Grenzen 5610 und 5615) und 5650 (umfassend die Grenzen 56205635) zugewiesen. Jeder dieser verbundenen Sätze enthält Grenzen, welche mindestens eine andere Grenze im verbundenen Satz kreuzen und keine Grenzen außerhalb des verbundenen Satzes kreuzen.
  • Wenn alle verbundenen Sätze identifiziert wurden, da der Satz U leer ist, wählt der Vorgang (in 5565) einen Satz C aus und fügt (in 5570) die vier Grenzen, die den rechteckigen Grenzkasten von C bilden, zum Satz C hinzu. Der rechteckige Grenzkasten ist, in einigen Ausführungsformen, das kleinste senkrechte Rechteck, das alle Grenzen im verbundenen Satz enthält. 56 zeigt beispielsweise die vier Grenzen 56555670, die den rechteckigen Grenzkasten des verbundenen Satzes 5650 bilden. Der verbundene Satz 5640 ist eine einfache Zeile, so dass sein rechteckiger Grenzkasten nur die äußeren Kanten der Zeile ist. Zwei der vier Grenzen, die den rechteckigen Grenzkasten des verbundenen Satzes 5645 bilden, sind die Grenzen 5610 und 5615, während die zusätzlichen Grenzen 5675 und 5680 durch den Vorgang 5570 in einigen Ausführungsformen hinzugefügt werden.
  • Der Vorgang bestimmt dann (in 5575), ob verbundene Sätze C bestehen. Wenn mindestens ein Satz besteht, fährt der Vorgang zu 5565 fort, um einen anderen Satz C auszuwählen. Wenn alle Sätze eingeschätzt wurden, identifiziert der Vorgang (in 5580) Bereiche unter Verwendung aller Grenzen von allen verbundenen Sätzen. Einige Ausführungsformen wenden den Vorgang 1200 (oben in Abschnitt II beschrieben) oder einen ähnlichen Vorgang an, um die Bereiche zu identifizieren.
  • Wenn die Bereiche identifiziert wurden, identifiziert der Vorgang 5500 (in 5585) Tabellen aus den Bereichen und rekonstruiert die Tabellen. Der Vorgang wird dann beendet. Einige Ausführungsformen wenden den Vorgang 5300, wie oben in Unterabschnitt A beschrieben, an, um die Tabellen zu rekonstruieren, wenn die Bereiche mittels der implizierten Grenzen von den rechteckigen Grenzkästen der verbundenen Sätze identifiziert wurden. 56 zeigt, dass eine Tabelle 5685 auf der Seite 5600 identifiziert ist. Die Tabelle weist drei Spalten und drei Reihen auf, mit neun Zellen insgesamt.
  • Einige Ausführungsformen entfernen dann die Tabelle und die Zellbereiche (und die Grenzengrafiken, die diese Bereiche bilden) und identifizieren Bereiche ohne implizierte Grenzen erneut, so dass keine Bereiche definiert werden, wo es keine geben sollte. Einige Ausführungsformen fügen dann die Tabelle und Zellenbereiche erneut hinzu, um den Bereichsgraph zu bestimmen, wie oben in Abschnitt II beschrieben. Einige Ausführungsformen erzeugen einen Vollbereichs-Graphen, der die Identifizierung der Tabelle und Zellenbereiche und ihrer Struktur enthält.
  • C. Tabellen ohne Grenzen oder mit unterbrochenen Grenzen
  • Zusätzlich zu Tabellen, die einen vollständigen oder zumindest einen verbundenen Satz von Grenzen aufweisen, identifizieren einige Ausführungsformen Tabellen, welche entweder keine Grenzen oder unterbrochene Grenzen aufweisen. 51 zeigt eine Tabelle 5100 ohne Grenzen, während 52 eine Tabelle 5200 mit unterbrochenen Grenzen zeigt. Einige Ausführungsformen verwenden Vorgänge, um implizierte Grenzen zu definieren, welche bezweckte Tabellengrenzen sein könnten, wenden dann einen Vorgang, wie den Vorgang, 5300 an, um die eigentliche Tabelle zu identifizieren und zu rekonstruieren. Für Tabellen, deren Grenzen keinen verbundenen Satz bilden, erfordern einige Ausführungsformen die Verwendung von Layout-Informationen, um die Tabellen zusätzlich zu Bereichsinformationen zu identifizieren.
  • 57 zeigt konzeptionell einen Vorgang 5700 zur Identifizierung und Rekonstruktion von Tabellen ohne Grenzen oder mit unterbrochenen Grenzen. Der Vorgang 5700 wird im Bezug auf die 5860 beschrieben werden. Die 5860 zeigen die Anwendung des Vorgangs 5700 auf eine Seite 5800 zur Identifizierung einer Tabelle, die unterbrochene Grenzen aufweist.
  • Wie in 57 gezeigt, empfängt der Vorgang (in 5705) Layout-Informationen für einen primären Bereich. In einigen Ausführungsformen ist der primäre Bereich eine Seite, obwohl der primäre Bereich auch ein beliebiger anderer Bereich sein kann. Die Layout-Information von einigen Ausführungsformen ist Information, die von Vorgängen, wie die Vorgänge 4000 und 4200, die oben in Abschnitt IV beschrieben wurden, ausgegeben wird. Diese Information enthält die Identifizierung von Absätzen, Spalten und Layouts im primären Bereich.
  • Der Vorgang 5700 bestimmt dann (in 5707), ob es unbearbeitete Layouts im primären Bereich gibt, Wenn es keine Layouts im primären Bereich gibt oder alle Layouts bearbeitet wurden, fährt der Vorgang zu 5740, der unten beschrieben wird, fort. Sonst wählt der Vorgang (in 5710) ein Layout innerhalb des primären Bereichs aus. Der Vorgang definiert dann (in 5715) implizierte Bereichsgrenzen an den senkrechten geradlinigen Grenzen des Layouts. In einigen Ausführungsformen sind die senkrechten geradlinigen Grenzen das kleinste Rechteck, das alle Absätze im Layout vollständig einschließt. Der Vorgang definiert auch (in 5720) implizierte Bereichsgrenzen im vertikalen unbeschriebenen Raum, der Spalten des Layouts teilt, und im horizontalen unbeschriebenen Raum, der Absätze des Layouts innerhalb einer Spalte teilt.
  • 58 zeigt eine Seite 5800. Die Seite enthält drei kleinere Bereiche: Den Bereich 5805 in der oberen linken Ecke, den Bereich 5810, der mit grauen Schatten versehen ist, in der Mitte, und den Bereich 5815 nach unten. Die Bereiche 5810 und 5815 sind Inseln in einigen Ausführungsformen. Der primäre Bereich (Seite 5800) enthält zwei Layouts 5820 und 5825. Wie in 59 beschrieben, definiert der Vorgang, nachdem er das Layout 5820 ausgewählt hat, implizierte Grenzen 59055925 um den Grenzkasten des Layouts 5820 und zwischen den drei Spalten des Layouts 5820. Die untere Grenze des Layouts braucht keine implizierte Grenze in einigen Ausführungsformen, da das Layout durch den oberen Teil des Bereichs 5810 abgegrenzt ist. Ähnliche implizierte Grenzen 59855997 werden für das Layout 5825 definiert.
  • Anschließend bestimmt der Vorgang 5700 (in 5725), ob es eine horizontale Grenze (z. B. eine implizierte Grenze) im Layout gibt, die, wenn sie nach außen erweitert wird, den Grenzkasten eines Absatzes in einer anderen Spalte kreuzt. Dieser Test der horizontalen Konsistenz ermöglicht es, dass das Layout eigentlich eine tabellarische Struktur aufweist, im Gegensatz zu einem typischen Satz von Absätzen, welche in Spalten aufgeteilt sind. Wenn das Layout den Test der horizontalen Konsistenz nicht besteht, fährt der Vorgang zu 5707 fort, der oben beschrieben wird. Sonst, wenn das Layout den Test der horizontalen Konsistenz besteht, fügt der Vorgang (in 5730) das Layout zu einem Satz S hinzu, der potentielle Layouts beobachtet, welche eine Tabelle oder ein Teil einer Tabelle sein könnten. Der Vorgang fährt dann zu 5707 fort.
  • Nachdem der Vorgang (in 5707) bestimmt hat, dass der primäre Bereich keine weiteren Layouts enthält, bestimmt der Vorgang (in 5740), ob es unbearbeitete Bereiche innerhalb des primären Bereichs gibt. Wenn der primäre Bereich keinen anderen Bereich enthält, oder alle Bereiche bearbeitet wurden, ist der Vorgang fertig mit dem Definieren von implizierten Grenzen und fährt zu 5775 fort, der unten beschrieben wird.
  • Sonst, wenn es mindestens einen unbearbeiteten Bereich im primären Bereich gibt, wählt der Vorgang (in 5745) einen der kleineren Bereiche aus. Der Vorgang bestimmt dann (in 5750), ob der kleinere Bereich eine Insel mit nur einem Layout ist. Auf der Seite 5800 sind die Bereiche 5810 und 5815 Inseln mit nur einem Layout, während der Bereich 5805 nur ein Layout enthält, jedoch keine Insel ist, da seine Grenzen Seitengrenzen enthalten.
  • Wenn der ausgewählte Bereich keine Insel mit nur einem Layout ist, fährt der Vorgang 5700 zu 5740 fort, der oben beschrieben wird. Sonst, wenn der ausgewählte Bereich eine Insel mit nur einem Layout ist, definiert der Vorgang (in 5755) implizierte Bereichsgrenzen im vertikalen unbeschriebenen Raum, der Spalten des Layouts teilt, und im horizontalen unbeschriebenen Bereich, der Absätze des Layouts innerhalb einer Spalte teilt. 59 zeigt implizierte Bereichsgrenzen 5971 und 5972, die zwischen den Spalten des Bereichs 5810 definiert sind.
  • Der Vorgang bestimmt dann (in 5760), ob es eine horizontale Grenze (z.B. eine implizierte Grenze) im Layout gibt, die, wenn sie nach außen erweitert wird, den Grenzkasten eines Absatzes in einer anderen Spalte kreuzt. Dieser Test der horizontalen Konsistenz ermöglicht es, dass das Layout eigentlich eine tabellarische Struktur aufweist, im Gegensatz zu nur einem typischen Satz von Absätzen, die in Spalten aufgeteilt sind. Wenn das Layout den Test der horizontalen Konsistenz nicht besteht, fährt der Vorgang zu 5740 fort, der oben beschrieben wird. Sonst, wenn das Layout den Test der horizontalen Konsistenz besteht, fügt der Vorgang (in 5765) das Layout zu einem Satz S hinzu, der potentielle Layouts beobachtet, welche eine Tabelle oder ein Teil einer Tabelle sein könnten, und fährt dann zu 5740 fort.
  • Die Seite 5800 enthält den Bereich 5815, der in einigen Ausführungsformen eine Insel mit nur einem Layout ist. 59 zeigt die implizierten Grenzen 59305980, die für den Bereich 5815 definiert sind. Jedoch besteht dieses Layout den Test der horizontalen Konsistenz nicht, da die horizontalen Grenzen 59455980 alle den Grenzkasten anderer Absätze im Layout kreuzen würden, wenn sie nach außen erweitert würden. Infolgedessen wird das Layout des Bereichs 5815 zum Satz S für die Seite 5800 nicht hinzugefügt, und die implizierten Grenzen 59305980 werden nicht beibehalten.
  • Wenn alle Bereiche eingeschätzt wurden, wendet der Vorgang (in 5775) eine Bereichsanalyse unter Verwendung der implizierten Bereichsgrenzen von den Layouts des Satzes S sowie jeder Bereichsgrenzengrafik, die diese implizierten Bereichsgrenzen kreuzt, an. Einige Ausführungsformen verwenden die oben in Abschnitt II beschriebenen Vorgänge um Bereichsgrenzenintervalle, Kreuzungen und Bereichsgrenzen zu identifizieren.
  • Der Vorgang 5700 identifiziert dann (in 5780) potentielle Tabellen unter den Layouts des Satzes S. Einige Ausführungsformen verwenden den Vorgang 5300, der oben in Unterabschnitt A beschrieben wurde, um potentielle Tabellen zu identifizieren (und ihre Struktur zu rekonstruieren). Der Vorgang eliminiert zunächst (in 5785) potentielle Tabellen, die es nicht schaffen, spezifische Tabellenbedingungen zu erfüllen. Der Vorgang wird dann beendet. Einige Ausführungsformen erzwingen zusätzliche Bedingungen auf die potentiellen Tabellen, um sicherzustellen, dass es einen starken Nachweis zur Identifizierung einer Tabelle gibt, wenn die Grenzengrafiken allein nicht ausreichend sind. Einige Ausführungsformen erfordern beispielsweise, dass alle Zellen genau eine Reihe und eine Spalte spannen, oder, dass die Höhe der Zelle und ihre Breite klein im Vergleich zu den Abmessungen der Seite sind, oder dass die Dicke jeder Grenze klein im Vergleich zu den Abmessungen der Tabelle ist. Einige Ausführungsformen erfordern eine, einige oder alle dieser Bedingungen sowie andere Erfordernisse. 60 zeigt, dass der Bereich 5810 und die Layouts 5820 und 5825 in die Tabelle 6000 kombiniert werden, während der Inhalt der Bereiche 5805 und 5815 bleibt wie er ist.
  • Wenn alle Tabellen in einem Teil eines Dokuments identifiziert sind, sind Benutzer, in einigen Ausführungsformen, in der Lage, individuelle Zellen der Tabelle zu editieren, Reihen und Spalten der Tabelle auszuwählen, die Tabelleninformationen auf intelligente Art und Weise in ein Arbeitsblatt zu kopieren, usw. Ferner können der Textfluss, die Leseordnung und die Anzeige in einigen Ausführungsformen durch die Identifizierung von Tabellen und ihrer Rekonstruktion als solche verbessert werden.
  • D. Softwarearchitektur
  • In einigen Ausführungsformen wird die Tabellenidentifzierung, die oben beschrieben wird, als Software implementiert, die auf einer bestimmten Maschine läuft, wie einem Computer, einem Medienwiedergabegerät, einem Mobilfunktelefon (beispielsweise einem iPhone®), oder auf anderen tragbaren Geräten oder Geräten mit begrenzten Ressourcen (oder in einem computerlesbaren Medium gespeichert). 61 zeigt konzeptionell die Softwarearchitektur einer Anwendung zur Tabellenidentifizierung 6100 einiger Ausführungsformen zur Identifizierung von Tabellen in einem Dokument. In einigen Ausführungsformen ist die Anwendung eine selbstständige Anwendung oder wird in eine andere Anwendung (z. B. eine Anwendung zur Dokumentenrekonstruktion) integriert, während, in anderen Ausführungsformen, die Anwendung innerhalb eines Betriebssystems implementiert werden könnte.
  • Die Anwendung zur Tabellenidentifizierung 6100 enthält ein Modul zur Bereichsanalyse 6105, ein Modul zur Tabellenidentifizierung 6110, ein Modul zur Bereichsgrenzenverbindung 6115, ein Modul zur Definition einer implizierten Grenze 6120, und ein Modul zur Layoutanalyse 6125.
  • Die 61 zeigt auch den Dokumentinhalt 6130. Das Modul zur Bereichsanalyse 6105 empfängt Informationen (z. B. Information über Grafiken) von einem Dokumentinhalt 6130. In einigen Ausführungsformen ist das Modul zur Bereichsanalyse 6105 dasselbe wie das Modul zur Bereichsanalyse 1700 von 17. Das Modul zur Bereichsanalyse gibt Bereichsinformationen an das Modul zur Bereichsgrenzenverbindung 6115 und das Modul zur Tabellenidentifizierung 6110 aus.
  • Das Modul zur Tabellenidentifizierung 6110 empfängt Bereichsinformationen vom Modul zur Bereichsanalyse 6105 und in einigen Fällen sind es die endgültigen Bereiche eines Dokuments, während, in anderen Fällen, die Bereichsinformationen Bereiche sind, welche implizierte Grenzen für den spezifischen Zweck der Tabellenidentifizierung enthalten. Das Modul zur Tabellenidentifizierung 6110 identifiziert Tabellen basierend auf den empfangenen Bereichsinformationen und gibt diese Informationen an den Dokumentinhalt 6145 weiter. In einigen Ausführungsformen führt das Modul zur Tabellenidentifizierung 6110 einen Teil oder das Ganze vom Vorgang 5300 aus.
  • Das Modul zur Bereichsgrenzenverbindung 6115 empfängt Bereichsgrenzeninformationen vom Modul zur Bereichsanalyse 6105 und definiert verbundene Sätze von Bereichsgrenzen basierend auf dieser Information. Die verbundenen Sätze werden an das Modul zur Definition einer implizierten Grenze 6120 weitergegeben. In einigen Ausführungsformen führt das Modul zur Bereichsgrenzenverbindung 6115 einen Teil oder das Ganze vom Vorgang 5500 aus.
  • Das Modul zur Layoutanalyse 6125 empfängt Informationen (z. B. Layoutinformationen) vom Dokumentinhalt 6130. Das Modul zur Layoutanalyse 6125 bestimmt, ob Layouts möglicherweise Teil einer Tabelle sein könnten, und gibt die qualifizierenden Layouts an das Modul zur Definition einer implizierten Grenze 6120 weiter. In einigen Ausführungsformen führt das Modul zur Layoutanalyse 6125 einen Teil oder das Ganze vom Vorgang 5700 aus.
  • Das Modul zur Definition einer implizierten Grenze 6120 empfängt Layoutinformationen vom Modul zur Layoutanalyse 6125 und verbundene Sätze von Bereichsgrenzen vom Modul zur Bereichsgrenzenverbindung 6115. Das Modul zur Definition einer implizierten Grenze 6120 definiert implizierte Grenzen für eine Seite eines Dokuments basierend auf den Informationen, die es empfängt, und gibt diese Informationen an das Modul zur Bereichsanalyse 6105 weiter.
  • In einigen Ausführungsformen werden die Ergebnisse der Vorgänge, die durch die oben beschriebenen Module oder andere Module ausgeführt werden, in einem elektronischen Speicher abgespeichert (z. B. als Teil eines Dokumentobjektmodells). Das Dokumentobjektmodell kann dann zur Anzeige des Dokuments auf einem elektronischen Anzeigegerät (z. B. einem tragbaren Gerät, einer Computerbildschirm usw.) verwendet werden, so dass ein Benutzer das Dokument ansehen und/oder mit ihm interagieren kann (z. B. über einen Berührungsbildschirm, ein Cursorsteuergerät usw.).
  • Nachdem die vertikalen Grenzenintervalle in der Ordnung sortiert wurden, wählt der Vorgang (in 5350) die erste uneingeschätzte vertikale Grenze aus und definiert (in 5355) die nächste vertikale Gitterlinie der Tabelle. Im Beispiel der 54 ist einer der Grenzenintervalle 54265428 die erste ausgewählte Grenze, an welchem Punkt die vertikale Gitterlinie 1 definiert ist.
  • Der Prozess weist dann (in 5360) die ausgewählte Grenze der aktuellen Gitterlinie zu und setzt die horizontale Spanne der Gitterlinie zur Kreuzung der x-Intervalle aller Grenzen, die der Gitterlinie zugewiesen sind. Infolgedessen, wenn die aktuell ausgewählte Grenze die erste der aktuellen Gitterlinie zuzuweisende Grenze ist, ist das x-Intervall einfach das x-Intervall der Grenze. Wenn jedoch mehrere Grenzen der Gitterlinie zugewiesen werden, enthält das x-Intervall der Gitterlinie die x-Intervalle aller zugewiesenen Grenzen.
  • Der Vorgang bestimmt dann (in 5365), ob es noch vertikale Grenzen gibt, die der Gitterlinie nicht zugewiesen wurden. Wenn es keine übrigen Grenzen mehr gibt, fährt der Vorgang zu 5375 fort, der unten beschrieben wird. Sonst, wenn es noch übrige Grenzen gibt, bestimmt der Vorgang (in 5370), ob das x-Intervall der nächsten Grenze das x-Intervall der aktuellen Gitterlinie überlappt. Wenn die x-Intervalle sich nicht überlappen, wurden alle Grenzen in der aktuellen Gitterlinie definiert und der Vorgang fährt zu 5350 fort, um die nächste Grenze auszuwählen und eine neue Gitterlinie anzufangen. Sonst, wenn die x-Intervalle sich überlappen, fährt der Vorgang zu 5360 fort, um die Grenze der aktuellen Gitterlinie zuzuweisen, das x-Intervall der Gitterlinie zu aktualisieren, und zur nächsten Grenze fortzufahren.
  • Nachdem eine der Grenzen 54255428 als die erste Grenze für die Insel 5401 ausgewählt wurde, wird eine der anderen drei Grenzen ausgewählt und der vertikalen Gitterlinie 1 hinzugefügt. Wenn alle vier von diesen Grenzen der vertikalen Gitterlinie 1 hinzugefügt wurden, wird die vertikale Gitterlinie 2 als nächste definiert, umfassend die Grenzen 54295433, und so weiter bis zur vertikalen Gitterlinie 4 (Grenzen 54385442).
  • Wenn alle vertikalen Grenzen eingeschätzt wurden, wurden alle Gitterlinien für die Tabellen definiert. Ein Fachmann würde erkennen, dass, während der Vorgang 5300 horizontale Gitterlinien vor den vertikalen Gitterlinien definiert, einige Ausführungsformen vertikale Gitterlinien zuerst definieren.
  • Der Vorgang weist dann (in 5375) Reihen und Spaltennummern den Zellen der Tabelle zu. Jeder der Bereiche, der die Insel partitioniert, ist eine Zelle in einigen Ausführungsformen. In einigen Ausführungsformen umspannt eine Zelle die Reihen von der Gitterlinie ihrer oberen Grenze zu einem weniger als die Gitterlinie ihrer unteren Grenze. Beispielsweise umspannt eine Zelle 5450 in 54 die Reihen 1 und 2, da ihre obere Grenze ein Teil einer horizontalen Gitterlinie 1 ist und ihre untere Grenze ein Teil einer horizontalen Gitterlinie 3 ist. Auf ähnliche Weise, in einigen Ausführungsformen, umspannt eine Zelle die Reihen von der Gitterlinie ihrer linken Grenze zu einem weniger als die Gitterlinie ihrer rechten Grenze. Beispielsweise umspannt die Zelle 5450 die Spalte 1, da ihre linke Grenze Teil der vertikalen Gitterlinie 1 ist und ihre rechte Grenze Teil der vertikalen Gitterlinie 2 ist.
  • Wenn die Struktur der Tabelle (d. h., die Gitterlinien, Zellen, Reihen und Spalten) rekonstruiert wurde, bestimmt der Vorgang (in 5380) Stilinformationen für die Tabelle. Der Vorgang fährt dann zu 5311, der oben beschrieben wurde, fort, um zu bestimmen, ob es noch identifizierte Inseln gibt, die als Tabellen zu bearbeiten sind. In einigen Ausführungsformen kommt die Tabellenstilinformation von den Grenzengrafiken, die die Bereichsgrenzen bilden, sowie von Hintergrundgrafiken. Beispielsweise, wenn es mehrere Hintergrundformen gibt, die eine bestimmte Zelle abdecken oder kreuzen, bestimmen einige Ausführungsformen die resultierende Form, Farbe oder Bildwiedergabe durch Zusammensetzen der verschiedenen Hintergrundformen, und Abschneiden zur Grenze der Gitterlinie wenn notwendig. Auf ähnliche Weise bestimmen einige Ausführungsformen die Farben der Zellengrenze basierend auf einem gewichteten Mittelwert von Formfarben, die durchzeigen. Die Gewichte im gewichteten Mittelwert basieren auf dem Betrag des Bereichs, der sich für jede Farbe in einigen Ausführungsformen zeigt. Einige Ausführungsformen erkennen auch Grenzenstile, wie Schatten oder Extrusionen.
  • In einigen Ausführungsformen ermöglichen das identifizieren einer Tabelle und Bestimmen der Struktur der Tabelle, dass die Tabelle verwendet wird, als ob sie durch einen üblichen Wortprozessor statt durch einen Satz unbezogener Grafiken erzeugt würde. In einigen Ausführungsformen können beispielsweise Benutzer die Zellen der Tabelle individuell editieren, die Information zu einem Arbeitsblatt exportieren, die Tabellendaten sortieren usw.
  • Einige Ausführungsformen verwenden nur den Vorgang 5300, um Tabellen zu identifizieren. Dadurch werden jedoch nur Tabellen mit einen vollständigen Satz von Grenzen identifiziert. Andere Ausführungsformen verwenden Vorgänge, die in den Unterabschnitten B und C unten beschrieben sind, um Tabellen zu identifizieren, welche keine vollständigen Grenzengrafiken aufweisen, aber sonst die Struktur und das Layout einer Tabelle aufweisen.
  • B. Tabellen mit verbundenen Grenzen
  • Zusätzlich zu den Tabellen, die einen vollständigen Satz von Grenzen aufweisen, identifizieren einige Ausführungsformen Tabellen, die einen unvollständigen, aber verbundenen Satz von Grenzen aufweisen. 50 zeigt eine solche Tabelle 5000. Einige Ausführungsformen verwenden Vorgänge, um implizierte Grenzen zu definieren, die bezweckte Tabellengrenzen sein könnten, wenden dann einen Vorgang wie den oben beschriebenen an, um die aktuelle Tabelle zu identifizieren und rekonstruieren.
  • 55 zeigt konzeptionell einen Vorgang 5500 von einigen Ausführungsformen zum Identifizieren und Rekonstruieren von Tabellen, die einen verbundenen Satz von Grenzen aufweisen. Der Vorgang 5500 wird im Bezug auf 56 beschrieben werden. 56 zeigt eine Sequenz des Identifizierens einer Tabelle mit verbundenen aber unvollständigen Grenzen auf einer Seite 5600.
  • Wie in 55 gezeigt, empfängt der Vorgang 5500 (in 5505) einen Satz von potentiellen Bereichsgrenzen und Grenzenkreuzungen für einen Teil eines Dokuments. In einigen Ausführungsformen werden die potentiellen Bereichsgrenzen und Kreuzungen durch den Vorgang 900, wie oben in Abschnitt II beschrieben, bestimmt. Andere Ausführungsformen verwenden andere Vorgänge, um die potentiellen Bereichsgrenzen für einen Teil eines Dokuments zu bestimmen. Der Teil des Dokuments in einigen Ausführungsformen ist das ganze Dokument, ein Abschnitt des Dokuments oder eine Seite des Dokuments.
  • Anschließend definiert der Vorgang 5500 (in 5510) einen Satz U, der alle potentiellen Bereichsgrenzen, die in 5505 empfangen wurden, enthält. Der Vorgang bestimmt dann (in 5515), ob U leer ist. Wenn der Satz leer ist, wird der Vorgang beendet, da es keine Bereichsgrenzen gibt, welche verbunden werden könnten.
  • Sonst, wenn der Satz U mindestens eine Bereichsgrenze enthält, wählt der Vorgang (in 5520) eine Grenze b von U aus und definiert einen neuen verbundenen Satz C. Einige Ausführungsformen fangen mit der Grenze, die am obersten, ganz links oder am nächsten zur oberen linken Ecke liegt, an oder verwenden eine andere Heuristik, um zu bestimmen, welche Grenze zuerst ausgewählt werden soll. Andere Ausführungsformen wählen die Grenze b zufällig aus. Die ausgewählte Grenze b wird dann aus dem Satz U entfernt (in 5525) und zum Satz C hinzugefügt. Der verbundene Satz C, in einigen Ausführungsformen, ist ein Satz von Grenzen, welche alle über einen Satz von Kreuzungen verbunden sind.
  • Der Vorgang wählt dann (in 5530) eine Grenze z aus dem Satz U aus, welche für die aktuelle Grenze b noch nicht eingeschätzt wurde und bestimmt (in 5535), ob die Grenze z die Grenze b kreuzt. In einigen Ausführungsformen involviert das Bestimmen, ob die Grenze z die Grenze b kreuzt, das Bestimmen, ob eine der empfangenen Kreuzungen die Grenze z zur Grenze b verbindet. Wenn sich die Grenzen nicht kreuzen, fährt der Vorgang zu 5545 fort, der unten beschrieben ist. Sonst, wenn sich die Grenzen kreuzen, fügt der Vorgang (in 5540) die Grenze z zum aktuellen verbundenen Satz C hinzu und setzt z in eine Warteschleife. Einige Ausführungsformen verwenden die Warteschleife, um die Grenzen in einem verbundenen Satz zu beobachten, welche für weitere Verbindungen eingeschätzt werden sollen, bevor zum nächsten verbundenen Satz fortgefahren wird.
  • Anschließend bestimmt der Vorgang (in 5545), ob Grenzen im Satz U zur Kreuzung mit der aktuellen. Grenze b noch nicht eingeschätzt wurden. Wenn noch Grenzen bestehen, fährt der Vorgang zu 5530 fort, um eine andere Grenze z auszuwählen und zu bestimmen, ob die neue Grenze z die aktuelle Grenze z kreuzt.
  • Sonst, wenn alle Grenzen in U zur Kreuzung mit der aktuellen Grenze b eingeschätzt wurden, bestimmt der Vorgang 5500 (in 5550), ob die Warteschleife leer ist. Wenn es zumindest eine Grenze in der Warteschleife gibt, setzt der Vorgang (in 5555) die nächste Grenze in der Warteschleife als die nächste ausgewählte Grenze b. Der Vorgang fährt dann zu 5525 fort, um einzuschätzen, ob die in U bestehenden Grenzen die neu ausgewählte Grenze b kreuzen.
  • Sonst, wenn die Warteschleife leer ist, wurden alle Elemente des aktuellen verbundenen Satzes C zugewiesen und der Vorgang bestimmt (bei 5560), ob der Satz U leer ist. Wenn U nicht leer ist, fährt dann der Vorgang zu 5520 fort, um eine neue Grenze b auszuwählen und einen neuen verbundenen Satz C zu definieren.
  • Wenn U leer ist, dann wurden alle Grenzen bearbeitet und in ihre jeweiligen verbundenen Sätze gesetzt. 56 zeigt eine Seite 5600 mit sieben Grenzen 56055635. Durch Anwendung dieses Vorgangs 5500 werden die sieben Grenzen den drei verbundenen Sätzen 5640 (umfassend die Grenze 5605), 5645 (umfassend die Grenzen 5610 und 5615) und 5650 (umfassend die Grenzen 56205635) zugewiesen. Jeder dieser verbundenen Sätze enthält Grenzen, welche mindestens eine andere Grenze im verbundenen Satz kreuzen und keine Grenzen außerhalb des verbundenen Satzes kreuzen.
  • Wenn alle verbundenen Sätze identifiziert wurden, da der Satz U leer ist, wählt der Vorgang (in 5565) einen Satz C aus und fügt (in 5570) die vier Grenzen, die den rechteckigen Grenzkasten von C bilden, zum Satz C hinzu. Der rechteckige Grenzkasten ist, in einigen Ausführungsformen, das kleinste senkrechte Rechteck, das alle Grenzen im verbundenen Satz enthält. 56 zeigt beispielsweise die vier Grenzen 56555670, die den rechteckigen Grenzkasten des verbundenen Satzes 5650 bilden. Der verbundene Satz 5640 ist eine einfache Zeile, so dass sein rechteckiger Grenzkasten nur die äußeren Kanten der Zeile ist. Zwei der vier Grenzen, die den rechteckigen Grenzkasten des verbundenen Satzes 5645 bilden, sind die Grenzen 5610 und 5615, während die zusätzlichen Grenzen 5675 und 5680 durch den Vorgang 5570 in einigen Ausführungsformen hinzugefügt werden.
  • Der Vorgang bestimmt dann (in 5575), ob verbundene Sätze C bestehen. Wenn mindestens ein Satz besteht, fährt der Vorgang zu 5565 fort, um einen anderen Satz C auszuwählen. Wenn alle Sätze eingeschätzt wurden, identifiziert der Vorgang (in 5580) Bereiche unter Verwendung aller Grenzen von allen verbundenen Sätzen. Einige Ausführungsformen wenden den Vorgang 1200 (oben in Abschnitt II beschrieben) oder einen ähnlichen Vorgang an, um die Bereiche zu identifizieren.
  • Wenn die Bereiche identifiziert wurden, identifiziert der Vorgang 5500 (in 5585) Tabellen aus den Bereichen und rekonstruiert die Tabellen. Der Vorgang wird dann beendet. Einige Ausführungsformen wenden den Vorgang 5300, wie oben in Unterabschnitt A beschrieben, an, um die Tabellen zu rekonstruieren, wenn die Bereiche mittels der implizierten Grenzen von den rechteckigen Grenzkästen der verbundenen Sätze identifiziert wurden. 56 zeigt, dass eine Tabelle 5685 auf der Seite 5600 identifiziert ist. Die Tabelle weist drei Spalten und drei Reihen auf, mit neun Zellen insgesamt.
  • Einige Ausführungsformen entfernen dann die Tabelle und die Zellbereiche (und die Grenzengrafiken, die diese Bereiche bilden) und identifizieren Bereiche ohne implizierte Grenzen erneut, so dass keine Bereiche definiert werden, wo es keine geben sollte. Einige Ausführungsformen fügen dann die Tabelle und Zellenbereiche erneut hinzu, um den Bereichsgraph zu bestimmen, wie oben in Abschnitt II beschrieben. Einige Ausführungsformen erzeugen einen Vollbereichs-Graphen, der die Identifizierung der Tabelle und Zellenbereiche und ihrer Struktur enthält.
  • C. Tabellen ohne Grenzen oder mit unterbrochenen Grenzen
  • Zusätzlich zu Tabellen, die einen vollständigen oder zumindest einen verbundenen Satz von Grenzen aufweisen, identifizieren einige Ausführungsformen Tabellen, welche entweder keine Grenzen oder unterbrochene Grenzen aufweisen. 51 zeigt eine Tabelle 5100 ohne Grenzen, während 52 eine Tabelle 5200 mit unterbrochenen Grenzen zeigt. Einige Ausführungsformen verwenden Vorgänge, um implizierte Grenzen zu definieren, welche bezweckte Tabellengrenzen sein könnten, wenden dann einen Vorgang, wie den Vorgang, 5300 an, um die eigentliche Tabelle zu identifizieren und zu rekonstruieren. Für Tabellen, deren Grenzen keinen verbundenen Satz bilden, erfordern einige Ausführungsformen die Verwendung von Layout-Informationen, um die Tabellen zusätzlich zu Bereichsinformationen zu identifizieren.
  • 57 zeigt konzeptionell einen Vorgang 5700 zur Identifizierung und Rekonstruktion von Tabellen ohne Grenzen oder mit unterbrochenen Grenzen.
  • Der Vorgang 5700 wird im Bezug auf die 5860 beschrieben werden. Die 5860 zeigen die Anwendung des Vorgangs 5700 auf eine Seite 5800 zur Identifizierung einer Tabelle, die unterbrochene Grenzen aufweist. Wie in 57 gezeigt, empfängt der Vorgang (in 5705) Layout-Informationen für einen primären Bereich. In einigen Ausführungsformen ist der primäre Bereich eine Seite, obwohl der primäre Bereich auch ein beliebiger anderer Bereich sein kann. Die Layout-Information von einigen Ausführungsformen ist Information, die von Vorgängen, wie die Vorgänge 4000 und 4200, die oben in Abschnitt N beschrieben wurden, ausgegeben wird. Diese Information enthält die Identifizierung von Absätzen, Spalten und Layouts im primären Bereich.
  • Der Vorgang 5700 bestimmt dann (in 5707), ob es unbearbeitete Layouts im primären Bereich gibt, Wenn es keine Layouts im primären Bereich gibt oder alle Layouts bearbeitet wurden, fährt der Vorgang zu 5740, der unten beschrieben wird, fort. Sonst wählt der Vorgang (in 5710) ein Layout innerhalb des primären Bereichs aus. Der Vorgang definiert dann (in 5715) implizierte Bereichsgrenzen an den senkrechten geradlinigen Grenzen des Layouts. In einigen Ausführungsformen sind die senkrechten geradlinigen Grenzen das kleinste Rechteck, das alle Absätze im Layout vollständig einschließt. Der Vorgang definiert auch (in 5720) implizierte Bereichsgrenzen im vertikalen unbeschriebenen Raum, der Spalten des Layouts teilt, und im horizontalen unbeschriebenen Raum, der Absätze des Layouts innerhalb einer Spalte teilt.
  • 58 zeigt eine Seite 5800. Die Seite enthält drei kleinere Bereiche: Den Bereich 5805 in der oberen linken Ecke, den Bereich 5810, der mit grauen Schatten versehen ist, in der Mitte, und den Bereich 5815 nach unten. Die Bereiche 5810 und 5815 sind Inseln in einigen Ausführungsformen. Der primäre Bereich (Seite 5800) enthält zwei Layouts 5820 und 5825. Wie in 59 beschrieben, definiert der Vorgang, nachdem er das Layout 5820 ausgewählt hat, implizierte Grenzen 59055925 um den Grenzkasten des Layouts 5820 und zwischen den drei Spalten des Layouts 5820. Die untere Grenze des Layouts braucht keine implizierte Grenze in einigen Ausführungsformen, da das Layout durch den oberen Teil des Bereichs 5810 abgegrenzt ist. Ähnliche implizierte Grenzen 59855997 werden für das Layout 5825 definiert.
  • Anschließend bestimmt der Vorgang 5700 (in 5725), ob es eine horizontale Grenze (z. B. eine implizierte Grenze) im Layout gibt, die, wenn sie nach außen erweitert wird, den Grenzkasten eines Absatzes in einer anderen Spalte kreuzt. Dieser Test der horizontalen Konsistenz ermöglicht es, dass das Layout eigentlich eine tabellarische Struktur aufweist, im Gegensatz zu einem typischen Satz von Absätzen, welche in Spalten aufgeteilt sind. Wenn das Layout den Test der horizontalen Konsistenz nicht besteht, fährt der Vorgang zu 5707 fort, der oben beschrieben wird. Sonst, wenn das Layout den Test der horizontalen Konsistenz besteht, fügt der Vorgang (in 5730) das Layout zu einem Satz S hinzu, der potentielle Layouts beobachtet, welche eine Tabelle oder ein Teil einer Tabelle sein könnten. Der Vorgang fährt dann zu 5707 fort.
  • Nachdem der Vorgang (in 5707) bestimmt hat, dass der primäre Bereich keine weiteren Layouts enthält, bestimmt der Vorgang (in 5740), ob es unbearbeitete Bereiche innerhalb des primären Bereichs gibt. Wenn der primäre Bereich keinen anderen Bereich enthält, oder alle Bereiche bearbeitet wurden, ist der Vorgang fertig mit dem Definieren von implizierten Grenzen und fährt zu 5775 fort, der unten beschrieben wird.
  • Sonst, wenn es mindestens einen unbearbeiteten Bereich im primären Bereich gibt, wählt der Vorgang (in 5745) einen der kleineren Bereiche aus. Der Vorgang bestimmt dann (in 5750), ob der kleinere Bereich eine Insel mit nur einem Layout ist. Auf der Seite 5800 sind die Bereiche 5810 und 5815 Inseln mit nur einem Layout, während der Bereich 5805 nur ein Layout enthält, jedoch keine Insel ist, da seine Grenzen Seitengrenzen enthalten.
  • Wenn der ausgewählte Bereich keine Insel mit nur einem Layout ist, fährt der Vorgang 5700 zu 5740 fort, der oben beschrieben wird. Sonst, wenn der ausgewählte Bereich eine Insel mit nur einem Layout ist, definiert der Vorgang (in 5755) implizierte Bereichsgrenzen im vertikalen unbeschriebenen Raum, der Spalten des Layouts teilt, und im horizontalen unbeschriebenen Bereich, der Absätze des Layouts innerhalb einer Spalte teilt. 59 zeigt implizierte Bereichsgrenzen 5971 und 5972, die zwischen den Spalten des Bereichs 5810 definiert sind.
  • Der Vorgang bestimmt dann (in 5760), ob es eine horizontale Grenze (z. B. eine implizierte Grenze) im Layout gibt, die, wenn sie nach außen erweitert wird, den Grenzkasten eines Absatzes in einer anderen Spalte kreuzt. Dieser Test der horizontalen Konsistenz ermöglicht es, dass das Layout eigentlich eine tabellarische Struktur aufweist, im Gegensatz zu nur einem typischen Satz von Absätzen, die in Spalten aufgeteilt sind. Wenn das Layout den Test der horizontalen Konsistenz nicht besteht, fährt der Vorgang zu 5740 fort, der oben beschrieben wird. Sonst, wenn das Layout den Test der horizontalen Konsistenz besteht, fügt der Vorgang (in 5765) das Layout zu einem Satz S hinzu, der potentielle Layouts beobachtet, welche eine Tabelle oder ein Teil einer Tabelle sein könnten, und fährt dann zu 5740 fort.
  • Die Seite 5800 enthält den Bereich 5815, der in einigen Ausführungsformen eine Insel mit nur einem Layout ist. 59 zeigt die implizierten Grenzen 59305980, die für den Bereich 5815 definiert sind. Jedoch besteht dieses Layout den Test der horizontalen Konsistenz nicht, da die horizontalen Grenzen 59455980 alle den Grenzkasten anderer Absätze im Layout kreuzen würden, wenn sie nach außen erweitert würden. Infolgedessen wird das Layout des Bereichs 5815 zum Satz S für die Seite 5800 nicht hinzugefügt, und die implizierten Grenzen 59305980 werden nicht beibehalten.
  • Wenn alle Bereiche eingeschätzt wurden, wendet der Vorgang (in 5775) eine Bereichsanalyse unter Verwendung der implizierten Bereichsgrenzen von den Layouts des Satzes S sowie jeder Bereichsgrenzengrafik, die diese implizierten Bereichsgrenzen kreuzt, an. Einige Ausführungsformen verwenden die oben in Abschnitt II beschriebenen Vorgänge um Bereichsgrenzenintervalle, Kreuzungen und Bereichsgrenzen zu identifizieren.
  • Der Vorgang 5700 identifiziert dann (in 5780) potentielle Tabellen unter den Layouts des Satzes S. Einige Ausführungsformen verwenden den Vorgang 5300, der oben in Unterabschnitt A beschrieben wurde, um potentielle Tabellen zu identifizieren (und ihre Struktur zu rekonstruieren). Der Vorgang eliminiert zunächst (in 5785) potentielle Tabellen, die es nicht schaffen, spezifische Tabellenbedingungen zu erfüllen. Der Vorgang wird dann beendet. Einige Ausführungsformen erzwingen zusätzliche Bedingungen auf die potentiellen Tabellen, um sicherzustellen, dass es einen starken Nachweis zur Identifizierung einer Tabelle gibt, wenn die Grenzengrafiken allein nicht ausreichend sind.
  • Einige Ausführungsformen erfordern beispielsweise, dass alle Zellen genau eine Reihe und eine Spalte spannen, oder, dass die Höhe der Zelle und ihre Breite klein im Vergleich zu den Abmessungen der Seite sind, oder dass die Dicke jeder Grenze klein im Vergleich zu den Abmessungen der Tabelle ist. Einige Ausführungsformen erfordern eine, einige oder alle dieser Bedingungen sowie andere Erfordernisse. 60 zeigt, dass der Bereich 5810 und die Layouts 5820 und 5825 in die Tabelle 6000 kombiniert werden, während der Inhalt der Bereiche 5805 und 5815 bleibt wie er ist.
  • Wenn alle Tabellen in einem Teil eines Dokuments identifiziert sind, sind Benutzer, in einigen Ausführungsformen, in der Lage, individuelle Zellen der Tabelle zu editieren, Reihen und Spalten der Tabelle auszuwählen, die Tabelleninformationen auf intelligente Art und Weise in ein Arbeitsblatt zu kopieren, usw. Ferner können der Textfluss, die Leseordnung und die Anzeige in einigen Ausführungsformen durch die Identifizierung von Tabellen und ihrer Rekonstruktion als solche verbessert werden.
  • D. Softwarearchitektur
  • In einigen Ausführungsformen wird die Tabellenidentifzierung, die oben beschrieben wird, als Software implementiert, die auf einer bestimmten Maschine läuft, wie einem Computer, einem Medienwiedergabegerät, einem Mobilfunktelefon (beispielsweise einem iPhone®), oder auf anderen tragbaren Geräten oder Geräten mit begrenzten Ressourcen (oder in einem computerlesbaren Medium gespeichert). 61 zeigt konzeptionell die Softwarearchitektur einer Anwendung zur Tabellenidentifizierung 6100 einiger Ausführungsformen zur Identifizierung von Tabellen in einem Dokument. In einigen Ausführungsformen ist die Anwendung eine selbstständige Anwendung oder wird in eine andere Anwendung (z. B. eine Anwendung zur Dokumentenrekonstruktion) integriert, während, in anderen Ausführungsformen, die Anwendung innerhalb eines Betriebssystems implementiert werden könnte.
  • Die Anwendung zur Tabellenidentifizierung 6100 enthält ein Modul zur Bereichsanalyse 6105, ein Modul zur Tabellenidentifizierung 6110, ein Modul zur Bereichsgrenzenverbindung 6115, ein Modul zur Definition einer implizierten Grenze 6120, und ein Modul zur Layoutanalyse 6125.
  • Die 61 zeigt auch den Dokumentinhalt 6130. Das Modul zur Bereichsanalyse 6105 empfängt Informationen (z. B. Information über Grafiken) von einem Dokumentinhalt 6130. In einigen Ausführungsformen ist das Modul zur Bereichsanalyse 6105 dasselbe wie das Modul zur Bereichsanalyse 1700 von 17. Das Modul zur Bereichsanalyse gibt Bereichsinformationen an das Modul zur Bereichsgrenzenverbindung 6115 und das Modul zur Tabellenidentifizierung 6110 aus.
  • Das Modul zur Tabellenidentifizierung 6110 empfängt Bereichsinformationen vom Modul zur Bereichsanalyse 6105 und in einigen Fällen sind es die endgültigen Bereiche eines Dokuments, während, in anderen Fällen, die Bereichsinformationen Bereiche sind, welche implizierte Grenzen für den spezifischen Zweck der Tabellenidentifizierung enthalten. Das Modul zur Tabellenidentifizierung 6110 identifiziert Tabellen basierend auf den empfangenen Bereichsinformationen und gibt diese Informationen an den Dokumentinhalt 6145 weiter. In einigen Ausführungsformen führt das Modul zur Tabellenidentifizierung 6110 einen Teil oder das Ganze vom Vorgang 5300 aus.
  • Das Modul zur Bereichsgrenzenverbindung 6115 empfängt Bereichsgrenzeninformationen vom Modul zur Bereichsanalyse 6105 und definiert verbundene Sätze von Bereichsgrenzen basierend auf dieser Information. Die verbundenen Sätze werden an das Modul zur Definition einer implizierten Grenze 6120 weitergegeben. In einigen Ausführungsformen führt das Modul zur Bereichsgrenzenverbindung 6115 einen Teil oder das Ganze vom Vorgang 5500 aus, Das Modul zur Layoutanalyse 6125 empfängt Informationen (z. B. Layoutinformationen) vom Dokumentinhalt 6130. Das Modul zur Layoutanalyse 6125 bestimmt, ob Layouts möglicherweise Teil einer Tabelle sein könnten, und gibt die qualifizierenden Layouts an das Modul zur Definition einer implizierten Grenze 6120 weiter. In einigen Ausführungsformen führt das Modul zur Layoutanalyse 6125 einen Teil oder das Ganze vom Vorgang 5700 aus.
  • Das Modul zur Definition einer implizierten Grenze 6120 empfängt Layoutinformationen vom Modul zur Layoutanalyse 6125 und verbundene Sätze von Bereichsgrenzen vom Modul zur Bereichsgrenzenverbindung 6115. Das Modul zur Definition einer implizierten Grenze 6120 definiert implizierte Grenzen für eine Seite eines Dokuments basierend auf den Informationen, die es empfängt, und gibt diese Informationen an das Modul zur Bereichsanalyse 6105 weiter.
  • In einigen Ausführungsformen werden die Ergebnisse der Vorgänge, die durch die oben beschriebenen Module oder andere Module ausgeführt werden, in einem elektronischen Speicher abgespeichert (z. B. als Teil eines Dokumentobjektmodells). Das Dokumentobjektmodell kann dann zur Anzeige des Dokuments auf einem elektronischen Anzeigegerät (z. B. einem tragbaren Gerät, einem Computerbildschirm usw.) verwendet werden, so dass ein Benutzer das Dokument ansehen und/oder mit ihm interagieren kann (z. B. über einen Berührungsbildschirm, ein Cursorsteuergerät usw.).
  • VI. Verbinden von Graphen
  • In einigen Ausführungsformen wird das unstrukturierte Dokument primitive Elemente (z. B. Formen und Bilder) umfassen, welche gedacht sind, als einziges Element behandelt zu werden, jedoch nicht als solches im Dokument definiert sind. Wenn solche primitive Elemente einen kompakten und isolierten Bereich eines Dokumentes besetzen, können sie unter Verwendung einer neuen Gruppierungsanalysetechnik, welche als Grenzengruppierung bezeichnet wird, assoziiert werden. Das Ziel der Grenzengruppierung, in einigen Ausführungsformen, ist es, die Verteilung einer Gruppe zu minimieren, wo die Verteilung basierend auf den Grenzen der Sammlung von primitiven Elementen (z. B. Form) in der Gruppe berechnet wird, während die Anzahl von primitiven Elementen in der Gruppe gleichzeitig maximiert wird. Die Grenzen, in einigen Ausführungsformen, basierend auf den Grenzkästen für eine Form oder eine Sammlung von Formen.
  • Einige Ausführungsformen der Erfindung geben Verfahren zum Identifizieren von Graphen (d. h. Grafikobjekten) eines Gebiets, das verbunden werden sollte, an. Diese verbundenen Graphen können dann als ein Objekt für die Zwecke der weiteren Rekonstruktion behandelt werden. Ferner können sie als ein Objekt behandelt werden, wenn sie angesehen, ausgewählt, gezoomt, kopiert, bewegt, editiert, usw. werden. Einige Ausführungsformen behandeln verbundene Graphen als ein Objekt zur Verwendung in Auswahl-, Anzeige- und Navigationsprozessen, die unten in den Abschnitten VIII und IX beschrieben werden.
  • 62 zeigt konzeptionell einen Vorgang 6200 einiger Ausführungsformen zum Verbinden von individuellen Graphen in verbundene Graphe. Der Vorgang 6200 wird in Bezug auf 63 beschrieben werden. 63 zeigt das Verbinden einiger, jedoch nicht aller, einer Vielzahl von Graphen auf einer Seite 6300. Wie in 62 gezeigt, empfängt der Vorgang 6200 (in 6205) einen Teil eines Dokuments. Der Teil des Dokuments ist ein ganzes Dokument, ein Abschnitt eines Dokuments, eine Seite oder ein Bereich in einigen Ausführungsformen. Einige Ausführungsformen führen den Vorgang zum Verbinden von Graphen für das ganze Dokument gleichzeitig aus, während einige Ausführungsformen den Vorgang auf einer Bereichsbasis oder Seitenbasis ausführen.
  • Der Vorgang identifiziert (in 6210) Graphe im Teil des Dokuments. 63 zeigt eine Seite 6300, die sechs Graphe enthält: einen siebenspitzigen Stern 6305, ein Fünfeck 6310, ein Achteck 6315, ein Kreuz 6320, ein Dreieck 6325 und einen fünfspitzigen Stern 6330.
  • Der Vorgang verwendet dann Gruppierungsanalyse zum Verbinden (in 6215) einiger der identifizierten Graphe. Der Vorgang wird dann beendet. Einige Ausführungsformen verwenden eine Form von Gruppierungsanalyse, welche als Grenzengruppierung bezeichnet wird, die im Detail unten in Bezug auf den Vorgang 6400 beschrieben wird. Einige Ausführungsformen wenden Effizienztechniken an, die unten im Abschnitt X beschrieben werden, um Gruppierungsanalyse auszuführen. Einige Ausführungsformen verbinden nur Graphe, wenn sie nah aneinander sind und nicht allzu viel Platz auf einer Seite oder einem Bereich einnehmen. 63 zeigt, dass der siebenspitzige Stern 6305 und das Fünfeck 6310 in einen einzigen Graph 6335 verbunden sind und das Dreieck 6325 und der fünfspitzige Stern 6330 in einen einzigen Graph 6340 verbunden sind. Da sie auf der Seite 6300 isoliert sind, sind das Achteck 6315 und das Kreuz 6320 weder miteinander noch mit anderen Graphen verbunden.
  • A. Grenzengruppierung
  • 64 zeigt konzeptionell einen Vorgang 6400 einiger Ausführungsformen zum Ausführen von Grenzengruppierung, um Graphe zu identifizieren, welche miteinander verbunden werden sollten und zum Verbinden dieser Graphe. In einigen Ausführungsformen nutzt der Vorgang 6400 den Vorteil eines Speichers und von Bearbeitungseffizienzen, welche unten im Abschnitt X beschrieben werden (z. B. indirekt sortierte Felder, schnelles Partitionieren usw.). Wie gezeigt, empfängt der Vorgang (in 6405) Graphe für einen Teil eines Dokuments. Der Teil eines Dokuments ist ein gesamtes Dokument, ein Abschnitt eines Dokuments, eine Seite oder ein Bereich in einigen Ausführungsformen. Der Vorgang bestimmt dann (in 6407), ob es mindestens zwei Graphe im Teil des Dokuments gibt. Wenn es ein oder keine Graphe gibt, gibt es keinen Grund, Gruppierung auszuführen, um es zu versuchen, Graphe zu verbinden, und daher wird der Vorgang beendet. Sonst sortiert der Vorgang (in 6410) die Graphe basierend auf der Zeichnungsordnung. Die Zeichnungsordnung, in einigen Ausführungsformen, ist die Sequenz mit welcher Objekte auf einer Seite gezeichnet werden. Wenn mehrere Objekte gedacht sind, als einfaches Objekt behandelt zu werden, werden sie oft in Sequenz gezeichnet. Einige Ausführungsformen sortieren jedoch basierend auf anderen heuristischen Regeln wie der Position des Objekts auf der Seite.
  • Der Vorgang setzt dann (in 6415) den ersten Graph in der Zeichnungsordnung als den aktuellen Graph g. Der Vorgang bestimmt dann (in 6420), ob g der letzte Graph im Teil des Dokuments ist. Wenn g der letzte Graph ist, kann dann keine Verteilung zwischen dem Graph g und einem nächsten Graph berechnet werden, so dass der Vorgang zu 6440 fortgefahren wird, welcher unten beschrieben wird.
  • Sonst, wenn der Graph g nicht der letzte Graph ist, berechnet der Vorgang (in 6425) eine Verteilung zwischen dem Graph g und dem nächsten Graph in der Zeichnungsordnung und speichert (in 6430) die berechnete Verteilung in einem Feld. In einigen Ausführungsformen ist eine Verteilung eine Messung davon, wie nah aneinander zwei Objekte sind. Einige Ausführungsformen verwenden die Grenzkästen der beiden Objekte, um die Verteilung zu berechnen. Einige Ausführungsformen berechnen beispielsweise die Verteilung eines Satzes von Grafikobjekten als die Summe der Breite und der Höhe des kleinsten rechteckigen Grenzkastens, in welchen der Satz von Objekten passt, geteilt durch die Summe der Breite und Höhe der Seite.
  • 65 zeigt zwei Seiten 6501 und 6502, wobei jede zwei grafische Objekte aufweist, für welche die Verteilung berechnet wird. Die Seite 6501 enthält zwei grafische Objekte 6505 und 6510, während die Seite 6502 auch zwei grafische Objekte 6515 und 6520 enthält, die dieselben Formen und Größen wie die Objekte 6505 und 6510 aufweisen, jedoch an unterschiedlichen Plätzen auf der Seite angeordnet sind. 65 zeigt auch den kleinsten Grenzkasten 6525 für die Objekte 6505 und 6510 und den kleinsten Grenzkasten 6530 für die Objekte 6515 und 6520. Unter Verwendung der oben erwähnten Metrik zur Berechnung einer Verteilung, ist die Verteilung für die Objekte 6505 und 6510 (XS1 + YS1)/(Kp + XY), während die Verteilung für die Objekte 6515 und 6520 (XS2 + YS2)/(Xp + XY) ist. Einige Ausführungsformen berechnen stattdessen die Verteilung als den Bereich des Grenzkastens für die Sammlung von Objekten, geteilt durch den Bereich der Seite. Einige Ausführungsformen verwenden Metriken, welche sich nicht auf die Seitengröße beziehen, wie die Größe des Grenzkastens für die Sammlung von Objekten im Vergleich zu den individuellen Grenzkästen der Objekte an sich.
  • Der Vorgang setzt dann (in 6435) den nächsten Graph als den aktuellen Graph g. Der Vorgang fährt dann zu 6420 fort, welcher oben beschrieben wurde. Wenn alle Verteilungen berechnet wurden, verwendet der Vorgang (in 6440) die Verteilungen als Unterschiede erster Ordnung zur Unterschiedsgruppierung, um Gruppen von Graphen zu definieren. Einige Ausführungsformen führen Unterschiedsgruppierung wie in der oben erwähnten US-Veröffentlichung Nr. 2007/0250497 beschrieben, aus. Da die Unterschiedsgruppierung einiger Ausführungsformen nur die Unterschiede zwischen den Eingabewerten benötigt und nicht die eigentlichen Werte der Eingänge benötigt, können die Verteilungen als die Unterschiede erster Ordnung verwendet werden, obwohl sie nicht als eigentliche Unterschiede entstehen. Gruppen, welche von der Unterschiedsgruppierung entstehen, werden in einigen Ausführungsformen, relativ kleine Verteilungen zwischen aufeinanderfolgenden Graphen in derselben Gruppe aufweisen, im Vergleich zu den Verteilungen zwischen Graphen in unterschiedlichen Gruppen.
  • Einfach jedermann würde erkennen, dass die Verteilung, und daher das Konzept der Grenzengruppierung, nicht auf grafische Objekte auf einer Seite begrenzt ist. Verteilungen können beispielsweise unter dreidimensionalen Objekten berechnet werden (unter Verwendung von Volumen statt Bereichen oder durch das Zoomen über die Grenzkästen in drei Dimensionen statt in zwei Dimensionen), und daher verwendet werden, um dreidimensionale Objekte (z. B. in einer dreidimensionalen Medieneditieranwendung, wie einer Videozusammenfügungsanwendung) zu gruppieren.
  • Nachdem die Unterschiedsgruppierung verwendet wird, mit den Verteilungen als Unterschiede erster Ordnung, werden Gruppen von Grafiken definiert. Der Vorgang 6400 wählt (in 6445) eine Gruppe C aus den uneingeschätzten Gruppen aus. Der Vorgang bearbeitet dann (in 6450) C in einen Satz von Untersequenzen von Graphen, welche bestimmte Bedingungen erfüllen. Und unterschiedliche Ausführungsformen verwenden unterschiedliche Bedingungen, um die verbundenen Graphe zu definieren.
  • Einige Ausführungsformen zwingen das Erfordernis, dass die Objekte, die in einer Untersequenz in der Zeichnungsordnung aufeinanderfolgend sein müssen. Einige Ausführungsformen erfordern, dass die Objekte in einer Sequenz sich überlappen, so dass es keinen Weg gibt, die Gruppe in zwei nicht leere Untersequenzen zu partitionieren, wobei jede in der Zeichnungsordnung aufeinanderfolgend ist, so dass die rechteckigen Grenzen der Gruppe von Objekten in der ersten Partition von den rechteckigen Grenzen der Gruppe von Objekten der zweiten Partition disjunkt ist. Ein drittes Erfordernis ist, das durch einige Ausführungsformen erzwungen wird, dass jede Untersequenz dichte Bedingungen erfüllt, welche sicherstellen, dass jede Untersequenz eine ausreichende Anzahl von Graphen (z. B. zwei) mit einer ausreichend kleinen Gesamtverteilung enthält.
  • Einige Ausführungsformen verwenden geänderte Versionen der obigen Bedingungen. Einige Ausführungsformen verwenden z. B., statt den senkrechten rechteckigen Grenzen, engere Grenzen wie einen Pfad um die nicht-transparenten Pixel eines Bilds. In einigen Ausführungsformen wird die Sammlung von Objekten in jeder dieser Untersequenzen als ein einfaches Graph verbunden.
  • Der Vorgang 6400 bestimmt dann (in 6455), ob es noch Gruppen einzuschätzen gibt. Wenn noch Gruppen bestehen, fährt der Vorgang zu 6445 fort, um eine andere Gruppe auszuwählen und diese Gruppe in Untersequenzen zu bearbeiten. Sonst, wenn alle Gruppen bearbeitet wurden, wird der Vorgang beendet. Da die Graphe nun verbunden sind, können sie als ein Objekt behandelt werden, wenn sie angesehen, ausgewählt, gezoomt, kopiert, bewegt, editiert usw. werden. Einige Ausführungsformen behandeln verbunden Graphe als ein Objekt zur Verwendung in Auswahl-, Anzeige- und Navigationsvorgängen, die unten im Abschnitt VII beschrieben werden.
  • B. Bearbeitung von Gruppen in Untersequenzen
  • Wie oben beschrieben, nachdem Gruppen von Graphen identifiziert wurden, bearbeiten einige Ausführungsformen jede Gruppe in Untersequenzen, um die endgültigen verbundenen Graphe zu identifizieren (und dann die primitiven Elemente zu assoziieren, welche jeden verbundenen Graph bilden). 66 zeigt einen Vorgang 6600 einiger Ausführungsformen zur Bearbeitung einer Gruppe in Untersequenzen. In einigen Ausführungsformen wird der Vorgang 6600 im Vorgang 6450 des Vorgangs 6400 für jede Gruppe ausgeführt.
  • Wie gezeigt, empfängt der Vorgang 6600 (in 6605) eine Gruppe von Graphen. Wie beschrieben, ist diese Gruppe, in einigen Ausführungsformen, der Ausgang von der Grenzengruppierung, welche Verteilungen als die Unterschiede erster Ordnung für Graphe, die basierend auf der Zeichnungsordnung geordnet werden, verwendet. Der Vorgang bestimmt dann (in 6607), ob die Gruppe leer ist (d. h. keine Graphe enthält). Wenn die Gruppe leer ist, wird der Vorgang beendet. Sonst wählt der Vorgang (in 6610) den ersten Graph in der Gruppe aus, welche noch nicht in einer Untersequenz ist. In einigen Ausführungsformen wird die Gruppe basierend auf der Zeichnungsordnung geordnet, so dass, das erste Mal durch den Vorgang 6610, der ausgewählte Graph der erste Graph in der Gruppe ist, welcher im Dokument gezeichnet wird, das die Graphe enthält.
  • Der Vorgang definiert dann (in 6615) eine neue Untersequenz, die den ausgewählten Graph (an diesem Punkt ist der ausgewählte Graph der einzige Graph in der Untersequenz) enthält. Die neue Untersequenz weist die Grenzen des ausgewählten Graphs auf. In einigen Ausführungsformen sind die Grenzen des ausgewählten Graphs der kleinste rechteckige Grenzkasten, der den Graph enthält. Andere Ausführungsformen definieren die Grenzen des Graphs auf unterschiedliche Weise, beispielsweise unter Verwendung des Pfades mit dem kleinsten Bereich, welcher alle nicht-transparenten Pixel des Graphs vollständig einschließt.
  • Der Vorgang 6600 bestimmt dann (in 6620), ob es noch Graphe in der Gruppe gibt. Wenn es keine Graphe in der Gruppe mehr gibt, fährt der Vorgang zu 6645, welcher unten beschrieben wird. Sonst wählt der Vorgang (in 6625) den nächsten Graph in der Gruppe aus. In einigen Ausführungsformen ist der nächste Graph in der Gruppe der nächste Graph in der Zeichnungsordnung, der in der Gruppe ist.
  • Der Vorgang bestimmt (in 6630), ob die Grenzen des neuen Graphs (d. h. des in 6625 ausgewählten Graphs) die Grenzen der aktuellen Untersequenzen kreuzen. Wie oben beschrieben, definieren unterschiedliche Ausführungsformen die Grenzen eines Graphs auf unterschiedliche Weise. Die Grenzen einer Untersequenz, die unterschiedliche Graphe enthält, werden unten beschrieben. Wenn die Grenzen des neuen Graphs die Grenzen der aktuellen Untersequenz nicht kreuzen, speichert der Vorgang (in 6640) die aktuelle Untersequenz (beispielsweise in einer Liste von Untersequenzen) und fährt zu 6610 fort, der oben beschrieben wird, um die nächste Untersequenz anzufangen. Die nächste Untersequenz fängt mit dem in 6630 vor kurzem getesteten Graph an, da es sich um den ersten Graph in der Gruppe handelt, der noch nicht in einer Untersequenz ist. Wenn die Grenzen des neuen (in 6625 ausgewählten) Graphs die Grenzen der aktuellen Untersequenz kreuzen, fügt der Vorgang (in 6635) den neuen Graph zur Untersequenz hinzu und ändert die Grenzen der Untersequenz, so dass sie die Kreuzung der Grenzen der vorherigen Untersequenz und der Grenzen des neu hinzugefügten Graphs sind. Der Vorgang fährt dann zu 6620 fort, der oben beschrieben wird, um weiterhin zu versuchen, Graphe zur Untersequenz hinzuzufügen.
  • In einigen Ausführungsformen sind die Grenzen einer Untersequenz, die mehrere Graphe enthält, der kleinste rechteckige Grenzkasten, der alle Graphe enthält. In anderen Ausführungsformen sind die Grenzen die Vereinung aller rechteckigen Grenzkästen für die Graphe in der Untersequenz (in solchen Ausführungsformen werden die Grenzen der Untersequenz nicht notwendigerweise rechteckig sein). In einigen Ausführungsformen, welche die Grenzen eines Graphs als den Pfad mit dem kleinsten Bereich, der alle nicht-transparenten Pixel dieses Graphs enthält, definieren, können die Grenzen ein solcher Pfad um alle Graphe in der Untersequenz sein oder könnten die Vereinung solcher Pfade für jeden Graph in der Untersequenz sein.
  • Wenn alle Graphe in der Gruppe in anfängliche Untersequenzen gesetzt wurden, wählt der Vorgang (in 6645) eine erste Untersequenz S1 aus. In einigen Ausführungsformen enthält jede Untersequenz Graphe, die in der Zeichnungsordnung angrenzend sind und die Untersequenzen werden basierend auf der Zeichnungsordnung angeordnet, so dass die erste Untersequenz diejenige mit den ersten Graphen in der Zeichnungsordnung ist.
  • Der Vorgang bestimmt darin (in 6650), ob es noch Untersequenzen gibt (d. h. das erste Mal durch den Vorgang bestimmt, ob es nur eine Untersequenz gibt oder nicht). Wenn es keine Untersequenzen mehr gibt, wird der Vorgang beendet. Sonst wählt der Vorgang (in 6655) eine nächste Untersequenz S2.
  • Der Vorgang 6600 bestimmt dann (in 6660), ob die Grenzen von S1 und S2 sich kreuzen. Wie oben beschrieben werden die Grenzen der Untersequenzen unterschiedlich in unterschiedlichen Ausführungsformen definiert (d. h. sie basieren auf rechteckigen Grenzkästen in einigen Ausführungsformen, Pfaden um die nicht-transparenten Pixel in anderen Ausführungsformen usw.). Wenn die Grenzen von S1 und S2 sich nicht kreuzen, definiert der Vorgang (in 6665), dass S2 S1 ist, und fährt zu 6650 fort, um die nächste Untersequenz gegen das Original S2 zu testen.
  • Wenn die Grenzen sich nicht kreuzen, verschmilzt der Vorgang (in 6670) die zwei Untersequenzen und fährt zu 6645 fort, um die erste Untersequenz als S1 auszuwählen. Einige Ausführungsformen gehen zur ersten Untersequenz zurück und beenden die Bearbeitung nicht, bis ein Satz von Untersequenzen, der auf keiner Weise verschmolzen werden kann, vom Anfang durchgegangen wird. Andere Ausführungsformen sparen jedoch Bearbeitungszeit ein, indem sie die Untersequenz vor der vor kurzem verschmolzenen Untersequenz als S1 auswählen, bei der Rückkehr zu 6645, und indem sie von diesem Punkt aus fortfahren, statt von der ersten Untersequenz zu starten.
  • Wenn die Gruppen in Untersequenzen bearbeitet wurden, können die Untersequenzen gegen Bedingungen, wie die oben beschriebenen Dichtebedingungen getestet werden. Einige Ausführungsformen erfordern eine bestimmte minimale Anzahl von Graphen in einer Untersequenz für die in einem verbundenen Graph zu assoziierenden Graphen (z. B. 2,5 usw.). Einige Ausführungsformen erfordern, dass die Verteilung (die berechnet wird, wie oben beschrieben) kleiner als eine bestimmte Zahl (z. B. 0,4, 0,5 usw.) ist.
  • C. Softwarearchitektur
  • In einigen Ausführungsformen werden die oben beschriebenen Vorgänge zum Verbinden von Graphen als Software implementiert, die auf einer bestimmten Maschine, wie einem Computer, einem Medienwiedergabegerät, einem Mobilfunktelefon (z. B. in einem iPhone®) läuft, oder auf anderen tragbaren Geräten oder Geräten mit begrenzten Ressourcen (oder in einem Computer lesbaren Medium gespeichert werden). 67 zeigt konzeptionell eine Anwendung zum Verbinden von Graphen 6700 einiger Ausführungsformen zum Identifizieren von Graphen, welche verbunden werden sollten, und zum Assoziieren der Graphe als eine Grafik. In einigen Ausführungsformen ist die Anwendung eine selbständige Anwendung oder wird in eine andere Anwendung (z. B. eine Anwendung für Dokumentrekonstruktion) integriert, während, in anderen Ausführungsformen, die Anwendung innerhalb eines Betriebssystems implementiert werden kann.
  • 67 zeigt einen Graphverbinder 6705, ein Modul zur Grenzengruppierung 6710 und einen Verteilungsberechner 6715 sowie einen Dokumentinhalt 6725.
  • Das Modul zum Verbinden von Graphen empfängt Informationen vom Dokumentinhalt 6725. In einigen Ausführungsformen ist die Information Information über den Platz jedes Graphs und die Zeichnungsordnung der Graphe.
  • Der Graphverbinder 6705 leitet Informationen (z. B. die Positionen der Graphe und die Position der Graphe in der Zeichnungsordnung) an den Verteilungsberechner 6715 weiter. Der Verteilungsberechner 6715 einiger Ausführungsformen berechnet die Verteilung für jedes sukzessive Paar von Graphen und leitet diese Information an das Modul zur Grenzengruppierung 6710 weiter.
  • Das Modul zur Grenzengruppierung 6710 empfängt Informationen vom Graphverbinder 6705 und vom Verteilungsberechner 6715 (z. B. ein Feld von Verteilungen, die als Unterschiede erster Ordnung zu behandeln sind) und führt Grenzengruppierung auf den empfangenen. Informationen aus. Die Ergebnisse der Grenzengruppierung werden an den Graphverbinder weitergeleitet. In einigen Ausführungsformen führt der Graphverbinder 6705 eine weitere Behandlung der Gruppen aus, welche vom Modul zur Grenzengruppierung empfangen werden, um zu identifizieren, ob bestimmte Gruppen von Graphen als einzige Graphe verbunden werden sollten und gibt die Verbindungen an den Dokumentinhalt 6725 zurück.
  • In einigen Ausführungsformen werden die Ergebnisse der durch die oben beschriebenen Module oder andere Module ausgeführten Vorgänge in einem elektronischen Speicher abgespeichert (z. B. als Teil eines Dokumentobjektmodells). Das Dokumentobjektmodell kann dann zum Anzeigen des Dokuments auf einem elektronischen Anzeigegerät (z. B. einem tragbaren Gerät, einem Computerbildschirm usw.) verwendet werden, so dass ein Benutzer das Dokument ansehen und/oder mit ihm interagieren kann (z. B. über einen Bewegungsbildschirm, ein Cursorsteuergerät usw.).
  • VII. Profile zum Steuern der Bearbeitung
  • Die Interpretation visueller Informationen als strukturelle Elemente in einem Dokument kann vom Typ des Inhaltes, der im bearbeiteten Dokument ist, abhängen. Eine semantische Rekonstruktion (sowie andere Inhaltsbearbeitungstechniken) kann daher verbessert werden, indem die Analyse auf den Inhaltstyp angepasst wird. Einige Ausführungsformen geben Verfahren zum Identifizieren eines Typs eines zu bearbeitenden Inhalts und zum Anpassen der Bearbeitung des Inhalts auf den identifizierten Inhaltstyp an. Einige Ausführungsformen wenden die Anpassung der Inhaltsbearbeitung basierend auf der Identifizierung des Inhaltstyps auf die Dokumentrekonstruktion an, welche oben in den Abschnitten II–VI beschrieben wird.
  • Einige Ausführungsformen verwenden Profile, um den Typ des zu bearbeitenden Inhalts zu identifizieren. Ein Profil enthält einen logischen Vorschlag der Form (P1 ^ P2 ^ P3 ^ ... ^ PN), so dass das Profil mit dem bestimmten Inhalt übereinstimmt, wenn und nur wenn alle logische Prädikate PN für den bestimmten Inhalt richtig sind. In einigen Ausführungsformen ist der Satz von Profilen hierarchisch. Ein hierarchischer Satz von Profilen weist Profile für unterschiedliche Hierarchiestufen auf, die an unterschiedlichen Bearbeitungsstufen erreicht werden. In einigen Ausführungsformen können Instruktionen von einem Profil einer niedrigeren Stufe Instruktionen von einem Profil einer höheren Stufe übergeordnet sein.
  • 68 zeigt konzeptionell einen Vorgang 6800 einiger Ausführungsformen, der Profile für die Anpassung der Inhaltsbearbeitung auf den Inhaltstyp verwendet. Wie gezeigt, empfängt der Vorgang (in 6805) den Inhalt. Der Inhalt ist ein zu rekonstruierendes Dokument, in einigen Ausführungsformen. In anderen Ausführungsformen ist der Inhalt ein Dokument, aber die auf dem Dokument auszuführende Bearbeitung ist eine Analyse, die sich von einer Rekonstruktion unterscheidet. Der Inhalt kann auch andere Inhaltstypen sein (Audio- und/oder Videoinhalt) in einigen Ausführungsformen. Einige Ausführungsformen könnten zum Beispiel einen Videoinhalt analysieren, um den Videoinhalt in eine Hierarchie bestehend aus Szenen, Akten, usw. aufzuteilen und spätere Stufen der Analyse basierend auf den Ergebnissen von früheren Stufen zu ändern.
  • Der Vorgang identifiziert dann (in 6810) den Typ des empfangenen Inhalts basierend auf Profilen für unterschiedliche Inhaltstypen. In einigen Ausführungsformen enthält ein Profil einen logischen Vorschlag bestehend aus einem oder mehreren logischen Prädikaten, der/die dem Inhalt übereinstimmt/en, wenn und nur wenn alle logischen Prädikate für diesen Inhalt richtig sind. In einigen Ausführungsformen spezifiziert ein Profil auch, wie Inhaltsbearbeitung auszuführen ist, wenn das Profil mit dem Inhalt übereinstimmt. Im Falle einer Dokumentbearbeitung enthält ein Profil eine Sammlung von Attributen, welche auf eine Sammlung von visuellen Elementen, in einigen Ausführungsformen, angewendet werden. Ein vereinfachtes Profil für ein Dokument, das auf einem Umschlag von einer #10 Größe ausgedruckt werden soll, könnte beispielsweise sein: (# von Seiten = 1 ^ # von Absätzen <= 2 ^ Breite = 9,5 ^ Höhe = 4,125'').
  • 69 zeigt ein Dokument 6900. Beim Identifizieren des Typs des Dokuments werden einige Ausführungsformen mehrere Profile testen, bis sie zu einem Profil gelangen, dessen logische Prädikate alle richtig sind. Im Falle des Dokuments 6900, wenn die Breite x 9,5'' ist und die Höhe y 4,125'' ist, wäre das Dokument 6900 als ein # 10 Umschlag identifiziert, da es nur eine Seite mit zwei Absätzen 6905 und 6910 aufweist.
  • Wenn der Inhaltstyp identifiziert ist, führt der Vorgang 6800 (in 6815) eine Inhaltsbearbeitung aus, die auf den identifizierten Inhaltstyp angepasst ist. Der Vorgang wird dann beendet. In einigen Ausführungsformen, umfasst das Anpassen der Bearbeitung auf den identifizierten Inhaltstyp das Hinzufügen und Entfernen von Vorgängen, das Ändern der Art, mit der die Vorgänge ausgeführt werden, und das Ändern der Ordnung, in welcher die Vorgänge ausgeführt werden. Beispielsweise, im Falle der Dokumentrekonstruktion, wenn es bestimmt wird, dass ein Dokument eine einzige Seite von Textzeilen ohne Spalten, Kopfzeilen oder Fußzeilen ist, können die Vorgänge der Dokumentrekonstruktion adäquat angepasst werden. Einige Ausführungsformen werden Zeilen identifizieren, Wörter in den Textzeilen identifizieren, und die Textzeilen in Absätze gruppieren, werden jedoch keine anderen Vorgänge ausführen (z. B. den Vorgang 4200 zum Identifizieren von Spalten und Layouts oder Vorgänge zur Tabellenidentifizierung), da es erkannt wird, basierend auf dem Dokumenttyp, dass diese nicht notwendig sind.
  • A. Hierarchisches Profilieren
  • Einige Ausführungsformen verwenden einen hierarchischen Satz von Profilen, um die Inhaltsbearbeitung auf den Inhaltstyp anzupassen. 70 zeigt einen hierarchischen Satz von Profilen 7000 einiger Ausführungsformen zur Dokumentrekonstruktion. Der hierarchischen Satz von Profilen 7000 enthält zwei Dokumentprofile 7001 und 7002, drei Abschnittsprofile 70057007, acht Seitenprofile 70107017 und vier Bereichsprofile 70207023.
  • Wie gezeigt, weist jedes Dokumentprofil seinen eigenen Profilbaum auf. In einigen Ausführungsformen, wenn ein Dokumentprofil identifiziert wird, werden dann nur die Abschnittsprofile in seinem hierarchischen Baum getestet. Beispielsweise, wenn ein Dokument als Dokumentprofil A 7001 identifiziert wird, werden dann nur das Abschnittsprofil A 7005 und das Abschnittsprofil B 7006 getestet. Auf ähnliche Weise, wenn ein Abschnittsprofil (oder ein beliebiges anderes Profil niedrigerer Stufe) identifiziert wird, werden dann nur Profile in diesem bestimmten Profilbaum getestet.
  • In einigen Ausführungsformen werden Profile zwischen höheren Profilen einer höheren Hierarchiestufe geteilt. Beispielsweise, wird das Seitenprofil C 7012 zwischen allen drei Abschnittsprofilen 70057007 geteilt.
  • Ob ein Abschnitt eines Dokuments als Abschnittsprofil A 7005, Abschnittsprofil B 7006 oder Abschnittsprofil C 7007 identifiziert wird, wird daher das Seitenprofil C 7012 als eines der möglichen Seitenprofile für jede Seite im Abschnitt getestet.
  • 71 zeigt konzeptionell einen Vorgang 7100 einiger Ausführungsformen, der Profile gegen Inhalt übereinstimmt und die Inhaltsbearbeitung abhängend vom übereinstimmenden Profil konfiguriert. Wie gezeigt, empfängt der Vorgang (in 7105) den zu bearbeitenden Inhalt. In einigen Ausführungsformen ist der Inhalt ein Dokument, das gemäß den oben in den Abschnitten II–VI beschriebenen Vorgängen zu rekonstruieren ist. In anderen Ausführungsformen ist der Inhalt Audio- und/oder Videoinhalt oder andere zu analysierende Inhaltstypen.
  • Der Vorgang wählt dann (in 7110) ein Profil für die höchste Stufe der Hierarchie aus. In einigen Ausführungsformen umfasst das Auswählen eines bestimmten Profils das Einschätzen der logischen Vorschläge im bestimmten Profil für den Inhalt und das Identifizieren, dass das Profil mit dem Inhalt übereinstimmt. In einigen Ausführungsformen muss eine Bearbeitungsmenge zunächst ausgeführt werden, um ein Profil von der höchsten Stufe in der Hierarchie auszuwählen. In einigen Ausführungsformen kann nur ein Profil gleichzeitig an der höchsten Stufe der Hierarchie ausgewählt werden, obwohl mehrere Profile getestet werden können, bevor ein übereinstimmendes Profil gefunden wird. Beispielsweise, im Bezug auf den hierarchischen Satz von Profilen 7000 in 70, kann ein Dokument entweder mit dem Dokumentprofil A 7001 oder dem Dokumentprofil B 7002 übereinstimmen, aber, wenn eines übereinstimmt, wird dann das übereinstimmende Profil ausgewählt.
  • Nach dem Auswählen des Profils aus der Hierarchie wendet der Vorgang (in 7115) eine Bearbeitung für die ausgewählten Profile an. Beispielsweise, in Bezug auf die Dokumentrekonstruktion, wenn der Inhalt ein einfaches einseitiges Dokument ist, wird ein Satz von Rekonstruktionsverfahren angewendet. Auf der anderen Seite, wenn das Dokument ein mehrseitiges Buch mit Zeichnungen ist, wird ein unterschiedlicher Satz von Rekonstruktionsverfahren angewendet. Einige Ausführungsformen wenden nicht alle Verfahren gleichzeitig an, wenden stattdessen ein Verfahren gleichzeitig an, und zwar in einer durch das Profil spezifizierten Ordnung, bevor sie bestimmen, ob ein neues Profil an einer niedrigeren Stufe ausgewählt werden kann.
  • Der Vorgang bestimmt dann (in 7120), ob die Bearbeitung weit genug ist, um zur nächsten Stufe der Hierarchie fortzufahren. In einigen Ausführungsformen involviert das Bestimmen, ob genügend Bearbeitungsverfahren fertig gestellt wurden und genug Information über die nächste Stufe der Hierarchie zugänglich gemacht wurde, sodass die Profile der nächsten Stufe für eine Übereinstimmung getestet werden können. Wenn die Bearbeitung noch nicht weit genug ist, fährt der Vorgang zu 7115 fort, um weiter eine Bearbeitung anzuwenden, wie oben beschrieben.
  • Wenn die Bearbeitung weit genug für die nächste Stufe der Hierarchie ist, wählt der Vorgang (in 7125) ein Profil für die nächste Stufe der Hierarchie aus. In einigen Ausführungsformen kann für jede Inhaltsentität (z. B. einen Abschnitt, eine Seite, einen Bereich, usw.) an einer bestimmten Stufe der Hierarchie nur ein Profil gleichzeitig für diese bestimmte Stufe ausgewählt werden. Beispielsweise, im Bezug auf den hierarchischen Satz von Profilen 7000 in
  • 70, kann ein Abschnitt in einem Dokument, das mit dem Dokumentprofil A 7001 übereinstimmt, entweder das Abschnittsprofil A 7005 oder das Abschnittsprofil B 7006 sein, aber nicht beides. Ferner, In einigen Ausführungsformen, ist die Auswahl eines Profils für eine Inhaltsentität basierend auf der Auswahl der Profile für die obigen Inhaltsentitäten begrenzt. Beispielsweise, in dem obigen Beispiel, da das Dokument mit dem Dokumentprofil A 7001 übereinstimmt, wird ein bestimmter Abschnitt nicht gegen das Abschnittsprofil C 7007 getestet werden und kann daher nicht mit dem Abschnittsprofil C 7007 übereinstimmen.
  • Der Vorgang ändert dann (in 7130) die Bearbeitungsverfahren von vorherigen Stufen der Hierarchie basierend auf den neu ausgewählten Profilen. In einigen Ausführungsformen kann jedes Profil einer niedrigeren Stufe jedem bereits definierten Verfahren eines Profils einer höheren Stufe übergeordnet sein. Änderungen können das Entfernen von Bearbeitungsverfahren, das Ändern der Art, in der bestimmte Verfahren ausgeführt werden, das Hinzufügen von Verfahren, das Ändern der Ordnung, in der Verfahren ausgeführt werden usw. umfassen. Beispielsweise, wenn Vorgänge (wie der Vorgang 3800, der oben im Abschnitt IV beschrieben wird) bereits verwendet wurden, um Zeilen in einem Dokument aufzuteilen, kann dann eine Bestimmung, ob es einen adäquaten Nachweis für Spaltungen gibt, bestimmen, ob eine Seite als komplex oder einfach klassifiziert wird. Wenn die Seite einfach ist (d. h. minimaler Nachweis für Spalten), wird das Zeilenaufteilungsverfahren in einigen Ausführungsformen geändert, um Tabs in die Lücken in den Zeilen einzufügen, statt die Zeilen eigentlich aufzuteilen. Auf ähnliche Weise, wenn die Seite eine einfache Seite ohne Bereichsgrenzengrafiken ist, werden die Bereichsanalyseverfahren in einigen Ausführungsformen entfernt.
  • Als Beispiel des Hinzufügens von Verfahren kann ein Profil, das ein bestimmtes Dokument als eine Zeitung identifiziert, Verfahren hinzufügen, um nach Text am Ende eines Layouts zu suchen, welcher spezifiziert, dass ein Artikel auf einer bestimmten Seite mit einem bestimmten Titel, in einigen Ausführungsformen, fortgesetzt wird. Ein solches Verfahren würde dann nach der spezifizierten Seite für den Titel suchen, um eine Verlinkung zwischen den zwei Layouts (oder Bereichen) im Dokument zu definieren, um anzugeben, dass die zwei Layouts (oder Bereiche) einen Artikel bilden.
  • Anschließend, nachdem die Bearbeitungsverfahren geändert wurden, wendet der Vorgang 7100 (in 7135) die Bearbeitungsverfahren für die ausgewählten Profile an. In einigen Ausführungsformen umfasst dieses Verfahren für Profile an einer höheren Stufe der Hierarchie als die Profile, die gerade ausgewählt wurden. Beispielsweise, wenn ein bestimmtes Verfahren in einem Dokumentprofil spezifiziert wird und ein ausgewähltes Abschnittsprofil das bestimmte Verfahren nicht ändert oder, ob das bestimmte Verfahren gemäß dem Dokumentprofil ausgeführt (wenn es nicht bereits ausgeführt wurde). Einige Ausführungsformen wenden nicht alle Verfahren gleichzeitig an, wenden jedoch stattdessen ein Verfahren gleichzeitig an, und zwar in einer Ordnung, die durch das Profil spezifiziert wird, bevor bestimmt wird, ob ein neues Profil an einer niedrigeren Stufe ausgewählt werden kann.
  • Der Vorgang bestimmt dann (in 7140), ob es niedrigere Stufen in der Hierarchie der Profile zu testen gibt. Wenn es keine niedrigere Stufe in der Hierarchie gibt, fährt der Vorgang zu 7150 fort, der unten beschrieben wird. Sonst bestimmt der Vorgang (in 7145), ob die Bearbeitung weit genug ist, um zur nächsten Stufe der Hierarchie fortzufahren. In einigen Ausführungsformen involviert dies das Bestimmen, ob genügend Bearbeitungsverfahren fertig gestellt wurden und genügend Informationen über die nächste Stufe der Hierarchie zur Verfügung gestellt wurden, sodass die Profile an der nächsten Stufe für eine Übereinstimmung getestet werden können. Wenn die Bearbeitung nicht wett genug ist, fährt der Vorgang zu 7135 fort, um die Bearbeitung, wie oben beschrieben, weiter anzuwenden. Wenn die Bearbeitung weit genug für die nächste Stufe der Hierarchie ist, fährt der Vorgang zu 7125 fort, um eines oder mehrere Profile für die nächste Stufe der Hierarchie, wie oben beschrieben, anzuwenden.
  • Wenn der Vorgang bestimmt (in 7140), dass es keine niedrigeren Stufen der Hierarchie gibt, bestimmt der Vorgang (in 7150), ob die Inhaltsbearbeitung fertig ist. In einigen Ausführungsformen ist die Inhaltsbearbeitung fertig, wenn alle Bearbeitungsverfahren für das Profil der niedrigsten Stufe angewandt wurden. Wenn die Bearbeitung fertig ist, wird der Vorgang beendet. Sonst fährt der Vorgang zu 7135 fort, der oben beschrieben wird, um den Inhalt weiter zu bearbeiten.
  • B. Verwendung des hierarchischen Profilierens zum Implementieren von semantischen Rekonstruktionsverfahren
  • Einige Ausführungsformen verwenden hierarchisches Profilieren, um auf effizientere und genauere Weise die oben in den Abschnitten II–VI beschriebenen semantischen Rekonstruktionsverfahren zu implementieren. In einigen Ausführungsformen werden hierarchische Profile verwendet, um die Verfahren hinzuzufügen, zu entfernen, zu ändern, oder erneut auszuführen. Einige Ausführungsformen enthalten ein Standardprofil, das, in der Abwesenheit von übereinstimmenden Profilen, alle möglichen Rekonstruktionsverfahren implementiert. Wenn ein niedrigeres Profil in der Hierarchie ausgewählt wird, kann jedoch das ausgewählte Profil dem Standardprofil übergeordnet sein, was die Frage, ob ein bestimmtes Verfahren ausgeführt wird und/oder wie ein bestimmtes Verfahren zu implementieren ist.
  • In einigen Ausführungsformen findet das Übereinstimmen von Profilen an unterschiedlichen Stufen in der Bearbeitung statt. Als solcher, kann der Satz von Profilen, die an jeder gegebenen Zeit aktiviert werden, während der Bearbeitung sich ändern, und die Vererbung der Verfahren muss erneut eingeschätzt werden, nachdem jedes neue Profil aktiviert wird. Da ein neu aktiviertes Profil Bearbeitungsverfahren neu ordnen, hinzufügen, oder entfernen kann, ändern einige Ausführungsformen auch den Effekt der Vererbung während der Inhaltsbearbeitung.
  • 72 zeigt konzeptionell einen Vorgang 7200 einiger Ausführungsformen zum Ausführen von Dokumentrekonstruktionen unter Verwendung des hierarchischen Profilierens. Wie gezeigt empfängt der Vorgang (in 7205) ein Dokument. In einigen Ausführungsformen ist das Dokument ein Dokument mit Vektorgrafiken (z. B. ein PDF-Dokument), das unter Verwendung von semantischen Rekonstruktionstechniken zu rekonstruieren ist.
  • Der Vorgang 7200 identifiziert dann (in 7210) ein Profil für das Dokument. In einigen Ausführungsformen wird anfänglich ein Standardprofil zugewiesen, das alle möglichen Rekonstruktionsverfahren implementiert. Einige Ausführungsformen können jedoch ein Dokumentprofil basierend auf den inhärenten Eigenschaften des Dokuments (z. B. Anzahl der Seiten, Größe der Seiten, usw.) ohne das Anwenden jeglicher Rekonstruktionsverfahren identifizieren.
  • Wenn das anfängliche Profil identifiziert wurde, identifiziert der Vorgang (in 7215) Rekonstruktionsverfahren, die mit dem identifizierten Profil verbunden sind. Wenn das anfängliche Profil einfach das Standardprofil ist, werden alle möglichen Verfahren identifiziert werden. Jedoch, wenn das Profil ein identifiziertes Dokumentprofil oder ein Profil an einer niedrigeren Stufe in der Hierarchie ist, werden in manchen Fällen nur einige der Rekonstruktionsverfahren identifiziert werden. Beispielsweise definieren einige Profile nicht explizit eine Implementation zum Ausführen eines bestimmten Vorgangs, spezifizieren jedoch auch nicht, den Vorgang nicht auszuführen.
  • Der Vorgang wählt dann eines der identifizierten Verfahren aus (in 7220). In einigen Ausführungsformen basiert das ausgewählte Verfahren auf einer spezifizierten Ordnung zum Ausführen der Rekonstruktionsverfahren. Beispielsweise spezifiziert das Standardprofil einiger Ausführungsformen. eine Standardordnung zum Ausführen der Rekonstruktionsverfahren. Die Standardordnung kann beispielsweise spezifizieren, dass zunächst Bereichsanalyseverfahren, dann das Identifizieren von Textzeilen, dann das Ausführen von Führungs- und Spaltenzwischenraumanalyse, usw. ausgeführt werden sollen.
  • In einigen Ausführungsformen umfasst das Identifizieren von Verfahren das Identifizieren von Verfahren, welche durch das aktuelle Profil ausgeschlossen sind. Beispielsweise können Rekonstruktionsvorgänge bereits potentielle Bereichsgrenzen für eine Seite identifiziert haben. In einigen Ausführungsformen, wenn es zumindest eine bestimmte Dichte von Bereichsgrenzen gibt, und Textmuster adäquat übereinstimmen, wird die Seite als eine Straßenkarte identifiziert. Infolgedessen wird der Rest der Bereichsanalyse (beispielsweise das Identifizieren von Bereichen) nicht ausgeführt, da dies die Seite in eine unvernünftige Anzahl von kleinen Bereichen aufteilen würde, die nicht durch den Autor des Dokuments als separate Bereiche einer Seite gedacht waren.
  • Auf ähnliche Weise enthält ein Dokumentprofil, das spezifiziert, dass ein Dokument ein Wortbearbeitungsdokument ist, ein Verfahren zur Spaltenidentifizierung in einigen Ausführungsformen. Jedoch, wenn eine bestimmte Seite im Dokument einen eingebetteten Inhalt aufweist, könnte das Profil für die bestimmte Seite dem Spaltenidentifizierungsschritt mit Instruktionen, dieses Verfahren nicht auszuführen, übergeordnet sein.
  • Wenn ein Verfahren ausgewählt wurde, wählt Verfahren 7200 eine Implementation für das Verfahren aus. In einigen Ausführungsformen, können aktive (d. h. ausgewählte) Profile ein Verfahren implementieren, oder können eine Implementation des Verfahrens von einem aktiven Profil, das höher in der Hierarchie ist, erben. Der Vorgang bestimmt (in 7225), ob das ausgewählte Verfahren explizit für das aktuelle (d. h. aktive) auf der niedrigsten Stufe angeordnete Profil, definiert ist. Wenn das ausgewählte Verfahren explizit definiert ist, wählt der Vorgang (in 7230) die Implementation des Verfahrens für das aktuelle Profil aus. Der Vorgang fährt dann zu 7250 fort, der unten beschrieben wird.
  • Sonst bestimmt der Vorgang (in 7235), oh das ausgewählte Verfahren für ein aktives Profil einer höheren Stufe der Hierarchie definiert ist. Wenn der Vorgang für ein aktives Profil, das höher in der Hierarchie ist, definiert ist, wählt der Vorgang (in 7240) die Implementation des Verfahrens aus dem aktiven Profil der höheren Stufe aus. Der Vorgang fährt dann zu 7250 fort, der unten beschrieben wird. Sonst wählt das Verfahren (in 7245) die Standardimplementation des Verfahrens aus.
  • 73 zeigt, wie einige Ausführungsformen das aktive Profil der niedrigsten Stufe erben, welches ein bestimmtes Verfahren implementiert. Die Figur zeigt eine Hierarchie 7300 von Dokumentrekonstruktionsprofilen. Die Hierarchie enthält einen Satz 7305 von Standardimplementationen für alle Verfahren, Sätze 7310 von Implementationen für unterschiedliche Dokumentprofile, Sätze 7315 von Implementationen für unterschiedliche Abschnittsprofile, Sätze 7320 von Implementationen für unterschiedliche Seitenprofile, und Sätze 7325 von Implementationen für unterschiedliche Bereichsprofile. Wie durch die schattierten Zeilen gezeigt, ist das Bereichsprofil I 7330 das aktuelle aktive Profil (auf der niedrigsten Stufe), während das Seitenprofil I 7335, das Abschnittsprofil X 7340, und das Dokumentprofil 2 7345 auch aktiv sind.
  • Da das Bereichsprofil I 7330 das aktuelle aktive Profil ist, berücksichtigt ein Versuch, ein bestimmtes Verfahren (z. B. eine Führungsidentifizierung) zu implementieren, den Satz von Implementationen für das Bereichsprofil I 7330, um zu bestimmen, ob es explizit eine Implementation für das bestimmte Verfahren definiert. Wenn das Bereichsprofil I 7330 explizit eine Implementation definiert, wird dann diese Implementation ausgewählt. Sonst wird das aktive Seitenprofil I 7335 geprüft. Aktive Profile werden geprüft, durch eine Bewegung nach oben entlang der Hierarchie, bis entweder eine Implementation des bestimmten Verfahrens definiert ist oder der Satz 7305 von Standardimplementationen für alle Verfahren erreicht wird. Wenn das aktive Profil der niedrigsten Stufe, das ein Verfahren implementiert, identifiziert wird, wird diese Implementation durch das aktuelle aktive Profil geerbt. Wenn keine aktiven Profile ein Verfahren implementieren, erbt dann das aktuelle aktive Profil die Implementation vom Standardprofil.
  • Nachdem der Vorgang 7200 eine Implementation für ein Verfahren auswählt, führt der Vorgang (in 7250) eine Rekonstruktion mittels der ausgewählten Implementation aus. In einigen Ausführungsformen enthält die ausgeführte Rekonstruktion einen oder mehrere der Prozesse, die oben in den Abschnitten II–VI beschrieben sind.
  • Der Vorgang bestimmt dann (in 7255), ob ein neues Profil identifiziert wird. Einige Ausführungsformen, nachdem jedes Verfahren ausgeführt wird, senden alle verfügbaren Rekonstruktionsdaten an eine Profilübereinstimmungsmaschine. Die Profilübereinstimmungsmaschine einiger Ausführungsformen bestimmt basierend auf den empfangenen Informationen, ob es genügend Informationen gibt, um bestimmte Profile (beispielsweise Profile an der nächsten Stufe der Hierarchie unterhalb des aktuellen aktiven Profils) zu testen. Wenn es genügend Informationen gibt, testet die Profilübereinstimmungsmaschine die Informationen gegen die verschiedenen logischen Prädikate in den Profilen. Einige Ausführungsformen ordnen die Profile, so dass diejenigen, die am wahrscheinlichsten übereinstimmen oder die kleinste Arbeitsmenge benötigen, zunächst getestet werden. Das Übereinstimmen von Profilen wird detaillierter unten im Unterabschnitt C beschrieben.
  • Wenn ein neues Profil nicht identifiziert wird, bestimmt der Vorgang (in 7265), ob die Rekonstruktion des Dokuments vollständig ist. In einigen Ausführungsformen wird die Rekonstruktion fertig gestellt, wenn alle Verfahren, die durch den Satz von aktiven Profilen spezifiziert werden (und nicht durch ein aktives Profil niedrigerer Stufe entfernt werden) fertig gestellt wurden. Wenn die Rekonstruktion fertig ist, wird der Vorgang beendet. Sonst fährt der Vorgang zu 7220 fort, um das nächste identifizierte Verfahren auszuwählen, wie oben beschrieben.
  • Wenn ein neues Profil identifiziert wird, entfernt der Vorgang 7200 (in 7260) Rekonstruktionsergebnisse, die durch das neue Profil spezifiziert werden. Insbesondere, zusätzlich zum Spezifizieren von bestimmten Verfahren, welche ausgeführt oder nicht ausgeführt werden sollten, spezifizieren Profile in einigen Ausführungsformen, dass Ergebnisse bestimmter Verfahren rückgesetzt werden sollten. Zum Beispiel, selbst nachdem Bereichsanalyseverfahren ausgeführt wurden, kann ein Profil spezifizieren, dass die Bereichsinformation (Grenzen, Kreuzungen, Bereiche usw.) von den Ergebnissen entfernt werden sollte und dass eine Bereichsanalyse erneut ausgeführt werden sollte, nachdem mehrere andere Verfahren ausgeführt wurden. Der Vorgang fährt dann zu 7215 fort, der oben beschrieben wird, und fährt fort, bis die Rekonstruktion fertig ist.
  • C. Übereinstimmen von Profilen
  • Wie oben beschrieben ist, in einigen Ausführungsformen, ein Profil ein Satz von logischen Prädikaten, die alle für das Profil richtig sein müssen. Einige Ausführungsformen verwenden eine Profilübereinstimmungsmaschine, die Inhaltsbearbeitungsergebnisse empfängt, bestimmt, ob genügend Information vorliegt, um die nächste Stufe von Profilen für das aktuelle Profil zu testen, und testet dann die Inhaltsbearbeitungsergebnisse gegen die Profile. Einige Ausführungsformen spezifizieren eine bestimmte Ordnung zum Testen von Profilen basierend auf der Ordnung, in der Ergebnisse wahrscheinlich ankommen, sowie basierend darauf, welche Profile am wahrscheinlichsten übereinstimmen.
  • Die 7477 zeigen beispielhaft einen Vorgang zum Übereinstimmen von Seitenprofilen einiger Ausführungsformen für vier unterschiedliche Seiten. 74 zeigt vier Seitenprofile: Eine einfache Seite 7401, eine Standardseite 7402, eine Rich-Seite 7403 und eine Layoutseite 7404. Jedes der Profile enthält mindestens ein logisches Prädikat: Insbesondere das Profil 7401 enthält drei Prädikate 74117413, das Profil 7402 enthält vier Prädikate 74217424, das Profil 7403 enthält zwei Prädikate 7431 und 7432, und das Profil 7404 enthält nur ein Prädikat.
  • 74 zeigt auch die Seite 7400, die gegen die Seitenprofile in der gezeigten Ordnung getestet wird. Die Seite 7400 enthält nur ein grafisches Objekt 7450 und Textzeilen 7460. Der Körper der Seite 7400 weist nur ein Kind auf (die Seitengrenzen, welche an sich keine Kinder haben) und das Profil für den Bereich ist einfach, da es nur eine Spalte Text in einem Layout gibt. In einigen Ausführungsformen, wenn ein Profil übereinstimmt, werden die anderen nicht getestet. Die gestrichelten Linien in 74 zeigen den Pfad durch die Prädikate, die von der Profflübereinstimmungsmaschine verwendet werden, um ein Seitenprofil für Seite 7400 zu bestimmen. Zunächst bestimmt die Maschine, ob der Körper der Seite nur ein Kind aufweist (Prädikat 7411). Da dieses Prädikat als richtig eingeschätzt wird, bestimmt die Maschine, ob das Kind keine Bereichskinder hat (Prädikat 7412, auch richtig). Sch1ießlich bestimmt die Maschine, ob das Bereichsprofil einfach ist (d. h., es gibt nur eine Spalte Text in einem Layout) (Prädikat 7413, auch richtig). Da alle drei Prädikate für die Seite 7400 richtig sind, bestimmt die Profilübereinstimmungsmaschine, dass die Seite 7400 eine einfache Seite ist. Bestimmte Verfahren (z. B. Spaltenidentifizierung) können daher für die Seite 7400 entfernt werden.
  • 75 zeigt eine zweite Seite 7500, die gegen die Seitenprofile 74017404 getestet wird. Die Seite 7500 enthält ein grafisches Objekt 7540, Zeilen 7545 der Kopfzeile und zwei Spalten von Textzeilen 7550. Der Körper der Seite 7500 weist nur ein Kind auf (die Seitengrenzen, welche an sich keine Kinder haben) und der Text im Bereich ist eine Kopfzeile und dann zwei Spalten Text. Die gestrichelten Linien in 75 zeigen den Pfad durch die Prädikate, die von der Profilübereinstimmungsmaschine verwendet werden, um ein Seitenprofil für die Seite 7500 zu bestimmen. Zunächst bestimmt die Maschine, ob der Körper der Seite nur ein Kind aufweist (Prädikat 7411). Da dieses Prädikat als richtig eingeschätzt wird, bestimmt die Maschine, ob das Kind keine Bereichskinder aufweist (Prädikat 7412, auch richtig). Die Maschine bestimmt dann, ob das Bereichsprofil einfach ist (Prädikat 7413, falsch). Da es eine Kopfzeile und zwei Spalten gibt, ist das Bereichsprofil nicht einfach und das Prädikat 7413 ist daher falsch und die Übereinstimmungsmaschine überprüft das nächste Profil. Die Prädikate 74217424 sind für die Seite 7500 alle richtig, und die Profilübereinstimmungsmaschine bestimmt daher, dass die Seite 7500 eine Standardseite ist Während dies für die Seite 7400 in 74 auch richtig ist, da das Profil der einfachen Seite 7401 zunächst eingeschätzt wird (und übereinstimmt), wurde das Profil der Standardseite 7402 für die Seite 7400 nie überprüft.
  • 76 zeigt eine dritte Seite 7600, die gegen die Seitenprofile 74017404 getestet wird. Die Seite 7600 enthält einen Hauptbereich mit mehreren Kindern, umfassend einen Kopfzeilenbereich mit Text, eine Seitenleiste, ein Hauptlayout um eine im Mittelpunkt angeordnete Seitenansprache und einen Fußbereich mit Text. Die gestrichelten Linien in 76 zeigen den Pfad durch die Prädikate, die von der Profilübereinstimmungsmaschine verwendet werden, um ein Seitenprofil für die Seite 7600 zu bestimmen. Zunächst bestimmt die Maschine, ob der Körper der Seite nur ein Kind aufweist (Prädikat 7411). Da dieses Prädikat als richtig eingeschätzt wird, bestimmt die Maschine, ob das Kind keine Bereichskinder aufweist (Prädikat 7412, falsch). Da der primäre Bereich viele Kinder aufweist, ist das Prädikat 7412 falsch und die Übereinstimmungsmaschine überprüft das nächste Profil. Aus demselben Grund ist das Prädikat 7422 falsch, die Übereinstimmungsmaschine geht daher zum dritten Profil über, und die Prädikate 7431 und 7432 werden als richtig eingeschätzt, da die Anzahl von Layouts klein ist und die Seite ein Hauptflusslayout aufweist (das Layout, das die konzentrischen Quadrate umwickelt). Die Seite 7500 wird daher als Rich-Seite klassifiziert.
  • 77 zeigt eine vierte Seite 7700, die gegen die Seitenprofile 74017404 getestet wird. Die Seite 7700 enthält einen großen Bereich mit Grafiken und eine Insel mit Text, sowie einen kleineren Bereich mit Text. Die gestrichelten Linien in 77 zeigen den Pfad durch die Prädikate, die von der Profilübereinstimmungsmaschine verwendet werden, um ein Seitenprofil für die Seite 7400 zu bestimmen. Zunächst bestimmt die Maschine, ob der Körper der Seite nur ein Kind aufweist (Prädikat 1411). Da dieses Prädikat als falsch eingeschätzt wird, überprüft die Übereinstimmungsmaschine das nächste Profil (was aus demselben Grund fehlschlägt). Bei dem dritten Profil ist das Prädikat 7432 falsch, da die Seite 7700 kein Hauptflusslayout aufweist. Das Prädikat 7441 ist immer richtig, und die Seite 7700 wird daher als Layoutseite klassifiziert. Das Prädikat 7441 ist immer richtig, da eine Seite, wenn sie es nicht geschafft hat, mit vorherigen Profilen übereinzustimmen, automatisch als Layoutseite klassifiziert wird. Wenn das Profit übereinstimmt, können Rekonstruktionsverfahren gemäß den Instruktionen im Profil ausgeführt, entfernt usw. werden.
  • VIII. Identifizierung und Auswahl von Bereichen von Interesse, und Navigation und Anzeige von Dokumenten
  • Anwendungen zum Einsehen von Dokumenten, wie ein E-Book-Lesegerät, werden oft wissen müssen, wie ein Dokument am besten angezeigt und wie innerhalb eines Dokuments am besten navigiert wird. Dies ist besonders wichtig auf Geräten mit einem kleinen Bildschirm, welche komplette Seiten von Dokumenten gleichzeitig nicht lesbar anzeigen können. Beispielsweise, in einigen Fällen, sollte ein Dokumentlesegerät in der Lage sein zu erkennen, dass ein Eintrag in der Inhaltstabelle mit einem bestimmten Abschnitt des Dokuments verlinkt ist, oder dass zwei Abschnitte des Dokuments bezogen sind (beispielsweise dass eine Seitenansprache ein Teil eines bestimmten Artikels ist, oder dass eine Spalte in die nächste fließt).
  • Einige Ausführungsformen der Erfindung verwenden Information, die von der Dokumentenrekonstruktion gewonnen wird (d. h. Absatz- und Spalteninformation, Tabelleninformation usw.) zur Anzeige und Navigation eines Dokuments. Einige Ausführungsformen passen spezifisch die Anzeige und Navigation von semantisch rekonstruierten Dokumenten zur Anzeige und Navigation auf Geräten mit einem kleinen Bildschirm (Medienwiedergabegeräte, Mobilfunktelefone usw.) an.
  • A. Identifizierung und Auswahl von Bereichen von Interesse
  • Einige Ausführungsformen geben Verfahren zum Identifizieren und Auswählen eines Bereichs von Interesse in einem semantisch rekonstruierten Dokument, und dann zum Ändern der Anzeige des Dokuments basierend auf der Auswahl des Bereichs von Interesse, an. 78 zeigt konzeptionell einen Vorgang 7800 zum Anzeigen eines Dokuments basierend auf einer Identifizierung einer Position von Interesse in einigen Ausführungsformen. Der Vorgang 7800 wird in Bezug auf 79 beschrieben werden. 79 zeigt eine Sequenz 7900 (79057920) auf einem Gerät mit einem kleinen Bildschirm, in welcher eine Position von Interesse ausgewählt und die Anzeige gemäß einigen Ausführungsformen der Erfindung geändert wird.
  • Wie in 78 gezeigt, empfängt der Vorgang 7800 (in 7805) eine Angabe einer Position von Interesse in einem semantisch rekonstruierten Dokument. In einigen Ausführungsformen enthält das semantisch rekonstruierte Dokument ein Dokumentobjektmodell, das das Ergebnis der in den Abschnitten II–IV beschriebenen Dokumentenrekonstruktion ist. Ein Dokumentobjektmodell, in einigen Ausführungsformen, enthält einen Bereichsgraph, wie oben im Abschnitt II beschrieben, nachdem er mit Inhaltsinformationen durch den Dokumentenrekonstruktionsvorgang ausgefüllt wurde. Das Dokumentobjektmodell einiger Ausführungsformen gibt auch die Leseordnung des Inhalts an (z. B. der Spalten, Absätze, Bilder usw.).
  • Einige Ausführungsformen empfangen eine Angabe einer Position von Interesse als eine Auswahl eines Punkts auf einer Anzeige. Beispielsweise kann eine Auswahl mit einer Cursorsteuergerät (z. B. einer Maus, einem Touchpad usw.) realisiert werden. Eine Position von Interesse kann auch auf einem Berührungsbildschirmgerät dadurch angegeben werden, indem ein Benutzer den Bildschirm drückt (z. B. durch einen einfachen Druck, einen doppelten Druck, eine Kniff-Bewegung usw.). In Bezug auf 79 zeigt die Sequenz 7900 (in 7905) einen Benutzer 7925, der einen Punkt auf der Anzeige 7930 auswählt, die einen Abschnitt eines Dokuments zeigt. Die Position von Interesse 7935 wird (in 7910) im Funkt in der Anzeige 7930 gezeigt, wo der Benutzer den Bildschirm berührt hat, um die Auswahl zu tätigen.
  • Anschließend identifiziert der Vorgang 7800 (in 7810) einen Bereich von Interesse im semantisch rekonstruierten Dokument. Die Sequenz 7900 zeigt (in 7915), dass der Absatz 7940 als Bereich von Interesse basierend auf der Auswahl der Position von Interesse 7935 identifiziert wurde. Einige Ausführungsformen identifizieren einen Absatz als Bereich von Interesse, wenn die Position von Interesse innerhalb des Grenzkastens des Absatzes ist, wie es mit der Position von Interesse 7935 der Fall ist.
  • Nach der Identifizierung des Bereichs von Interesse wendet der Vorgang 7800 (in 7815) benötigte Umsetzungen an, um den Bereich von Interesse in den Sichtbereich des Anzeigegeräts zu setzen. In einigen Ausführungsformen enthalten die Umsetzungen eine Kombination von Rotationen, Zooms und Translationen, wie unten in Bezug auf die Vorgänge 8000 und 8100 beschrieben wird. Anschließend zeichnet der Vorgang (in 7820) das Dokument basierend auf den angewendeten Umsetzungen. Der Vorgang wird dann beendet. Die Sequenz 7900 zeigt (in 7920), dass der Absatz 7940 eingezoomt und in den Mittelpunkt, sowohl vertikal als auch horizontal, ausgerichtet wurde, gemäß den spezifizierten Umsetzungen. In einigen Ausführungsformen zeigt der Vorgang das ursprüngliche (d. h., unstrukturierte) Dokument an, verwendet jedoch das Wissen der Positionen der strukturellen Elemente (z. B. vom strukturieren Dokument), um das Dokument zu schwenken und zoomen.
  • 80 zeigt konzeptionell einen detaillierten Vorgang 8000 einiger Ausführungsformen zum Identifizieren eines Bereichs von Interesse und Anwenden von Umsetzungen, um den Bereich von Interesse auf einem Anzeigegerät zu zeichnen. Wie gezeigt empfängt der Vorgang 8000 (in 8005) eine Position von Interesse. In einigen Ausführungsformen wird die Position von Interesse basierend auf einer Auswahl durch einen Benutzer verwendet (z. B. eine Auswahl mit einem Cursorsteuergerät oder über einen Bildschirm).
  • Basierend auf der Position von Interesse bestimmt der Vorgang dann (in 8010) ein ausgewähltes Objekt in einem semantisch rekonstruierten Dokument basierend auf einer empfangenen Position von Interesse. In einigen Ausführungsformen kann ein ausgewähltes Objekt ein Buchstabe, ein Wort, eine Textzeile, ein Bild usw. sein. In einigen Ausführungsformen enthält das semantisch rekonstruierte Dokument ein Dokumentobjektmodell (DOM), das das Ergebnis der oben in den Abschnitten II–VI beschriebenen Dokumentenrekonstruktion ist. Ein Dokumentobjektmodell, in einigen Ausführungsformen, enthält einen Bereichsgraph, wie oben in Abschnitt II beschrieben, nachdem er mit Inhaltsinformationen durch den Dokumentenrekonstruktionsvorgang ausgefüllt wurde.
  • Der Vorgang geht dann nach oben (in 8015) in der Dokumenthierarchie, bis entweder ein Absatz oder ein grafisches Objekt erreicht wird. In einigen Ausführungsformen ist die Dokumenthierarchie der Bereichsgraph, der mit Inhaltsinformationen (d. h., DOM) ausgefüllt wurde. Wenn das ausgewählte Objekt ein Wort ist, geht der Vorgang, in einigen Ausführungsformen, nach oben in der Hierarchie, vom Wort bis zur Textzeile, die das Wort enthält, bis zum Absatz, der die Textzeile enthält.
  • Der Vorgang bestimmt dann (in 8020), ob das identifizierte Objekt ein Absatz ist. Wenn das identifizierte Objekt kein Absatz ist, ist es ein grafisches Objekt. In einigen Ausführungsformen kann das grafische Objekt eines von einer Form, einem Bild oder einem verbundenen Graph (d. h., ein zusammengesetztes grafisches Objekt) sein. Wenn das identifizierte Objekt ein grafisches Objekt ist, definiert der Vorgang (in 8025) ein Rechteck von Interesse (ROI) als den rechteckigen Grenzkasten des identifizierten Objekts. Der Vorgang zoomt dann (in 8030), so dass die Breite und Höhe des ROI nicht größer als die Breite und Höhe des Anzeigebereichs sind. Der Vorgang fährt dann zu 8060 fort, der unten beschrieben wird.
  • Wenn das identifizierte Objekt ein Absatz ist, definiert der Vorgang (in 8035) ein Rechteck mit der Breite der Elternspalte des Absatzes und der Höhe des Absatzes. Der Vorgang wendet dann (in 8040) eine beliebige Rotation für den Absatz zum Rechteck und definiert das ROI als den rechteckigen Grenzkasten des rotierten Rechtecks. Ein Absatz wird rotiert, wenn er in einer Rotationsgruppe im Dokumentobjektmodell in einigen Ausführungsformen ist. Einige Ausführungsformen definieren eine Rotationsgruppe wie oben in Abschnitt II beschrieben.
  • Der Vorgang bestimmt dann (in 8045), ob die Grundlinien des Absatzes (vor der Rotation) steiler als die Diagonale des Anzeigebereichs sind. Beispielsweise, wenn der Anzeigebereich ein Quadrat ist, besteht die Bestimmung darin, ob die Grundlinien steiler oder weniger steil als 45 Grad sind. Wenn die Grundlinien des Absatzes steiler als die Diagonale des Anzeigebereichs sind, zoomt der Vorgang (in 8050) so, dass das ROI nicht größer als die Höhe des Anzeigebereichs ist. Der Vorgang fährt dann zu 8060 fort, der unten beschrieben wird. Auf der anderen Seite, wenn die Grundlinien des Absatzes nicht steiler als die Diagonale des Anzeigebereichs sind, zoomt der Vorgang (in 8055) so, dass das ROI nicht größer als die Breite des Anzeigebereichs ist.
  • Anschließend bestimmt der Vorgang 8000 (in 8060), ob das ROI (wie in den obigen Vorgängen definiert) horizontal in den Anzeigebereich passt. Wenn das ROI horizontal passt, richtet der Vorgang (in 8065) das ROI horizontal in den Mittelpunkt aus. Der Vorgang fährt dann zu 8075 fort, der unten beschrieben wird. Sonst richtet der Vorgang (in 8070) die Position von Interesse horizontal in den Mittelpunkt aus. Der Vorgang bestimmt dann (in 8075), ob das ROI vertikal in den Anzeigebereich passt. Wenn das ROI vertikal passt, richtet der Vorgang (in 8080) das ROT vertikal in den Mittelpunkt aus. Der Vorgang fährt dann zu 8087 fort, der unten beschrieben wird. Sonst richtet der Vorgang (in 8085) die Position von Interesse vertikal in den Mittelpunkt aus.
  • Anschließend bestimmt der Vorgang (in 8087) ob entweder die Fuß- oder Kopfkante der Seite, die die Position von Interesse enthält, im Anzeigebereich ist. Wenn es so ist, versetzt der Vorgang (in 8090) die sichtbare Seitenkante zur entsprechenden (d. h., Kopf- oder Fuß-)kante des Anzeigebereichs, so dass nur eine Seite angezeigt wird und der gesamte Anzeigebereich vertikal besetzt wird. Der Vorgang bestimmt dann (in 8092), ob entweder die rechte oder linke Kante der Seite, die die Position von Interesse enthält, im Anzeigebereich ist. Wenn es so ist, versetzt der Vorgang (in 8095) die sichtbare Seitenkante zur entsprechenden (d. h., rechten oder linken) Kante des Anzeigebereichs, so dass nur eine Seite angezeigt wird und der gesamte Anzeigebereich vertikal besetzt wird. Schließlich zeichnet der Vorgang (in 8197) den Anzeigebereich mit allen obigen angewendeten Umsetzungen erneut. Der Vorgang wird dann beendet.
  • Einige Ausführungsformen verwenden andere Kombinationen von Umsetzungen (z. B. Zooms, Translationen, Rotationen usw.), um einen ausgewählten Bereich von Interesse anzuzeigen. Zum Beispiel, während der Vorgang 8000 bestimmt, wie unterschiedlich für einen Bereich von Interesse gezoomt werden kann, der ein Absatz ist, im Vergleich zu einem Bereich von Interesse, der ein grafisches Objekt ist, definieren andere Ausführungsformen einen Bereich von Interesse, so dass das Zoomen das Gleiche für alle Bereiche von Interesse ist. Zum Beispiel zoomt der Vorgang 8100, der unten beschrieben wird, auf einen Bereich von Interesse auf diese Weise.
  • Die 8i zeigt konzeptionell einen detaillierten Vorgang 8100 einiger Ausführungsformen zum Identifizieren eines Bereichs von Interesse und Anwenden von Umsetzungen, um den Bereich von Interesse auf einem Anzeigegerät zu zeichnen. Der Vorgang 8100 ist ähnlich dem Vorgang 8000, der oben beschrieben wird. In einigen Ausführungsformen kann ein Benutzer auswählen, ob er die Zoom-Umsetzungen im Vorgang 8000 oder im Vorgang 8100 vorzieht. Andere Ausführungsformen implementieren einen der zwei Vorgänge. Wie gezeigt empfängt der Vorgang 8100 (in 8105) eine Position von Interesse. In einigen Ausführungsformen wird die Position von Interesse basierend auf einer Auswahl durch einen Benutzer (z. B. eine Auswahl mit einem Cursorsteuergerät oder über einen Berührungsbildschirm) verwendet.
  • Basierend auf der Position von Interesse bestimmt dann der Vorgang (in 8110) ein ausgewähltes Objekt in einem semantisch rekonstruierten Dokument basierend auf einer empfangenen Position von Interesse. In einigen Ausführungsformen kann ein ausgewähltes Objekt ein Buchstabe, ein Wort, eine Textzeile, ein Bild usw. sein. In einigen Ausführungsformen enthält das semantisch rekonstruierte Dokument ein Dokumentobjektmodell, das das Ergebnis der oben in den Abschnitten II–VI beschriebenen Dokumentenrekonstruktion ist. Ein Dokumentobjektmodell enthält in einigen Ausführungsformen einen Bereichsgraph, wie oben in Abschnitt II beschrieben, nachdem er mit Inhaltsinformationen durch den Dokumentenrekonstruktionsvorgang ausgefüllt wurde.
  • Der Vorgang 8115 geht dann (in 8115) nach oben in der Dokumenthierarchie, bis entweder ein Absatz oder ein grafisches Objekt erreicht wird. In einigen Ausführungsformen ist die Dokumenthierarchie der Bereichsgraph, der mit Inhaltsinformationen ausgefüllt wird. Wenn das ausgewählte Objekt ein Wort ist, geht dann in einigen Ausführungsformen der Vorgang nach oben in der Hierarchie, vom Wort bis zur Textzeile, die das Wort enthält, bis zum Absatz, der die Textzeile enthält.
  • Der Vorgang bestimmt dann (in 8120), ob das identifizierte Objekt ein Absatz ist. Wenn das identifizierte Objekt kein Absatz ist, dann ist es ein grafisches Objekt. In einigen Ausführungsformen kann das grafische Objekt eines von einer Form, einem Bild oder einem verbundenen Graph sein (d. h., ein zusammengesetztes grafisches Objekt). Wenn das identifizierte Objekt ein grafisches Objekt ist, definiert der Vorgang (in 8125) ein Rechteck von Interesse (ROI) als den rechteckigen Grenzkasten des identifizierten Objekts, fährt dann zu 8150 fort, der unten beschrieben wird.
  • Wenn das identifizierte Objekt ein Absatz ist, definiert der Vorgang (in 8135) ein Rechteck mit der Breite der Elternspalte des Absatzes und der Höhe des Absatzes. Der Vorgang wendet dann (in 8140) eine Rotation für den Absatz zum Rechteck an. Ein Absatz wird rotiert, wenn er in einer Rotationsgruppe im Dokumentobjektmodell in einigen Ausführungsformen ist. Einige Ausführungsformen definieren eine Rotationsgruppe wie oben im Abschnitt II beschrieben.
  • Der Vorgang definiert dann (bei 8145) das ROI als den rechteckigen Grenzkasten, der eine erste bestimmte Anzahl von Zeilen oberhalb der Position von Interesse und eine zweite bestimmte Anzahl von Zeilen unterhalb der Position von Interesse enthält. Diese Definition basiert auf der Annahme, dass ein Benutzer sich für die Position von Interesse interessiert und eine bestimmte Anzahl von Zeilen von Text oberhalb und unterhalb dieser Position von Interesse ansehen möchte.
  • Wenn das ROI definiert wurde, zoomt dann der Vorgang 8100 (in 8150) so, dass die Breite und Höhe des ROIs nicht größer als die Breite und Höhe des Sichtbereichs sind.
  • Anschließend bestimmt der Vorgang 8100 (in 8160), ob das ROI (wie in den obigen Vorgängen. definiert) horizontal in den Anzeigebereich passt. Wenn das ROI horizontal passt, richtet der Vorgang (in 8165) das ROI horizontal in den Mittelpunkt aus. Sonst richtet der Vorgang (in 8170) die Position von Interesse horizontal in den Mittelpunkt aus. Der Vorgang bestimmt dann (in 8175), ob das ROI vertikal in den Anzeigebereich passt. Wenn das ROI vertikal passt, richtet der Vorgang (8180) das ROI vertikal in den Mittelpunkt aus. Sonst richtet der Vorgang (in 8185) die Position von Interesse vertikal in den Mittelpunkt aus.
  • Nachdem die Position und/oder der Bereich von Interesse in den Mittelpunkt ausgerichtet wurden, bestimmt der Vorgang (in 8187), ob entweder die Fuß- oder Kopfkante der Seite, die die Position von Interesse enthält, im Anzeigebereich ist. Wenn es so ist, versetzt der Vorgang (in 8190) die sichtbare Seitenkante zur entsprechenden (d. h., Kopf- oder Fuß-)kante des Anzeigebereichs, so dass nur eine Seite angezeigt und der gesamte Anzeigebereich vertikal besetzt wird. Der Vorgang bestimmt dann (in 8192), ob entweder die rechte oder linke Kante der Seite, die die Position von Interesse enthält, im Anzeigebereich ist. Wenn es so ist, versetzt der Vorgang (in 8195) die sichtbare Seitenkante zur entsprechenden (d. h., rechten oder linken) Kante des Anzeigebereichs, so dass nur eine Seite angezeigt und er gesamte Anzeigebereich vertikal besetzt wird. Schließlich zeichnet der Vorgang (in 8197) den Anzeigebereich mit allen angewendeten obigen Umsetzungen erneut, und wird dann beendet.
  • B. Anzeige und Navigation von semantisch rekonstruierten Dokumenten
  • Einige Ausführungsformen geben unterschiedliche Verfahren zum Optimieren der Anzeige und Navigation von semantisch rekonstruierten Dokumenten an. In einigen Ausführungsformen werden die Anzeige und die Navigation für Geräte mit einem kleinen Bildschirm (z. B., Medienwiedergabegeräte, Mobilfunktelefone usw.) optimiert.
  • 82 zeigt konzeptionell einen Vorgang 8200 einiger Ausführungsformen. zum Anzeigen eines semantisch rekonstruierten Dokuments. Wie gezeigt, empfängt der Vorgang (in 8205) ein semantisch rekonstruiertes Dokument. In einigen Ausführungsformen enthält das semantisch rekonstruierte Dokument ein Dokumentobjektmodell, das das Ergebnis der oben in den Abschnitten II–VI beschriebenen Dokumentenrekonstruktion ist. Ein Dokumentobjektmodell in einigen Ausführungsformen enthält einen Bereichsgraph, wie oben in Abschnitt II beschrieben, nachdem er mit Inhaltsinformationen durch den Dokumentenrekonstruktionsvorgang ausgefüllt wurde.
  • Der Vorgang teilt dann (in 8205) das semantisch rekonstruierte Dokument in Abschnitte auf. In einigen Ausführungsformen basiert die Aufteilung auf Informationen im Dokumentobjektmodell für das Dokument. In einigen Ausführungsformen ist jeder Abschnitt eine geordnete Sequenz von Wörtern, verbundenen grafischen Objekten, und anderen verschachtelten Abschnitten. Die Verschachtelung kann beispielsweise als ein Beispiel oder eine Notiz in einem Kasten oder als Zellen einer Tabelle erscheinen.
  • Der Vorgang 8215 passt dann die Ansicht des rekonstruierten Dokuments an, um den natürlichen. Fluss durch die Abschnitte aufzunehmen. Der Vorgang wird dann beendet. Die Anpassungen können sich auf mehrere Weisen in einigen Ausführungsformen ausdrücken. 83 zeigt eine solche Anpassung einiger Ausführungsformen. 83 zeigt ein Gerät 8305, das anfänglich einen Abschnitt eines semantisch rekonstruierten Dokuments in zwei Spalten 8310 und 8315 anzeigt. In einigen Beispielen hatte das Dokument anfänglich zwei Spalten, während in anderen Fällen das Dokument bereits auf die Ansicht auf dem Gerät 8305 angepasst wurde.
  • 83 zeigt, dass das Gerät 8305 auf seine Seite gedreht wurde. Das Gerät enthält einen Beschleunigungsmesser oder ein anderes solches Gerät, um zu erkennen, dass es auf seine Seite gedreht wurde. Die Ansicht rotiert daher um 90 Grad, so dass der Text horizontal verläuft. Jedoch werden dieselben zwei Spalten 8310 und 8315 nicht angezeigt. Stattdessen wird der Text aus diesen Spalten in drei Spalten 83208330 aufgeteilt, so dass der ganze Text noch in derselben Größe angezeigt wird und die Lesbarkeit wird behalten. Dies ist möglich, da das Dokumentobjektmodell, das durch den semantischen Rekonstruktionsvorgang zusammengestellt wird, angibt, dass die Leseordnung des Texts von oben nach unten in der ersten Spalte fließt und dann zurück zum Kopf der ersten Spalte.
  • 84 zeigt konzeptionell einen Vorgang 8400 einiger Ausführungsformen zum Navigieren zwischen Bereichen in einem semantisch rekonstruierten Dokument. Wie gezeigt zeigt der Vorgang 8400 (in 8405) einen Bereich eines semantisch rekonstruierten Dokuments an. In einigen Ausführungsformen enthält das semantisch rekonstruierte Dokument ein Dokumentobjektmodell, das das Ergebnis der oben in den Abschnitten II–VI beschriebenen Dokumentenrekonstruktion ist. Ein Dokumentobjektmodell, in einigen Ausführungsformen, enthält einen Bereichsgraph, wie oben in Abschnitt II beschrieben, nachdem er mit Inhaltsinformationen durch den Dokumentenrekonstruktionsvorgang ausgefüllt wurde. Die Bereiche des semantisch rekonstruierten Dokuments werden durch das Dokumentobjektmodell in einigen Ausführungsformen definiert und können Textbereiche, Grafiken, usw. enthalten.
  • Der Vorgang 8400 empfängt (in 8410) eine Eingabe, die dem Ende des angezeigten Bereichs vorbeiscrollt. Das Ende kann der Fuß (Scrollen nach unten) oder der Kopf (Scrollen nach oben) des Bereichs in einigen Ausführungsformen sein. Beispielsweise, wenn ein Teil einer Textspalte angezeigt wird, empfängt der Vorgang eine Eingabe, die nach oben bis zum Kopf der Spalte oder nach unten bis zum Fuß der Spalte scrollt.
  • Der Vorgang versetzt dann automatisch (in 8415) den nächsten Bereich im Fluss des Dokuments in die Anzeige mittels des semantisch rekonstruierten hierarchischen Modells des Dokuments (das heißt das Dokumentobjektmodell). Wie oben diskutiert, kann der Vorgang mittels des Dokumentobjektmodells einen Fluss durch den Text und die assoziierten Grafiken im Dokument erkennen. Um mit dem Beispiel der Spalte fortzufahren, wenn ein Benutzer nach unten dem Ende einer Spalte vorbeiscrollt, springen einige Ausführungsformen zum Kopf der nächsten Spalte. Einige Ausführungsformen fügen stattdessen den Text des Kopfs der zweiten Spalte an den Fuß der ersten Spalte hinzu und scrollen weiter, als ob der Text gänzlich in einer Spalte wäre.
  • 85 zeigt konzeptionell einen Vorgang 8500 einiger Ausführungsformen zum Ändern eines Layouts eines semantisch rekonstruierten Dokuments für ein Gerät mit einem kleinen Bildschirm. Wie gezeigt empfängt der Vorgang (in 8505) ein semantisch rekonstruiertes Dokument mit einem bestimmten Layout. In einigen Ausführungsformen enthält das semantisch rekonstruierte Dokument ein Dokumentobjektmodell, das das Ergebnis der oben in den Abschnitten II–VI beschriebenen Dokumentenrekonstruktion ist. Ein Dokumentobjektmodell, in einigen Ausführungsformen, enthält einen Bereichsgraph, wie oben in Abschnitt II beschrieben, nachdem er mit Inhaltsinformationen durch den Dokumentenrekonstruktionsvorgang ausgefüllt wurde.
  • 86 zeigt eine Seite 8600 eines Dokuments, wie es auf einem großen Bildschirm oder ohne semantische Rekonstruktion angezeigt würde, mit einem bestimmten zweispaltigen Layout, wobei jede Spalte mehrere Textzeilen enthält. Die erste Spalte auf Seite 8600 enthält einen Satz von Wörtern 8605, die 6 volle Textzeilen und einen Teil einer siebten Zeile lang ist.
  • Der Vorgang 8500 ändert (in 8510) das Layout zum Ansehen auf einem Gerät mit einem kleinen Bildschirm, während der Fluss des Dokuments unter Verwendung des hierarchischen Modells des Dokuments (das heißt das Dokumentobjektmodell) beibehalten wird. Der Vorgang zeigt (in 8515) mindestens einen Teil des geänderten Layouts auf einem Gerät mit einem kleinen Bildschirm an. Der Vorgang wird dann beendet. 86 zeigt ein Gerät mit einem kleinen Bildschirm 8610, das den Text 8605 von der ersten Spalte der Seite 8600 anzeigt. Jedoch wurde der Text für eine ideal Ansicht auf dem Gerät mit einem kleinen Bildschirm angepasst. Statt den Text sehr klein anzuzeigen, so dass ein Benutzer die Augen zusammen kneifen muss, wird die Textgröße erhöht und die Anzahl von Wörtern pro Zeile wird reduziert. Das Scrollen nach unten würde einem Benutzer ermöglichen, den Text in der Ordnung weiterzulesen, in einigen Ausführungsformen.
  • In einigen Ausführungsformen enthält das Dokumentobjektmodell für ein Dokument Vorschläge bezüglich der Art, wie Layouts für eine Vielzahl von Situationen adaptiv angezeigt werden, bezüglich der Größen des Anzeigebereichs und der Bildformate des Anzeigebereichs. Diese Vorschläge können während des Dokumentenrekonstruktionsvorganges basierend auf den Ergebnissen der Rekonstruktion erzeugt werden, können als Benutzer Präferenzen gesetzt werden, oder können durch den ursprünglichen Autor des Dokuments, in einigen Ausführungsformen, gesetzt werden. Einige Ausführungsformen speichern die Informationen des rekonstruierten Dokuments ab (das heißt das Dokumentobjektmodell) mit dem Dokument, und können solche Benutzerpräferenzen mit dem rekonstruierten Dokument abspeichern. Einige Ausführungsformen speichern die Dokumentinformation in XML Format, oder als Metadaten eines PDF Dokuments (oder ähnliches Format) ab.
  • IX. Auswahl von Text über Layouts
  • Zusätzlich zur Anzeige und Navigation durch Dokumente kann die Fähigkeit, Text auszuwählen von großer Bedeutung für einen Benutzer sein. Komplexe Seiten mit mehreren unterschiedlichen Textflüssen (zum Beispiel mehrere Artikel), welche wiederum in mehrere Layouts aufgeteilt werden, können Schwierigkeiten bei einer Anwendung verursachen, die versucht, Text in Ordnung auf intelligente Art und Weise auszuwählen. Wenn Text ausgewählt wird (zum Beispiel zum Kopieren und Einfügen), ist es kritisch, dass die Ordnung der Buchstaben, Wörter, Textzeilen, usw, beibehalten wird. Dies umfasst nicht nur Auswahlen innerhalb einer Spalte, sondern auch Auswahlen, die über mehrere Spalten, Layouts, Bereiche, oder Seiten überspannt.
  • Einige Ausführungsformen geben Verfahren zum Auswählen von Textinhalt eines semantisch rekonstruierten Dokuments an. In einigen Ausführungsformen enthält das semantisch rekonstruierte Dokument ein Dokumentobjektmodell, das das Ergebnis der oben in den Abschnitten II–VI beschriebenen Dokumentrekonstruktion ist. Ein Dokumentobjektmodell, in einigen Ausführungsformen, enthält einen Bereichsgraph, wie oben in Abschnitt II beschrieben, nachdem er mit Inhaltsinformation durch den Dokumentrekonstruktionsvorgang ausgefüllt wurde. Das Dokumentobjektmodell einiger Ausführungsformen enthält Layout- und Flussinformationen, die die Leseordnung der Spalten innerhalb eines Layouts, und den Fluss von einem Layout bis zum nächsten.
  • 84 zeigt konzeptionell einen Vorgang 8700 einiger Ausführungsformen zum Bestimmen einer Auswahl von Text in einem semantisch rekonstruierten Dokument. Wie gezeigt empfängt der Vorgang 8700 (in 8705) Bereichs- und Layoutinformationen für ein Dokument. In einigen Ausführungsformen enthält die Bereichsinformation einen Bereichsgraph, der mit dem Inhalt des Dokuments ausgefüllt wird, wie oben in Abschnitt II beschrieben. In einigen Ausführungsformen, enthält die Layoutinformation Spalten und Layouts, wie oben in Abschnitt IV beschrieben, sowie den Lesefluss durch die Layouts und zwischen den Layouts.
  • Der Vorgang zeigt dann (in 8710) einen Teil des Dokuments an. In einigen Ausführungsformen wird das Dokument in seinen ursprünglichen Anzeigeabmessungen auf einem Standardbildschirm angezeigt. Einige Ausführungsformen zeigen jedoch das Dokument auf eine adaptive Weise unter Verwendung eines der oben im Abschnitt VIII beschriebenen Vorgänge an (zum Beispiel wenn das Dokument auf einem Gerät mit einem kleinen Bildschirm angezeigt wird).
  • Der Vorgang 8700 empfängt (in 8715) einen Startpunkt einer Auswahl. Der Vorgang empfängt auch (in 8720) einen Endpunkt der Auswahl. Einige Ausführungsformen empfangen Start- und Endpunkte durch ein Cursorsteuergerät (zum Beispiel eine Maus), eine Tastatur oder eine Kombination davon. Zum Beispiel kann eine Auswahl durch einen Benutzer, der auf einen Startpunkt im Text mit einer Maus klickt, den Mausknopf nach unten hält, zu einem Endpunkt im Text versetzt, und den Mausknopf loslässt, definiert werden. Ähnliche Vorgänge können mit anderen Cursorsteuergeräten ausgeführt werden. Einige Ausführungsformen ermöglichen auch andere Auswahlarten mit Cursorsteuergeräten – zum Beispiel durch einen Doppelklick, um ein Wort auszuwählen, oder einen Tripelklick, um eine Textzeile auszuwählen. Ein Benutzer kann auch, in einigen Ausführungsformen, Auswahltasten auf einer Tastatur (zum Beispiel Shift- und Pfeiltasten) verwenden, um Text in einem semantisch rekonstruierten Dokument auszuwählen.
  • Im Fall einer Auswahl durch Versetzen, definieren einige Ausführungsformen den Startpunkt als den Punkt, an dem die Maus zuerst angeklickt wurde, und den Endpunkt als den aktuellen Punkt des Cursors, wenn der Mausknopf nach unten gehalten wird oder als den Punkt des Loslassens des Mausknopfes, wenn er losgelassen wurde. Für Doppel- und Tripelklicks oder andere solche Auswahlmechanismen, die ein strukturelles Element (zum Beispiel einen Absatz, eine Spalte usw.) auswählen, definieren einige Ausführungsformen den Startpunkt als den linken Fuß und den Endpunkt als den rechten Kopf des Grenzkastens des strukturellen Elements. In einigen Ausführungsformen ist der Grenzkasten des strukturellen Elements der Grenzkasten der Vereinung seiner typographischen Grenzen. In einigen Ausführungsformen erstrecken sich die typographischen Grenzen für einen Buchstaben von seinem Verankerungspunkt auf der linken Seite zu seinem Verankerungspunkt zuzüglich der Breite auf der rechten Seite (möglicherweise mit einer Justierung durch Überschneidung mit dem folgenden Buchstaben) und vom Anstieg oberhalb der Verankerung bis zum Abstieg unterhalb der Verankerung.
  • Der Vorgang bestimmt dann (in 8725) den ausgewählten Abschnitt des Texts unter Verwendung des Startpunkts, des Endpunkts, und der Layout- und Flusseigenschaften des Dokuments. Der Vorgang wird dann beendet. Unterschiedliche Ausführungsformen geben unterschiedliche detaillierte Vorgänge an, wobei einige von ihnen unten beschrieben werden zum Bestimmen, welcher Text von welchen Layouts in einem semantisch rekonstruierten Dokument genau ausgewählt wird, unter Annahme eines Start- und Endpunkts im Dokument.
  • 88 zeigt eine Sequenz 8800 einer Textauswahl auf einer Seite 8801 eines semantisch rekonstruierten Dokuments. Die Seite 8801 enthält zwei Hauptspalten 8805 und 8810 und eine kleine Seitenansprache 8815 (dies ist ein unterschiedliches Layout) in der Mitte der Seite. Die Sequenz 8800 zeigt auch den Startpunkt 8820 und den Endpunkt 8825 für eine Auswahl. Die Textauswahl 8830, die von diesen Start- und Endpunkten resultiert, erstreckt sich vom Anfang bis zum Fuß der ersten Spalte, dann vom Kopf der ersten Spalte bis zum Endpunkt. Der Text in der zentralen Seitenansprache 8815 wird nicht in der gezeigten Ausführungsform ausgewählt. Ein Fachmann wird erkennen, dass Variationen in den Auswahlvorgängen möglich sind, so dass die zentrale Seitenansprache 8815 in die Auswahl 8830 eingeschlossen wird.
  • 89 zeigt konzeptionell einen detaillierten Vorgang 8900 einiger Ausführungsformen zum Definieren einer Textauswahl in einem semantisch rekonstruierten Dokument. Wie gezeigt empfängt der Vorgang 8900 (in 8905) Bereichs- und Layoutinformationen für ein Dokument. In einigen Ausführungsformen enthält Bereichsinformation einen Bereichsgraph, der mit dem Inhalt des Dokuments ausgefüllt wird, wie oben im Abschnitt II beschrieben. Layoutinformation, in einigen Ausführungsformen, enthält Spalten und Layouts, die oben im Absatz IV beschrieben, sowie den Lesefluss durch die Layouts und zwischen den Layouts.
  • Anschließend weist der Vorgang (in 8910) eine Leseordnung jeder Spalte im Dokument zu. Einige Ausführungsformen fangen bei einer Leseordnung von o auf jeder Seite an (das heißt die erste Spalte, die gelesen würde, wird der Leseordnung o zugewiesen). Einige Ausführungsformen zwingen das Erfordernis, dass, innerhalb eines bestimmten Layouts, die Leseordnung, die jeder Spalte zugewiesen wird, muss mit der Ordnung der Spalten im Layout konsistent sein und keine Spalte außerhalb eines bestimmten Layouts kann eine Leseordnung aufweisen, die zwischen denjenigen der Startspalte und Endspalte des bestimmten Layouts liegt. Was das Layout anbelangt, das zunächst in der Leseordnung kommt, ist diese Entscheidung in einigen Ausführungsformen willkürlich. Andere Ausführungsformen unterscheiden eine Leseordnung von einem Layout zum anderen basierend auf dem Design der Seite.
  • Der Vorgang zeigt dann (in 8915) einen Teil des Dokuments an. In einigen Ausführungsformen wird das Dokument mit seinen ursprünglichen Ansichtsmessungen auf einem Standardbildschirm angezeigt Einige Ausführungsformen zeigen jedoch das Dokument auf eine adaptive Weise unter Verwendung eines der oben im Abschnitt VIII beschriebenen Vorgänge an (zum Beispiel wenn das Dokument auf einem Gerät mit einem kleinen Bildschirm angezeigt wird).
  • Der Vorgang empfängt dann (in 8920) Start- und Endpunkte für eine Textauswahl. Einige Ausführungsformen empfangen Start- und Endpunkt über ein Cursorsteuergerät (zum Beispiel eine Maus) oder eine Tastatur oder eine Kombination davon. Eine Auswahl kann zum Beispiel durch einen Benutzer definiert werden, der auf einen Startpunkt im Text mit einer Maus klickt, den Mausknopf nach unten hält, zu einem Endpunkt im Text versetzt, und den Mausknopf loslässt. Ähnliche Vorgänge können mit anderen Cursorsteuergeräten ausgeführt werden. Einige Ausführungsformen ermöglichen auch andere Auswahlarten mit Cursorsteuergeräten – zum Beispiel Doppelklick, um ein Wort auszuwählen, oder Tripelklick, um eine Textzeile auszuwählen. Ein Benutzer kann auch, in einigen Ausführungsformen, Auswahltasten auf einer Tastatur (zum Beispiel Shift- und Pfeiltasten) verwenden, um Text in einem semantisch rekonstruierten Dokument auszuwählen.
  • Der Vorgang bestimmt dann (in 8925), ob die Start- und Endpunkte im selben Layout sind. Wenn die Start- und Endpunkte nicht im selben Layout sind, bestimmt der Vorgang (in 8930) einen neuen Endpunkt im selben Layout wie der Startpunkt. Einige Ausführungsformen versetzen den Endpunkt zum selben Layout wie den Startpunkt, unter der Annahme, dass der Benutzer wahrscheinlich versehentlich das Auswahlgerät zu einem zweiten Layout versetzt hat, und da Auswahlen auf zuverlässigere Weise innerhalb eines einzigen Layouts bestimmt werden können, im Gegensatz zu mehreren Layouts. Einige Ausführungsformen definieren eine Zeile vom Startpunkt bis zum Endpunkt, und die Position, wo die Zeile das Layout des Startpunkts verlässt, wird als der neue Endpunkt definiert. Andere Ausführungsformen versetzen den Endpunkt horizontal oder vertikal in das Layout des Startpunkts.
  • Der Vorgang bestimmt dann (in 8935), ob der Startpunkt vor dem Endpunkt in der Leseordnung ist. In einigen Ausführungsformen, wenn der Start- und Endpunkt in der selben Spalte sind, wird die Leseordnung so bestimmt, dass der höhere (und bei Bindung, der ganz links angeordnete) Punkt der beiden Punkte der frühere Punkt in der Leseordnung ist. Wenn der Startpunkt nach dem Endpunkt in der Leseordnung ist, tauscht der Vorgang (in 8940) den Start- und Endpunkt der Auswahl um, so dass der Startpunkt immer früher in der Leseordnung als der Endpunkt ist.
  • Der Vorgang 8900 bestimmt dann (in 8945), ob die Start- und Endpunkte in derselben Spalte sind. Wenn die beiden Punkte in derselben Spalte sind, wählt der Vorgang (in 8950) den Text in der Spalte vom Startpunkt bis zum Endpunkt aus. Der Vorgang wird dann beendet. Sonst, wenn die beiden Punkte nicht in der selben Spalte sind, wählt der Vorgang (in 8955) den Text vom Startpunkt bis zum Fuß der Spalte, die den Startpunkt enthält, vom Kopf der Spalte, die den Endpunkt enthält, bis zum Endpunkt, und alle dazwischen liegenden Spalten aus. Der Vorgang wird dann beendet. In einigen Ausführungsformen, ist der erste ausgewählte Buchstabe der Buchstabe, der entweder rechts oder auf der rechten Seite vom Startpunkt ist, und der letzte ausgewählte Buchstabe ist der Buchstabe, der entweder links oder auf der linken Seite des Endpunkts ist. In einigen Ausführungsformen, wenn der Endpunkt zwischen zwei Zeilen ist, dann wird das Ganze der obigen Zeile ausgewählt, und nichts in der unteren Zeile wird ausgewählt. Wenn der Text ausgewählt wird, wird der Vorgang beendet.
  • 90 zeigt eine Seite 9000 in einem semantisch rekonstruierten Dokument. Die Seite 9000 enthält zwei Hauptspalten 9005 und 9010 und einen in den Mittelpunkt ausgerichteten Textkasten 9015. Wie gezeigt werden diese jeweils einer Leseordnung zugewiesen (Spalte 9005 hat die Leseordnung 1, die Spalte 9010 hat die Leseordnung 2, und der Textkasten 9015 hat die Leseordnung 3). 90 zeigt auch einen Startpunkt 9020 und einen Endpunkt 9025 einer Auswahl, sowie eine Zeile 9030, die durch die Start- und Endpunkte definiert wird. 91 zeigt eine Auswahl 9100, die durch die Start- und Endpunkte 9020 und 9025 gemäß dem Vorgang 8900 definiert wird. Obwohl die Zeile 9030 einen Teil des Textkastens 9015 enthält, da sie ein unterschiedliches Layout ist, wird der Text gemäß dem Vorgang 8900 nicht ausgewählt. Stattdessen verläuft die Auswahl 9100 vom Startpunkt bis zum Endpunkt, wobei alle Zeilen in der Spalte 9005 unterhalb des Startpunktes ausgewählt werden, und alle Zeilen in der Spalte 9015 oberhalb des Startpunktes ausgewählt werden.
  • 92 zeigt auch die Seite 9000, sowie einen Startpunkt 9220 und einen Endpunkt 9225 einer unterschiedlichen Auswahl, und die Zeile 9230, die durch die Start- und Endpunkte definiert wird. 93 zeigt eine Auswahl 9300, die durch die Start- und Endpunkte 9220 und 9225 gemäß einigen Ausführungsformen des Vorganges 8900 definiert wird. Da der Endpunkt 9225 nicht im selben Layout wieder Startpunkt 9220 ist, wird der Endpunkt zu einem Punkt im selben Layout wie der Startpunkt 9220 versetzt. Die Ausführungsform, die in 93 gezeigt wird, zeichnet eine Zeile zwischen den Start- und Endpunkten und versetzt den Endpunkt zu einem Ort, wo die Zeile das Layout des Startpunkts verlässt. Die Auswahl 9300 ist das Ergebnis des Versatzes des Endpunktes 9225 zum Punkt 9305.
  • 94 zeigt einen anderen detaillierten Vorgang 9400 einiger Ausführungsformen zum Definieren einer Textauswahl in einem semantisch rekonstruierten Dokument. Einige Ausführungsformen implementieren entweder den Vorgang 8900 oder den Vorgang 9400. Andere Ausführungsformen ermöglichen einem Benutzer, zu wählen (zum Beispiel durch eine Menüoption), ob Textauswahlen mittels des Vorganges 8900 (der die Auswahlen zu einem einzigen Layout einschränkt) oder des Vorganges 9400 (der Auswahlen durch mehrere Layouts zulässt) getätigt werden.
  • Wie gezeigt empfängt der Vorgang 9400 (in 9405) Bereichs- und Layoutinformationen für ein Dokument. In einigen Ausführungsformen enthält die Bereichsinformation einen Bereichsgraph, der mit dem Inhalt des Dokuments ausgefüllt wird, wie oben im Abschnitt II beschrieben. Die Layoutinformation, in einigen Ausführungsformen, enthält Spalten und Layouts, wie oben im Abschnitt N beschrieben, sowie den Lesefluss durch die Layouts und zwischen den Layouts.
  • Der Vorgang weist dann (in 9210) eine Leseordnung jeder Spalte im Dokument zu. Einige Ausführungsformen fangen bei o auf jeder Seite an. Einige Ausführungsformen zwingen das Erfordernis, dass, innerhalb eines bestimmten Layouts, die Leseordnung, die jeder Spalte zugewiesen wird, mit der Ordnung der Spalten im Layout konsistent sein soll, und dass keine Spalte außerhalb eines bestimmten Layouts eine Leseordnung haben darf, die zwischen denjenigen der Start- und Endspalten des bestimmten Layouts liegt. Was das Layout anbelangt, das zuerst in der Leseordnung kommt, ist diese Entscheidung, in einigen Ausführungsformen, willkürlich. Andere Ausführungsformen versuchen, eine Leseordnung von Layout zu Layout basierend auf dem Design der Seite zu unterscheiden.
  • Der Vorgang 9400 zeigt dann (in 9415) einen Teil des Dokuments an. In einigen Ausführungsformen wird das Dokument mit seinen ursprünglichen Ansichtsabmessungen auf einem Standardbildschirm angezeigt. Einige Ausführungsformen zeigen jedoch das Dokument auf einer adaptiven Weise unter Verwendung einer der oben im Abschnitt VIII beschriebenen Vorgänge an (zum Beispiel, wenn das Dokument auf einem Gerät mit einem kleinen Bildschirm angezeigt wird).
  • Der Vorgang empfängt dann (in 9420) die Start- und Endpunkte für eine Textauswahl. Einige Ausführungsformen empfangen Start- und Endpunkte durch eine Cursorsteuergerät (zum Beispiel eine Maus), eine Tastatur oder eine Kombination davon. Zum Beispiel kann eine Auswahl durch einen Benutzer definiert werden, der auf einen Startpunkt im Text mit einer Maus klickt, den Mausknopf nach unten hält, zu einem Endpunkt im Text versetzt, und den Mausknopf loslässt. Ähnliche Vorgänge können mit anderen Cursorsteuergeräten ausgeführt werden. Einige Ausführungsformen ermöglichen auch andere Auswahlarten mit Cursorsteuergeräten – zum Beispiel das Doppelklicken, um ein Wort auszuwählen, oder das Tripelklicken, um eine Textzeile auszuwählen. Ein Benutzer kann auch, in einigen Ausführungsformen, Auswahltasten auf einer Tastatur (zum Beispiel Shift- und Pfeiltasten) verwenden, um Text in einem semantisch rekonstruierten Dokument auszuwählen.
  • Der Vorgang 9400 definiert dann (in 9425) eine Zeile zwischen dem Start- und Endpunkt. Wenn entweder der Start- oder Endpunkt (oder beides) nicht in einer Spalte ist (das heißt in einem unbeschriebenen Raum, eine Grafik, usw. ist), definiert dann der Vorgang (in 9430) einen neuen Startpunkt oder Endpunkt (oder beides) an der Kante der letzten Spalte, durch die die Zeile durchgeht. Einige Ausführungsformen definieren diesen Punkt an der Kante der Spalte, wo die Zeile durch die Kante durchgeht. Andere Ausführungsformen versetzen den Start- oder Endpunkt horizontal in die Spalte, um den neuen Start- oder Endpunkt zu definieren.
  • Der Vorgang bestimmt dann (in 9435), ob der Startpunkt vor dem Endpunkt in der Leseordnung ist. In einigen Ausführungsformen, wenn der Start- und Endpunkt in der selben Spalte sind, wird die Leseordnung so bestimmt, dass der höhere (und, bei Bindungen, ganz links angeordnete) Punkt der zwei Punkte der frühere Punkt in der Leseordnung ist. Wenn der Startpunkt vor dem Endpunkt ist, fährt der Vorgang zu 9445 fort, der unten beschrieben wird. Wenn der Startpunkt nach dem Endpunkt in der Leseordnung ist, tauscht der Vorgang (in 9440) den Start- und Endpunkt der Auswahl um, so dass der Startpunkt immer früher in der Leseordnung als der Endpunkt ist.
  • Anschließend wählt der Vorgang (in 9445) Text vom Startpunkt bis zum Ende der Spalte, die den Startpunkt enthält, vom Anfang der Spalte, die den Endpunkt enthält, bis zum Endpunkt, sowie alle Spalten zwischen der Start- und Endspalte in der Leseordnung, aus. Der Vorgang wird dann beendet. In einigen Ausführungsformen ist der erste ausgewählte Buchstabe der Buchstabe, der entweder rechts oder auf der rechten Seite des Startpunktes ist, und der letzte ausgewählte Buchstabe ist der Buchstabe, der entweder links oder auf der linken Seite des Endpunktes ist. In einigen Ausführungsformen, wenn der Endpunkt zwischen zwei Zeilen ist, wird dann das Ganze der obigen Zeile ausgewählt, und nicht in der unteren Zeile ausgewählt.
  • 95 zeigt eine Auswahl 9500, die durch die Start- und Endpunkte 9020 und 9025 (auf Seite 9000 der 90) gemäß dem Vorgang 9400 definiert wird. Da der Startpunkt 9020 und der Endpunkt 9025 (in 90 gezeigt) im selben Layout sind, wird der in den Mittelpunkt ausgerichtete Textkasten 9015 nicht ausgewählt, da er nach der Spalte des Endpunkts in der Leseordnung ist. Ein Benutzer, der entlang der Zeile 9015 versetzt, würde durch den Kasten 9015 durchgehen, und an diesem Punkt, würde das Ganze der Spalte 9010 und ein Teil des Textkastens 9015 ausgewählt (siehe unten in Bezug auf 96). Jedoch, wenn der Cursor den Kasten 9015 verlässt, würde nur ein Teil der Spalte 9010 bis zur Position des Cursors (Endpunkt) ausgewählt.
  • Auf ähnliche Weise zeigt 96 eine Auswahl 9600, die durch die Start- und Endpunkte 9220 und 9225 (auf Seite 9000 der 92) gemäß dem Vorgang 9400 definiert wird. Da der Endpunkt 9225 in einem Layout ist, der vom Startpunkt 9220 unterscheidet, wird das ganze Layout des Startpunktes, einschließlich des Meisten der Spalte 9005 und des Ganzen der Spalte 9010, ausgewählt. Zusätzlich wird der Text im Kasten 9015 bis zum Endpunkt 9225 ausgewählt.
  • Die 91 und 93 gegen die 95 und 96 zeigen die unterschiedlichen Auswahloptionen, die durch Verwendung von entweder dem Vorgang 8900 oder dem Vorgang 9400 zur Verfügung stehen. Ein Fachmann wird erkennen, dass andere Auswahlvorgänge möglich sind, welche das Layout und den Fluss eines Dokuments verwenden würden, um zu anderen, möglicherweise vorteilhaften, Ergebnissen zu gelangen.
  • X. Effiziente Clusteranalyse
  • Wie oben in verschiedenen Sektionen bemerkt, verwenden einige Ausführungsformen der Erfindung Clusteranalyse, um eine Dokumentenrekonstruktion auszuführen. So werden zum Beispiel Ausführungsrichtungen identifiziert unter Verwendung von Dichteclustering bzw. Dichtegruppierung, verbundene Graphen werden identifiziert unter Verwendung von Begrenzungsclustering bzw. Begrenzungsgruppierung, und Lücken zwischen Zeichen werden verwendet, um Worte zu identifizieren und Segementlücken unter der Verwendung von Differenzenclustering bzw. Differenzen- oder Unterschiedsgruppierung. Clusteranalyse kann jedoch sehr speicherintensiv sein, so dass es schwierig für eine in Ressourcen beschränkte Vorrichtung sein kann, wie einem zellulären Telefon oder einem Medienabspieler, Clusteranalyse auszuführen.
  • Dementsprechend stellen einige Ausführungsformen der Erfindung Methoden bereit, um effiziente Clusteranalyse auszuführen. In einigen Ausführungsformen erlaubt die effiziente Clusteranalyse es, dass eine Clusteranalyse auf einer in Ressourcen beschränkten Vorrichtung (z. B. einer handgehaltenen Vorrichtung) ausgeführt wird.
  • In Ressourcen beschränkte Vorrichtungen können beschränkt sein in Begriffen von verfügbarem Speicher, Verarbeitungsleistung, beidem davon, oder anderen Rechenressourcen.
  • In einigen Ausführungsformen verwendet die Clusteranalyse indirekt sortierte Felder, welche Indizes eines unsortierten Feldes speichern. Einige Ausführungsformen verwenden indirekt sortierte Datenfelder, um Daten zu mehreren unterschiedlichen Entfernungsskalen geichzeitig zu partitionieren, um schneller eine optimale Partitionierung der Daten zu finden, im Gegensatz zum Wiederholen von Clusteranalyse bei jeder unterschiedlichen Entfernungsskala und Vergleichen der Ergebnisse.
  • Die 97 zeigt konzeptionell einen Prozess 9700 einiger Ausführungsformen zum semantischen Rekonstruieren eines Dokuments unter Verwendung von Clusteranalyse. Wie gezeigt empfängt der Prozess 9700 (bei 9705) ein Dokument auf einer in Ressourcen beschränkten Vorrichtung. In einigen Ausführungsformen ist die Vorrichtung ein Medienwiedergabegerät, ein Mobiltelefon (z. B. ein iPhone®), oder eine andere handgehaltene Vorrichtung. Das Dokument ist ein Vektorgrafikdokument in einigen Ausführungsformen, das keine strukturelle Information beinhaltet.
  • Der Prozess führt dann (bei 9710) effiziente Clusteranalyse auf den Dokumentendaten auf der in Ressourcen beschränkten Vorrichtung aus. Zum Beispiel führen einige Ausführungsformen Differenzenclustering aus, um Wörter und Segmentlücken zu identifizieren, Dichteclustering, um Ausführungsrichtungen zu identifizieren, und Begrenzungsclustering, um zusammengesetzte Grafiken zu identifizieren.
  • Schließlich rekonstruiert der Prozess semantisch (bei 9715) das Dokument auf der in Ressourcen beschränkten Vorrichtung basierend auf den Ergebnissen der Clusteranalyse. Der Prozess endet dann. Die 98 zeigt eine Sequenz 9800 einiger Ausführungsformen, mit der ein Dokument 9805 semantisch rekonstruiert wird auf einer in Ressourcen beschränkten Vorrichtung 9810. Das Dokument 9805 wird anfänglich geparst (bei 9801) in eine Menge 9815 von Zeichen mit Koordinaten. Zum Beispiel hat das Zeichen 9820 (”r”) Koordinaten {X2, Y2). Einige Ausführungsformen parsen auch grafische Objekte (z. B. Bilder, Formen usw.).
  • Als nächstes wird effiziente Clusteranalyse angewendet (bei 9802) auf die Dokumentendaten. In einigen Ausführungsformen beinhaltet dies die Verwendung von Differenzenclustering, um Wörter zu identifizieren, Dichteclustering, um Führungen zu identifizieren, und Begrenzungsclustering, um zu verbindende Graphen zu identifizieren. Andere Rekonstruktionsprozesse werden auch ausgeführt (bei 9803). Zum Beispiel werden Absätze und Spalten identifiziert in einigen Ausführungsformen. Der Fachmann wird erkennen, dass in einigen Ausführungsformen die Clusteranalyseprozesse und andere Rekonstruktionsprozesse nicht notwendigerweise getrennt sind was die Reihenfolge betrifft, in denen sie ausgeführt werden. Das Ergebnis der effizienten Clusteranalyse und anderer Rekonstruktionsprozesse ist ein semantisch rekonstruiertes Dokument 9825, das angezeigt, navigiert usw. werden kann.
  • A-Clusteranalyse als eine Menge von Operatoren
  • Einige Ausführungsformen führen Clusteranalyse (sei es Differenzenclustering, Dichteclustering oder Begrenzungsclustering) basierend auf verschiedenen Operatoren aus, die auf Sequenzen echter Zahlen (r1, r2, ..., rN) angewandt werden. Einige Ausführungsformen beinhalten die folgenden Operatoren:
    • – Einen Differenzenoperator D((r1, r2, ..., rN)) = (r2 – r1, r3 – r2, ..., rN – rN-1). Der Differenzenoperator D definiert in einigen Ausführungsformen eine paarweise Gruppierung der Elemente rN (d. h. definiert Werte für die Paare {r2, r1}, {r3, r2} usw.).
    • – Einen Sortieroperator S((r1, r2, ..., rN)) = (s1, s2, ...sN), wo (s1, s2, ...sN) eine Permutation von (r1, r2, ..., rN), so dass s1 ≤ s2 ≤ ... ≤ sN.
    • – Einen Partitionieroperator P(g, (r1, r2, ..., rN)) = ((r1, ..., rK1), (rK1+1, ..., rK2), (rKp+1, rKM), (rKM+1, ..., rN), worin rJ+1 – rJ ≥ g dann und nur dann, wenn J in der Menge {K1, ... KM} ist. In einigen Ausführungsformen wird die Variable g als ein Lückenminimum bezeichnet und der Operator P partitioniert die Sequenz (r1, r2, ..., rN) in nicht überlappende Untersequenzen überall dort, wo der Unterschied zwischen zwei aufeinander folgenden Werten das Lückenminimum überschreitet.
    • – Einen Verbindungsoperator C, der rekursiv auf einer partitionierten Sequenz (wie der Ausgabe des Operators P) arbeitet, um benachbarte Paare von Untersequenzen in eine einzelne Untersequenz zu verbinden eine beliebige Anzahl von Malen. In einigen Ausführungsformen sind die Tests zum Bestimmen, wann benachbarte Paare zu verbinden sind, domänenunabhängig.
    • – Einen Filteroperator F, der auf einer partitionierten Sequenz arbeitet, um einige der Cluster zu entfernen basierend auf Tests, die domänenunabhängig sind. Die Dichtebeschränkungen bzw. -bedingungen, die oben in Abschnitt III diskutiert wurden, sind ein Beispiel der Verwendung von F.
  • Einige Ausführungsformen von Differenzenclustering werden ausgeführt in Begriffen der obigen Operatoren. Auf ähnliche Weise, da Begrenzungsclustering Differenzenclustering mit Spreizwerten substituiert für Differenzen erster Ordnung verwendet, werden einige Ausführungsformen von Begrenzungsclustering in Begriffen der obigen Operatoren ausgeführt.
  • Zum Beispiel wenden einige Ausführungsformen den Sortieroperator S auf Eingabedaten an, gefolgt von dem Differenzenoperator D, um Differenzen erster Ordnung zu erzeugen. S und D werden dann auf die resultierenden Daten angewandt, um Differenzen zweiter Ordnung zu erzeugen (Differenzen zwischen den Differenzen). Die Differenzen zweiter Ordnung werden mit S sortiert und die Differenzen zweiter Ordnung werden dann aufgeteilt in zwei disjunkte Untersequenzen (die Intra-Ebenen-Differenzen und die größeren Inter-Ebenen-Differenzen).
  • In einigen Ausführungsformen beinhaltet das Aufteilen ferner die Anwendung von D auf die Differenzen zweiter Ordnung, um Differenzen dritter Ordnung zu erhalten, gefolgt von S, um die dritten Differenzen zu ordnen. Das Aufteilen in den Differenzen zweiter Ordnung erfolgt im Allgemeinen, wo es eine Differenz dritter Ordnung gibt, die wesentlich größer als der Rest ist. Einige Ausführungsformen evaluieren auch domänenspezifische Faktoren.
  • Sobald die Aufteilung etabliert wurde, wenden einige Ausführungsformen P an unter Verwendung eines Lückenminimums gleich der kleinsten Inter-Ebenen zweiten Differenz, um die geordneten ersten Differenzen zu partitionieren, so dass jede Partition eine Clusterebene repräsentiert. Einige Ausführungsformen wenden C auf diese Partition an, während andere dies nicht tun mögen. Um die Daten in Cluster einer bestimmten Ebene zu partitionieren wenden einige Ausführungsformen P auf die (sortierten) Eingabedaten an unter Verwendung eines Lückenminimums gleich der kleinsten Differenz bei den bestimmten Ebenen. Einige Ausführungsformen wenden zu diesem Zeitpunkt auch C an, jedoch oftmals mit unterschiedlichen Kriterien zum Vereinigen der Clusterpartitionen als für die Ebenenpartitionen. Schließlich wenden einige Ausführungsformen Fan, um einige der Cluster zu disqualifizieren.
  • Einige Ausführungsformen des Dichteclusterings werden auch in Begriffen der obigen Operatoren ausgeführt. Zum Beispiel wenden einige Ausführungsformen S an, gefolgt von D, auf die Eingabedaten, um Differenzen erster Ordnung zu erzeugen, und wenden S an, um die Differenzen zu sortieren. Für jede der Differenzen d partitionieren einige Ausführungsformen die geordneten Eingabedaten mit dem Operator P unter Verwendung eines Lückenminimums d, filtern dann die Partitionen unter Verwendung von Dichtebeschränkungen. Jede der Partitionen nach Filtern wird gemessen durch eine Optimierungsmetrik und die optimale Partition wird ausgewählt als das finale Clustering. Einige Ausführungsformen laufen wiederholt durch die Differenzen erster Ordnung (als Lückenminima) beginnend mit der größten und bewegen sich sukzessive zu kleineren Werten in der geordneten Sequenz.
  • In einigen Ausführungsformen kann die Schleife frühzeitig abgebrochen werden der Effizienz wegen, wenn es genügend Informationen gibt. Genauer erkennen einige Ausführungsformen, dass jede sukzessive Partition die vorhergehende Partition ist, mit einem der Cluster aufgeteilt in zwei Cluster. Einige Ausführungsformen erkennen auch, dass Cluster, die eine Dichtebeschränkung einer minimalen Größe nicht erfühlen, eine solche Beschränkung in Zukunft niemals erfüllen werden, daher können diese Cluster verworfen werden. Sobald alle Cluster in einer Partition unter die minimale Größe gefallen sind, wird die Schleife in einigen Ausführungsformen vorzeitig beendet.
  • B. Effiziente Datenstrukturen für die Clusteranalyse
  • Einige Ausführungsformen führen effiziente Clusteranalyse aus, indem sie effiziente Datenstrukturen verwenden, welche Einsparungen in Speicher und Verarbeitung erlauben. Wenn zum Beispiel Daten sortiert werden (z. B. Anwenden des Operators S auf Eingangsdaten), anstelle eines neuen Datenfeldes für die Daten zu erzeugen, definieren einige Ausführungsformen ein Feld von Indizes in das Feld unsortierter Daten, wobei die Indizes sortiert sind in der Reihenfolge der Werte, die sie referenzieren. Dies wird als ein indirekt sortiertes Feld in einigen Ausführungsformen bezeichnet. Ein Fachmann wird verstehen dass, während die Beispiele Felder verwenden, jede andere geeignete Datenstruktur auch verwendet werden kann.
  • Die 99 zeigt konzeptionell einen Prozess 9900 einiger Ausführungsformen zum Partitionieren einer Datenmenge unter Verwendung indirekt sortierter Felder. Der Prozess 9900 wird in Verbindung mit der 100 beschrieben werden. Die 100 zeigt die Partitionierung einer Datenmenge mit neun Dateneinträgen (0.00, 7.43, 17.14, 25.46, 26.60, 30.35, 34.25, 39 und 46.97). Wie in 99 gezeigt empfängt der Prozess 9900 (bei 9905) ein sortiertes Feld A mit Datenwerten, die zu clustern sind. In einigen Ausführungsformen sind die Daten Zeichenortdaten zum Identifizieren von Wörtern in einem Dokument oder zum Identifizieren von Ausrichtungsführungen. Mit Bezug auf die 100 ist die Datenmenge in einem sortierten Feld A 10010 gespeichert, mit Indizes A[0] – A[8].
  • Danach definiert und speichert (bei 9910) der Prozess 9900 als nächstes ein Feld D(A) Differenzen erster Ordnung des Feldes A, indem er Paare aufeinander folgender Werte des Feldes A vergleicht. In einigen Ausführungsformen wird das Feld D(A) unter Verwendung des Operators D, der oben beschrieben ist in Unterabschnitt A, erzeugt. Die 100 zeigt das Feld D 10015, welches die Differenzen erster Ordnung zwischen den Daten speichert. Zum Beispiel ist der Wert in Index D[3] der Wert in Index A[3], subtrahiert von dem Wert in Index A[4] des Feldes A 10010.
  • Als nächstes definiert und speichert (bei 9915) der Prozess ein indirekt sortiertes Feld S(D(A)) der Indizes von D(A), indem er eine Sortierungsfunktion auf das Feld D(A) anwendet. In einigen Ausführungsformen ist die Sortierungsfunktion der Operator S, der oben im Unterabschnitt A beschrieben ist. Die 100 zeigt das indirekt sortierte Feld S(D) 10020, welches die Werte des Feldes D 10015 sortiert. Der erste Wert in dem Feld 10020 (”3”) referenziert den Index 3 des Feldes D 10015, welches der kleinste der Differenzen erster Ordnung ist (”1.14”). Der zweite Wert in dem Feld 10020 referenziert den Index 4 des Feldes D 10015, welches der zweit kleinste Differenz erster Ordnung ist, und so weiter.
  • Der Prozess bestimmt dann (bei 9920) die minimale Größe der Lücken zwischen Clustern, die zu verwenden sind bei der Partitionierung der Daten. In einigen Ausführungsformen ist dies das Lückenminimum g zur Verwendung mit dem Partitionierungsoperator P wie oben im Unterabschnitt A beschrieben. Die minimale Lückengröße ist spezifiziert durch einen Benutzer in einigen Ausführungsformen oder ist ein Wert, der inhärent dem Problem ist, das gelöst wird, in einem anderen. Einige Ausführungsformen verwenden mehrere Partitionen (z. B. in dem Falle von Dichteclustering), so dass unterschiedliche Lückenminima basierend auf den Daten verwendet werden.
  • Als nächstes partitioniert der Prozess 9900 (bei 9925) die Daten in Cluster unter Verwendung fortlaufender Indizes, die in dem Feld S(D(A)) gespeichert sind. Der Prozess speichert dann (bei 9930) die Partition. Der Prozess endet dann. Einige Ausführungsformen verwenden die Indizes, die in dem indirekt sortierten Feld gespeichert sind, um die Daten zu partitionieren. In einigen Ausführungsformen wird der Index, der gespeichert ist in S(D(A)) entsprechend der kleinsten Differenz erster Ordnung, die größer ist als das Lückenminimum (d. h., dem effektiven Lückenminimum) dem Index in dem sortierten Feld von Daten entsprechen, nach dem die Daten aufgeteilt werden sollten. Alle Indizes, die in dem Feld S(D(A)) nach dem effektiven Lückenminimum gespeichert sind, werden auch anzeigen, wo die sortierten Daten aufzuteilen sind, da sie Lücken repräsentieren, die größer als das Lückenminimum sind.
  • Die 100 zeigt, dass das effektive Lückenminimum in diesem Beispiel 7.97 ist, was in Index 7 im Feld D 10015 ist. Daher hat die Partition 10025 von Daten vier Cluster, da sie aufgeteilt wird an drei Orten (nach den Indizes 7,2 und 1). Einige Ausführungsformen speichern die Partition als Einzelindex des Feldes S(D(A)). Die Partition 10025 wird als Index 10030 gespeichert, der einen Wert von 5 hat. Dies zeigt an, dass der Index, der dem effektiven Lückenminimum entspricht, gespeichert ist beim Index 5 des Feldes 10020 und daher sind die Indizes zum Partitionieren der Daten gespeichert bei Indizes 5 und höher des Feldes 10020.
  • Der obige Prozess 9900 erlaubt vielfache Verarbeitungs- und Speichereffizienzen für die Clusteranalyse. Als Erstes wird durch das Speichern der Indizes (die Ganzzahlen sind) anstelle der Dezimalwerte der tatsächlichen Daten Speicherplatz eingespart. Als Zweites, da anstelle des tatsächlichen Sortierens der Partition als mehrere getrennte Felder, diese als ein einzelner ganzzahliger Wert gespeichert ist, der einen Index des indirekt sortierten Feldes referenziert, was wesentliche Speichereinsparungen mit sich bringen kann, wenn zahlreiche Partitionen für große Felder von Daten evaluiert werden. Als Drittes können die Indizes, bei denen die Daten zu partitionieren sind, schnell aus dem indirekt sortierten Feld abgelesen werden, was wesentlich Verarbeitungszeit einspart.
  • Diese Effizienzen können auf zahlreichen Wegen zunutze gemacht werden, um Clusteranalyse auszuführen. Die 101 zeigt konzeptionell einen Prozess 10100 einiger Ausführungsformen zum Ausführen von Clusteranalyse bei mehreren Entfernungsskalen gleichzeitig. In einigen Ausführungsformen macht sich der Prozess 10100 die Effizienzen, die von dem Prozess 9900 dargeboten werden, zunutze. Wie gezeigt definiert (bei 10105) der Prozess 10100 ein indirekt sortiertes Feld von Differenzen von Datenwerten, die zu clustern sind. Dies ist ein Feld wie das Feld 10020 von 100 und in einigen Ausführungsformen gelangt man zu diesem durch Sortieren der Eingangsdatenwerte, Bilden der Differenzen erster Ordnung und dann Sortieren dieser.
  • Der Prozess 10100 partitioniert dann (bei 10110) die Datenwerte bei verschiedenen unterschiedlichen Entfernungsskalen gleichzeitig. In einigen Ausführungsformen bedeutet dies, dass mehrere Partitionen erzeugt werden für die Daten unter Verwendung unterschiedlicher Lückenminima. So wird zum Beispiel in dem Fall des Dichteclusterings jede mögliche Partition erzeugt in einigen Ausführungsformen. In einigen Ausführungsformen, da die Differenzen erster Ordnung sortiert werden mit einem indirekt sortierten Feld, können die Partitionierungsorte für die Daten schnell abgelesen werden als die Indizes, die in dem indirekt sortierten Feld gespeichert sind.
  • Als nächstes speichert der Prozess (bei 10115) jede Partition als einen ganzzahligen Wert mit Bezug auf einen Index des indirekt sortierten Feldes. Der ganzzahlige Wert 10030 der 100 ist ein Beispiel des Speicherns einer Partition als einen einzelnen ganzzahligen Wert. Der Prozess bestimmt dann (bei 10120) die optimale Entfernungsskala (und damit die optimale Partition). Zum Beispiel verwenden einige Ausführungsformen ein Optimierungsmaß wie es beschrieben ist für Dichteclustering oben in Abschnitt III. Ferner eliminieren einige Ausführungsformen einige der Cluster in einer Partition unter Verwendung von Beschränkungen vor dem Testen der Partition gegen das Optimierungsmaß.
  • Schließlich, sobald die optimale Entfernungsskala bestimmt ist, speichert der Prozess (bei 10125) die Partition von Daten, die abgeleitet ist aus der optimalen Entfernungsskala, als die Menge an Clustern für das Problem, das gelöst wird. Der Prozess endet dann. In einigen Ausführungsformen wird die Menge von Clustern gespeichert als ein neues Feld, sobald bestimmt ist, dass dies die optimale Menge ist.
  • Während die obigen Beschreibungen die Effizienzen anzeigen, die gewonnen werden für wiederholte Verwendung des Partitionierungsoperators, sind die Speicher- und Verarbeitungseffizienzen der indirekt sortierten Felder und Speichern einer Partition als einen einzelnen Wert auch anwendbar auf andere Aspekte der Clusteranalyse. Zum Beispiel kann sich der Verbindungsoperator vorteilhaft derselben Effizienzen bedienen in einigen Ausführungsformen.
  • Wie oben bemerkt, verbindet der Verbindungsoperator C einiger Ausführungsformen benachbarte Cluster in einer Partition, möglicherweise wiederholt. Das Verbinden benachbarter Cluster kann repräsentiert werden als Entfernen einer Trennung in einer Partition. Da jede dieser Trennungen einem der aufeinander folgenden Indizes in einem indirekt sortierten Feld entspricht, kann das Verbinden von Clustern definiert werden als Disqualifizieren bestimmter Indizes aus der Sequenz. Als solches können die Ergebnisse des Anwendens des Verbindungsoperators auf eine Partition eine Sequenz (z. B. ein Feld) von qualifizierenden Indizes (d. h., Indizes, bei denen die neue Partition getrennt wird) sein. Speichern solch einer Untersequenz ist viel schneller in einigen Ausführungsformen als direktes Umherbewegen der Daten in den Clustern, die verbunden werden.
  • Weiterhin wird durch das Verbinden von Clustern von Differenzen (was effektiv eine Kombination von Ebenen von Differenzen ist) die Effizienz, mit der die Datencluster (im Gegensatz zu den Differenzenclustern) schnell abgelesen werden können für eine bestimmte gewählte Ebene nicht negativ beeinträchtigt. Selbst nach Verbinden der Cluster von Differenzen sind die Indizes in den L-ten indirekt sortierten Clustern von Differenzen und höher die Trennungspunkte für die Datencluster bei Ebene L. Die Veränderung aufgrund des Verbindens ist, dass es weniger indirekt sortierte zweite Differenzen geben wird, welche bestimmen, wo jeder indirekt sortierte erster Differenzencluster beginnt.
  • Da der Filteroperator (der Cluster von Daten eliminiert basierend auf Beschränkungen) nur auf Cluster von Daten angewandt wird (nicht auf Cluster von Differenzen), wurden die Datencluster bereits bestimmt, wenn der Filteroperator angewandt wird, und daher beeinträchtigt dies nicht die Effizienzen, die erhalten werden durch die obigen Implementierungen der Partitionierungs- und Verbindungsoperatoren.
  • Effizienzen können auch gewonnen werden beim Trennen der zweiten Differenzen in Intra-Ebenen und Inter-Ebenen zweiten Differenzen, das ausgeführt wird beim Differenzenclustern wie oben beschrieben in Abschnitt IV. In einigen Ausführungsformen mögen die Bedingungen, die verwendet werden, um einen Trennungspunkt zu bestimmen, vom Clustern von ersten Differenzen und den Daten, die resultieren würden, abhängen. Daher profitiert die Evaluierung dieser Bedingungen direkt von den Effizienzen im Bestimmen von Partitionen von Differenzen (und daher Partitionen von Daten).
  • In dem Fall von Differenzenclustering zum Beispiel, wie es auf Dokumentenrekonstruktionen angewandt wird, wird das Aufspalten von zweiten Differenzen verwendet, um Wortbrüche und Segmentbrüche (z. B. Zeile, Tabulator usw., Lücken) auf einer Textzeile zu bestimmen, welche Differenzen erster Ordnung bzw. größer als erster Ordnung entsprechen. In einigen Ausführungsformen ist es das Ziel, die zweiten Differenzen so aufzuspalten, dass das Minimum des zweiten Clusters erster Differenzen nicht viel kleiner ist als die erwartete Leerzeichenbreite für den anwendbaren Font. Weiterhin wäre es ein sekundäres Ziel, dass die Datencluster (von denen jeder ein Wort ist) eine mittlere Größe haben, die typisch für Wörter in der anwendbaren Sprache ist. Potentielle Trennungspunkte können bewertet werden vergleichsweise geringer abhängig davon, wieweit die resultierenden Cluster erster Differenzen und die Cluster von Daten sich unterscheiden würden von diesen Erwartungen. Solch eine Bewertung kann in einigen Ausführungsformen kombiniert werden mit anderen Maßen, angewandt direkt auf die zweiten Differenzen (z. B. die relative Größe der Aufspaltung, das Perzentil der Aufteilungsposition, und der prozentualen Zunahme bei der Aufspaltung) in einer Formel, welche den optimalen Aufteilungspunkt bestimmt. Das wiederholte Testen unterschiedlicher Aufspaltungen in den zweiten Differenzen kann signifikant effizienter gemacht werden durch die oben beschriebenen Prozesse.
  • Ein Fachmann wird erkennen, dass, während Clusteranalysen und die spezifischen effizienten Techniken, die oben beschrieben wurden, hauptsächlich beschrieben wurden mit Bezug auf deren Verwendung zur Dokumentenrekonstruktion, diese auch anwendbar sind auf jedes Problem, in dem es eine Menge gibt, eine Entfernungsfunktion auf Paaren von Elementen der Menge, und eine Notwendigkeit, Untermengen von Elementen zu identifizieren, die getrennt sind durch Entfernungen, die klein sind in Begriffen relativ zu der Menge. Zum Beispiel kann Clusteranalyse angewandt werden auf Analysieren von Benutzerinteraktionen mit einer Anwendung, Website oder Video durch Clustern von Positionsdaten, die erfasst werden durch Messen von Augenbewegungen, Mausbewegungen oder Berührungsbildschirminteraktionen. Als ein anderes Beispiel kann ein Rasterbild (d. h., eine Bitmap) komprimiert werden durch Reduzieren der Anzahl an Farben, die verwendet werden, um dieses zu codieren. Clusteranalyse kann verwendet werden auf der ursprünglichen Menge an Farben, um eine reduzierte Menge an Farben auszuwählen, so dass jeder Cluster von Farben ersetzt wird durch eine einzelne Farbe (oftmals gleich einem Mittelwert von dessen Mitgliedern). Ein nochmals weiteres Beispiel ist, dass einige Bilderkennungstechniken (z. B. biometrische, optische Zeichenerkennung, Währungsvalidierung usw.) und Vektorisierung von Rasterbildern von Clustern von Pixeln in einem metrischen Raum abhängen, definiert durch räumliche und Farbkoordinatenachsen. Als ein letztes Beispiel werden Muster in experimentellen Daten (z. B. wissenschaftliche oder geschäftliche Daten) oftmals aufgefunden durch Plotten von Datenpunkten in einem Raum, dessen Achsen die Parameter von Interesse sind. Clusteranalyse kann auf diese Daten angewandt werden, wobei bemerkt wird, dass alle Punkte in einem gegebenen Cluster ungefähr dieselben Werte von allen Parametern von Interesse haben.
  • C. Softwarearchitektur
  • In einigen Ausführungsformen wird die oben beschriebene Clusteranalyse als Software implementiert, die auf einer bestimmten Maschine läuft, wie einem Computer, einem Medienwiedergabegerät, einem Mobiltelefon (z. B. ein iPhone®), oder anderen handgehaltenen oder in Ressourcen beschränkten Vorrichtungen (oder gespeichert in einem Computer-lesbaren Medium). Die 102 zeigt konzeptionell die Softwarearchitektur einer Clusteranalyseanwendung 10200 einiger Ausführungsformen zum Ausführen von Clusteranalyse. In einigen Ausführungsformen ist die Anwendung eine alleinstehende Anwendung oder ist in eine andere Anwendung integriert (z. B. eine Anwendung zur Dokumentenrekonstruktion), während in anderen Ausführungsformen die Anwendung innerhalb eines Betriebssystems implementiert sein kann.
  • Die Clusteranalyseanwendung 10200 beinhaltet ein Dichteclusterungsmodul 10205, ein Differenzenclustermodul 10210 und ein Begrenzungsclustermodul 10215. Die Anwendung beinhaltet auch ein Sortiermodul 10220, Differenzbildungsmodul 10225, Partitioniermodul 10230, Verbindungsmodul 10235 und Filtermodul 10240, sowie einen Clusteranalysespeicher 10245.
  • Die 102 zeigt auch einen Dokumenteninhalt 10250. Der Fachmann wird erkennen, dass die Clusteranalyseanwendung 10200 für andere Prozesse verwendet werden könnte, die Clusteranalysen verwenden, die sich nicht auf Dokumentenrekonstruktion beziehen. Dass Dichteclustermodul 10205, Differenzenclustermodul 10210 und Begrenzungsclustermodul 10215 empfangen alle Informationen (z. B. Positionsdaten primitiver Elemente) von dem Dokumenteninhalt 10250. Das Dichteclustermodul 10205 führt Dichteclustering wie oben in Abschnitt III beschrieben aus, teilweise durch Verwenden der Module 10220 bis 10240. Das Differenzclustermodul 10201 fuhrt Differenzenclustern wie oben in Abschnitt IV beschrieben aus, teilweise unter Verwendung der Module 10220 bis 10240. Das Begrenzungsclustermodul 10215 führt Begrenzungsclustering aus wie oben in Abschnitt N beschrieben, teilweise unter Verwendung der Module 10220 bis 10240. Die Ausgabe der Module 1020510215 wird zurückgeliefert zu dem Dokumenteninhalt 10250.
  • In einigen Ausführungsformen führen die fünf Module 10220 bis 10240 Operationen aus, die assoziiert sind mit den fünf Operatoren, die oben in Unterabschnitt A beschrieben wurden. Das Sortiermodul 10220 einiger Ausführungsformen empfängt Daten von einem der Module 10205 bis 10215 und ordnet die Daten (z. B. vom geringsten Wert zum höchsten Wert). Das Differenzenbildungsmodul 10225 einiger Ausführungsformen empfängt Daten von einem der Module 10205 bis 10215 und bestimmt die Differenzen zwischen benachbarten Datenelementen. Das Partitionierungsmodul 10235 einiger Ausführungsformen empfängt Daten von einem der Module 10205 bis 10215 und partitioniert die Daten in mehrere Untermengen. Das Verbindungsmodul 10235 einiger Ausführungsformen empfängt Daten als mehrere Untermengen von einem der Module 10205 bis 10215 und vereinigt benachbarte Untermengen gemäß verschiedenen Bedingungen. Das Filtermodul 10240 einiger Ausführungsformen empfängt eine partitionierte Sequenz von Daten in einigen Ausführungsformen und filtert Partitionen heraus basierend auf verschiedenen Bedingungen.
  • Die Module 10220 bis 10240 speichern Daten im Clusteranalysespeicher 10245 und liefern die Daten zurück zu den Modulen 10205 bis 10215. In einigen Ausführungsformen speichert das Sortiermodul 10220 seine Ergebnisse in Clusteranalysespeicher 10245 als ein sortiertes Feld von Indizes (d. h., ein indirekt sortiertes Feld). Das Partitionierungsmodul speichert in einigen Ausführungsformen Partitionen in dem Clusteranalysespeicher 10245 als einen einzelnen ganzzahligen Wert, der einen Index eines indirekt sortierten Felds referenziert.
  • XI. Effiziente Datenstrukturen zum Parsen und Analysieren eines Dokuments
  • Einige Ausführungsformen der Erfindung stellen neue Verfahren und Datenstrukturen bereit, die ein effizienteres Parsen und Analysieren eines Dokuments erlauben. Einige Ausführungsformen stellen ein Anwendungsprogrammierinterface (API) zur Verfügung, welches redundante Kopien von Daten minimiert, während die Daten manipuliert werden. In einigen Ausführungsformen ist ein API ein Satz von Funktionen, Prozeduren, Methoden, Klassen oder Protokollen, die ein Betriebssystem, eine Bibliothek, ein Dienst oder ein Rahmenwerk bereitstellt, um Anforderungen zu unterstützen, die durch Computerprogramme gemacht werden. In einigen Ausführungsformen ist das API statisch gelinked, während in anderen Ausführungsformen ein API dynamisch gelinked ist.
  • Typischerweise liefern APIs Kopien interner Daten zurück oder geben nur lesenden Zugriff auf interne Daten, die dann kopiert werden müssen, bevor sie auf irgendeine Weise manipuliert werden. Dies erzeugt viele Ebenen redundanter Daten, was die Verarbeitung verlangsamt und ein Übermaß an Speicher konsumiert. Einige Ausführungsformen lösen dieses Problem, indem sie Objekte von deren Daten entkoppeln, so dass Objekt-APIs optimal für einen Programmierer gemacht werden können, während gleichzeitig die Datenstrukturen optimal mit Bezug auf Performanz und Speicherverbrauch gemacht werden können. Einige Ausführungsformen verwenden solch ein API zum Rekonstruieren eines Dokuments wie oben beschrieben in den Abschnitten II–X. Ein Fachmann wird jedoch erkennen, dass solch ein API für jede Art von Analyse von geparsten Eingabedaten verwendet werden kann.
  • Einige Ausführungsformen stellen ein API bereit, das für einen Benutzer (z. B. einen Programmierer) oder eine Software-Anwendung, welche die API benutzt, so erscheint als hätte der Benutzer seine eigene unabhängige, veränderbare Kopie der Klassenmitglieder des APIs ohne explizite Beschränkungen. Mit anderen Worten erscheint es dem Benutzer so, als ob jedes Objekt, das durch die API zurückgeliefert wird, von dem Benutzer vollständig veränderbar ist. In einigen Ausführungsformen jedoch werden die Objekte lediglich sich selbst kopieren wenn absolut notwendig und in den meisten Fällen werden sie Speicher auf solche eine Weise verwalten, um die Menge an Speicher, die tatsächlich verwendet wird, zu minimieren. Die Speicherverwaltung einiger Ausführungsformen wird gemacht unter Verwendung eines sortierten Feldes von Zeigern bzw. Pointern, das ein geteiltes Speicherobjekt hat, das die Verwendung der Zeiger durch andere Objekte nachverfolgt. In einigen Ausführungsformen können zahlreiche Objekte alle dasselbe Zeigerfeld referenzieren durch das gemeinsame Speicherobjekt, was substantielle Speichereinsparungen erlaubt im Vergleich zu dem Erstellen von Kopien bei jedem Schritt der Analyse. Ein Fachmann wird erkennen, dass während Zeiger verwendet werden, um bestimmte Merkmale unten zu beschreiben, jede Art von referenzieller Datenstruktur verwendet werden könnte.
  • A. Dokumentenrekonstruktion mit geteilten Zeigern
  • Einige Ausführungsformen verwenden ein API so wie es oben beschrieben ist, um ein Dokument zu rekonstruieren. Die 103 zeigt konzeptionell einen Prozess 10300 einiger Ausführungsformen zum effizienten Rekonstruieren eines Dokuments. Der Prozess 10300 wird beschrieben werden in Verbindung mit der 104. Die 104 zeigt eine Sequenz, mit der ein Dokument 10400 geparst wird und analysiert wird gemäß dem Prozess 10300.
  • Wie in 103 gezeigt, empfängt der Prozess 10300 (bei 10305) einen Teil eines Dokuments. In einigen Ausführungsformen ist der Dokumententeil eine Seite und der Prozess arbeitet auf der Basis Seite-um-Seite. In anderen Ausführungsformen ist der Dokumententeil ein gesamtes Dokument, ein Abschnitt eines Dokuments oder eine Zone auf einer Seite. Der Prozess parst dann (bei 10310) das Dokument, um die Zeichen in dem Dokumententeil zu bestimmen und speichert (bei 10315) ein Feld von Zeichen für die geparsten Daten.
  • Die 104 zeigt, dass das Dokument 10400 geparst ist in ein zufällig geordnetes Feld 10405 von Zeichen. Während diese Beispiele Felder verwenden, wird der Fachmann verstehen, dass jede andere geeignete Datenstruktur verwendet werden kann. In einigen Ausführungsformen beinhaltet das Parsen des Dokuments das Lesen eines Stroms von Bytes, welche das Dokument repräsentieren, und das Umwandeln dieses Stroms in eine verwendbare Repräsentation (wie das Zeichenfeld) der Information in dem Strom. Die Zeichen in dem Strom werden in einer zufälligen Reihenfolge gelesen in einigen Ausführungsformen, was der Grund dafür ist, dass die Ordnung des Feldes 10405 zufällig ist. Die Zeichen einiger Ausführungsformen haben Koordinaten und/oder Seitennummern. In einigen Ausführungsformen wird jedes Zeichen gespeichert als ein Objekt, das die assoziierten Koordinaten oder Seitennummernwerte beinhaltet.
  • Der Prozess 10300 definiert (bei 10320) ein sortiertes Feld von Zeigern bzw. Pointern, das die Zeichen für den Dokumentenabschnitt ordnet. In einigen Ausführungsformen werden die Zeichen für eine Seite sortiert mit einer primären Sortierung von oben nach unten und einer sekundären Sortierung von links nach rechts. Einige Ausführungsformen, die mehrere Seiten in einem Zeichenfeld speichern, sortieren zuerst nach Seite. Die 104 zeigt ein Feld von Zeigern 10410, dass definiert ist für die sortierten Zeichen. Der erste Zeiger 10411 zeigt auf den Buchstaben ”L” in dem Feld 10405, der zweite Zeiger 10412 zeigt auf den Buchstaben ”0” und so weiter. Wenn ein Feld von Zeigern auf das ursprüngliche Zeichenfeld definiert wird, anstelle das ein separates neues Feld definiert und gespeichert wird, spart dies in einigen Ausführungsformen Speicher.
  • Der Prozess empfängt als nächstes (bei 10325) Anweisungen zum Manipulieren von Zeichenkettenobjekten. Einige Ausführungsformen definieren ein Zeichenkettenobjekt als einen Zeiger auf einen Ort in dem sortierten Feld von Zeigern und einen Zählwert darüber, wie viele Zeichen sich in der Zeichenkette befinden. Zum Beispiel würde ein Zeichenkettenobjekt für die gesamte Seite auf den ersten Zeiger in dem sortierten Zeigerfeld zeigen (das Zeichen am weitesten oben links) und einen Zählwert über die Anzahl von Zeichen auf der Seite geben.
  • In einigen Ausführungsformen beinhalten die Anweisungen das Aufteilen von Zeichenketten, das Verbinden von Zeichenketten, das Hinzufügen von Zeichen, das Entfernen von Zeichen und das Umsortieren von Zeichen. Diese Operationen in einigen Ausführungsformen werden aufgerufen als Teil des Prozesses des Rekonstruierens eines Dokuments und Verwenden des rekonstruierten Dokuments wie oben beschrieben in den Abschnitten II–X. Wenn zum Beispiel in einigen Fällen Zeilen zusammengeführt werden, muss die Reihenfolge von Zeichen modifiziert werden. Wenn Zonen definiert werden, definieren einige Ausführungsformen Zeichenketten für jede Zone, was in vielen Fällen das Aufteilen von Zeichenketten, das Verbinden von Zeichenketten oder beides involviert.
  • Nach Empfangen der Anweisungen bestimmt der Prozess (bei 10330), ob die Anweisungen ausgeführt werden können unter Verwendung allein der Zeiger, die bereits alloziert sind (z. B. des sortierten Zeigerfelds definiert bei 10320). In einigen Ausführungsformen involviert das Aufteilen von Zeichenketten allein die Verwendung von Zeigern, die bereits alloziert sind. In dem Fall der Dokumentenrekonstruktion involvieren einige Prozesse allein das Aufteilen von Zeichenketten (z. B. Zeilenidentifikation, Zeilenaufteilung usw.). Ferner wird das Verbinden von Zeichenketten, die sich nebeneinander befinden in dem sortierten Feld von Zeigern, lediglich die Verwendung von bereits allozierten Zeigern involvieren in einigen Ausführungsformen.
  • Die 104 zeigt, wie das Identifizieren der zwei Zeilen in dem Dokument 10400 in zwei Zeichenkettenobjekten 10415 und 10420 resultiert, welche die bereits allozierten Zeiger in dem Feld 10410 referenzieren. Die erste Zeile ist definiert durch ein Zeichenkettenobjekt 10415, welches auf den Zeiger auf L 10411 und einen Zählwert von 15 (die Anzahl an Zeichen auf der ersten Zeile) hat. Die zweite Zeile ist definiert durch ein Zeichenkettenobjekt 10420, welches zeigt auf den Zeiger auf s 10413 und einen Zählwert von 7 hat (die Anzahl an Zeichen auf der zweiten Zeile). Um diese Zeilen zu definieren, brauchen keine neuen Zeiger alloziert werden. Über die hunderte oder tausende von Operationen hinweg, die im Rekonstruieren eines Dokuments involviert sein können, kann dies große Speicher- und Verarbeitungszeiteffizienzen erbringen (da keine Felder durchsucht werden müssen).
  • Dieselben Zeiger 10410 können dann verwendet werden, wenn Worte identifiziert werden. Zum Beispiel definieren die Zeichenkettenobjekte 10425 und 10430 zwei der Wärter in dem Dokument 10400. Diese Worte zeigen auf dieselben Startzeiger wie die Zeichenkettenobjekte 10415 und 10420, haben aber unterschiedliche Zählwerte, da die Wörter kürzer sind als die Zeilen. Es brauchen jedoch keine neuen Zeiger alloziert werden, um diese Worte zu definieren, sondern lediglich neue Zeichenkettenobjekte. Für ein gesamtes Dokument mögen hunderte oder tausende unterschiedliche Zeichenkettenobjekte alle dasselbe Zeigerfeld (wie die Zeiger 10410) referenzieren, was große Speichereinsparungen herbeiführt im Vergleich zum wiederholten Allozieren von Speicher für neue Zeigerfelder.
  • Wenn die empfangenen Anweisungen ausgeführt werden können unter Verwendung allein der Zeiger, die bereits alloziert sind, führt der Prozess 10300 (bei 10335) die Anweisungen unter Verwendung der gemeinsamen Zeiger aus, die bereits im Speicher alloziert sind. Der Prozess schreitet dann zu 10355 fort, was unten beschrieben ist. Andernfalls bestimmt der Prozess (bei 10340), ob die Anweisungen unter Verwendung einer neuen Sammlung an Zeigern ausgeführt werden können.
  • Einige Ausführungsformen allozieren neue Zeiger, wenn Anweisungen nicht allein mit Zeigern ausgeführt werden können, die bereits alloziert sind, die Anweisungen aber keine direkte Datenmanipulation des Zeichenfeldes erfordern. In einigen Ausführungsformen erfordert das Verbinden von Zeichenketten, die sich nicht nebeneinander befinden in einem gemeinsamen Feld von Zeigern, eine Neuallokation von Zeigern, da ein Zeichenkettenobjekt für die vereinigten Zeichenketten nicht repräsentiert werden kann durch Zeigen auf einen Zeiger in dem sortierten Feld und sich in dem Feld nach vorne zu bewegen. Mit Bezug zum Beispiel auf die 104, wenn eine Operation das Anhängen der ersten Zeile an das Ende der zweiten Zeile anfordert, dann kann das Zeichenkettenobjekt für die angehängten Zeilen nicht auf das Feld 10410 zeigen. Stattdessen müsste ein neues Feld von Zeigern alloziert werden in der notwendigen Reihenfolge.
  • Wenn die empfangenen Anweisungen ausgeführt werden können unter Verwendung einer Neuallokation von Zeigern, führt der Prozess (bei 10345) unter Verwendung einer Neuallokation von Zeigern auf das Zeichenfeld aus. Der Prozess dann und schreitet zu 10355 fort, was unten beschrieben ist. Andernfalls führt der Prozess (bei 10350) die Anweisungen aus unter Verwendung eines Teils oder des gesamten Zeichenfeldes. Das direkte Editieren der Dokumentendaten (d. h., ein Benutzer fügt ein Wort dem Dokument hinzu) ist ein Beispiel von Anweisungen, die nicht ausgeführt werden könnten ohne Manipulieren des tatsächlichen Feldes an Zeichen in einigen Ausführungsformen. Ein Benutzer, der ein Wort dem Dokument hinzufügt, würde jedoch keine vollständig neue Kopie erfordern, sondern könnte stattdessen behandelt werden durch Hinzufügen von Zeichen zu dem Feld und dann Definieren eines neuen Feldes an Zeigern auf die Zeichen. Auf ähnliche Weise erfordert ein Zusammenführen von Textzeilen oftmals ein neues Feld an Zeigern, da ein Zeichen von einer Textzeile in die nächste Textzeile eingefügt werden mag, wodurch sich die Reihenfolge der Zeichen relativ zu einander ändert.
  • Als nächstes bestimmt der Prozess (bei 10355), ob weitere Anweisungen zum Manipulieren der Zeichenkettenobjekte empfangen wurden. Wenn mehr Anweisungen empfangen wurden, schreitet der Prozess zu 10330 fort, um den effizientesten Weg zu bestimmen, die Anweisungen auszuführen. Andernfalls endet der Prozess. Dieser Prozess illustriert die Hierarchie der Speicher- und Verarbeitungseinsparungen, die herbeigeführt werden unter Verwendung der geteilten bzw. gemeinsamen Daten. Die ursprünglichen Daten werden unter verschiedenen Zeigerfeldern geteilt und jedes Zeigerfeld wird unter mehreren Zeichenkettenobjekten geteilt. Für jeden Satz an Anweisungen, der empfangen wurde (z. B. jeder Aufruf in ein API), wird der effizienteste Weg des Ausführen der Anweisungen verwendet. Idealerweise werden die Anweisungen nicht die Erzeugung irgendwelcher neuer Zeiger erfordern, und es brauchen lediglich neue Zeichenkettenobjekte erzeugt werden. Falls dies nicht möglich ist, dann können immer noch Speichereinsparungen erzielt werden durch Erzeugen neuer Zeiger, welche sich die ursprünglichen Daten teilen, anstelle von Erzeugen eines neuen Zeichenfeldes.
  • Obwohl der Prozess 10300 mit Bezug auf Zeichenkettenobjekte und insbesondere Zeichenkettenobjekte für Dokumentenrekonstruktion beschrieben wurde, wird der Fachmann erkennen, dass die Effizienzen, die erzielt werden, indem eine Präferenz gezeigt wird für das Verwenden bereits allozierter Zeiger und dann für Allozieren neuer Zeiger im Gegensatz zum Kopieren von Daten, auch anwendbar sind für einen weiten Bereich an Problemen, wo Speicher und Verarbeitungszeit kostbar sind.
  • B. Geteilte Speicherobjekte
  • In einigen Ausführungsformen hat jedes Feld von Zeigern ein gemeinsames bzw. geteiltes Speicherobjekt, welches die Verwendung von Zeigern in dem Feld verwaltet. In einigen Ausführungsformen führt das geteilte Speicherobjekt für ein bestimmtes Zeigerfeld Buch über die Datenobjekte (z. B. Zeichenkettenobjekte), welche das bestimmte Feld referenzieren. In einigen Ausführungsformen führt das geteilte Speicherobjekt auch darüber Buch, wo im Speicher das Zeigerfeld beginnt.
  • Die 105 zeigt die Weise, in der Daten gemäß einigen Ausführungsformen der Erfindung gespeichert sind. Die 105 zeigt ein Feld von Daten 10505, ein sortiertes Feld von Zeigern 10510, ein geteiltes Speicherobjekt 10515 und Datenobjekte 10520. Das Datenfeld 10505 ist in einigen Ausführungsformen zufällig geordnete, geparste Daten (z. B. Zeichendaten aus einem geparsten Dokument).
  • Das sortierte Feld von Zeigern 10510 ist ein Feld von Zeigern auf das Datenfeld 10505. Jeder Zeiger zeigt auf einen Dateneintrag in dem Feld 10505 in einigen Ausführungsformen. Die Zeiger sind angeordnet in einer Ordnung basierend auf einer Sortierung der Daten. In dem Falle eines Dokuments z. B. sind die Zeiger in der Lesereihenfolge der Zeichen, auf die sie zeigen, angeordnet in einigen Ausführungsformen.
  • Jedes der Datenobjekte 10520 beinhaltet eine Referenz auf einen Ort in dem Zeigerfeld 10510 und einen Zählwert. Der Ort in dem Zeigerfeld 10510 für ein bestimmtes Datenobjekt ist der Zeiger, der auf das erste Stück an Daten zeigt, das durch das Datenobjekt referenziert wird. Wenn z. B. das Datenobjekt ein Zeichenkettenobjekt für das Wort „Array” ist, würde das Datenobjekt den Ort in dem Speicherfeld spezifizieren, wo der Zeiger gefunden wird, der auf das „A” zeigt. Das Datenobjekt würde auch einen Zählwert von 5 beinhalten.
  • Die 105 zeigt auch ein geteiltes Speicherobjekt 10515. In einigen Ausführungsformen verwaltet das geteilte Speicherobjekt die Verwendung des sortierten Feldes 10510 durch die Datenobjekte 10520. Das geteilte Speicherobjekt 10515 führt einen Zählwert über die Anzahl an Datenobjekten 10520, welche das Feld 10510 referenzieren.
  • Einige Ausführungsformen definieren das geteilte Speicherobjekt 10515 nicht, wenn ein erstes Datenobjekt (das auf den Beginn des Feldes zeigt und das einen Zählwert des gesamten Feldes hat) definiert wird. Sobald jedoch ein zweites Datenobjekt auf das Feld zeigt, wird das Feld nun geteilt, und das geteilte Speicherobjekt 10515 wird definiert, um Buch darüber zu führe, wie viele Datenobjekte sich das Feld teilen und wo der Beginn des Feldes ist, da jedes individuelle Objekt nicht über diese Information verfügt. Dementsprechend können in einigen Ausführungsformen die Datenobjekte 10520 eine Funktion aufrufen, um ein geteiltes Speicherobjekt für ein Zeigerfeld zu instanziieren, falls keines existiert, wenn das Datenobjekt gesetzt wird, auf das Zeigerfeld zu zeigen. Wenn die Anzahl von Objekten 10520 auf Null fällt, dealloziert das geteilte Speicherobjekt 10515 die Zeiger 10510 und wird dann selbst aus dem Speicher entfernt.
  • In einigen Ausführungsformen hat jedes individuelle Datenobjekt 10520, das sich das Zeigerfeld 10510 teilt, keinerlei Wissen darüber, das andere Objekte 10520 auch die Zeiger in dem Feld 10510 verwenden. Weiter haben die Objekte 10520 keinerlei Wissen über den Beginn oder das Ende des Feldes 10510, sondern referenzieren lediglich einen Punkt in dem Feld 10510. Das geteilte Speicherobjekt 10520 einiger Ausführungsformen jedoch weiß, wo der Beginn des Feldes in dem Speicher ist.
  • C. Software-Architekturen
  • In einigen Ausführungsformen sind die oben beschriebenen API als Software implementiert, die auf einer bestimmten Maschine laufen, wie einem Computer, einem Medienwiedergabegerät, einem Mobiltelefon (z. B. ein iPhone®) oder anderen handgehaltenen oder in Ressourcen beschränkten Vorrichtungen (oder gespeichert in einem computerlesbaren Medium). Die 106 zeigt konzeptionell ein API 10600, welche Dokumentenrekonstruktionsprozesse ausführt, während es die oben in den Unterabschnitten A und B beschriebenen effizienten Techniken verwendet.
  • Das API 10600 beinhaltet geometrische Analysemodule 10610, Dokumentenrekonstruktionsmodule 10615 und Anzeige- und Interaktionsmodule 10620. Das API 10600 ist, in einigen Ausführungsformen, die Menge an Funktionen, Prozeduren, Methoden, Klassen und/oder Protokollen, die zur Verwendung durch externe Anwendungen 10605 bereitgestellt sind.
  • Das API 10600 empfängt Anforderungen (z. B. Funktionsaufrufe) an die öffentlichen Methoden von externen Anwendungen 10605. In einigen Ausführungsformen gibt es zahlreiche externe Anwendungen. In dem Fall z. B., wo ein API bereitgestellt ist auf einer handgehaltenen Vorrichtung (z. B. ein iPhone®), mag die externe Anwendung ein PDF-Anzeigeprogramm sein (z. B. eine Leseanwendung für elektronische Bücher), eine Textverarbeitung (z. B. Microsoft Word, Apple Pages, usw.), ein Webbrowser (z. B. Microsoft Internet Explorer, Apple Safari, Mozilla Firefox, usw.), usw.
  • Die verschiedenen öffentlichen Methoden, die durch das API 10600 bereitgestellt sind, rufen verschiedene private Methoden auf, welche die geometrischen Analysen von Dokumentenrekonstruktion ausführen, Zugriff auf das Dokumentenobjektmodell nehmen, usw. Die Daten (z. B. die primitiven Elemente, die anfänglich von einem Parser identifiziert werden) werden gespeichert in den Dokumentenrekonstruktionsdaten 10625. Obwohl es für die externen Anwendungen erscheinen mag, dass sie auf die Daten zugreifen können (z. B. während sie Zeichen manipulieren, um Wörter, Textzeilen, usw. zu identifizieren), sind tatsächlich die Klassenmitglieder, welche durch die externen Anwendungen durch das API manipuliert werden, von den tatsächlichen Daten geschieden durch Definieren der Klassenmitglieder, so dass sie allein Referenzen auf die Daten speichern, wie oben in den Unterabschnitten A und B beschrieben.
  • II. Software-Gesamtarchitektur
  • In einigen Ausführungsformen sind die Prozesse, die oben beschrieben wurden, als Software implementiert, die auf einer bestimmten Maschine abläuft, wie einem Computer, einem Medienwiedergabegerät, einem Mobiltelefon (z. B. ein I-Phone®), oder anderen handgehaltenen oder in Ressourcen beschränkten Vorrichtungen (oder gespeichert in einem computerlesbaren Medium). Die 107 zeigt konzeptionell die Softwarearchitektur einer Anwendung 10700 einiger Ausführungsformen zum rekonstruieren, anzeigen und interagieren mit einem Dokument. In einigen Ausführungsformen ist die Anwendung eine alleinstehende Anwendung oder ist integriert in eine andere Anwendung, während in anderen Ausführungsformen die Anwendung innerhalb eines Betriebssystems implementiert sein kann. In nochmals anderen Ausführungsformen sind die in 107 gezeigten Module aufgeteilt unter mehreren Anwendungen. In einigen Ausführungsformen z. B. erzeugt eine Anwendung das Dokumentenobjektmodell, während eine andere Anwendung das Dokument anzeigt und mit dem Dokumentenobjektmodell interagiert (s. die vollständige Beschreibung unten.).
  • Die Anwendung 10700 beinhaltet einen Parser 10710, Profiliermodule 10720, semantische Rekonstruktionsmodule 10730, Clusteranalysemodule 10740, Benutzerinteraktionsmodule 10750 und Anzeigeadaptionsmodule 10760. Die Anwendung 10700 beinhaltet auch einen Dokumentendatenspeicher 10715, Profilierspeicher 10725, Clusteranalysespeicher 10735 und Dokumentenobjektmodulspeicher 10745. Die 107 zeigt auch ein Betriebssystem 10770, welches einen Cursorsteuertreiber 10775, einen Tastaturtreiber 10780 und ein Anzeigemodul 10785 beinhaltet. In einigen Ausführungsformen sind der Cursorsteuertreiber 10775, der Tastaturtreiber 10780 und/oder das Anzeigemodul 10785 Teil des Betriebssystems 10770, selbst wenn die Kompositionsanwendung eine alleinstehende Anwendung separat von dem Betriebssystem ist.
  • Wie gezeigt empfängt der Parser 10710 ein Dokument 10705. In einigen Ausführungsformen ist das Dokument ein unformatiertes Dokument, das Vektorgrafiken enthält (z. B. ein PDF). Der Parser 10710 parst die Dokumenteninformation und speichert die geparsten Daten in dem Dokumentendatenspeicher 10715. In einigen Ausführungsformen wird der geparste Text gespeichert als ein Feld von Zeichen, wie in Abschnitt XI oben beschrieben.
  • Die semantischen Rekonstruktionsmodule 10730 rekonstruieren das Dokument, um das Dokumentenobjektmodel 10745 aus den Dokumentendaten 10715 zu erzeugen. Die semantischen Rekonstruktionsmodule 10730 führen solche Prozesse aus wie Zonenanalyse, Identifikation von Führungen und Bundstegen, Layout- und Flussidentifikation, Tabellenidentifikation und Identifikation vereinigter Graphen.
  • Die Ausgabe der semantischen Rekonstruktionsmodule wird auch an die Profilierungsmodule 10720 gesendet. Die Profilierungsmodule 10720 beinhalten ein Profilabgleichswerk, das hierarchische Profile abgleicht und die semantischen Rekonstruktionsmodule darüber informiert, wie Rekonstruktion auszuführen ist, wie oben im Abschnitt VII beschrieben.
  • Die semantischen Rekonstruktionsmodule 10710 leiten auch Informationen an die Clusteranalysemodule 10740 weiter. Die Clusteranalysemodule 10740 fuhren Dichteclustering zur Führungsidentifikation aus, Differenzenclustering für Wort- und Segmentinformation und Begrenzungsclustering zum Identifizieren von Graphen, die vereinigt werden sollten, in einigen Ausführungsformen. Die Clusteranalysemodule verwenden den Clusteranalysespeicher 10735, um Felder und Indices zu speichern, wie in Abschnitt X beschrieben. Die Ergebnisse der Clusteranalyse werden dann zurückgeliefert an die semantischen Rekonstruktionsmodule 10730.
  • Sobald die semantischen Rekonstruktionsmodule 10730 das Dokument rekonstruiert haben, speichern sie das Dokumentenobjektmodell 10745. Das Dokumentenobjektmodell 10745 speichert alle Informationen über das semantisch rekonstruierte Dokument, wie den Zonengraphen, bevölkert mit Inhalt, wie oben beschrieben ist in Abschnitt II.
  • Anzeigeadaptionsmodule 10760 verwenden das Dokumentenobjektmodell 10745, um zu bestimmen, wie das Dokument anzuzeigen ist. Z. B. führen die Anzeigeadaptionsmodule einiger Ausführungsformen die oben im Abschnitt VIII beschriebenen Prozesse zum Anzeigen des Dokuments auf einer Vorrichtung mit einem kleinen Bildschirm aus. Anzeigeadaptionsmodule 10760 geben die Anzeigeinformationen an das Anzeigemodul 10785 weiter, welches die tatsächliche Anzeige auf dem Bildschirm bestimmt.
  • Benutzerinteraktionsmodule 10750 empfangen Eingabeinformationen von dem Cursorsteuertreiber 10775 und dem Tastaturtreiber 10780. Die Eingabeinformation weist die Benutzerinteraktionsmodule 10750 an, Operationen auf dem Dokument auszuführen, wie Auswählen, wie in Abschnitt IX oben beschrieben, sowie Editieren des Dokuments. Wenn das Dokument editiert wird, dann muss das Dokumentenobjektmodell 10745 modifiziert werden, um die Editierungen wiederzuspiegeln.
  • In einigen Ausführungsformen werden die Ergebnisse der Prozesse, die durch einige der oben beschriebenen Module oder andere Module ausgeführt werden, in einem elektronischen Speicher gespeichert (z. B. als Teil eines Dokumentenobjektmodells). Das Dokumentenobjektmodell kann dann verwendet werden zum Anzeigen des Dokuments auf einer elektronischen Anzeigevorrichtung (z. B. eine handgehaltene Vorrichtung, ein Computerbildschirm, usw.), so dass ein Benutzer das Dokument betrachten und/oder mit diesem interagieren kann (z. B. über einen Berührungsbildschirm, über eine Cursorsteuervorrichtung, usw.).
  • Die 108 zeigt konzeptionell einen Prozess 10800 einiger Ausführungsformen zum Herstellen eines computerlesbaren Mediums, welches ein Computerprogramm speichert, wie die oben beschriebene Anwendung 10700. In einigen Ausführungsformen ist das computerlesbare Medium ein vertreibbares, nicht flüchtiges elektronisches Speichermedium (z. B. CD-ROM, Festplatte, Firmware der Vorrichtung, usw.).
  • Wie gezeigt, beginnt der Prozess 10800 mit definieren (bei 108035) geometrischer Analysemodule, wie die Module 110 von 1. Detailliertere Beispiele solcher Module beinhalten die Grenzenidentifikationsmodule 1705, Intervall- und Kreuzungsidentifikationsmodule von 1710, Zonenidentifikationsmodul 1715 und Zonengraphenerrichter 1720 von 17. Diese Module identifizieren, in einigen Ausführungsformen, Begrenzungen zwischen Mengen von primitiven Elementen und identifizieren Bereiche, die durch die Begrenzungen begrenzt sind. In einigen Ausführungsformen zertifizieren die Module graphische primitive Elemente als potenzielle Begrenzungen, identifizieren einen Teil der potenziellen Begrenzungen als tatsächliche Begrenzungen, durchqueren die tatsächlichen Begrenzungen, um Zonen zu identifizieren, und definieren ein hierarchisches Dokumentenmodul mit den identifizierten Zonen.
  • Der Prozess definiert dann (bei 10810) Dokumentenrekonstruktionsmodule wie die Module 120 von 1. In einigen Ausführungsformen beinhalten die semantischen Rekonstruktionsmodule 10730 der 107 sowohl geometrische Analysemodule als auch Dokumentenrekonstruktionsmodule, wobei jedoch andere Ausführungsformen die einen oder die anderen beinhalten.
  • Der Prozess 10800 definiert dann (bei 10815) eine Menge von hierarchischen Profilen, wie die Profile 10725. Als nächstes definiert der Prozess (bei 10820) eine Menge von Modulen zum Ausführen von Clusteranalyse. Die Clusteranalysemodule 10740 sind ein Beispiel solcher Module. Der Prozess definiert dann (bei 10825) zum adaptiven Anzeigen eines Dokuments, wie Anzeigeadaptionsmodule 10760. Als nächstes definiert der Prozess 10800 (bei 10830) Module zum Empfangen von Benutzerinteraktionen mit einem Dokument, wie Module 10750.
  • Der Prozess definiert auch (bei 10835) andere Module. Z. B. beinhalten einige Ausführungsformen Module zum Parsen eines eingehenden Dokuments (z. B. ein Dokument, das von der Anwendung empfangen wird) oder zum effizienten. Verwenden von Speicher und Verarbeitungszeit, wenn verschiedene Dokumentenrekonstruktionsoperationen ausgeführt werden.
  • Der Prozess 10800 speichert dann (bei 10840) die Anwendung auf einem computerlesbaren Speichermedium. Wie oben beschrieben ist in einigen Ausführungsformen das computerlesbare Speichermedium eine vertreibbare CD-ROM. In einigen Ausführungsformen ist das Medium eines oder mehrere aus einer Festkörpervorrichtung, einer Festplatte, einer CD-ROM, oder einem anderen, nicht volatilen computerlesbaren Speichermedium. Das Medium kann eine Firmware einer handgehaltenen Vorrichtung (z. B. ein iPhone®) in einigen Ausführungsformen sein.
  • Ein Fachmann wird erkennen, das die verschiedenen Elemente, die durch den Prozess 10800 definiert werden, nicht abschließend sind für die Module, Regeln und Prozesse, die definiert und auf einem computerlesbaren Speichermedium gespeichert werden könnten für eine Anwendung, die einige Ausführungsformen der Erfindung inkorporiert. Ferner ist es ebenfalls möglich, dass einige Ausführungsformen nur eine Untermenge der durch den Prozess 10800 beinhalten, anstatt alle von diesem.
  • Zusätzlich ist Prozess 10800 ein konzeptioneller Prozess und die tatsächlichen Implementierungen können variieren. Z. B. können unterschiedliche Ausführungsformen die verschiedenen Elemente in einer unterschiedlichen Reihenfolge definieren, können verschiedene Elemente in einer Operation definieren, können die Definition eines einzelnen Elements und mehrere Operationen definieren, usw. Weiterhin kann der Prozess 10800 implementiert sein als mehrere Unterprozesse oder kombiniert mit anderen Operationen in einem Makro-Prozess.
  • XIII. Computersystem
  • Viele der oben beschriebenen Merkmale und Anwendungen sind als Softwareprozesse implementiert, die spezifiziert sind als ein Satz von Anweisungen, die auf einem computerlesbaren Speichermedium aufgezeichnet sind (auch als computerlesbares Medium bezeichnet). Wenn diese Anweisungen durch einen oder mehrere Rechenelemente ausgeführt werden (wie Prozessoren oder andere Rechenelemente wie ASICs und FPGAs), führen sie dazu, dass die Rechenelemente die Aktionen ausführen, die in den Anweisungen angezeigt sind. Ein Computer wird im breitesten Sinne verstanden und kann jede elektronische Vorrichtung mit einem Prozessor beinhalten. Beispiele computerlesbarer Medien beinhalten, sind aber nicht beschränkt auf, CD-ROMS, Flash-Laufwerke, RAM-Chips, Festplatten, EPROMs usw. Das computerlesbare Medium beinhaltet keine Trägerwellen und elektrische Signale, die drahtlos oder über drahtgebundene Verbindungen laufen.
  • In dieser Beschreibung wird Begriff ”Software” so verstanden, dass er auch Firmware mit umfasst, die in einem Nur-Lese-Speicher residiert oder Anwendungen, die auf einer Magnetspeicher gespeichert sind, die in den Speicher zum Ausführen durch einen Prozessor gelesen werden können. Auch können in einigen Ausführungsformen mehrere Software-Erfindungen als Unterteile eines größeren Programms implementiert sein, während sie unterschiedliche Software-Erfindungen bleiben. In einigen Ausführungsformen können mehrere Software-Erfindungen auch als separate Programme implementiert sein. Schließlich ist jede Kombination separater Programme, welche zusammen eine Software-Erfindung implementieren, die hierin beschrieben ist, innerhalb des Bereichs der Erfindung. In einigen Ausführungsformen definieren die Software-Programme, wenn sie installiert sind, um auf einem oder mehreren Computersystemen zu arbeiten, eine oder mehrere spezifische Maschinenimplementierungen, welche die Operationen des Software-Programms ausführen und durchführen.
  • Die 109 zeigt ein Computersystem, mit dem einige Ausführungsformen der Erfindung implementiert sind. Solch ein Computersystem beinhaltet verschiedene Typen an computerlesbaren Medien und Schnittstellen für verschiedene andere Arten an computerlesbaren Medien. Das Computersystem 10900 beinhaltet einen Bus 10905, einen Prozessor 10910, eine Grafikverarbeitungseinheit (GPU) 10920, einen Systemspeicher 10925, einen Nur-Lese-Speicher 10930, eine Permanentspeichervorrichtung 10935, Eingabevorrichtungen 10940 und Ausgabevorrichtungen 10945.
  • Der Bus 10905 repräsentiert kollektiv alle System-Peripherie- und Chipsatz-Busse, welche kommunikativ die zahlreichen internen Vorrichtungen des Computersystems 10900 verbinden. Zum Beispiel verbindet der Bus 10905 kommunikativ den Prozessor 10910 mit dem Nur-Lese-Speicher 10930, der GPU 10920, dem Systemspeicher 10925 und der Permanentspeichervorrichtung 10935.
  • Aus diesen verschiedenen Speichereinheiten ruft der Prozessor 10910 auszuführende Anweisungen und zu verarbeitende Daten ab, um die Prozesse der Erfindung auszuführen. In einigen Ausführungsformen umfasst der Prozessor ein feldprogrammierbares Gatterarray (FPGA), einen ASIC oder verschiedene andere elektronische Komponenten zum Ausführen von Anweisungen. Einige Anweisungen werden an die GPU 10920 weitergeleitet und von dieser ausgeführt. Die GPU 10920 kann verschiedene Berechnungen abladen oder die durch den Prozessor 10910 bereitgestellte Bildverarbeitung vervollständigen. In einigen Ausführungsformen kann solch eine Funktionalität bereitgestellt werden unter Verwendung der Shading-Sprache des Core Image-Kernels.
  • Der Nur-Lese-Speicher (ROM) 10930 speichert statische Daten und Anweisungen, die von dem Prozessor 10910 und anderen Modulen des Computersystems benötigt werden. Die Permanentspeichervorrichtung 10935 andererseits ist eine lesbare und beschreibbare Speichervorrichtung. Diese Vorrichtung ist eine nicht volatile Speichereinheit, welche Informationen und Daten speichert, selbst wenn das Computersystem 10900 ausgeschaltet ist. Einige Ausführungsformen der Erfindung verwenden eine Massenspeichereinheit (wie eine magnetische oder optische Disc und deren zugehöriges Disc-Laufwerk) als die Permanentspeichereinheit 10935.
  • Andere Ausführungsformen verwenden eine entfernbare Speichervorrichtung (wie eine Floppydiskette, Flash-Laufwerk oder eine ZIP®-Diskette und deren zugehöriges Disk-Laufwerk) als Permanentspeichervorrichtung. Wie die Permanentspeichervorrichtung 10935 ist der Systemspeicher 10925 eine lesbare und beschreibbare Speichervorrichtung. Anders als die Speichervorrichtung 10935 jedoch ist der Systemspeicher ein volatiler lesbarer und beschreibbarer Speicher, wie ein Speicher mit wahlfreiem Zugriff. Der Systemspeicher speichert einige der Anweisungen und Daten, die der Prozessor zur Laufzeit benötigt. In einigen Ausführungsformen sind die Prozesse der Erfindung in dem Systemspeicher 10925, in der Permanentspeichervorrichtung 10935 und/oder dem Nur-Lese-Speicher 10930 gespeichert. Die verschiedenen Speichereinheiten beinhalten zum Beispiel Anweisungen zum Verarbeiten von Multimediaeinheiten in Übereinstimmung mit einigen Ausführungsformen. Aus diesen verschiedenen Medieneinheiten ruft der Prozessor 10910 auszuführende Anweisungen und zu verarbeitende Daten ab, um die Prozesse einiger Ausführungsformen auszuführen.
  • Der Bus 10905 verbindet auch mit den Eingabe- und Ausgabevorrichtungen 10940 und 10945. Die Eingabevorrichtungen erlauben es dem Benutzer, an das Computersystem Information zu kommunizieren und Befehle auszuwählen. Die Eingabevorrichtungen 10940 beinhalten alphanumerische Tastaturen und Zeigevorrichtungen (auch als ”Cursorsteuervorrichtungen” bezeichnet). Die Ausgabevorrichtungen 10945 zeigen Bilder an, die durch das Computersystem erzeugt werden. Die Ausgabevorrichtungen beinhalten Drucker und Anzeigevorrichtungen, wie Kathodenröhren-(CRT) oder Flüssigkristallanzeigen (LCD).
  • Schließlich, wie in 109 gezeigt, koppelt der Bus 10905 den Computer 10900 auch an ein Netzwerk 10965 über einen (nicht gezeigten) Netzwerkadapter. Auf diese Weise kann der Computer Teil eines Computernetzwerks (wie einem lokalen Netzwerk (”LAN”), einem Weitbereichsnetzwerk (”WAN”), oder einem Intranet oder einem Netzwerk von Netzwerken, wie das Internet) sein. Jede oder alle Komponenten des Computersystems 10900 kann in Verbindung mit der Erfindung verwendet werden.
  • Einige Ausführungsformen beinhalten elektronische Komponenten, wie Mikroprozessoren, Speicher und Speicher, der Computerprogammnweisungen in einem maschinenlesbaren oder computerlesbaren Medium speichert (alternativ bezeichnet als computerlesbare Speichermedien, maschinenlesbare Medien oder maschinenlesbare Speichermedien). Einige Beispiele solcher computerlesbarer Medien beinhalten RAM, ROM, nur lesbare Compact Disks (CD-ROM), beschreibbare Compact Disks (CD-R), wiederbeschreibbare Compact Disks (CD-RW), nur lesbare digitale versatile Disks (z. B. DVD-ROM, doppellagige DVD-ROM), eine Varietät von beschreibbaren/wiederbeschreibbaren DVDs (z. B. DVD-RAM, DVD-RW, DVD+RW usw.), Flash-Speicher (z. B. SD-Karten, Mini-SD-Karten, Micro-SD-Karten usw.), magnetische und/oder Festkörperfestplatten, nur lesbare und beschreibbare Blu-Ray-Disks, ultradichte optische Disks, jegliches andere optische oder magnetische Medium und Floppydisketten. Das computerlesbare Medium kann ein Computerprogramm speichern, das durch zumindest einen Prozessor ausgeführt werden kann, und Sätze von Anweisungen beinhaltet zum Ausführen verschiedener Operationen. Beispiele von Hardwarevorrichtungen, die konfiguriert sind, Sätze von Anweisungen zu speichern und auszuführen, beinhalten, sind aber nicht beschränkt auf, applikationsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Gatterarrays (FPGA), programmierbare Logikvorrichtungen (PLDs), ROM- und RAM-Vorrichtungen. Beispiele von Computerprogrammen oder Computercode beinhalten Maschinencode, wie er durch einen Compiler erzeugt wird, und Dateien, welche Code auf höherer Ebene beinhalten, die durch einen Computer ausgeführt werden, eine elektronische Komponente oder einen Mikroprozessor, welche einen Interpreter verwenden.
  • Wie in dieser Beschreibung und jedem Anspruch dieser Anwendung verwendet, beziehen sich die Begriffe ”Computer”, ”Server”, ”Prozessor” und ”Speicher” alle auf elektronische Vorrichtungen oder Vorrichtungen anderer Technologien. Diese Begriffe schließen Menschen oder Gruppen von Menschen aus. Zu Zwecken der Beschreibung bedeuten die Begriffe Anzeige oder anzeigen ein Anzeigen auf einer elektronischen Vorrichtung. Wie in dieser Beschreibung und jedem Anspruch dieser Anwendung verwendet sind die Begriffe ”computerlesbares Medium” und ”computerlesbare Medien” in Gänze beschränkt auf materielle, physikalische Objekte, welche Information in einer Form speichern, die durch einen Computer gelesen werden kann. Diese Begriffe schließen jedes drahtlose Signal, drahtgebundene Download-Signal und jedes andere ephemerale Signal aus.
  • Während die Erfindung beschrieben wurde mit Bezug auf zahlreiche spezifische Details, wird der Fachmann erkennen, dass die Erfindung in anderen spezifischen Formen verkörpert werden kann, ohne vom Geist der Erfindung abzuweichen. Zum Beispiel empfangen einige Ausführungsformen ein Dokument, in dem jede Seite als ein Einzelbild definiert ist. Einige Ausführungsformen jedoch können optische Zeichenerkennung auf dem Dokument ausführen, um Glyphen zu erkennen und in einigen Fällen Formen (z. B. Linien, Rechtecke usw.), nach welchem Punkt das Dokument rekonstruiert werden kann. Auch wurden einige Ausführungsformen oben beschrieben als bestimmte geometrische Analysen und Dokumentenrekonstruktionsoperationen auf bestimmten primitiven Elementen ausführend. Ein Fachmann würde jedoch erkennen, dass die Operationen auf andere Arten primitiver Elemente angewandt werden könnten. Zum Beispiel wurde die Führungsidentifikation beschrieben als die Verwendung von Dichteclustering, um Assoziationen von (d. h., zu assoziieren oder Assoziationen von zu definieren) Glyphen zu identifizieren, die eine vertikale Begrenzung bilden. Jedoch könnten ähnliche Operationen angewandt werden, um nach Clustern primitiver Formen zu suchen, welche Begrenzungen bilden (z. B. gestrichelte Linien).
  • Ferner zeigen eine Anzahl der Figuren (einschließlich der 3, 8, 9, 12, 15, 18, 20, 21, 25, 26, 31, 33, 36, 38, 40, 42, 48, 53, 55, 57, 62, 64, 66, 68, 71, 72, 78, 80-82, 84, 85, 87, 89, 94, 97, 99, 101, 103 und 108) konzeptionell Prozesse. Die spezifischen Operationen dieser Prozesse brauchen nicht in der gezeigten und beschriebenen exakten Reihenfolge ausgeführt zu werden, die spezifischen Operationen mögen nicht in einer kontinuierlichen Reihe von Operationen ausgeführt werden und unterschiedliche spezifische Operationen mögen in unterschiedlichen Ausführungsformen ausgeführt werden. Ferner könnte der Prozess unter Verwendung mehrerer Unterprozesse oder als Teil eines größeren Makroprozesses ausgeführt werden. Daher würde ein Fachmann verstehen, dass die Erfindung nicht auf die vorstehenden illustrativen Details beschränkt ist, sondern durch die beigefügten Ansprüche zu definieren ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2007/0250497 [0219, 0226, 0233, 0247, 0286, 0458]

Claims (237)

  1. Computer-lesbares Medium, das ein Computerprogramm speichert, das, wenn es durch zumindest einen Prozessor ausgeführt wird, ein Dokument analysiert, welches eine Mehrzahl von primitiven Elementen aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren von Begrenzungen zwischen Mengen von primitiven Elementen; Identifizieren von Bereichen, die von den Begrenzungen begrenzt sind; und Definieren eines strukturierten Dokuments basierend auf den Bereichen und den primitiven Elementen.
  2. Computer-lesbares Medium nach Anspruch 1, worin der Satz von Anweisungen zum Definieren eines strukturierten Dokuments einen Satz von Anweisungen aufweist zum Identifizieren einer hierarchischen Beziehung zwischen zumindest zwei identifizierten Bereichen.
  3. Computer-lesbares Medium nach Anspruch 2, worin ein erster Bereich, der vollständig innerhalb eines zweiten Bereichs liegt, ein Kind des zweiten Bereichs ist.
  4. Computer-lesbares Medium nach Anspruch 2, worin der Satz von Anweisungen zum Identifizieren einer hierarchischen Beziehung zwischen zwei identifizierten Bereichen einen Satz von Anweisungen umfasst zum Definieren eines hierarchischen Dokumentobjektmodells, in dem jeder identifizierte Bereich ein Knoten des Dokumentobjektmodells ist.
  5. Computer-lesbares Medium nach Anspruch 4, worin der Satz von Anweisungen zum Definieren des strukturierten Dokuments ferner einen Satz von Anweisungen aufweist zum Bevölkern des Dokument-Objektmodells mit zumindest einem strukturellen Element, das aus den primitiven Elementen definiert ist.
  6. Computer-lesbares Medium nach Anspruch 1, worin Begrenzungen identifiziert werden basierend auf Positionen von bestimmten primitiven Elementen in dem Dokument.
  7. Computer-lesbares Medium nach Anspruch 6, worin die bestimmten primitiven Elemente gerade Linien oder Formen sind, die gerade Linien approximieren.
  8. Computer-lesbares Medium nach Anspruch 1, worin der Satz von Anweisungen zum Identifizieren der Bereiche Sätze von Anweisungen umfasst zum: Auswählen einer Menge von Begrenzungen, die tatsächlich einen Bereich begrenzen, basierend darauf, ob die Begrenzungen andere Begrenzungen kreuzen; und Durchlaufen einer Untermenge der Begrenzungen, um einen Bereich zu identifizieren.
  9. Computer-lesbares Medium nach Anspruch 1, worin der Satz von Anweisungen zum Identifizieren von Begrenzungen zwischen Mengen von primitiven Elementen Sätze von Anweisungen umfasst zum: Identifizieren, als potentielle Begrenzungen, von primitiven Elementen und Gruppen von primitiven Elementen, die gerade Linien sind, oder Formen, gerade Linien approximieren; Identifizieren von Kreuzungen zwischen den potentiellen Begrenzungen; und Entfernen potentieller Begrenzungen, die nicht zumindest zwei andere potentielle Begrenzungen kreuzen.
  10. Computer-lesbares Medium nach Anspruch 1, worin der Satz von Anweisungen zum Identifizieren von Bereichen, die durch die Begrenzungen begrenzt sind, Sätze von Anweisungen umfasst zum Durchlaufen der identifizierten Begrenzungen, um geschlossene Schleifen von Begrenzungen zu identifizieren, worin jede geschlossene Schleife ein Bereich ist.
  11. Computer-lesbares Medium nach Anspruch 1, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Verwenden der identifizierten Bereiche, um strukturelle Elemente für das Dokument zu definieren, worin das strukturierte Dokument weiter auf den strukturellen Elementen basiert.
  12. Computer-lesbares Medium nach Anspruch 11, worin der Satz von Anweisungen zum Verwenden der identifizierten Bereichen, um strukturelle Elemente zu definieren, einen Satz von Anweisungen aufweist zum separaten Analysieren jedes bestimmten Bereichs, um Assoziationen zwischen Mengen von primitiven Elementen in dem bestimmten Bereich zu erzeugen.
  13. Verfahren zum Definieren eines Programms zum (i) Analysieren eines Dokuments, das eine Mehrzahl von primitiven Elementen aufweist, und (ii) Erzeugen struktureller Elemente, die eine Struktur in dem Dokument definieren, basierend auf der Analyse, wobei das Verfahren aufweist: Definieren eines Moduls zum Identifizieren von Begrenzungen zwischen Mengen von primitiven Elementen; Definieren eines Moduls zum Identifizieren von Bereichen, die von den Begrenzungen begrenzt sind; Definieren eines Moduls zum Verwenden der identifizierten Begrenzungen und Bereiche, um die strukturellen Elemente zu spezifizieren.
  14. Verfahren nach Anspruch 13, ferner aufweisend Definieren eines Moduls zum Definieren eines strukturierten Dokuments basierend auf den Bereichen, den primitiven Elementen und den strukturellen Elementen.
  15. Verfahren nach Anspruch 13, worin das Dokument ein unstrukturiertes Dokument ist.
  16. Computer-lesbares Medium, das ein Computerprogramm speichert, das, wenn es durch zumindest einen Prozessor ausgeführt wird, ein Dokument analysiert, welches eine Mehrzahl von primitiven Elementen aufweist, wobei die primitiven Elemente eine Mehrzahl von Glyphen und eine Mehrzahl von grafischen Elementen aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren einer Mehrzahl der grafischen Elemente als potentielle Begrenzungen; Identifizieren eines Teils der potentiellen Begrenzungen als tatsächliche Begrenzungen; Durchlaufen der tatsächlichen Begrenzungen, um eine oder mehrere Zonen zu identifizieren; und Definieren eines hierarchischen Dokumentmodells mit den identifizierten Zonen.
  17. Computer-lesbares Medium nach Anspruch 16, worin Identifizieren einer Mehrzahl der grafischen Elemente als potentielle Begrenzungen Sätze von Anweisungen umfasst zum: Identifizieren grafischer Elemente, die vertikale und horizontale gerade Linien von höchstens einer bestimmten Dicke sind; Identifizieren grafischer Elemente, die die vertikale und horizontale gerade Linien von höchstens einer bestimmten Dicke; und Identifizieren äußerer Kanten aufrechter rechteckiger grafischer Elemente.
  18. Computer-lesbares Medium nach Anspruch 16, worin der Satz von Anweisungen zum Identifizieren eines Teils der potentiellen Begrenzungen als tatsächliche Begrenzungen Sätze von Anweisungen umfasst zum: Identifizieren von Kreuzungen zwischen den potentiellen Begrenzungen; und iteratives Entfernen potentieller Begrenzungen, die nicht zumindest zwei andere potentielle Begrenzungen kreuzen, bis alle verbleibenden potentiellen Begrenzungen zumindest zwei andere potentielle Begrenzungen kreuzen; und Identifizieren der verbleibenden potentiellen Begrenzungen als tatsächliche Begrenzungen.
  19. Computer-lesbares Medium nach Anspruch 16, worin der Satz von Anweisungen zum Durchlaufen der tatsächlichen Begrenzungen, um eine oder mehrere Zonen zu identifizieren, Sätze von Anweisungen umfasst zum: Definieren einer Menge von in Richtung ausgerichteten Intervallen, welche zwei Intervalle aufweist, die in entgegengesetzten Richtungen ausgerichtet sind, für jede der tatsächlichen Begrenzungen; Auswählen einer Kreuzung und Richtung, die von der Kreuzung weg weist; Durchlaufen der Intervalle in der Menge von Intervallen beginnend mit der gewählten Kreuzung der gewählten Richtung, bis zur gewählten Kreuzung zurückgekehrt wird; Definieren des Gebiets, das von den durchlaufenen Intervallen eingeschlossen wird, als eine Zone; und Entfernen der durchlaufenen Intervalle aus der Menge von Intervallen.
  20. Computer-lesbares Medium nach Anspruch 19, worin die in Richtung ausgerichteten Intervalle Vektoren sind.
  21. Computer-lesbares Medium nach Anspruch 19, worin der Satz von Anweisungen zum Durchlaufen der tatsächlichen Begrenzungen, um eine oder mehrere Zonen zu identifizieren, ferner Sätze von Anweisungen umfasst zum: wiederholten, bis die Menge von in Richtung ausgerichteten Intervallen leer ist: Auswählen einer Kreuzung und einer Richtung von der Kreuzung weg; Durchlaufen der Intervalle in der Menge von Intervallen beginnend mit der gewählten Kreuzung in der gewählten Richtung, bis zu der gewählten Kreuzung zurückgekehrt wird; Definieren des Gebiets, das von den durchlaufenen Intervallen eingeschlossen wird, als eine Zone; und Entfernen der durchlaufenen Intervalle aus der Menge von Intervallen.
  22. Computer-lesbares Medium nach Anspruch 16, ferner aufweisend Definieren einer bestimmten Zone als eine Insel, wenn die bestimmte Zone in einer bestimmten Richtung durchlaufen wird.
  23. Computer-lesbares Medium nach Anspruch 16, worin eine erste Zone ein Elter einer zweiten Zone ist, wenn die zweite Zone vollständig von der ersten Zone eingeschlossen wird.
  24. Computer-lesbares Medium nach Anspruch 23, worin die zweite Zone eine Insel ist, wenn die erste Zone und die zweite Zone keine Begrenzung teilen.
  25. Computer-lesbares Medium nach Anspruch 16, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Definieren struktureller Elemente basierend auf den Glyphen und den grafischen Elementen, die keine tatsächlichen Begrenzungen sind.
  26. Computer-lesbares Medium nach Anspruch 25, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Bevölkern einer Zone des hierarchischen Dokumentmodells mit zumindest einem strukturellen Element.
  27. Computer-lesbares Medium nach Anspruch 25, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Identifizieren einer Drehzone.
  28. Computer-lesbares Medium nach Anspruch 27, worin eine Drehzone eine Zone ist, die nicht ausgerichtet ist mit einer Seite, welche die Drehzone enthält.
  29. Computer-lesbares Medium nach Anspruch 28, worin eine Zone nicht mit einer Seite ausgerichtet ist, wenn die Zone um zumindest einen bestimmten Winkel von den Kanten der Seite versetzt ist.
  30. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, das eine Mehrzahl von Wörtern aufweist, wobei jedes Wort eine assoziierte Menge von Glyphen aufweist, wobei jeder Glyph Positionskoordinaten aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren einer Gruppe von Wörtern basierend auf den Positionskoordinaten der Glyphen; basierend auf der identifizierten Gruppe von Wörtern, Definieren einer Menge von Begrenzungselementen für die Glyphen; Definieren eines strukturierten Dokuments basierend auf den Glyphen und der definierten Menge von Begrenzungselementen.
  31. Computer-lesbares Medium nach Anspruch 30, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Definieren zumindest eines Bereichs von Leerraum zwischen einem Paar von Begrenzungselementen, worin das strukturierte Dokuments ferner definiert ist basierend auf dem Bereich von Leerraum.
  32. Computer-lesbares Medium nach Anspruch 30, worin der Satz von Anweisungen zum Identifizieren der Gruppen von Wörtern einen Satz von Anweisungen aufweist zum Ausführen von Clusteranalyse auf Daten, die abgeleitet sind von Koordinaten der Wörter entlang einer Achse.
  33. Computer-lesbares Medium nach Anspruch 32, worin die Clusteranalyse Dichteclustern aufweist, um große Gruppen von Daten mit ähnlichen Werten zu identifizieren.
  34. Computer-lesbares Medium nach Anspruch 30, worin die Begrenzungselemente rechte und linke Ausrichtungsführungen für Glyphen sind.
  35. Computer-lesbares Medium nach Anspruch 30, worin der Satz von Anweisungen zum Definieren die Menge von Begrenzungselemente Sätze von Anweisungen umfasst zum: für jeden Cluster, Definieren eines Streifens entlang einer ersten Achse mit einer Breite basierend auf den Wörtern in dem Cluster; und Eliminieren des Streifens bei Koordinaten entlang der ersten Achse, wo ein Wort in den Streifen hinein kreuzt aus einer bestimmten Richtung entlang einer zweiten Achse.
  36. Computer-lesbares Medium nach Anspruch 30, worin der Satz von Anweisungen zum Definieren eines strukturierten Dokuments einen Satz von Anweisungen aufweist zum Identifizieren einer Textspalte unter Verwendung der Glyphen und der definierten Begrenzungselemente.
  37. Verfahren zum Definieren eines Programms zum (i) Analysieren eines Dokuments, das eine Mehrzahl von Wörtern aufweist, wobei jedes Wort eine assoziierte Menge von Glyphen aufweist, wobei jeder Glyph Positionskoordinaten aufweist, und (ii) Erzeugen struktureller Elemente, welche eine Struktur in dem Dokument definieren, basierend auf der Analyse, wobei das Verfahren aufweist: Definieren eines Moduls zum Identifizieren von Gruppen von Wörtern basierend auf den Positionskoordinaten der Glyphen; Definieren eines Moduls zum Definieren einer Menge von Begrenzungselementen für die Glyphen basierend auf der identifizierten Gruppen von Wörtern, wobei die Begrenzungselemente eine Menge von Grenzen für die Glyphen identifizieren; und Definieren eines Moduls zum Verwenden der identifizierten Begrenzungselemente, um die strukturellen Elemente zu spezifizieren
  38. Verfahren nach Anspruch 37, ferner aufweisend Definieren eines Moduls zum Definieren eines strukturierten Dokuments basierend auf den Glyphen, den definierten Begrenzungselementen und den strukturellen Elementen.
  39. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert aufweisend einer Mehrzahl von Wörtern, wobei jedes Wort eine Mehrzahl von Glyphen aufweist, wobei jedes Wort einen bestimmten Positionswert aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Ordnen der Positionswerte der Wörter; Identifizieren einer Mehrzahl von unterschiedlichen Gruppierungen der Positionswerte in Untermengen, für jede unterschiedliche Gruppierung, Identifizieren einer Menge von den Untermengen von Positionswerten, welche eine bestimmte Menge von Randbedingungen erfüllen; Bestimmen einer bestimmten aus der Menge an Untermengen von Positionswerten, welche einbestimmtes Maß optimiert; und Definieren von Begrenzungselementen für die Glyphen basierend auf der bestimmten Menge von Untermengen, welche das bestimmte Maß optimiert.
  40. Computer-lesbares Medium nach Anspruch 39, worin die Menge von Randbedingungen eine Anforderung enthält, dass die Untermengen von Positionswerten zumindest eine bestimmte Anzahl von Werten enthalten.
  41. Computer-lesbares Medium nach Anspruch 39, worin die Menge von Randbedingungen eine Anforderung enthält, dass die Differenz zwischen dem größten und dem kleinsten Wert in der Untermenge nicht mehr als ein bestimmter Schwellwert ist.
  42. Computer-lesbares Medium nach Anspruch 39, worin die bestimmten Positionswerte rechte Kanten von Wörtern repräsentieren, worin die Menge von Untermengen, welche das bestimmte Maß optimieren, verwendet wird, um rechte Ausrichtungsführungen zu identifizieren.
  43. Computer-lesbares Medium nach Anspruch 39, worin die bestimmten Positionswerte linke Kanten von Wörtern repräsentieren, worin die Menge von Untermengen, welche das bestimmte Maß optimieren, verwendet wird, um linke Ausrichtungsführungen zu identifizieren.
  44. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, Cluster von Daten identifiziert, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Empfangen einer Menge von zu clusternden Datenwerten; Identifizieren einer Mehrzahl von Partitionen der Datenwerte, wobei jede unterschiedliche Partition eine andere Gruppierung der Datenwerte in Untermengen spezifiziert; für jede Gruppe von Untermengen von Datenwerten, Identifizieren einer Menge von den Untermengen, die eine bestimmte Menge von Randbedingungen erfüllt; und Bestimmen einer Menge von Untermengen, die ein bestimmtes Maß optimiert.
  45. Computer-lesbares Medium nach Anspruch 44, worin die Datenwerte Positionen von Glyphen in einem Dokument sind, worin die Menge von Untermengen, die ein bestimmtes Maß optimiert, Ausrichtungsführungen für das Dokument identifiziert.
  46. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, das eine Mehrzahl von Wörtern aufweist, wobei jedes Wort eine assoziierte Menge von Glyphen aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren einer Menge von linken Ausrichtungspunkten und eine Menge von rechten Ausrichtungspunkten in dem Dokument; Identifizieren eines Leerraums in dem Dokument zwischen einem linken Ausrichtungspunkt und einem rechten Ausrichtungspunkt, welche bestimmte Kriterien erfüllen; und Definieren eines strukturierten Dokuments unter Verwendung des identifizierten Leerraums.
  47. Computer-lesbares Medium nach Anspruch 46, worin die Menge von linken Ausrichtungspunkten und die Menge von rechten Ausrichtungspunkten Ausrichtungsführungen aufweist, die bestimmt sind durch Dichteclustern der Wörter.
  48. Computer-lesbares Medium nach Anspruch 46, worin der Satz von Anweisungen zum Identifizieren eines Leerraums in dem Dokument Sätze von Anweisungen umfasst zum: Auswählen eines rechten Ausrichtungspunkts aus der Menge von rechten Ausrichtungspunkten; Identifizieren eines linken Ausrichtungspunkts in der Menge von linken Ausrichtungspunkten, welcher der linke Ausrichtungspunkt ist, der am nächsten zu dem gewählten rechten Ausrichtungspunkt ist, der rechts des gewählten rechten Ausrichtungspunkts ist; Definieren eines vertikalen Streifens zwischen dem gewählten rechten Ausrichtungspunkt und dem identifizierten linken Ausrichtungspunkt; und Eliminieren des vertikalen Streifens bei Koordinaten, wo ein Wort in den Streifen hinein kreuzt.
  49. Computer-lesbares Medium nach Anspruch 44, worin der Satz von Anweisungen zum Definieren eines strukturierten Dokuments unter Verwendung des identifizierten Leerraums Sätze von Anweisungen umfasst zum Aufteilen von Zeilen von Wörtern.
  50. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, das eine Mehrzahl von Glyphen aufweist, wobei jeder Glyph eine Position in dem Dokument aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: basierend auf Positionen der Glyphen in dem Dokument, Erzeugen von Assoziationen zwischen Glyphen, um unterschiedliche Mengen von Glyphen als unterschiedliche Wörter zu identifizieren; Erzeugen von Assoziationen zwischen Wörtern um unterschiedliche Mengen von Wörtern als unterschiedliche Absätze zu identifizieren; und Definieren einer Assoziation zwischen zumindest zwei Absätzen, die nicht zusammenhängend sind, um eine Lesereihenfolge für die Absätze zu definieren.
  51. Computer-lesbares Medium nach Anspruch 50, worin der Satz von Anweisungen zum Erzeugen von Assoziationen zwischen Wörtern einen Satz von Anweisungen aufweist zum Identifizieren einer Menge von zu assoziierenden Wörtern basierend auf (i) vertikalen Abstandseigenschaften der Glyphen, welche die Wörter bilden, und (ii) horizontalen Ausrichtungseigenschaften der Glyphen, welche die Wörter bilden.
  52. Computer-lesbares Medium nach Anspruch 50, worin der Satz von Anweisungen zum Erzeugen von Assoziationen zwischen Wörtern um unterschiedliche Mengen von Wörtern als unterschiedliche Absätze zu identifizieren Sätze von Anweisungen umfasst zum: Erzeugen einer Assoziation zwischen Wörtern, um eine Menge von Wörtern als eine Textzeile zu identifizieren; und Erzeugen einer Assoziation zwischen Textzeilen, um eine eine Menge von Textzeilen als einen Absatz zu identifizieren.
  53. Computer-lesbares Medium nach Anspruch 52, worin der Satz von Anweisungen zum Erzeugen einer Assoziation zwischen Wörtern, um eine Menge von Wörtern als eine Textzeile zu identifizieren, Sätze von Anweisungen umfasst zum: Identifizieren einer Menge von horizontal ausgerichteten Wörtern, worin alle Wörter in der Menge Grundlinien aufweisen, die innerhalb eines bestimmten Schwellwerts voneinander sind; und Aufteilen der Menge von horizontal ausgerichteten Wörtern basierend auf dem Vorhandensein von zumindest einer horizontalen Lücke; und Erzeugen von Assoziationen zwischen den Wörtern in jeder verbleibenden Menge.
  54. Computer-lesbares Medium nach Anspruch 53, worin der Satz von Anweisungen zum Aufteilen der Menge von horizontal ausgerichteten Wörtern Sätze von Anweisungen umfasst zum: Identifizieren horizontaler Lücken als Lücken von zumindest einer Schwellwertbreite zwischen horizontal ausgerichteten Wörtern; Identifizieren von Mengen horizontaler Lücken, die vertikal ausgerichtet sind; Entfernen von Mengen horizontaler Lücken, die eine bestimmte Menge von Kriterien nicht erfüllen; und Aufteilen der Menge von horizontal ausgerichteten Wörtern bei den nicht entfernten Lücken.
  55. Computer-lesbares Medium nach Anspruch 52, worin der Satz von Anweisungen zum Erzeugen einer Assoziation zwischen Textzeilen, um eine Menge von Textzeilen als einen Absatz zu identifizieren, Sätze von Anweisungen umfasst zum Vergleichen vertikaler Abstandseigenschaften benachbarter Textzeilen.
  56. Computer-lesbares Medium nach Anspruch 52, worin der Satz von Anweisungen zum Erzeugen von Assoziationen zwischen Textzeilen, um eine Menge von Textzeilen als einen Absatz zu identifizieren, Sätze von Anweisungen umfasst zum Vergleichen horizontaler Ausrichtungseigenschaften benachbarter Textzeilen.
  57. Computer-lesbares Medium nach Anspruch 50, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Erzeugen von Assoziationen zwischen Absätzen, um eine Menge von Absätzen als eine Spalte zu identifizieren.
  58. Verfahren zum Definieren eines Programms zum Analysieren eines Dokuments, das eine Mehrzahl von Glyphen aufweist, wobei jeder Glyph eine Position in dem Dokument aufweist, wobei das Verfahren aufweist: Definieren eines Moduls zum, basierend auf Positionen der Glyphen in dem Dokument, Erzeugen von Assoziationen zwischen Glyphen, um unterschiedliche Mengen von Glyphen als unterschiedliche Wörter zu identifizieren; Definieren eines Moduls zum Erzeugen von Assoziationen zwischen Wörtern, um unterschiedliche Mengen von Wärtern als unterschiedliche Absätze zu identifizieren; und Definieren eines Moduls zum Definieren einer Assoziation zwischen zumindest zwei Absätzen, die nicht fortlaufend sind, um eine Lesereihenfolge für die Absätze zu definieren.
  59. Verfahren nach Anspruch 58, worin Definieren des Moduls zum Erzeugen einer Assoziation zwischen Glyphen aufweist Definieren eines Moduls zum Ausführen einer Clusteranalyse auf den Positionen der Glyphen, um horizontalen Abstand zwischen Glyphen zu identifizieren.
  60. Verfahren nach Anspruch 59, worin die Clusteranalyse Cluster horizontaler Abstandsgrößen identifiziert, um Abstand zwischen Wärtern und Abstand innerhalb von Wörtern zu identifizieren.
  61. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, das eine Mehrzahl von Glyphen aufweist, wobei jeder Glyph eine Position in dem Dokument aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: basierend auf den Positionen der Glyphen, Identifizieren unterschiedlicher Mengen von Glyphen als unterschiedliche Wörter; Identifizieren unterschiedlicher Mengen von Wörtern als unterschiedliche Absätze; Definieren einer Lesereihenfolge durch die Absätze, wobei die Lesereihenfolge einen Fluss spezifiziert durch zumindest zwei Absätze, die nicht fortlaufend sind, in dem Dokument; und Definieren eines strukturierten Dokuments basierend auf den Wörtern, den Absätzen und der definierten Lesereihenfolge.
  62. Computer-lesbares Medium nach Anspruch 61, worin Identifizieren einer bestimmten Menge von Glyphen als ein Wort Assoziieren der Glyphen umfasst.
  63. Computer-lesbares Medium nach Anspruch 61, worin Identifizieren einer bestimmten Menge von Glyphen als ein Wort Erzeugen einer Assoziation zwischen den Glyphen umfasst.
  64. Computer-lesbares Medium nach Anspruch 61, worin die zwei Absätze, die nicht fortlaufend sind, einen ersten Absatz am unteren Ende einer ersten Spalte und einen zweiten Absatz am oberen Ende einer zweiten Spalte umfasst, worin die Lesereihenfolge einen Fluss von dem ersten Absatz direkt zu dem zweiten Absatz spezifiziert.
  65. Computer-lesbares Medium nach Anspruch 61, worin die zwei Absätze, die nicht fortlaufend sind, einen ersten Absatz am Ende einer ersten Seite und einen zweiten Absatz am Beginn einer zweiten Seite umfasst, worin die Lesereihenfolge einen Fluss von dem ersten Absatz direkt zu dem zweiten Absatz spezifiziert.
  66. Computer-lesbares Medium nach Anspruch 65, worin die erste Seite und die zweite Seite nicht fortlaufend sind in dem Dokument.
  67. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, das eine Mehrzahl von primitiven Elementen aufweist, wobei jedes primitive Element eine Mehrzahl von Eigenschaften aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Assoziieren von Mengen von primitiven Elementen als strukturell Elemente basierend auf den Eigenschaften der primitiven Elemente; Definieren von Beziehungen zwischen den strukturellen Elementen; Spezifizieren eines Flusses durch alle primitiven Elemente basierend auf den Assoziationen und Beziehungen; und Optimieren von Benutzerinteraktionen mit dem Dokument unter Verwendung des spezifizierten Flusses durch die primitiven Elemente.
  68. Computer-lesbares Medium nach Anspruch 67, worin die Benutzerinteraktionen Auswahloperationen umfassen.
  69. Computer-lesbares Medium nach Anspruch 67, worin die Benutzerinteraktionen Anzeigeoperationen umfassen.
  70. Computer-lesbares Medium nach Anspruch 67, worin die Benutzerinteraktionen Navigationsoperationen umfassen.
  71. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, das eine Mehrzahl von primitiven Elementen aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren von Begrenzungen zwischen Mengen von primitiven Elementen; Identifizieren, dass eine Mehrzahl der Begrenzungen eine Tabelle bilden,; und Definieren eines tabellarischen strukturellen Elements für die Tabelle, wobei das tabellarische strukturelle Element eine Mehrzahl von Zellen aufweist, die in einer Mehrzahl von Reihen und Spalten angeordnet sind, wobei jede Zelle eine assoziierte Menge von primitiven Elementen aufweist.
  72. Computer-lesbares Medium nach Anspruch 71, ferner aufweisend einen Satz von Anweisungen zum Definieren eines strukturierten Dokuments basierend auf dem tabellarischen strukturellen Element.
  73. Computer-lesbares Medium nach Anspruch 72, worin der Satz von Anweisungen zum Definieren des strukturierten Dokuments einen Satz von Anweisungen aufweist zum Definieren eines hierarchischen Modells des unstrukturierten Dokuments.
  74. Computer-lesbares Medium nach Anspruch 73, worin die Zellen des tabellarischen strukturellen Elements Knoten in dem hierarchischen Modell aufweisen.
  75. Computer-lesbares Medium nach Anspruch 73, worin das tabellarische strukturelle Element einen Knoten in dem hierarchischen Modell aufweist.
  76. Computer-lesbares Medium nach Anspruch 71, worin der Satz von Anweisungen zum Identifizieren, dass eine Mehrzahl der Begrenzungen eine Tabelle bilden, Sätze von Anweisungen umfasst zum Identifizieren (i) einer Menge von Begrenzungen, die eine größere, rechteckige Form bilden, und (ii) einer Mehrzahl von rechteckigen Formen, in der größeren, rechteckigen Form enthalten sind.
  77. Computer-lesbares Medium nach Anspruch 71, worin das Dokument eine Mehrzahl von grafischen primitiven Elementen aufweist, worin der Satz von Anweisungen zum Identifizieren von Begrenzungen zwischen Mengen von primitiven Elementen Identifizieren grafischer primitiver Elemente aufweist, die vertikale oder horizontale Linien sind, und grafischer primitiver Elemente, die vertikale oder horizontale Linien approximieren.
  78. Computer-lesbares Medium nach Anspruch 77, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Identifizieren einer Mehrzahl von hierarchischen Bereichen basierend auf den identifizierten grafischen primitiven Elementen.
  79. Computer-lesbares Medium nach Anspruch 78, worin der Satz von Anweisungen zum Identifizieren, dass eine Mehrzahl der Begrenzungen eine Tabelle bilden, einen Satz von Anweisungen aufweist zum Identifizieren einer Menge der hierarchischen Bereiche, die eine bestimmte Menge von Eigenschaften erfüllen.
  80. Computer-lesbares Medium nach Anspruch 79, worin der Satz von Anweisungen zum Identifizieren, dass eine Mehrzahl der Begrenzungen eine Tabelle bilden, einen Satz von Anweisungen aufweist zum Identifizieren (i) eines ersten rechteckigen Bereichs, der keine Grenzen teilt mit einem Elternbereich, und (ii) einer Menge von zumindest zwei Kinderbereichen des ersten Bereichs, worin die Menge von Kinderbereichen den ersten Bereich vollständig partitionieren, worin jeder Kinderbereich in der Menge rechteckig ist.
  81. Computer-lesbares Medium nach Anspruch 80, worin der erste Bereich eine äußere Begrenzung der Tabelle ist und die Kinderbereiche des ersten Bereichs Zellen der Tabelle sind.
  82. Computer-lesbares Medium nach Anspruch 71, worin einer Mehrzahl der identifizierten Begrenzungen inferiert werden basierend auf Positionen der assoziierten Mengen von Glyphen, welche die Zellen bilden.
  83. Computer-lesbares Medium nach Anspruch 82, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Assoziieren von Mengen von Glyphen als Absätze, worin die Begrenzungen inferiert werden basierend auf Positionen der Absätze.
  84. Computer-lesbares Medium nach Anspruch 82, worin der Satz von Anweisungen zum Identifizieren von Begrenzungen zwischen Mengen von Glyphen einen Satz von Anweisungen aufweist zum Identifizieren von zumindest zwei Mengen von Glyphen, die vertikal oder horizontal ausgerichtet sind.
  85. Computer-lesbares Medium nach Anspruch 71, worin der Satz von Anweisungen zum Definieren eines tabellarischen strukturellen Elements einen Satz von Anweisungen aufweist zum Identifizieren von Mengen identifizierter Begrenzungen, die zusammenhängende Rechtecke bilden.
  86. Computer-lesbares Medium nach Anspruch 85, worin die zusammenhängenden Rechtecke die Zellen des tabellarischen strukturellen Elements sind.
  87. Verfahren zum Definieren eines Programms zum (i) Analysieren eines Dokuments, das eine Mehrzahl von primitiven Elementen aufweist, und (ii) Erzeugen struktureller Elemente, welche eine Struktur in dem Dokument definieren basierend auf der Analyse, wobei das Verfahren aufweist: Definieren eines Moduls zum Identifizieren von Begrenzungen zwischen Mengen von primitiven Elementen; Definieren eines Moduls zum Identifizieren, dass eine Mehrzahl der Begrenzungen eine Tabelle bilden; und Definieren eines Moduls zum Definieren eines tabellarischen strukturellen Elements basierend auf der Tabelle, wobei das tabellarische strukturelle Element aufweisend eine Mehrzahl von Zellen aufweist, die in einer Mehrzahl von Reihen und Spalten angeordnet sind, wobei jede Zelle eine assoziierte Menge von primitiven Elementen aufweist.
  88. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, welches eine Mehrzahl von primitiven Elementen aufweist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren einer ersten Menge von primitiven Elementen, welche eine Tabelle umfassen; Definieren eines tabellarischen strukturellen Elements für die erste Menge von primitiven Elementen; Identifizieren einer zweiten Menge von primitiven Elementen, die keine Tabelle umfassen; Definieren einer Menge von nicht-tabellarischen strukturellen Elementen für die zweite Menge von primitiven Elementen; Definieren eines strukturierten Dokuments, das das tabellarische strukturelle Element und die Menge von nicht-tabellarischen strukturellen Elementen umfasst.
  89. Computer-lesbares Medium nach Anspruch 88, worin der Satz von Anweisungen zum Definieren eines strukturierten Dokuments einen Satz von Anweisungen aufweist zum Definieren einer Lesereihenfolge durch die strukturellen Elemente, worin die Lesereihenfolge von einem ersten strukturellen Element aus der Menge von strukturellen Elementen zu dem tabellarischen strukturellen Element zu einem zweiten strukturellen Element aus der Menge von strukturellen Elementen fließt.
  90. Computer-lesbares Medium nach Anspruch 88, worin das Computerprogramm ferner Sätze von Anweisungen umfasst zum: Identifizieren unterschiedlicher Mengen von primitiven Elementen, worin jede der unterschiedlichen Mengen eine unterschiedliche Tabelle umfasst; und Definieren unterschiedlicher tabellarischer struktureller Elemente für jede der unterschiedlichen Mengen.
  91. Computer-lesbares Medium nach Anspruch 90, worin eine erste der unterschiedlichen Mengen sowohl grafische primitive Elemente als auch Glyphen umfasst, während eine zweite der unterschiedlichen Mengen lediglich Glyphen umfasst.
  92. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Empfangen des Dokuments, welches eine Mehrzahl von primitiven grafischen Elementen umfasst, wobei jedes primitive grafische Element definiert ist als ein einzelnes Objekt in dem Dokument, wobei das Dokument eine Zeichnungsreihenfolge aufweist, welche die Reihenfolge anzeigt, in der die primitiven grafischen Elemente gezeichnet werden, wenn das Dokument angezeigt wird; Identifizieren positioneller Beziehungen zwischen aufeinander folgenden primitiven grafischen Elemente in der Zeichnungsreihenfolge; und basierend auf den positionellen Beziehungen, Definieren eines einzigen strukturellen grafischen Elements aus zumindest zwei der primitiven grafischen Elemente.
  93. Computer-lesbares Medium nach Anspruch 92, worin das Dokument ferner eine Mehrzahl von Glyphen umfasst, worin die Zeichnungsreihenfolge nicht die Reihenfolge angibt, in der die Glyphen auf der Seite gezeichnet werden.
  94. Computer-lesbares Medium nach Anspruch 92, worin das Dokument ein Vektorgrafikdokument ist, worin die primitivere grafischen Elemente Vektorgrafiken sind.
  95. Computer-lesbares Medium nach Anspruch 92, worin der Satz von Anweisungen zum Identifizieren positioneller Beziehungen zwischen aufeinander folgenden primitiven grafischen Elementen einen Satz von Anweisungen aufweist zum Berechnen, für ein erstes primitives grafisches Element und ein zweites primitives grafisches Element, das dem ersten in der Lesereihenfolge nachfolgt, einer Größe eines strukturellen grafischen Elements, welches das erste und das zweite primitive grafische Element umfasst.
  96. Computer-lesbares Medium nach Anspruch 95, worin die Größe proportional zu dem Gebiet einer aufrechten Begrenzungsbox ist, welche das erste und das zweite primitive grafische Element einhüllt.
  97. Computer-lesbares Medium nach Anspruch 95, worin die Größe proportional der Summe aus der Länge und der Höhe einer aufrechten Begrenzungsbox ist, welche das erste und das zweite primitive grafische Element einhüllt.
  98. Computer-lesbares Medium nach Anspruch 95, worin der Satz von Anweisungen zum Identifizieren positioneller Beziehungen zwischen aufeinander folgenden primitiven grafischen Elemente ferner Sätze von Anweisungen umfasst zum: Berechnen, für das zweite primitive grafische Element und ein drittes primitives grafisches Element, das dem zweiten in der Lesereihenfolge nachfolgt, eine Größe eines strukturellen grafischen Elements, welches das zweite und das dritte primitive grafische Element umfasst; Vergleichen der Größe des strukturellen grafischen Elements, welches das erste und das zweite primitive grafische Element umfasst, mit der Größe des strukturellen grafischen Elements, welches das zweite und das dritte primitive grafische Element umfasst.
  99. Computer-lesbares Medium nach Anspruch 92, worin der Satz von Anweisungen zum Identifizieren positioneller Beziehungen zwischen aufeinander folgenden primitiven grafischen Elementen Sätze von Anweisungen umfasst zum: Identifizieren jedes Paars primitiver grafischer Elemente, die in der Zeichnungsreihenfolge aufeinander folgen; und für jedes identifizierte Paar primitiver grafischer Elemente, Berechnen eines Spannenwertes für das Paar.
  100. Computer-lesbares Medium nach Anspruch 99, worin der Spannenwert eines Paares die Größe und Nähe der zwei primitiven grafischen Elemente in dem Paar beschreibt.
  101. Computer-lesbares Medium nach Anspruch 99, worin der Satz von Anweisungen zum Definieren eines einzelnen strukturellen grafischen Element aus einer Menge von primitiven grafischen Elementen Sätze von Anweisungen umfasst zum: Identifizieren eines Cluster primitiver grafischer Elemente, die nahe beieinander sind, basierend auf den berechneten Spannenwerten, worin innerhalb des Clusters alle der primitiven grafischen Elemente in der Zeichnungsreihenfolge aufeinander folgend sind; Identifizieren von Untergruppen aufeinander folgender primitiver grafischer Elemente in dem Cluster, welche eine bestimmte Menge von Randbedingungen erfüllen; und für jede Untergruppe, Definieren eines strukturellen grafischen Elements, das alle der primitiven grafischen Elemente in der Untergruppe umfasst.
  102. Computer-lesbares Medium nach Anspruch 101, worin der Satz von Anweisungen zum Identifizieren des Clusters primitiver grafischer Elemente einen Satz von Anweisungen aufweist zum Ausführen von Differenzenclustering auf den primitiven grafischen Elementen mit den berechneten Spannenwerten als Differenzen erster Ordnung.
  103. Computer-lesbares Medium nach Anspruch 101, worin die bestimmte Menge von Randbedingungen eine Anforderung aufweist, dass Abgrenzungen für jedes bestimmte Element in der Untergruppe gemeinsame Abgrenzungen für alle primitiven Elemente in der Untergruppe schneiden, die dem bestimmten primitiven Element in der Zeichnungsreihenfolge vorangehen.
  104. Computer-lesbares Medium nach Anspruch 103, worin die Abgrenzungen für jedes primitive Element eine kleinste aufrechte Begrenzungsbox ist, die das primitive Element enthält.
  105. Computer-lesbares Medium nach Anspruch 103, worin die Abgrenzungen für jedes primitive Element ein Pfad des kleinsten Gebiets ist, welcher das primitive Element vollständig einschließt.
  106. Computer-lesbares Medium nach Anspruch 92, worin der Satz von Anweisungen zum Definieren des einzelnen strukturellen grafischen Elements aus der Mehrzahl von primitiven grafischen Elemente einen Satz von Anweisungen aufweist zum Erzeugen von zumindest einer Assoziation zwischen der Menge primitiver grafischer Elemente, die verwendet wurden, um das strukturelle grafische Element zu definieren.
  107. Computer-lesbares Medium nach Anspruch 92, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Definieren eines strukturierten Dokuments basierend auf dem strukturellen grafischen Element.
  108. Computer-lesbares Medium nach Anspruch 107, worin das strukturierte Dokument ein hierarchisches Modell des Dokuments aufweist, welches eine Mehrzahl von Knoten umfasst, worin einer der Knoten durch das strukturelle grafische Element bevölkert ist.
  109. Verfahren zum Definieren eines Programms zum Analysieren eines Dokument und Erzeugen struktureller Elemente, welche basierend auf der Analyse eine Struktur in dem Dokument definieren, wobei das Verfahren aufweist: Definieren eines Moduls zum Empfangen des Dokuments, welches eine Mehrzahl von primitiven grafischen Elementen aufweist, wobei jedes primitive grafische Element definiert ist als ein einzelnes Objekt in dem Dokument, wobei das Dokument eine Zeichnungsreihenfolge aufweist, welche die Reihenfolge angibt, in der die primitiven grafischen Elemente gezeichnet werden, wenn das Dokument angezeigt wird; Definieren eines Moduls zum Identifizieren positioneller Beziehungen zwischen aufeinander folgenden primitiven grafischen Elemente in der Zeichnungsreihenfolge; und Definieren eines Moduls zum, basierend auf den positionellen Beziehungen, Definieren eines einzelnen strukturellen grafischen Elements aus zumindest zwei der primitiven grafischen Elemente.
  110. Verfahren nach Anspruch 109, ferner aufweisend Definieren eines Moduls zum Definieren eines strukturierten Dokuments, welches das strukturelle grafische Element umfasst.
  111. Verfahren nach Anspruch 110, worin das strukturierte Dokuments ein hierarchisches Modell des Dokuments aufweist, welches eine Mehrzahl von Knoten aufweist, worin einer der Knoten durch das strukturelle grafische Element bevölkert ist.
  112. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument analysiert, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Empfangen des Dokuments, das eine Mehrzahl von primitiven grafischen Elementen aufweist, wobei jedes primitive grafische Element definiert ist als ein einzelnes Objekt in dem Dokument, wobei das Dokument eine Zeichnungsreihenfolge aufweist, die die Reihenfolge angibt, in der die primitiven grafischen Elemente gezeichnet werden, wenn das Dokument angezeigt wird; Berechnen von Werten für jedes Paar von aufeinander folgenden primitiven grafischen Elementen in der Zeichnungsreihenfolge, worin die berechneten Werte sich auf eine Größe der primitiven grafischen Elemente in dem Paar beziehen; basierend auf den berechneten Werten, Definieren eines Clusters von aufeinander folgenden primitiven grafischen Elementen; und Identifizieren einer Menge von Unterclustern von primitiven grafischen Elementen in dem Cluster, welche bestimmte Randbedingungen erfüllen; und Definieren jedes bestimmten Unterclusters als ein einzelnes strukturelles grafisches Element, welches die primitiven grafischen Elemente in dem bestimmten Untercluster umfasst.
  113. Computer-lesbares Medium nach Anspruch 112, worin die berechneten Werte sich ferner auf die Nähe der primitiven grafischen Elemente in dem Paar zueinander beziehen.
  114. Verfahren zum Definieren eines Programms zum Rekonstruieren eines Dokuments, wobei das Verfahren aufweist: Definieren einer standardmäßigen Menge von Dokumentrekonstruktionsoperationen zum Definieren eines strukturierten Dokuments aus einem Dokument, welches eine Mehrzahl von primitiven Elementen umfasst; Definieren einer hierarchischen Menge von Profilen, wobei jedes Profil aufweist (i) eine Menge von potentiellen Dokumentrekonstruktionsergebnissen und (ii) Anweisungen zum Modifizieren der Dokumentrekonstruktionsoperationen, wenn die intermediären Dokumentrekonstruktionsergebnisse mit den potentiellen Dokumentrekonstruktionsergebnissen für das Profil übereinstimmen, worin Anweisungen von einem Profil auf einer niedrigeren Ebene in der Hierarchie Vorrang haben vor Anweisungen von einem Profil auf einer höheren Ebene; und Definieren eines Moduls zum Abgleichen intermediärer Dokumentrekonstruktionsergebnisse zu einem Profil.
  115. Verfahren nach Anspruch 114, worin das strukturierte Dokument ein hierarchisches Modell des Dokuments aufweist.
  116. Verfahren nach Anspruch 114, worin die hierarchische Menge von Profilen Profil umfasst für zumindest zwei von Dokumenten, Abschnitten, Seiten und Zonen.
  117. Verfahren nach Anspruch 116, worin jedes Dokumentprofil eine bestimmte Menge von möglichen Seitenprofilen spezifiziert und jedes Seitenprofil eine bestimmten Menge von möglichen Zonenprofilen spezifiziert.
  118. Verfahren nach Anspruch 117, worin die Menge von Seitenprofilen für ein erstes Dokumentenprofil ein bestimmtes Seitenprofil umfasst und die Menge von Seitenprofilen für ein zweites Dokumentenprofil auch das bestimmte Seitenprofil umfasst.
  119. Verfahren nach Anspruch 114, worin die Anweisungen eines bestimmten Profils eine Untermenge von Profilen auf einer niedrigeren Ebene in der hierarchischen Menge von Profilen umfasst, die getestet werden sollten, wenn die intermediären Dokumentrekonstruktionsergebnisse mit den potentiellen Dokumentrekonstruktionsergebnissen für das bestimmte Profil übereinstimmen.
  120. Verfahren nach Anspruch 114, worin die Anweisungen eines bestimmten Profils Anweisungen für eine bestimmte Dokumentrekonstruktionsoperation umfassen.
  121. Verfahren nach Anspruch 120, worin das bestimmte Profil ein Profil für eine Seite ist und die Menge von potentiellen Dokumentrekonstruktionsergebnissen für das bestimmte Profil Ergebnisse umfasst, dass die Seite nur eine Textspalte aufweist, worin die Anweisungen für das bestimmte Profil Anweisungen umfassen, Operationen zum Auftrennen von Textzeilen nicht auszuführen.
  122. Verfahren nach Anspruch 114, worin die Anweisungen eines bestimmten Profils Anweisungen umfassen bezüglich wie eine bestimmte Dokumentrekonstruktionsoperation auszuführen ist.
  123. Verfahren nach Anspruch 114, worin die Anweisungen eines bestimmten Profils Anweisungen umfassen, die einen bestimmten Rekonstruktionsprozess spezifizieren, dessen Ergebnisse von den intermediären Rekonstruktionsergebnissen entfernt werden sollen.
  124. Computer-lesbares Medium, das ein Computerprogramm speichert, das zur Ausführung durch zumindest einen Prozessor ist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Empfangen eines Dokuments, das eine Mehrzahl von primitiven Elementen aufweist; Identifizieren einer standardmäßigen Menge von Dokumentrekonstruktionsoperationen zum Rekonstruieren des Dokuments, um ein strukturiertes Dokument zu definieren; Ausführen einer oder mehrerer der Dokumentrekonstruktionsoperation aus der standardmäßigen Menge; basierend auf Ergebnissen der ausgeführten Dokumentrekonstruktionsoperationen, Identifizieren eines Profils für das Dokument; und Modifizieren der Menge von Dokumentrekonstruktionsoperationen zum Rekonstruieren des Dokuments gemäß dem identifizierten Profil.
  125. Computer-lesbares Medium nach Anspruch 124, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Ausführen zumindest einer der Dokumentrekonstruktionsoperationen aus der modifizierten Menge nachdem die Menge modifiziert wurde.
  126. Computer-lesbares Medium nach Anspruch 124, worin der Satz von Anweisungen zum Modifizieren der Menge von Dokumentrekonstruktionsoperationen einen Satz von Anweisungen aufweist zum Entfernen einer bestimmten Rekonstruktionsoperation aus der Menge von auszuführenden Rekonstruktionsoperationen.
  127. Computer-lesbares Medium nach Anspruch 124, worin der Satz von Anweisungen zum Modifizieren der Menge von Dokumentrekonstruktionsoperationen einen Satz von Anweisungen aufweist zum Hinzufügen einer bestimmten Rekonstruktionsoperation zu der Menge von auszuführenden Rekonstruktionsoperationen.
  128. Computer-lesbares Medium nach Anspruch 124, worin die standardmäßige Menge von Rekonstruktionsoperationen eine Reihenfolge spezifiziert, in der die Rekonstruktionsoperationen auszuführen sind.
  129. Computer-lesbares Medium nach Anspruch 128, worin der Satz von Anweisungen zum Modifizieren der Menge von Dokumentrekonstruktionsoperationen einen Satz von Anweisungen aufweist zum Modifizieren der Reihenfolge, in der die Rekonstruktionsoperationen auszuführen sind.
  130. Computer-lesbares Medium nach Anspruch 124, worin das Profil ein Dokumentprofil ist, welches einen Dokumententyp identifiziert für das Dokument basierend auf Ergebnissen der ausgeführten Dokumentrekonstruktionsoperationen.
  131. Computer-lesbares Medium nach Anspruch 130, worin das Computerprogramm ferner Sätze von Anweisungen umfasst zum: Ausführen von zumindest einer der Dokumentsrekonstruktionsoperationen aus der modifizierten Menge, nachdem die Menge modifiziert wurde; basierend auf Ergebnissen der ausgeführten Dokumentrekonstruktionsoperationen, Identifizieren eines Abschnittsprofils für einen bestimmten Abschnitt des Dokuments; und Modifizieren der Menge von Dokumentrekonstruktionsoperationen zum Rekonstruieren des bestimmten Abschnitts des Dokuments gemäß dem identifizierten Abschnittsprofil.
  132. Computer-lesbares Medium nach Anspruch 131, worin der bestimmte Abschnitt eine bestimmte Seite ist.
  133. Computer-lesbares Medium nach Anspruch 131, worin Anweisungen in dem Abschnittsprofil Vorrang haben über in Konflikt stehenden Anweisungen in dem Dokumentprofil zum Rekonstruieren des bestimmten Abschnitts.
  134. Computer-lesbares Medium nach Anspruch 131, worin Anweisungen in dem Dokumentprofil, denen keine gegensätzlichen Anweisungen in dem Abschnittsprofil gegenüberstehen, immer noch aktiv sind nach der Identifizierung des Abschnittsprofils.
  135. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, ein Dokument anzeigt, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Definieren eines strukturierten Dokuments, das eine Hierarchie struktureller Elemente aufweist, wobei die Hierarchie konstruiert wird durch Analysieren eines unstrukturierten Dokuments; Anzeigen des Dokuments auf einer Vorrichtung; Empfangen einer Auswahl einer Position von Interesse in dem Dokument; basierend auf der Position von Interesse, Identifizieren eines strukturellen Elements in der Hierarchie als ein Bereich von Interesse; und Modifizieren der Anzeige des Dokuments, um den identifizierten Bereich von Interesse hervorzuheben.
  136. Computer-lesbares Medium nach Anspruch 135, worin die Vorrichtung eine Vorrichtung mit einem kleinen Anzeigeschirm ist.
  137. Computer-lesbares Medium nach Anspruch 136, worin die Vorrichtung eine handgehaltene Vorrichtung ist.
  138. Computer-lesbares Medium nach Anspruch 136, worin das unstrukturierte Dokument eine Mehrzahl von nicht-assoziierten primitiven Elementen aufweist, worin der Satz von Anweisungen zum Definieren des strukturierten Dokuments Sätze von Anweisungen umfasst zum: Erzeugen von Assoziationen zwischen den primitiven Elementen, um strukturelle Elemente zu definieren; und Definieren der Hierarchie struktureller Elemente.
  139. Computer-lesbares Medium nach Anspruch 135, worin der Satz von Anweisungen zum Identifizieren des strukturellen Elements Sätze von Anweisungen umfasst zum: Identifizieren des strukturellen Elements auf einer untersten Ebene der Hierarchie, welche die Position von Interesse enthält; und Identifizieren struktureller Elemente auf höheren Ebenen der Hierarchie, welche das das auf der untersten Ebene der Hierarchie identifizierte strukturelle Element enthalten, bis ein strukturelles Element erreicht wird, das als ein Bereich von Interesse qualifiziert werden kann.
  140. Computer-lesbares Medium nach Anspruch 139, worin das strukturelle Element auf der untersten Ebene der Hierarchie eine Menge von Glyphen ist, die als ein Wort assoziiert sind, und das strukturelle Element, das als ein Bereich von Interesse qualifiziert wird, ein Absatz ist, der das Wort enthält.
  141. Computer-lesbares Medium nach Anspruch 139, worin die Position von Interesse innerhalb eines grafischen Elements ist und der Bereich von Interesse das grafische Element ist.
  142. Computer-lesbares Medium nach Anspruch 135, worin der Satz von Anweisungen zum Empfangen einer Auswahl einer Position von Interesse einen Satz von Anweisungen aufweist zum Empfangen eines doppelten Antippens an einer bestimmten Position auf einer Berührungsbildschirmvorrichtung.
  143. Computer-lesbares Medium nach Anspruch 135, worin der Satz von Anweisungen zum Modifizieren der Anzeige des Dokuments einen Satz von Anweisungen für eine Kombination aus Zoomen, Drehen und Verschieben des Dokuments aufweist, um den Bereich von Interesse zu zentrieren.
  144. Computer-lesbares Medium nach Anspruch 135, worin der Satz von Anweisungen zum Modifizieren der Anzeige des Dokuments Sätze von Anweisungen umfasst zum: Definieren eines Rechtecks von Interesse basierend auf dem strukturellen Element, das der Bereich von Interesse ist; und Zoomen der Anzeige, um die Größe des Rechtecks von Interesse zu maximieren, während das gesamte Rechteck von Interesse angezeigt wird.
  145. Computer-lesbares Medium nach Anspruch 144, worin das Rechteck von Interesse so gezoomt wird, dass eine Länge des Rechtecks in einer ersten Richtung gleich einer Länge einer Anzeige der Vorrichtung in der ersten Richtung ist, worin der Satz von Anweisungen zum Modifizieren der Anzeige des Dokuments ferner Sätze von Anweisungen umfasst zum Zentrieren des Rechtecks von Interesse in der Anzeige in einer zweiten Richtung.
  146. Computer-lesbares Medium nach Anspruch 145, worin die erste Richtung horizontal und die zweite Richtung vertikal ist.
  147. Computer-lesbares Medium nach Anspruch 145, worin die erste Richtung vertikal und die zweite Richtung horizontal ist.
  148. Computer-lesbares Medium nach Anspruch 135, worin das Computerprogramm ferner Sätze von Anweisungen umfasst zum: Empfangen einer Eingabe zum Bewegen von dem Bereich von Interesse; und Modifizieren der Anzeige des Dokuments, um einen strukturell in Bezug stehenden Bereich von Interesse hervorzuheben.
  149. Computer-lesbares Medium nach Anspruch 148, worin der strukturell in Bezug stehende Bereich von Interesse ein strukturelles Element ist, das in einer Lesereihenfolge dem identifizierten strukturellen Element vorhergeht.
  150. Computer-lesbares Medium nach Anspruch 148, worin der strukturell in Bezug stehende Bereich von Interesse ein strukturelles Element ist, das in einer Lesereihenfolge dem identifizierten strukturellen Element nachfolgt.
  151. Computer-lesbares Medium nach Anspruch 148, worin der strukturell in Bezug stehende Bereich von Interesse ein strukturelles Element auf einer anderen Seite in dem Dokument ist als der ursprüngliche Bereich von Interesse, worin das strukturierte Dokument eine Verknüpfung zwischen dem Bereich von Interesse und dem strukturell in Bezug stehenden Bereich von Interesse aufweist.
  152. Computer-lesbares Medium, welches ein Computerprogramm für eine handgehaltene Anzeigevorrichtung speichert, wobei das Computerprogramm zur Ausführung durch zumindest einen Prozessor ist, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Analysieren eines unstrukturiertes Dokument, welches eine Mehrzahl von nicht assoziierten primitiven Elementen umfasst, um ein strukturiertes Dokument zu definieren, das eine Hierarchie struktureller Elemente aufweist, wobei die strukturellen Elemente definiert sind durch Assoziieren von Mengen von primitiven Elementen; Anzeigen, auf einer handgehaltenen Anzeigevorrichtung, eines bestimmten Teils des strukturierten Dokuments in einem ersten Layout, wenn die Anzeigevorrichtung in einer ersten Orientierung ist; Anzeigen, auf einer handgehaltenen Anzeigevorrichtung, des bestimmten Teils des strukturierten Dokuments in einem zweiten Layout, wenn die Anzeigevorrichtung in einer zweiten Orientierung ist.
  153. Computer-lesbares Medium nach Anspruch 152, worin die erste Orientierung eine horizontale Orientierung und die zweite Orientierung eine vertikale Orientierung ist.
  154. Computer-lesbares Medium nach Anspruch 153, worin der Teil des strukturierten Dokuments Text aufweist, der in einer Spalte angeordnet ist, worin das erste Layout den Text in drei Spalten anzeigt und das zweite Layout den Text in zwei Spalten anzeigt.
  155. Computer-lesbares Medium nach Anspruch 152, worin die handgehaltene Anzeigevorrichtung einen Beschleunigungssensor zum Bestimmen der Orientierung der Anzeigevorrichtung aufweist.
  156. Computer-lesbares Medium nach Anspruch 152, worin die handgehaltene Anzeigevorrichtung ein iPhone® ist.
  157. Verfahren zum Definieren eines Programms zum Anzeigen eines Dokuments, wobei das Verfahren aufweist: Definieren eines Moduls zum Definieren eines strukturierten Dokuments, das eine Hierarchie struktureller Elemente aufweist, wobei die Hierarchie konstruiert ist durch Analysieren eines unstrukturierten Dokuments; Definieren eines Moduls zum Anzeigen des Dokuments auf einer Vorrichtung; Definieren eines Moduls zum Empfangen einer Auswahl einer Position von Interesse in dem Dokument; Definieren eines Moduls zum Identifizieren, basierend auf der Position von Interesse, eines strukturellen Elements in der Hierarchie als ein Bereich von Interesse; und Definieren eines Moduls zum Modifizieren der Anzeige des Dokuments, um den identifizierten Bereich von Interesse hervorzuheben.
  158. Verfahren nach Anspruch 157, worin das Programm definiert ist für Firmware einer handgehaltenen Vorrichtung.
  159. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, eine Textauswahl in einem Dokument definiert, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Empfangen eines unstrukturierten Dokuments, das eine Mehrzahl von nicht assoziierten Glyphen aufweist; Assoziieren von Mengen von Glyphen; Identifizieren einer Lesereihenfolge, die einen Lesefluss durch die Glyphen spezifiziert; Anzeigen des Dokuments; Empfangen eines Startpunktes und eines Endpunktes für eine Textauswahl innerhalb des angezeigten Dokuments; und Definieren einer Textauswahl vom Startpunkt zum Endpunkt unter Verwendung der identifizierten Mengen von Glyphen und des beabsichtigten Leseflusses.
  160. Computer-lesbares Medium nach Anspruch 159, worin die assoziierte Mengen von Glyphen eine Mehrzahl von Absätzen umfassen und die Lesereihenfolge einen Lesefluss von einem ersten Absatz zu einem zweiten Absatz spezifizieren, der nicht angrenzend ist.
  161. Computer-lesbares Medium nach Anspruch 159, worin die assoziierten Mengen von Glyphen eine Mehrzahl von Spalten umfassen und der Startpunkt und der Endpunkt in unterschiedlichen Spalten sind.
  162. Computer-lesbares Medium nach Anspruch 161, worin die Lesereihenfolge einen Ordnungswert für jede Spalte spezifiziert, worin die Textauswahl alle Spalten mit Ordnungswerten zwischen dem Ordnungswert der Spalte, welche den Startpunkt enthält, und dem Ordnungswert der Spalte, die den Endpunkt enthält, einschließt.
  163. Computer-lesbares Medium nach Anspruch 159, worin das Computerprogramm ferner Sätze von Anweisungen umfasst zum: Bestimmen, ob in der Lesereihenfolge der Startpunkt nach dem Endpunkt liegt; wenn der Startpunkt nach dem Endpunkt liegt, Tauschen des Startpunkts und des Endpunkts für die Auswahl, so dass in die Lesereihenfolge der Startpunkt nach dem Endpunkt liegt.
  164. Computer-lesbares Medium nach Anspruch 159, der Startpunkt und der Endpunkt für die Textauswahl empfangen werden durch eine Klicken und Ziehen Auswahl mit einer Cursor Steuereinheit.
  165. Computer-lesbares Medium nach Anspruch 159, worin der Startpunkt ein Ort eines Cursors ist, wenn eine Cursorsteuereinheitstaste gedrückt wird, und der Endpunkt ein Ort des Cursors ist, nachdem der Cursor von dem Startpunkt bewegt wurde.
  166. Computer-lesbares Medium nach Anspruch 159, worin der Startpunkt und der Endpunkt für die Textauswahl empfangen werden durch eine Berührungsbildschirmgeste.
  167. Computer-lesbares Medium nach Anspruch 166, worin der Startpunkt ein Ort ist, an dem ein Benutzer anfänglich den Berührungsbildschirm mit einem Objekt berührt, und der Endpunkt ein Ort ist, zu dem der Benutzer das Objekt gezogen hat.
  168. Computer-lesbares Medium nach Anspruch 167, worin das Objekt der Finger des Benutzers ist.
  169. Computer-lesbares Medium nach Anspruch 159, worin der Satz von Anweisungen zum Identifizieren assoziierter Mengen von Glyphen und einer Lesereihenfolge einen Satz von Anweisungen aufweist zum Definieren eines strukturierten Dokuments aus dem unstrukturierten Dokument, worin die assoziierten Mengen von Glyphen strukturelle Elemente in dem strukturierten Dokument sind.
  170. Computer-lesbares Medium nach Anspruch 169, worin das strukturierte Dokument eine Mehrzahl von Layouts aufweist, wobei jedes Layout eine oder mehrere assoziierte Mengen von Glyphen aufweist.
  171. Computer-lesbares Medium nach Anspruch 170, worin das Computerprogramm ferner Sätze von Anweisungen umfasst zum: Bestimmen, ob der Startpunkt und der Endpunkt innerhalb eines gleichen Layouts sind; und wenn der Startpunkt und der Endpunkt nicht in demselben Layout sind, Definieren eines neuen Endpunkts, der in demselben Layout ist wie der Startpunkt.
  172. Computer-lesbares Medium nach Anspruch 171, worin der Satz von Anweisungen zum Definieren eines neuen Endpunktes aufweist; Identifizieren einer geraden Linie von dem Startpunkt zu dem Endpunkt; und Definieren eines Punktes, an dem die Linie das Layout des Startpunkts verlässt, als dem neuen Endpunkt.
  173. Computer-lesbares Medium nach Anspruch 170, worin der Satz von Anweisungen zum Definieren einer Textauswahl Sätze von Anweisungen umfasst zum: Bestimmen, ob der Startpunkt und der Endpunkt innerhalb eines gleichen Layouts sind; wenn der Startpunkt und der Endpunkt in unterschiedlichen Layouts sind, Definieren der Auswahl so, dass sie allen Text in dem Layout des Startpunkts einschließt, der nach dem Startpunkt in dem Layout liegt.
  174. Computer-lesbares Medium nach Anspruch 173, worin der Satz von Anweisungen zum Definieren einer Textauswahl ferner einen Satz von Anweisungen aufweist zum Definieren der Auswahl, so dass sie allen Text in allen Layouts zwischen dem Layout des Startpunkts und dem Layout des Endpunkts einschließt.
  175. Computer-lesbares Medium nach Anspruch 159, worin die Textauswahl zum Kopieren und Einfügen in ein zweites Dokument dient, worin der Text unter Beibehaltung der Lesereihenfolge in das zweite Dokument eingefügt wird.
  176. Computer-lesbares Medium, das ein Computerprogramm zur Ausführung durch zumindest einen Prozessor speichert, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Analysieren eines unstrukturierten Dokuments, welches eine Mehrzahl von primitiven Elementen aufweist, um ein strukturiertes Dokument zu definieren als ein hierarchisches Modell des unstrukturierten Dokuments, wobei das strukturierte Dokument eine Mehrzahl von strukturellen Elemente und eine Lesereihenfolge durch die strukturellen Elemente aufweist; Anzeigen des Dokuments; Empfangen eines Startpunkts und eines Endpunkts für eine Textauswahl in dem Dokument; und Auswählen von Text in dem Dokument von dem Startpunkt zu dem Endpunkt unter Verwendung der strukturellen Elemente und der Lesereihenfolge durch die strukturellen Elemente.
  177. Computer-lesbares Medium nach Anspruch 176, worin das Dokument auf einer handgehaltenen Anzeigevorrichtung angezeigt wird.
  178. Computer-lesbares Medium nach Anspruch 176, worin der Startpunkt in einer Textspalte innerhalb eines Artikels ist und der Endpunkt innerhalb eines Callout für den Artikel ist.
  179. Computer-lesbares Medium nach Anspruch 178, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Bewegen des Endpunkts zu einer Textspalte in dem Artikel.
  180. Computer-lesbares Medium nach Anspruch 178, worin der Satz von Anweisungen zum Auswählen von Text einen Satz von Anweisungen aufweist zum Auswählen allen Texts in den Spalten des Artikels.
  181. Verfahren zum Definieren eines Programms zum Definieren einer Textauswahl in einem Dokument, wobei das Verfahren aufweist: Definieren eines Moduls zum Empfangen eines unstrukturierten Dokuments, das eine Mehrzahl von nicht assoziierten Glyphen aufweist; Definieren eines Moduls zum Assoziieren von Mengen von Glyphen; Definieren eines Moduls zum Identifizieren einer Lesereihenfolge, die einen Lesefluss durch die Glyphen spezifiziert; Definieren eines Moduls zum Anzeigen des Dokuments; Definieren eines Moduls zum Empfangen eines Startpunkts und eines Endpunkts für eine Textauswahl in dem angezeigten Dokument; und Definieren eines Moduls zum Definieren einer Textauswahl von dem Startpunkt zu dem Endpunkt unter Verwendung der identifizierten Mengen von Glyphen und des beabsichtigten Leseflusses.
  182. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, Struktur für ein Dokument definiert, das eine Mehrzahl von primitiven Elementen aufweist, welche in Begriffen ihrer Position in dem Dokument definiert sind, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren, für eine bestimmte Menge primitiver Elemente, von Entfernungen zwischen Paaren nächster primitiver Elemente; Sortieren der identifizierten Entfernungen; Speichern eines einzelnen Werts, der identifiziert, welche der identifizierten Entfernungen größer sind als ein gegebener Schwellwert für eine Partition; und Verwenden des gespeicherten einzelnen Werts, um die Partition zu identifizieren und zu analysieren, um strukturelle Elemente für das Dokument zu definieren.
  183. Computer-lesbares Medium nach Anspruch 182, worin der gegebene Schwellwert für die Partition eine minimale Entfernung zwischen einem Paar von primitiven Elementen identifiziert.
  184. Computer-lesbares Medium nach Anspruch 183, worin Paare primitiver Elemente, die näher sind als die minimale Entfernung, in einem selben Cluster primitiver Elemente sind.
  185. Computer-lesbares Medium, welches ein Computerprogramm speichert, das, wenn es von zumindest einem Prozessor ausgeführt wird, Struktur für ein Dokument definiert, welches eine Mehrzahl von primitiven Elementen aufweist, die definiert sind in Begriffen ihrer Position in dem Dokument, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Identifizieren, für eine bestimmten Menge von primitiven Elemente, einer paarweisen Gruppierung nächster primitiver Elemente in der Menge; Sortieren der paarweisen Gruppierungen primitiver Elemente basierend auf einer Ordnung von den nächsten zu den fernsten Paaren; Speichern eines einzelnen Werts, der identifiziert, welche der paarweisen Gruppierungen primitiver Elemente ausreichend weit entfernt sind, um eine Partition zu bilden; und Verwenden des gespeicherten einzelnen Werts, um die Partition zu identifizieren und zu analysieren, um strukturelle Elemente für das Dokument zu definieren.
  186. Computer-lesbares Medium nach Anspruch 185, worin das Computer-lesbare Medium Firmware einer handgehaltenen Vorrichtung ist.
  187. Computer-lesbares Medium nach Anspruch 186, worin die Vorrichtung ein Mobiltelefon ist.
  188. Computer-lesbares Medium nach Anspruch 186, worin die Vorrichtung eine Medienwiedergabevorrichtung ist.
  189. Computer-lesbares Medium nach Anspruch 185, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Definieren eines strukturierten Dokuments, welches die strukturellen Elemente und die primitiven Elemente umfasst.
  190. Computer-lesbares Medium nach Anspruch 185, worin: das Dokument eine Mehrzahl von Glyphen umfasst; das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Assoziieren von Mengen von Glyphen als Wörter; wobei die bestimmte Menge von primitiven Elementen die am weitesten links stehenden Glyphen von Wörtern sind; und der Satz von Anweisungen zum Verwenden des gespeicherten einzelnen Werts, um die Partition zu identifizieren und zu Analysieren, um strukturelle Elemente zu definieren, einen Satz von Anweisungen aufweist zum Definieren linker Ausrichtungsführungen für Mengen von ausgerichteten Wörtern.
  191. Computer-lesbares Medium nach Anspruch 185, worin: das Dokument eine Mehrzahl von Glyphen aufweist; das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Assoziieren von Mengen von Glyphen als Wörter; wobei die bestimmte Menge von primitiven Elemente die am weitesten rechts stehenden Glyphen von Wörtern sind; und der Satz von Anweisungen zum Verwenden des gespeicherten einzelnen Werts, um die Partition zu identifizieren und zu Analysieren, um strukturelle Elemente zu definieren, einen Satz von Anweisungen aufweist zum Definieren rechter Ausrichtungsführungen für Mengen von ausgerichteten Wörtern.
  192. Computer-lesbares Medium nach Anspruch 185, worin die bestimmte Menge von primitiven Elementen primitive grafische Elemente sind und der Satz von Anweisungen zum Verwenden des gespeicherten einzelnen Werts, um die Partition zu identifizieren und zu analysieren, um strukturelle Elemente zu definieren, einen Satz von Anweisungen aufweist zum Assoziieren von in der Nähe hegender primitiver grafischer Elemente als strukturelle grafische Element.
  193. Computer-lesbares Medium nach Anspruch 185, worin die primitiven Elemente Glyphen sind und der Satz von Anweisungen zum Definieren struktureller Elemente einen Satz von Anweisungen aufweist zum Assoziieren von Mengen von in der Nähe liegender Glyphen als Wörter.
  194. Computer-lesbares Medium nach Anspruch 193, worin der Satz von Anweisungen zum Identifizieren einer paarweisen Gruppierung von nähesten primitiven Elemente Sätze von Anweisungen umfasst zum: Identifizieren einer Menge von Glyphen mit einer gemeinsamen Grundlinie; Sortieren der Menge von Glyphen basierend auf Koordinaten der Glyphen in einer ersten Richtung; für jedes Paar aufeinander folgender Glyphen in der sortierten Menge, Berechnen einer Differenz in Koordinatenwerten zwischen den Glyphen in dem Paar; und Sortieren der berechneten Differenzen in einem ersten Feld.
  195. Computer-lesbares Medium nach Anspruch 194, worin der Satz von Anweisungen zum Sortieren der paarweisen primitiven Elemente basierend auf einer Ordnung von dem nächsten Paar zu dem fernsten Paar Sätze von Anweisungen umfasst zum: Sortieren der berechneten Differenzenwerte; und Speichern, in einem zweiten Feld, der Indices des ersten Feldes, welche den sortierten Differenzen entsprechen.
  196. Computer-lesbares Medium nach Anspruch 195, worin der Index des ersten Feldes, der einen kleinsten Differenzenwert speichert, gespeichert wird als der Wert am ersten Index des zweiten Feldes.
  197. Computer-lesbares Medium nach Anspruch 195, worin das Computerprogramm ferner einen Satz von Anweisungen aufweist zum Bestimmen einer minimalen Differenz zwischen Glyphen, worin der gespeicherte einzelne Wert ein Index in dem zweiten Feld ist, bei dem bei dem der Index des ersten Feldes gespeichert ist, der die minimale Differenz speichert.
  198. Computer-lesbares Medium nach Anspruch 197, worin die minimale Differenz Lücken zwischen Wörtern repräsentiert.
  199. Computer-lesbares Medium nach Anspruch 197, worin der Satz von Anweisungen zum Verwenden des gespeicherten Wertes, um die Partitionen zu identifizieren und zu analysieren, einen Satz von Anweisungen aufweist zum Aufteilen eines dritten Feldes, das die sortierten x Koordinatenwerte speichert bei Indices des dritten Feldes, die gespeichert sind als Werte in dem zweiten Feld bei allen Indizes des zweiten Feldes bei und nach dem Index, der als der einzelne Wert gespeichert ist.
  200. Computer-lesbares Medium nach Anspruch 185, worin der Satz von Anweisungen zum Speichern des einzelnen Werts Sätze von Anweisungen umfasst zum Speichern einer Mehrzahl von einzelnen Werten, die jeweils unterschiedliche Partitionen für die primitiven Elemente identifizieren.
  201. Computer-lesbares Medium nach Anspruch 200, worin das Computerprogramm ferner umfasst Analysieren der unterschiedlichen Partitionen für die primitiven Elemente, um eine ideale optimale Partition zu identifizieren, welche eine optimale Entfernungsskala darstellt.
  202. Verfahren zum Definieren eines Programms zum Definieren einer Struktur für ein Dokument, wobei das Verfahren aufweist: Definieren eines Moduls zum Identifizieren einer paarweise Gruppierung nähester primitiver Elemente in einem Dokument, das eine Mehrzahl von primitiven Elementen aufweist, die definiert sind in Begriffen ihrer Position in dem Dokument; Definieren eines Moduls zum Sortieren der paarweisen Gruppierungen primitiver Elemente basierend auf einer Ordnung von den nähesten zu den fernsten Paaren; Definieren eines Moduls zum Speichern eines einzelnen Werts, der identifiziert, welche der paarweise gruppierten primitiven Elemente ausreichend fern sind, um eine Partition zu bilden; und Definieren eines Moduls zum Verwenden des gespeicherten Werts, um die Partitionen zu identifizieren und zu analysieren, um strukturelle Elemente für das Dokument zu definieren.
  203. Verfahren nach Anspruch 202, ferner aufweisend Definieren eines Moduls zum Definieren eines strukturierten Dokuments basierend auf den strukturellen Elementen und den primitiven Elementen.
  204. Verfahren nach Anspruch 203, worin das strukturierten Dokuments eine hierarchische Struktur ist, in der die strukturellen Elemente Knoten sind.
  205. Verfahren, aufweisend: Definieren einer Mehrzahl von unterschiedlichen Prozessen zum Analysieren und Manipulieren eines Dokuments, das eine Mehrzahl von primitiven Elementen aufweist; und Definieren eines Speicher für Daten, die assoziiert sind mit den primitiven Elementen, worin zumindest einige der Daten in einem Speicherraum gespeichert sind, der getrennt ist von den Prozessen, und der von zumindest zwei unterschiedlichen Prozessen gemeinsam genutzt wird, worin die Prozesse auf die Daten zugreifen unter Verwendung von Referenzen auf die Daten, worin die Daten von den Prozessen nicht repliziert werden.
  206. Verfahren nach Anspruch 205, worin der Speicher für Daten, die assoziiert sind mit den primitiven Elementen ein erster Speicher ist, wobei das Verfahren ferner aufweist Definieren eines Parsers zum (i) Parsen des Dokuments, um die primitiven Elemente zu identifizieren, und (ii) Speichern der primitiven Elemente in einem zweiten Speicher.
  207. Verfahren nach Anspruch 206, worin die Daten, die assoziiert sind mit den primitiven Elementen, Referenzen auf die primitiven Elemente in dem zweiten Speicher umfassen.
  208. Verfahren nach Anspruch 206, worin der Parser dient zum (i) Parsen des Dokuments, um die primitiven Elemente in einer zufälligen Reihenfolge zu identifizieren und (ii) Speichern der primitiven Elemente in der zufälligen Reihenfolge in dem zweiten Speicher.
  209. Verfahren nach Anspruch 206, worin die zufälligen Reihenfolge die Ordnung ist, in der die primitiven Elemente definiert sind in einer Bitstromrepräsentation des Dokuments.
  210. Verfahren nach Anspruch 206, ferner aufweisend Definieren eines Moduls zum (i) Sortieren der primitiven Elemente gemäß einer bestimmte Metrik und (ii) Speichern der Daten, die assoziiert sind mit den primitiven Elemente in dem ersten Speicher in einer sortierten Ordnung.
  211. Verfahren nach Anspruch 210, worin die primitiven Elemente Information bezüglich ihrem Ort in dem Dokument umfassen, worin die bestimmte Metrik auf dem Ort der primitiven Elemente basiert.
  212. Verfahren nach Anspruch 210, worin innerhalb einer bestimmten Seite des Dokuments die bestimmte Metrik die primitiven Elemente von oben nach unten sortiert als eine primäre Metrik, und von links nach rechts als eine sekundäre Metrik.
  213. Verfahren nach Anspruch 205, worin die primitiven Elemente eine Mehrzahl von Glyphen aufweisen.
  214. Verfahren nach Anspruch 213, worin die Mehrzahl von unterschiedlichen Prozessen umfasst: einen Prozess zum Assoziieren von Mengen von Glyphen als Zeilen von Text; und einen Prozess zum Assoziieren von Mengen von Glyphen als Wörter.
  215. Verfahren nach Anspruch 214, worin: der Prozess zum Assoziieren von Mengen von Glyphen als Zeilen von Text eine bestimmte Textzeile als eine erste Zeichenkette speichert, welche die Daten referenziert, die mit den primitiven Elemente assoziiert sind; und der Prozess zum Assoziieren von Mengen von Glyphen als Wörter ein bestimmtes Wort als eine zweite Zeichenkette speichert, welche dieselben Daten referenziert, die mit den primitiven Elemente assoziiert sind.
  216. Verfahren nach Anspruch 215, worin dieselben Daten von beiden Prozessen ohne Replikation verwendet werden.
  217. Verfahren nach Anspruch 215, worin die erste und die zweite Zeichenkette die Daten referenzieren durch Speichern von lediglich zwei Werten.
  218. Verfahren nach Anspruch 217, worin die zwei Werte eine Referenz auf ein erstes Stück Daten und ein Zählwert der Anzahl von Stücken von Daten in der Zeichenkette sind.
  219. Verfahren nach Anspruch 217, worin die erste Zeichenkette und die zweite Zeichenkette dasselbe erste Datenstück referenzieren und unterschiedliche Zählwerte speichern.
  220. Verfahren nach Anspruch 205, ferner aufweisend Definieren einer geteilter Speicher Datenstruktur zum Verwalten des Speichers für Daten, die assoziiert sind mit den primitiven Elementen.
  221. Verfahren nach Anspruch 220, worin die geteilter Speicher Datenstruktur zum Speichern eines Ortes in dem getrennten Speicherbereich dient, bei dem die Daten gespeichert sind, die assoziiert sind mit den primitiven Elementen.
  222. Verfahren nach Anspruch 220, worin die geteilter Speicher Datenstruktur verwendet wird, wenn zumindest zwei andere Datenstrukturen die Daten referenzieren, die assoziiert sind mit den primitiven Elementen.
  223. Verfahren nach Anspruch 222, worin die zumindest zwei andere Datenstrukturen sich den Besitz der Daten teilen, die assoziiert sind mit den primitiven Elementen.
  224. Verfahren nach Anspruch 220, worin die geteilter Speicher Datenstruktur verwendet wird zum Speichern der Anzahl anderer Datenstrukturen, die die Daten referenzieren, die assoziiert sind mit den primitiven Elementen.
  225. Computer-lesbares Medium, das ein Computerprogramm zur Ausführung durch zumindest einen Prozessor speichert, wobei das Computerprogramm Sätze von Anweisungen aufweist zum: Parsen eines Dokuments, das eine Mehrzahl von primitiven Elementen aufweist; Speichern der primitiven Elemente in einer zufälligen Reihenfolge in einem ersten Speicher; Speichern von Referenzen auf die primitiven Elemente in einem zweiten Speicher in einer Reihenfolge basierend auf Positionen der primitiven Elemente in dem Dokument; Empfangen von Anweisungen, eine Dokumentrekonstruktionsoperation durchzuführen; und Ausführen der empfangenen Anweisungen, ohne irgendwelche neuen Referenzen auf die primitiven Elemente zu Speichern.
  226. Computer-lesbares Medium nach Anspruch 225, worin das Computerprogramm ferner Sätze von Anweisungen umfasst zum: Empfangen eines zweiten Satzes von Anweisungen zum Ausführen einer zweiten Dokumentrekonstruktionsoperation; Bestimmen, dass Ausführen der zweiten Dokumentrekonstruktionsoperation neue Referenzen auf die primitiven Elemente erfordert; und Speichern neuer Referenzen auf die primitiven Elemente in einem dritten Speicher in einer Ordnung unterschiedlich von der des zweiten Speichers.
  227. Computer-lesbares Medium nach Anspruch 226, worin der zweite Speicher und der dritte Speicher in demselben physikalischen Speicher sind.
  228. Verfahren, aufweisend: Definieren eines ersten Moduls zum (i) Parsen eines Dokuments, das eine Mehrzahl von primitiven Elementen aufweist, und (ii) Speichern der primitiven Elemente in einer zufälligen Reihenfolge in einem ersten Speicher; Definieren eines zweiten Moduls zum (i) Allozieren von Speicher in einem zweiten Speicher zum Speichern von Referenzen auf die zufällig geordneten primitiven Elemente und (ii) Speichern der Referenzen in einer bestimmten Reihenfolge in dem allozierten Speicher; Definieren eines dritten Moduls zum Speichern einer Datenstruktur, die einen Teil der geordneten Referenzen referenziert, wobei die Datenstruktur nur eine Referenz auf eine erste der geordneten Referenzen und einen Zählwert aufweist; und Definieren eines vierten Moduls zum (i) Empfangen von Anweisungen zum Ausführen von Dokumentrekonstruktionsoperationen und (ii) Identifizieren, welches von dem ersten, zweiten und dritten Modul benötigt ist, um die Dokumentrekonstruktionsoperationen auszuführen, während Speicherverbrauch und Rechenlast minimiert werden.
  229. Verfahren nach Anspruch 228, worin, wenn nur das dritte Modul notwendig ist, um eine bestimmte Dokumentrekonstruktionsoperation auszuführen, kein neuer Speicher alloziert wird für entweder Kopien der primitiven Elemente oder neue Referenzen auf die primitiven Elemente.
  230. Computer-lesbares Medium nach einem der Ansprüche 1, 22, 30, 39, 44, 46, 50, 61, 67, 71, 88, 92, 112, 124, 182, 185 und 225, worin das Dokument ein unstrukturiertes Dokument ist.
  231. Computer-lesbares Medium nach einem der Ansprüche 1, 22, 30, 39, 44, 46, 50, 61, 67, 71, 88, 92, 112, 124, 182, 185 und 225, worin das Dokument ein Vektorgrafikdokument ist.
  232. Computer-lesbares Medium nach einem der Ansprüche 1, 22, 30, 39, 44, 46, 50, 61, 67, 71, 88, 92, 112, 124, 182, 185 und 225, worin das Dokument ein Dokument im Portablen Dokumentenformat (PDF) ist.
  233. Computer-lesbares Medium nach einem der Ansprüche 1, 22, 30, 39, 44, 46, 50, 61, 67, 71, 88, 92, 112, 124, 135, 152, 159, 176, 182, 185 und 225, worin das Computerprogramm eine Anwendung für eine handgehaltene Vorrichtung ist.
  234. Computer-lesbares Medium nach einem der Ansprüche 1, 22, 30, 39, 44, 46, 50, 61, 67, 71, 88, 92, 112, 124, 135, 152, 159, 176, 182, 185 und 225, worin das Computerprogramm ein Teil eines Betriebssystems ist
  235. Computer-lesbares Medium nach einem der Ansprüche 1, 22, 30, 39, 44, 46, 50, 61, 67, 71, 88, 92, 112, 124, 135, 152, 159, 176, 182, 185 und 225, worin das Computerprogramm eine Anwendung ist, die auf einem Betriebssystem läuft.
  236. Computer-lesbares Medium nach einem der Ansprüche 135, 152, 159 und 176, worin das unstrukturierte Dokument ein Vektorgrafikdokument ist.
  237. Computer-lesbares Medium nach einem der Ansprüche 135, 152, 159 und 176, worin das unstrukturierte Dokument ein Dokument im Portablen Dokumentenformat (PDF) ist.
DE112009004951T 2009-01-02 2009-12-31 Verfahren und System zur Dokumentenrekonstruktion Pending DE112009004951T5 (de)

Applications Claiming Priority (23)

Application Number Priority Date Filing Date Title
US14232909P 2009-01-02 2009-01-02
US61/142,329 2009-01-02
US12/479,845 2009-06-07
US12/479,847 US8719701B2 (en) 2009-01-02 2009-06-07 Identification of guides and gutters of a document
US12/479,842 2009-06-07
US12/455,866 2009-06-07
US12/479,852 2009-06-07
US12/479,848 2009-06-07
US12/479,844 2009-06-07
US12/479,847 2009-06-07
US12/479,843 2009-06-07
US12/479,842 US8438472B2 (en) 2009-01-02 2009-06-07 Efficient data structures for parsing and analyzing a document
US12/479,845 US8352855B2 (en) 2009-01-02 2009-06-07 Selection of text in an unstructured document
US12/479,844 US8365072B2 (en) 2009-01-02 2009-06-07 Identification of compound graphic elements in an unstructured document
US12/479,852 US8473467B2 (en) 2009-01-02 2009-06-07 Content profiling to dynamically configure content processing
US12/479,849 US9460063B2 (en) 2009-01-02 2009-06-07 Identification, selection, and display of a region of interest in a document
US12/455,866 US9063911B2 (en) 2009-01-02 2009-06-07 Identification of layout and content flow of an unstructured document
US12/479,850 2009-06-07
US12/479,850 US8832549B2 (en) 2009-01-02 2009-06-07 Identification of regions of a document
US12/479,849 2009-06-07
US12/479,843 US8261186B2 (en) 2009-01-02 2009-06-07 Methods for efficient cluster analysis
US12/479,848 US8443278B2 (en) 2009-01-02 2009-06-07 Identification of tables in an unstructured document
PCT/US2009/069885 WO2010078475A2 (en) 2009-01-02 2009-12-31 Methods and system for document reconstruction

Publications (1)

Publication Number Publication Date
DE112009004951T5 true DE112009004951T5 (de) 2012-06-06

Family

ID=42312368

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112009004951T Pending DE112009004951T5 (de) 2009-01-02 2009-12-31 Verfahren und System zur Dokumentenrekonstruktion

Country Status (7)

Country Link
US (14) US8352855B2 (de)
EP (1) EP2374067A2 (de)
JP (2) JP2012514792A (de)
KR (3) KR101324799B1 (de)
DE (1) DE112009004951T5 (de)
GB (2) GB2498137A (de)
WO (1) WO2010078475A2 (de)

Families Citing this family (271)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7760187B2 (en) 2004-07-30 2010-07-20 Apple Inc. Visual expander
US20040205568A1 (en) * 2002-03-01 2004-10-14 Breuel Thomas M. Method and system for document image layout deconstruction and redisplay system
US7676744B2 (en) * 2005-08-19 2010-03-09 Vistaprint Technologies Limited Automated markup language layout
US8570278B2 (en) 2006-10-26 2013-10-29 Apple Inc. Portable multifunction device, method, and graphical user interface for adjusting an insertion point marker
US7856605B2 (en) 2006-10-26 2010-12-21 Apple Inc. Method, system, and graphical user interface for positioning an insertion marker in a touch screen display
US8763038B2 (en) 2009-01-26 2014-06-24 Sony Corporation Capture of stylized TV table data via OCR
US8316358B2 (en) * 2007-05-31 2012-11-20 Research In Motion Limited Method and apparatus for processing XML for display on a mobile device
US8788523B2 (en) * 2008-01-15 2014-07-22 Thomson Reuters Global Resources Systems, methods and software for processing phrases and clauses in legal documents
US8650507B2 (en) 2008-03-04 2014-02-11 Apple Inc. Selecting of text using gestures
US8201109B2 (en) 2008-03-04 2012-06-12 Apple Inc. Methods and graphical user interfaces for editing on a portable multifunction device
EP2263161A4 (de) * 2008-03-31 2016-07-27 Thomson Reuters Glo Resources Systeme und verfahren für inhaltstabellen
US9639531B2 (en) 2008-04-09 2017-05-02 The Nielsen Company (Us), Llc Methods and apparatus to play and control playing of media in a web page
JP5132416B2 (ja) * 2008-05-08 2013-01-30 キヤノン株式会社 画像処理装置およびその制御方法
US8271867B2 (en) * 2008-06-18 2012-09-18 Kunio Kamimura Program for displaying and operating table
US8352855B2 (en) * 2009-01-02 2013-01-08 Apple Inc. Selection of text in an unstructured document
US8255830B2 (en) 2009-03-16 2012-08-28 Apple Inc. Methods and graphical user interfaces for editing on a multifunction device with a touch screen display
EP2419839B1 (de) * 2009-04-14 2014-03-05 Freedom Scientific Inc. Verfahren zur dokumentnavigation
US20110029904A1 (en) * 2009-07-30 2011-02-03 Adam Miles Smith Behavior and Appearance of Touch-Optimized User Interface Elements for Controlling Computer Function
US8656314B2 (en) * 2009-07-30 2014-02-18 Lenovo (Singapore) Pte. Ltd. Finger touch gesture for joining and unjoining discrete touch objects
KR101622196B1 (ko) * 2009-09-07 2016-05-18 삼성전자주식회사 휴대용 단말기에서 피오아이 정보 제공 방법 및 장치
US10013641B2 (en) * 2009-09-28 2018-07-03 Oracle International Corporation Interactive dendrogram controls
US10552710B2 (en) 2009-09-28 2020-02-04 Oracle International Corporation Hierarchical sequential clustering
US20110099498A1 (en) * 2009-10-26 2011-04-28 Barkol Omer Graphical user interface hierarchy generation
CN101707532B (zh) * 2009-10-30 2012-08-15 中山大学 一种未知应用层协议自动分析方法
US8922582B2 (en) * 2009-11-16 2014-12-30 Martin J. Murrett Text rendering and display using composite bitmap images
KR101032446B1 (ko) * 2009-11-26 2011-05-03 광주과학기술원 영상의 정점 검출 장치 및 방법
US8508811B2 (en) * 2009-12-14 2013-08-13 Samsung Electronics Co., Ltd. Image forming apparatus and method of copying two-sided card thereof
US8577887B2 (en) * 2009-12-16 2013-11-05 Hewlett-Packard Development Company, L.P. Content grouping systems and methods
US20110179350A1 (en) * 2010-01-15 2011-07-21 Apple Inc. Automatically placing an anchor for an object in a document
US20110179345A1 (en) * 2010-01-15 2011-07-21 Apple Inc. Automatically wrapping text in a document
US9135223B2 (en) * 2010-01-15 2015-09-15 Apple Inc. Automatically configuring white space around an object in a document
US8756231B2 (en) * 2010-01-28 2014-06-17 International Business Machines Corporation Search using proximity for clustering information
JP5440222B2 (ja) * 2010-02-03 2014-03-12 富士ゼロックス株式会社 情報処理装置及びプログラム
US20110219294A1 (en) * 2010-03-04 2011-09-08 Skiff, Inc. System And Method For Automatic Continuation Marks In An Electronic Publication
US8473842B2 (en) * 2010-05-12 2013-06-25 Microsoft Corporation Contour based flow layout
US8434001B2 (en) * 2010-06-03 2013-04-30 Rhonda Enterprises, Llc Systems and methods for presenting a content summary of a media item to a user based on a position within the media item
US9183185B2 (en) * 2010-07-29 2015-11-10 Hewlett-Packard Development Company, L.P. Inserting content and exclusion zone(s) into a page
US9326116B2 (en) 2010-08-24 2016-04-26 Rhonda Enterprises, Llc Systems and methods for suggesting a pause position within electronic text
US9218680B2 (en) * 2010-09-01 2015-12-22 K-Nfb Reading Technology, Inc. Systems and methods for rendering graphical content and glyphs
US8661335B2 (en) * 2010-09-20 2014-02-25 Blackberry Limited Methods and systems for identifying content elements
US8566702B2 (en) * 2010-09-20 2013-10-22 Blackberry Limited Methods and systems of outputting content of interest
US9069754B2 (en) 2010-09-29 2015-06-30 Rhonda Enterprises, Llc Method, system, and computer readable medium for detecting related subgroups of text in an electronic document
US20120096344A1 (en) * 2010-10-19 2012-04-19 Google Inc. Rendering or resizing of text and images for display on mobile / small screen devices
CN103262106A (zh) * 2010-10-19 2013-08-21 惠普发展公司,有限责任合伙企业 管理来自结构化和非结构化数据源的内容
US20120102394A1 (en) * 2010-10-25 2012-04-26 Konica Minolta Systems Laboratory Inc. Application of path-fill algorithm to text layout around objects
US9697180B2 (en) * 2010-10-25 2017-07-04 Konica Minolta Laboratory U.S.A., Inc. System and method for text layout using a path-fill algorithm
US20120101980A1 (en) * 2010-10-26 2012-04-26 Microsoft Corporation Synchronizing online document edits
JP5444187B2 (ja) * 2010-10-26 2014-03-19 富士フイルム株式会社 携帯型表示装置ならびにその動作制御方法およびそのプログラム
US9576068B2 (en) * 2010-10-26 2017-02-21 Good Technology Holdings Limited Displaying selected portions of data sets on display devices
WO2012057891A1 (en) * 2010-10-26 2012-05-03 Hewlett-Packard Development Company, L.P. Transformation of a document into interactive media content
US8687004B2 (en) * 2010-11-01 2014-04-01 Apple Inc. Font file with graphic images
WO2012068391A2 (en) * 2010-11-17 2012-05-24 Eloqua, Inc. Systems and methods for content development and management
US9251123B2 (en) * 2010-11-29 2016-02-02 Hewlett-Packard Development Company, L.P. Systems and methods for converting a PDF file
US8938685B2 (en) * 2010-12-31 2015-01-20 Verizon Patent And Licensing Inc. Automated graphical user interface design and development systems and methods
US8442998B2 (en) 2011-01-18 2013-05-14 Apple Inc. Storage of a document using multiple representations
US8543911B2 (en) * 2011-01-18 2013-09-24 Apple Inc. Ordering document content based on reading flow
EP2477122B1 (de) 2011-01-18 2018-10-24 Apple Inc. Bestimmung der Reihenfolge von Dokumenteninhalt
US8380753B2 (en) 2011-01-18 2013-02-19 Apple Inc. Reconstruction of lists in a document
US8963959B2 (en) 2011-01-18 2015-02-24 Apple Inc. Adaptive graphic objects
US8615511B2 (en) * 2011-01-22 2013-12-24 Operational Transparency LLC Data visualization interface
US9170825B2 (en) * 2011-04-21 2015-10-27 Oracle International Corporation Interface method resolution for virtual extension methods
US9069459B2 (en) * 2011-05-03 2015-06-30 Microsoft Technology Licensing, Llc Multi-threaded conditional processing of user interactions for gesture processing using rendering thread or gesture processing thread based on threshold latency
JP5843474B2 (ja) * 2011-05-09 2016-01-13 キヤノン株式会社 画像処理装置、画像処理方法、及び、プログラム
JP5801598B2 (ja) * 2011-05-09 2015-10-28 キヤノン株式会社 画像処理装置、画像処理方法、及び、プログラム
US9092130B2 (en) 2011-05-31 2015-07-28 Apple Inc. Devices, methods, and graphical user interfaces for document manipulation
US8560937B2 (en) * 2011-06-07 2013-10-15 Xerox Corporation Generate-and-test method for column segmentation
US8645819B2 (en) * 2011-06-17 2014-02-04 Xerox Corporation Detection and extraction of elements constituting images in unstructured document files
WO2013009889A1 (en) 2011-07-11 2013-01-17 Paper Software LLC System and method for searching a document
AU2012281166B2 (en) * 2011-07-11 2017-08-24 Paper Software LLC System and method for processing document
CA2840231A1 (en) 2011-07-11 2013-01-17 Paper Software LLC System and method for processing document
WO2013009879A1 (en) 2011-07-11 2013-01-17 Paper Software LLC System and method for processing document
US9026519B2 (en) * 2011-08-09 2015-05-05 Microsoft Technology Licensing, Llc Clustering web pages on a search engine results page
US9477650B2 (en) * 2011-08-30 2016-10-25 Microsoft Technology Licensing, Llc Underlying grid structure and animation of tables
US20130067366A1 (en) * 2011-09-14 2013-03-14 Microsoft Corporation Establishing content navigation direction based on directional user gestures
US9411784B2 (en) * 2011-11-22 2016-08-09 Adobe Systems Incorporated Method and computer readable medium for controlling pagination of dynamic-length presentations
JP5862260B2 (ja) * 2011-12-09 2016-02-16 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US9734132B1 (en) * 2011-12-20 2017-08-15 Amazon Technologies, Inc. Alignment and reflow of displayed character images
US9098471B2 (en) * 2011-12-29 2015-08-04 Chegg, Inc. Document content reconstruction
CN104067293B (zh) 2012-01-23 2017-07-25 微软技术许可有限责任公司 矢量图分类引擎
EP2807601A1 (de) * 2012-01-23 2014-12-03 Microsoft Corporation Festformatdokumentumwandlungsvorrichtung
KR101812380B1 (ko) 2012-01-23 2017-12-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 공식 검출 엔진
WO2013110286A1 (en) * 2012-01-23 2013-08-01 Microsoft Corporation Paragraph property detection and style reconstruction engine
CN104094282B (zh) 2012-01-23 2017-11-21 微软技术许可有限责任公司 无边框表格检测引擎
US8499263B1 (en) * 2012-03-29 2013-07-30 Mentor Graphics Corporation Encrypted profiles for parasitic extraction
US9292192B2 (en) * 2012-04-30 2016-03-22 Blackberry Limited Method and apparatus for text selection
US20130311359A1 (en) * 2012-05-21 2013-11-21 Ofer ZINGER Triple-click activation of a monetizing action
US20130321867A1 (en) * 2012-05-31 2013-12-05 Xerox Corporation Typographical block generation
US9323726B1 (en) * 2012-06-27 2016-04-26 Amazon Technologies, Inc. Optimizing a glyph-based file
US9946690B2 (en) 2012-07-06 2018-04-17 Microsoft Technology Licensing, Llc Paragraph alignment detection and region-based section reconstruction
US9164673B2 (en) * 2012-07-16 2015-10-20 Microsoft Technology Licensing, Llc Location-dependent drag and drop UI
US9595298B2 (en) 2012-07-18 2017-03-14 Microsoft Technology Licensing, Llc Transforming data to create layouts
US9336302B1 (en) 2012-07-20 2016-05-10 Zuci Realty Llc Insight and algorithmic clustering for automated synthesis
US9558173B2 (en) * 2012-08-03 2017-01-31 Google Inc. Method for creating a document model from discontinuous selections of an existing document
JP5783972B2 (ja) * 2012-08-17 2015-09-24 株式会社東芝 手書き文書処理装置、方法およびプログラム
US9785336B2 (en) 2012-08-17 2017-10-10 Sas Institute Inc. Macro-enabled, verbally accessible graphical data visualizations for visually impaired users
EP2893463A4 (de) * 2012-09-07 2016-06-15 American Chemical Soc Automatisierte auswerter für zusammensetzungen
US11468243B2 (en) * 2012-09-24 2022-10-11 Amazon Technologies, Inc. Identity-based display of text
US10013488B1 (en) * 2012-09-26 2018-07-03 Amazon Technologies, Inc. Document analysis for region classification
US9436588B2 (en) 2012-09-28 2016-09-06 Identify Software Ltd. (IL) Efficient method data recording
KR102084176B1 (ko) * 2012-10-10 2020-03-04 삼성전자주식회사 휴대용 장치 및 이의 영상 표시 방법
US9170714B2 (en) * 2012-10-31 2015-10-27 Google Technology Holdings LLC Mixed type text extraction and distribution
US20140164911A1 (en) * 2012-12-11 2014-06-12 Microsoft Corporation Preserving layout of region of content during modification
US9477382B2 (en) * 2012-12-14 2016-10-25 Barnes & Noble College Booksellers, Inc. Multi-page content selection technique
US9953008B2 (en) 2013-01-18 2018-04-24 Microsoft Technology Licensing, Llc Grouping fixed format document elements to preserve graphical data semantics after reflow by manipulating a bounding box vertically and horizontally
US9008425B2 (en) * 2013-01-29 2015-04-14 Xerox Corporation Detection of numbered captions
US9330070B2 (en) 2013-03-11 2016-05-03 Microsoft Technology Licensing, Llc Detection and reconstruction of east asian layout features in a fixed format document
US20140258852A1 (en) * 2013-03-11 2014-09-11 Microsoft Corporation Detection and Reconstruction of Right-to-Left Text Direction, Ligatures and Diacritics in a Fixed Format Document
US8972425B2 (en) * 2013-03-13 2015-03-03 Palo Alto Research Center Incorporated Efficient globally optimal interpretation of documents
US9223756B2 (en) * 2013-03-13 2015-12-29 Adobe Systems Incorporated Method and apparatus for identifying logical blocks of text in a document
US9208257B2 (en) * 2013-03-15 2015-12-08 Oracle International Corporation Partitioning a graph by iteratively excluding edges
US9588675B2 (en) 2013-03-15 2017-03-07 Google Inc. Document scale and position optimization
US20140281980A1 (en) 2013-03-15 2014-09-18 Chad A. Hage Methods and Apparatus to Identify a Type of Media Presented by a Media Player
US10262030B1 (en) * 2013-04-22 2019-04-16 Domo, Inc. Automatic dynamic reusable data recipes
CN104142961B (zh) * 2013-05-10 2017-08-25 北大方正集团有限公司 版式文档中复合图的逻辑处理装置和逻辑处理方法
EP3019973A4 (de) * 2013-07-09 2017-03-29 Blueprint Sofware Systems Inc. Rechnervorrichtung und verfahren zur umwandlung unstrukturierter daten in strukturierte daten
US9424337B2 (en) 2013-07-09 2016-08-23 Sas Institute Inc. Number of clusters estimation
US9495347B2 (en) 2013-07-16 2016-11-15 Recommind, Inc. Systems and methods for extracting table information from documents
CN104331391B (zh) * 2013-07-22 2018-02-02 北大方正集团有限公司 文档格式转换装置和文档格式转换方法
US20150039637A1 (en) * 2013-07-31 2015-02-05 The Nielsen Company (Us), Llc Systems Apparatus and Methods for Determining Computer Apparatus Usage Via Processed Visual Indicia
CN104346615B (zh) * 2013-08-08 2019-02-19 北大方正集团有限公司 版式文档中复合图的提取装置和提取方法
JP2015035150A (ja) * 2013-08-09 2015-02-19 株式会社東芝 手書き文書処理装置、手書き文書処理方法及び手書き文書処理プログラム
CN110413925B (zh) * 2013-09-12 2023-12-12 维克斯网有限公司 用于在交互式站点与用于支持移动设备和其它显示环境的应用之间的自动转换的系统和方法
US9576071B2 (en) 2013-09-12 2017-02-21 Dropbox, Inc. Graph-based data models for partitioned data
KR102245706B1 (ko) * 2013-09-17 2021-04-28 삼성전자주식회사 데이터 처리 방법 및 그 전자 장치
CN104462048B (zh) * 2013-09-18 2017-10-27 北大方正集团有限公司 表格排版方法和装置
US9740995B2 (en) 2013-10-28 2017-08-22 Morningstar, Inc. Coordinate-based document processing and data entry system and method
US10599753B1 (en) 2013-11-11 2020-03-24 Amazon Technologies, Inc. Document version control in collaborative environment
US10540404B1 (en) 2014-02-07 2020-01-21 Amazon Technologies, Inc. Forming a document collection in a document management and collaboration system
US9542391B1 (en) 2013-11-11 2017-01-10 Amazon Technologies, Inc. Processing service requests for non-transactional databases
US11336648B2 (en) 2013-11-11 2022-05-17 Amazon Technologies, Inc. Document management and collaboration system
US10114800B1 (en) 2013-12-05 2018-10-30 Intuit Inc. Layout reconstruction using spatial and grammatical constraints
US10691877B1 (en) 2014-02-07 2020-06-23 Amazon Technologies, Inc. Homogenous insertion of interactions into documents
US9355313B2 (en) 2014-03-11 2016-05-31 Microsoft Technology Licensing, Llc Detecting and extracting image document components to create flow document
US9202178B2 (en) 2014-03-11 2015-12-01 Sas Institute Inc. Computerized cluster analysis framework for decorrelated cluster identification in datasets
US9251139B2 (en) * 2014-04-08 2016-02-02 TitleFlow LLC Natural language processing for extracting conveyance graphs
US20150293752A1 (en) * 2014-04-11 2015-10-15 Pradeep Varma Unrestricted, Fully-Source-Preserving, Concurrent, Wait-Free, Synchronization-Free, Fully-Error-Handling Frontend With Inline Schedule Of Tasks And Constant-Space Buffers
US10331764B2 (en) * 2014-05-05 2019-06-25 Hired, Inc. Methods and system for automatically obtaining information from a resume to update an online profile
JP2015215853A (ja) * 2014-05-13 2015-12-03 株式会社リコー システム、画像処理装置、画像処理方法およびプログラム
BE1021412B1 (nl) * 2014-06-16 2015-11-18 Itext Group Nv Computer-geïmplementeerde werkwijze, systeem en computerprogrammaproduct voor het structureren van een ongestructureerd pdf-document
US20160019192A1 (en) * 2014-07-21 2016-01-21 General Electric Company System and method to extract structured semantic model from document
JP6528927B2 (ja) * 2014-08-20 2019-06-12 富士ゼロックス株式会社 文書処理装置及びプログラム
USD760295S1 (en) * 2014-09-24 2016-06-28 Lexmark International, Inc. Portion of a display screen with icon
US9807073B1 (en) 2014-09-29 2017-10-31 Amazon Technologies, Inc. Access to documents in a document management and collaboration system
US20160092404A1 (en) * 2014-09-30 2016-03-31 Microsoft Technology Licensing, Llc Intent Based Feedback
US10282069B2 (en) 2014-09-30 2019-05-07 Microsoft Technology Licensing, Llc Dynamic presentation of suggested content
US20160110599A1 (en) * 2014-10-20 2016-04-21 Lexmark International Technology, SA Document Classification with Prominent Objects
US10423706B2 (en) 2014-10-31 2019-09-24 Xiaomi Inc. Method and device for selecting information
CN104461348B (zh) * 2014-10-31 2018-09-04 小米科技有限责任公司 信息选取方法及装置
US20160139783A1 (en) * 2014-11-13 2016-05-19 Microsoft Technology Licensing, Llc Detecting sidebar in document
US9715748B2 (en) * 2014-12-04 2017-07-25 The United States Of America As Represented By The Secretary Of The Air Force Method and apparatus for graphical data interaction and vizualization of graphs via paths
CN107209753A (zh) 2015-01-30 2017-09-26 惠普发展公司,有限责任合伙企业 基于相关性测量的断点识别
US10891323B1 (en) * 2015-02-10 2021-01-12 West Corporation Processing and delivery of private electronic documents
US10671235B2 (en) 2015-03-03 2020-06-02 Soroco Private Limited Software robots for programmatically controlling computer programs to perform tasks
US9886426B1 (en) * 2015-03-26 2018-02-06 Accusoft Corporation Methods and apparatus for generating an efficient SVG file
US10387563B2 (en) * 2015-03-30 2019-08-20 International Business Machines Corporation Parallel parsing of markup language data
RU2610585C2 (ru) * 2015-03-31 2017-02-13 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для модификации текста в документе
US10719220B2 (en) * 2015-03-31 2020-07-21 Autodesk, Inc. Dynamic scrolling
USD779523S1 (en) * 2015-04-06 2017-02-21 Domo, Inc. Display screen or portion thereof with a graphical user interface for analytics
US10691323B2 (en) 2015-04-10 2020-06-23 Apple Inc. Column fit document traversal for reader application
CN104834701B (zh) * 2015-04-28 2019-03-26 成都品果科技有限公司 基于ios系统的智能搜索结果显示方法
US20160321226A1 (en) * 2015-05-01 2016-11-03 Microsoft Technology Licensing, Llc Insertion of unsaved content via content channel
US9805025B2 (en) * 2015-07-13 2017-10-31 Seal Software Limited Standard exact clause detection
US9811505B2 (en) * 2015-07-20 2017-11-07 Sas Institute Inc. Techniques to provide processing enhancements for a text editor in a computing environment
US10353986B2 (en) * 2015-08-02 2019-07-16 Apple Inc. Automatically dividing text into multiple columns
US10191970B2 (en) 2015-08-19 2019-01-29 International Business Machines Corporation Systems and methods for customized data parsing and paraphrasing
US10572579B2 (en) * 2015-08-21 2020-02-25 International Business Machines Corporation Estimation of document structure
US9552527B1 (en) * 2015-08-27 2017-01-24 Lead Technologies, Inc. Apparatus, method, and computer-readable storage medium for determining a rotation angle of text
US9881003B2 (en) * 2015-09-23 2018-01-30 Google Llc Automatic translation of digital graphic novels
US9621761B1 (en) * 2015-10-08 2017-04-11 International Business Machines Corporation Automatic correction of skewing of digital images
US20170132484A1 (en) * 2015-11-05 2017-05-11 Christopher D. Malon Two Step Mathematical Expression Search
CN105302626B (zh) * 2015-11-09 2021-07-23 深圳市巨鼎医疗股份有限公司 Xps结构化数据的解析方法
US20170220858A1 (en) * 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc Optical recognition of tables
JP2017167433A (ja) * 2016-03-17 2017-09-21 株式会社東芝 サマリ生成装置、サマリ生成方法及びサマリ生成プログラム
CN107368465B (zh) * 2016-05-13 2020-03-03 北京京东尚科信息技术有限公司 一种用于流式文档的截图类笔记处理的系统及方法
CN107436895B (zh) * 2016-05-26 2020-12-04 中国移动通信集团云南有限公司 一种非结构化数据识别的方法和装置
US11144777B2 (en) * 2016-06-30 2021-10-12 Rakuten Group, Inc. Image processing apparatus, image processing method, and image processing program for clipping images included in a large image
US10417321B2 (en) 2016-07-22 2019-09-17 Dropbox, Inc. Live document detection in a captured video stream
KR101931859B1 (ko) * 2016-09-29 2018-12-21 (주)시지온 전자문서의 대표 단어 선정 방법, 전자 문서 제공 방법, 및 이를 수행하는 컴퓨팅 시스템
CN106649230B (zh) * 2016-09-30 2019-07-26 株洲中车时代电气股份有限公司 一种列车网络控制系统逻辑图的图形自动生成方法
CN106648332A (zh) * 2016-11-16 2017-05-10 惠州Tcl移动通信有限公司 一种智能终端快速选择的方法和系统
US11205103B2 (en) 2016-12-09 2021-12-21 The Research Foundation for the State University Semisupervised autoencoder for sentiment analysis
US11157855B2 (en) * 2017-01-09 2021-10-26 Sutherland Global Services Inc. Robotics process automation platform
KR101890831B1 (ko) * 2017-01-11 2018-09-28 주식회사 펍플 전자책 서비스 제공방법 및 그를 위한 컴퓨터 프로그램
US10319129B2 (en) * 2017-01-27 2019-06-11 Adobe Inc. Snapping line generation
US10191979B2 (en) 2017-02-20 2019-01-29 Sas Institute Inc. Converting graphical data-visualizations into sonified output
CN108694208A (zh) * 2017-04-11 2018-10-23 富士通株式会社 用于构造数据库的方法和装置
US10223585B2 (en) 2017-05-08 2019-03-05 Adobe Systems Incorporated Page segmentation of vector graphics documents
US11003796B2 (en) 2017-06-30 2021-05-11 Accenture Global Solutions Limited Artificial intelligence based document processor
US11562143B2 (en) 2017-06-30 2023-01-24 Accenture Global Solutions Limited Artificial intelligence (AI) based document processor
US10489502B2 (en) 2017-06-30 2019-11-26 Accenture Global Solutions Limited Document processing
GB2567407B (en) * 2017-07-31 2022-03-30 Sage Uk Ltd Method and apparatus for determining layout
US10339212B2 (en) * 2017-08-14 2019-07-02 Adobe Inc. Detecting the bounds of borderless tables in fixed-format structured documents using machine learning
US10417516B2 (en) * 2017-08-24 2019-09-17 Vastec, Inc. System and method for preprocessing images to improve OCR efficacy
US10726198B2 (en) * 2017-10-17 2020-07-28 Handycontract, LLC Method, device, and system, for identifying data elements in data structures
US11475209B2 (en) 2017-10-17 2022-10-18 Handycontract Llc Device, system, and method for extracting named entities from sectioned documents
KR101980977B1 (ko) * 2017-11-23 2019-05-21 성균관대학교산학협력단 다중 사용자 환경에서 사용자 기반 어플리케이션 그룹핑 방법 및 이를 수행하는 테이블탑 디스플레이 장치
AU2017279613A1 (en) 2017-12-19 2019-07-04 Canon Kabushiki Kaisha Method, system and apparatus for processing a page of a document
FI20176151A1 (en) * 2017-12-22 2019-06-23 Vuolearning Ltd A heuristic method for analyzing the contents of an electronic document
US10579707B2 (en) * 2017-12-29 2020-03-03 Konica Minolta Laboratory U.S.A., Inc. Method for inferring blocks of text in electronic documents
KR102462516B1 (ko) 2018-01-09 2022-11-03 삼성전자주식회사 디스플레이 장치 및 이의 컨텐츠 제공 방법
US10296578B1 (en) 2018-02-20 2019-05-21 Paycor, Inc. Intelligent extraction and organization of data from unstructured documents
US11650970B2 (en) 2018-03-09 2023-05-16 International Business Machines Corporation Extracting structure and semantics from tabular data
US11048762B2 (en) 2018-03-16 2021-06-29 Open Text Holdings, Inc. User-defined automated document feature modeling, extraction and optimization
US10762142B2 (en) 2018-03-16 2020-09-01 Open Text Holdings, Inc. User-defined automated document feature extraction and optimization
CN108446264B (zh) * 2018-03-26 2022-02-15 阿博茨德(北京)科技有限公司 Pdf文档中的表格矢量解析方法及装置
CN108470021B (zh) * 2018-03-26 2022-06-03 阿博茨德(北京)科技有限公司 Pdf文档中表格的定位方法及装置
US11112927B2 (en) * 2018-04-25 2021-09-07 Adobe Inc. Digital content automated layout system
US11062135B1 (en) * 2018-05-17 2021-07-13 Amdocs Development Limited System, method, and computer program for determining and marking on a document what may be of interest to a user
US11004350B2 (en) * 2018-05-29 2021-05-11 Walmart Apollo, Llc Computerized training video system
US10936864B2 (en) * 2018-06-11 2021-03-02 Adobe Inc. Grid layout determination from a document image
US10685261B2 (en) * 2018-06-11 2020-06-16 GM Global Technology Operations LLC Active segmention of scanned images based on deep reinforcement learning for OCR applications
US11200413B2 (en) 2018-07-31 2021-12-14 International Business Machines Corporation Table recognition in portable document format documents
US11182542B2 (en) * 2018-10-29 2021-11-23 Microsoft Technology Licensing, Llc Exposing annotations in a document
US11232132B2 (en) * 2018-11-30 2022-01-25 Wipro Limited Method, device, and system for clustering document objects based on information content
US11238215B2 (en) 2018-12-04 2022-02-01 Issuu, Inc. Systems and methods for generating social assets from electronic publications
AU2019391808A1 (en) * 2018-12-04 2021-07-01 Leverton Holding Llc Methods and systems for automated table detection within documents
US10824899B2 (en) 2018-12-27 2020-11-03 Microsoft Technology Licensing, Llc Structural clustering and alignment of OCR results
US11610277B2 (en) 2019-01-25 2023-03-21 Open Text Holdings, Inc. Seamless electronic discovery system with an enterprise data portal
US10984173B2 (en) * 2019-02-26 2021-04-20 Adobe Inc. Vector-based glyph style transfer
US11176310B2 (en) * 2019-04-01 2021-11-16 Adobe Inc. Facilitating dynamic document layout by determining reading order using document content stream cues
US10614345B1 (en) 2019-04-12 2020-04-07 Ernst & Young U.S. Llp Machine learning based extraction of partition objects from electronic documents
US11727191B2 (en) 2019-05-21 2023-08-15 Schlumberger Technology Corporation Process for highlighting text with varied orientation
US11113518B2 (en) 2019-06-28 2021-09-07 Eygs Llp Apparatus and methods for extracting data from lineless tables using Delaunay triangulation and excess edge removal
CN112287654A (zh) * 2019-07-25 2021-01-29 珠海金山办公软件有限公司 一种文档元素对齐方法及装置
US11915465B2 (en) 2019-08-21 2024-02-27 Eygs Llp Apparatus and methods for converting lineless tables into lined tables using generative adversarial networks
KR102244974B1 (ko) * 2019-08-22 2021-04-27 주식회사 심플랩 전자문서를 생성하는 서버 및 그 방법
US10740403B1 (en) 2019-08-23 2020-08-11 Capital One Services Llc Systems and methods for identifying ordered sequence data
US11270065B2 (en) 2019-09-09 2022-03-08 International Business Machines Corporation Extracting attributes from embedded table structures
CA3150535A1 (en) 2019-09-16 2021-03-25 Andrew BEGUN WIZARD FOR CREATION AND INTELLIGENT PROCESSING OF CROSS DOCUMENTS
KR102287149B1 (ko) * 2019-09-19 2021-08-06 주식회사 한글과컴퓨터 Pdf 문서에서 텍스트 라인 정보를 기초로 단락의 구분선을 표시하는 전자 장치 및 그 동작 방법
US11380116B2 (en) 2019-10-22 2022-07-05 International Business Machines Corporation Automatic delineation and extraction of tabular data using machine learning
RU2737720C1 (ru) * 2019-11-20 2020-12-02 Общество с ограниченной ответственностью "Аби Продакшн" Извлечение полей с помощью нейронных сетей без использования шаблонов
US10810709B1 (en) 2019-11-21 2020-10-20 Eygs Llp Systems and methods for improving the quality of text documents using artificial intelligence
CN110968667B (zh) * 2019-11-27 2023-04-18 广西大学 一种基于文本状态特征的期刊文献表格抽取方法
CN111008657A (zh) * 2019-11-29 2020-04-14 广州大学 一种街道环境多维度失序的空间分布识别方法
US11657101B2 (en) 2020-01-13 2023-05-23 Goldman Sachs & Co. LLC Document information extraction system using sequenced comparators
WO2021145858A1 (en) * 2020-01-14 2021-07-22 Landmark Graphics Corporation Techniques for extraction of vectorized content of an oil and gas play within an unstructured file
US11409416B2 (en) * 2020-01-31 2022-08-09 Salesforce, Inc. Custom user interface generation for completing a predicted task
US11625934B2 (en) 2020-02-04 2023-04-11 Eygs Llp Machine learning based end-to-end extraction of tables from electronic documents
US11392753B2 (en) * 2020-02-07 2022-07-19 International Business Machines Corporation Navigating unstructured documents using structured documents including information extracted from unstructured documents
US11423042B2 (en) 2020-02-07 2022-08-23 International Business Machines Corporation Extracting information from unstructured documents using natural language processing and conversion of unstructured documents into structured documents
US11675970B2 (en) * 2020-02-14 2023-06-13 Open Text Corporation Machine learning systems and methods for automatically tagging documents to enable accessibility to impaired individuals
US11222201B2 (en) 2020-04-14 2022-01-11 International Business Machines Corporation Vision-based cell structure recognition using hierarchical neural networks
US11734576B2 (en) 2020-04-14 2023-08-22 International Business Machines Corporation Cooperative neural networks with spatial containment constraints
US11194953B1 (en) * 2020-04-29 2021-12-07 Indico Graphical user interface systems for generating hierarchical data extraction training dataset
US10970458B1 (en) * 2020-06-25 2021-04-06 Adobe Inc. Logical grouping of exported text blocks
US11176311B1 (en) * 2020-07-09 2021-11-16 International Business Machines Corporation Enhanced section detection using a combination of object detection with heuristics
US11367296B2 (en) * 2020-07-13 2022-06-21 NextVPU (Shanghai) Co., Ltd. Layout analysis
US11514697B2 (en) * 2020-07-15 2022-11-29 Oracle International Corporation Probabilistic text index for semi-structured data in columnar analytics storage formats
CN112001183B (zh) * 2020-07-26 2021-11-19 湖南省侍禾教育科技有限公司 一种基于段落语义的中小学试题分割提取方法及系统
US11514699B2 (en) * 2020-07-30 2022-11-29 International Business Machines Corporation Text block recognition based on discrete character recognition and text information connectivity
US11010543B1 (en) 2020-08-11 2021-05-18 Fmr Llc Systems and methods for table extraction in documents
CN112070142A (zh) * 2020-09-02 2020-12-11 平安科技(深圳)有限公司 车辆配件的分组方法、装置、电子设备及存储介质
KR102442510B1 (ko) * 2020-10-13 2022-09-13 주식회사 한글과컴퓨터 문서에 대한 저장 파일 형식을 자동으로 지정하는 문서 편집 장치 및 그 동작 방법
GB2609768A (en) * 2020-11-02 2023-02-15 Zhejiang Lab Multi-task language model-oriented meta-knowledge fine tuning method and platform
US11688193B2 (en) 2020-11-13 2023-06-27 International Business Machines Corporation Interactive structure annotation with artificial intelligence
US11416671B2 (en) * 2020-11-16 2022-08-16 Issuu, Inc. Device dependent rendering of PDF content
US11030387B1 (en) 2020-11-16 2021-06-08 Issuu, Inc. Device dependent rendering of PDF content including multiple articles and a table of contents
US11798210B2 (en) 2020-12-09 2023-10-24 Salesforce, Inc. Neural network based detection of image space suitable for overlaying media content
US11681734B2 (en) * 2020-12-09 2023-06-20 International Business Machines Corporation Organizing fragments of meaningful text
JP2022092837A (ja) * 2020-12-11 2022-06-23 株式会社東海理化電機製作所 制御装置およびプログラム
US11657511B2 (en) * 2021-01-29 2023-05-23 Salesforce, Inc. Heuristics-based detection of image space suitable for overlaying media content
US11880425B2 (en) * 2021-04-02 2024-01-23 Content Square SAS System and method for identifying and correcting webpage zone target misidentifications
DE102021109522A1 (de) 2021-04-15 2022-10-20 J. Schlottmann - Net e. Kfm. Grafische Benutzeroberflächen
US20220335240A1 (en) * 2021-04-15 2022-10-20 Microsoft Technology Licensing, Llc Inferring Structure Information from Table Images
CN113343815B (zh) * 2021-05-31 2022-06-07 北森云计算有限公司 一种pdf等版式文档中识别表格的方法
US20230229850A1 (en) * 2022-01-14 2023-07-20 Microsoft Technology Licensing, Llc Smart tabular paste from a clipboard buffer
US20230282013A1 (en) * 2022-03-02 2023-09-07 Alteryx, Inc. Automated key-value pair extraction
US11960818B2 (en) * 2022-08-23 2024-04-16 Adobe Inc. Automatic detection and removal of typographic rivers in electronic documents
US11837004B1 (en) * 2023-02-24 2023-12-05 Oracle Financial Services Software Limited Searchable table extraction
KR102563900B1 (ko) * 2023-03-31 2023-08-09 (주) 바우디움 구조화 문서를 취급하는 방법 및 이를 이용한 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070250497A1 (en) 2006-04-19 2007-10-25 Apple Computer Inc. Semantic reconstruction

Family Cites Families (242)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US284780A (en) * 1883-09-11 Island
US145720A (en) * 1873-12-23 Improvement in nail-separating devices
US38927A (en) * 1863-06-16 Improvement in sewing-machines
US12400A (en) * 1855-02-13 Head-supporter for railroad-cars
US97699A (en) * 1869-12-07 Improvement in flexible pipe-coupling
US17941A (en) * 1857-08-04 Machine for forging nails
US61384A (en) * 1867-01-22 Improved edge plane foe boots and shoes
US194379A (en) * 1877-08-21 Improvement in condition-powders for horses and cattle
US227758A (en) * 1880-05-18 Samuel b
US76295A (en) * 1868-04-07 Improvement in piston-packing
US4800485A (en) * 1982-06-01 1989-01-24 American Telephone And Telegraph Company On-line documentation facility
US4698625A (en) * 1985-05-30 1987-10-06 International Business Machines Corp. Graphic highlight adjacent a pointing cursor
US4757549A (en) * 1985-12-12 1988-07-12 International Business Machines Corp. Freehand drawing containing invisible lines
JPH0685128B2 (ja) * 1987-03-12 1994-10-26 フアナツク株式会社 自動プログラミングシステム
US5111398A (en) 1988-11-21 1992-05-05 Xerox Corporation Processing natural language text using autonomous punctuational structure
CA2027253C (en) * 1989-12-29 1997-12-16 Steven C. Bagley Editing text in an image
JP2855797B2 (ja) 1990-06-15 1999-02-10 富士ゼロックス株式会社 文書処理装置
US5544317A (en) * 1990-11-20 1996-08-06 Berg; David A. Method for continuing transmission of commands for interactive graphics presentation in a computer network
US5172422A (en) * 1991-05-13 1992-12-15 Eastman Kodak Company Fast character segmentation of skewed text lines for optical character recognition
JPH0594433A (ja) 1991-10-02 1993-04-16 Fuji Xerox Co Ltd 文書処理装置
US5390259A (en) 1991-11-19 1995-02-14 Xerox Corporation Methods and apparatus for selecting semantically significant images in a document image without decoding image content
US5335290A (en) 1992-04-06 1994-08-02 Ricoh Corporation Segmentation of text, picture and lines of a document image
JPH05298358A (ja) 1992-04-21 1993-11-12 Toshiba Corp 文書構造解析装置及び文書構造解析方法
US5680479A (en) 1992-04-24 1997-10-21 Canon Kabushiki Kaisha Method and apparatus for character recognition
US5523775A (en) 1992-05-26 1996-06-04 Apple Computer, Inc. Method for selecting objects on a computer display
JP2789971B2 (ja) * 1992-10-27 1998-08-27 富士ゼロックス株式会社 表認識装置
JPH06214983A (ja) 1993-01-20 1994-08-05 Kokusai Denshin Denwa Co Ltd <Kdd> 文書画像の論理構造化文書への変換方法および装置
US5848184A (en) 1993-03-15 1998-12-08 Unisys Corporation Document page analyzer and method
JP3302147B2 (ja) 1993-05-12 2002-07-15 株式会社リコー 文書画像処理方法
NL9301004A (nl) * 1993-06-11 1995-01-02 Oce Nederland Bv Inrichting voor het bewerken en reproduceren van digitale beeldinformatie.
US5553217A (en) 1993-09-23 1996-09-03 Ricoh Company, Ltd. Document layout using tiling
JP3349787B2 (ja) * 1993-10-15 2002-11-25 株式会社ソニー・コンピュータエンタテインメント 描画データ作成装置及び描画データ作成方法
JP2618832B2 (ja) 1994-06-16 1997-06-11 日本アイ・ビー・エム株式会社 文書の論理構造の解析方法及びシステム
AUPM704394A0 (en) * 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Optimization method for the efficient production of images
US5537628A (en) * 1994-08-29 1996-07-16 Microsoft Corporation Method for handling different code pages in text
US5555556A (en) 1994-09-30 1996-09-10 Xerox Corporation Method and apparatus for document segmentation by background analysis
US5883588A (en) * 1994-10-04 1999-03-16 Nec Corporation Data compression system and data compression device for improving data compression rate and coding speed
US5778356A (en) * 1994-11-10 1998-07-07 Cadis, Inc. Dynamically selectable language display system for object oriented database management system
US5987171A (en) 1994-11-10 1999-11-16 Canon Kabushiki Kaisha Page analysis system
DE69600461T2 (de) 1995-01-17 1999-03-11 Eastman Kodak Co System und Verfahren zur Bewertung der Abbildung eines Formulars
US5805911A (en) * 1995-02-01 1998-09-08 Microsoft Corporation Word prediction system
JP3545824B2 (ja) 1995-02-21 2004-07-21 富士通株式会社 データ検索装置
US5689585A (en) 1995-04-28 1997-11-18 Xerox Corporation Method for aligning a text image to a transcription of the image
US5680511A (en) * 1995-06-07 1997-10-21 Dragon Systems, Inc. Systems and methods for word recognition
US5848186A (en) 1995-08-11 1998-12-08 Canon Kabushiki Kaisha Feature extraction system for identifying text within a table image
JPH0969101A (ja) * 1995-08-31 1997-03-11 Hitachi Ltd 構造化文書生成方法および装置
US6141462A (en) * 1995-10-11 2000-10-31 Dainippon Screen Mfg. Co., Ltd. Image processing using adjoining relationships between image parts
US5892842A (en) 1995-12-14 1999-04-06 Xerox Corporation Automatic method of identifying sentence boundaries in a document image
US5841900A (en) * 1996-01-11 1998-11-24 Xerox Corporation Method for graph-based table recognition
US5798487A (en) * 1996-01-18 1998-08-25 Tedea Huntleigh Intl. Ltd. Weighing device for rotary filling machines
JP3061765B2 (ja) 1996-05-23 2000-07-10 ゼロックス コーポレイション コンピュータベースの文書処理方法
US5784487A (en) * 1996-05-23 1998-07-21 Xerox Corporation System for document layout analysis
US6119120A (en) * 1996-06-28 2000-09-12 Microsoft Corporation Computer implemented methods for constructing a compressed data structure from a data string and for using the data structure to find data patterns in the data string
JP3772401B2 (ja) 1996-07-11 2006-05-10 富士ゼロックス株式会社 文書分類装置
US5956737A (en) * 1996-09-09 1999-09-21 Design Intelligence, Inc. Design engine for fitting content to a medium
JP3099756B2 (ja) 1996-10-31 2000-10-16 富士ゼロックス株式会社 文書処理装置、単語抽出装置及び単語抽出方法
US6512848B2 (en) * 1996-11-18 2003-01-28 Canon Kabushiki Kaisha Page analysis system
GB9625284D0 (en) 1996-12-04 1997-01-22 Canon Kk A data processing method and apparatus for identifying a classification to which data belongs
US6240430B1 (en) * 1996-12-13 2001-05-29 International Business Machines Corporation Method of multiple text selection and manipulation
US6226402B1 (en) * 1996-12-20 2001-05-01 Fujitsu Limited Ruled line extracting apparatus for extracting ruled line from normal document image and method thereof
US6374200B1 (en) 1997-02-03 2002-04-16 Fujitsu Limited Layout apparatus for laying out objects in space and method thereof
US6252597B1 (en) * 1997-02-14 2001-06-26 Netscape Communications Corporation Scalable user interface for graphically representing hierarchical data
US6175844B1 (en) 1997-05-29 2001-01-16 Adobe Systems Incorporated Ordering groups of text in an image
JP3143079B2 (ja) 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
US6298357B1 (en) * 1997-06-03 2001-10-02 Adobe Systems Incorporated Structure extraction on electronic documents
US6687404B1 (en) * 1997-06-20 2004-02-03 Xerox Corporation Automatic training of layout parameters in a 2D image model
US7237193B1 (en) * 1997-07-29 2007-06-26 Symantec Corporation Unified program for simultaneously displaying graphically-editable graphics presentation and linguistically-editable linguistic definition of the graphics presentation and for synchronizing the graphics presentation and the linguistic definition to one another
US5991756A (en) * 1997-11-03 1999-11-23 Yahoo, Inc. Information retrieval from hierarchical compound documents
US6562077B2 (en) 1997-11-14 2003-05-13 Xerox Corporation Sorting image segments into clusters based on a distance measurement
US6173073B1 (en) 1998-01-05 2001-01-09 Canon Kabushiki Kaisha System for analyzing table images
US7760187B2 (en) 2004-07-30 2010-07-20 Apple Inc. Visual expander
JP3940491B2 (ja) 1998-02-27 2007-07-04 株式会社東芝 文書処理装置および文書処理方法
US6092092A (en) * 1998-03-13 2000-07-18 International Business Machines Corporation Gap-based style-run array mechanism
US6211856B1 (en) 1998-04-17 2001-04-03 Sung M. Choi Graphical user interface touch screen with an auto zoom feature
US6377704B1 (en) * 1998-04-30 2002-04-23 Xerox Corporation Method for inset detection in document layout analysis
JP4235286B2 (ja) * 1998-09-11 2009-03-11 キヤノン株式会社 表認識方法及び装置
US6263122B1 (en) 1998-09-23 2001-07-17 Hewlett Packard Company System and method for manipulating regions in a scanned image
JP2000285140A (ja) 1998-12-24 2000-10-13 Ricoh Co Ltd 文書処理装置、文書分類装置、文書処理方法、文書分類方法およびそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US20070065838A1 (en) * 1999-01-19 2007-03-22 Maxygen, Inc. Oligonucleotide mediated nucleic acid recombination
US6377285B1 (en) * 1999-01-29 2002-04-23 Sony Corporation Zooming space-grid for graphical user interface
US6345279B1 (en) 1999-04-23 2002-02-05 International Business Machines Corporation Methods and apparatus for adapting multimedia content for client devices
US6504544B1 (en) 1999-07-30 2003-01-07 Curl Corporation Processing layout of text graphical objects
US6542635B1 (en) 1999-09-08 2003-04-01 Lucent Technologies Inc. Method for document comparison and classification using document image layout
JP2001101164A (ja) 1999-09-29 2001-04-13 Toshiba Corp 文書画像処理装置及び文書画像処理方法
US7249318B1 (en) 1999-11-08 2007-07-24 Adobe Systems Incorporated Style sheet generation
US6826727B1 (en) 1999-11-24 2004-11-30 Bitstream Inc. Apparatus, methods, programming for automatically laying out documents
US6664990B1 (en) * 1999-12-07 2003-12-16 International Business Machines Corporation Computer display pointer with alternate hot spots
US6910182B2 (en) 2000-01-31 2005-06-21 Xmlcities, Inc. Method and apparatus for generating structured documents for various presentations and the uses thereof
US6757870B1 (en) 2000-03-22 2004-06-29 Hewlett-Packard Development Company, L.P. Automatic table detection method and system
US20030090473A1 (en) * 2000-03-24 2003-05-15 Joshi Vikas B. Multiple screen automatic programming interface
US7210099B2 (en) * 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
TW466415B (en) 2000-08-28 2001-12-01 Compal Electronics Inc Hand-held device with zooming display function
US6938204B1 (en) 2000-08-31 2005-08-30 International Business Machines Corporation Array-based extensible document storage format
AUPR063400A0 (en) 2000-10-06 2000-11-02 Canon Kabushiki Kaisha Xml encoding scheme
US7260777B2 (en) 2001-08-17 2007-08-21 Desknet Inc. Apparatus, method and system for transforming data
US8230323B2 (en) 2000-12-06 2012-07-24 Sra International, Inc. Content distribution system and method
US7178100B2 (en) * 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US20020118885A1 (en) * 2001-02-27 2002-08-29 Bernard Smeets Font compression and retrieval
US7080318B2 (en) 2001-02-28 2006-07-18 Koninklijke Philips Electronics N.V. Schema, syntactic analysis method and method of generating a bit stream based on a schema
CA2340531C (en) * 2001-03-12 2006-10-10 Ibm Canada Limited-Ibm Canada Limitee Document retrieval system and search method using word set and character look-up tables
US7565605B2 (en) * 2001-05-08 2009-07-21 Nokia, Inc. Reorganizing content of an electronic document
US6643653B1 (en) * 2001-06-01 2003-11-04 Oracle International Corporation Method and apparatus for identifying a data sequence related to a given data sequence
US20030014442A1 (en) 2001-07-16 2003-01-16 Shiigi Clyde K. Web site application development method using object model for managing web-based content
KR100474724B1 (ko) * 2001-08-04 2005-03-08 삼성전자주식회사 터치스크린을 가지는 장치 및 그 장치에 외부디스플레이기기를 연결하여 사용하는 방법
US7046848B1 (en) 2001-08-22 2006-05-16 Olcott Peter L Method and system for recognizing machine generated character glyphs and icons in graphic images
US7483938B2 (en) * 2001-09-27 2009-01-27 International Business Machines Corporation System for character validation and method therefor
US6801673B2 (en) 2001-10-09 2004-10-05 Hewlett-Packard Development Company, L.P. Section extraction tool for PDF documents
US7031910B2 (en) * 2001-10-16 2006-04-18 Xerox Corporation Method and system for encoding and accessing linguistic frequency data
NO316480B1 (no) 2001-11-15 2004-01-26 Forinnova As Fremgangsmåte og system for tekstuell granskning og oppdagelse
AUPR962001A0 (en) 2001-12-19 2002-01-24 Redbank Manor Pty Ltd Document display system and method
JP2003288334A (ja) 2002-03-28 2003-10-10 Toshiba Corp 文書処理装置及び文書処理方法
EP1504369B1 (de) 2002-04-24 2013-07-17 Intel Corporation System und verfahren zum verarbeiten von als ein ereignisstrom repräsentierten xml-dokumenten
US7164797B2 (en) * 2002-04-25 2007-01-16 Microsoft Corporation Clustering
US6904170B2 (en) 2002-05-17 2005-06-07 Hewlett-Packard Development Company, L.P. Method and system for document segmentation
US7142728B2 (en) 2002-05-17 2006-11-28 Science Applications International Corporation Method and system for extracting information from a document
CA2486528C (en) * 2002-05-20 2010-04-27 Tata Infotech Ltd. Document structure identifier
US20040003349A1 (en) 2002-06-28 2004-01-01 Microsoft Corporation Content segments
US7523394B2 (en) * 2002-06-28 2009-04-21 Microsoft Corporation Word-processing document stored in a single XML file that may be manipulated by applications that understand XML
JP2004038321A (ja) 2002-06-28 2004-02-05 Fujitsu Ltd 文書レイアウト解析プログラム、文書レイアウト解析装置および文書レイアウト解析方法
US7324120B2 (en) * 2002-07-01 2008-01-29 Xerox Corporation Segmentation method and system for scanned documents
US7027071B2 (en) 2002-07-02 2006-04-11 Hewlett-Packard Development Company, L.P. Selecting elements from an electronic document
US7254270B2 (en) * 2002-07-09 2007-08-07 Hewlett-Packard Development Company, L.P. System and method for bounding and classifying regions within a graphical image
US20050216836A1 (en) * 2002-08-09 2005-09-29 Triplearc Uk Limited Electronic document processing
US20060104511A1 (en) 2002-08-20 2006-05-18 Guo Jinhong K Method, system and apparatus for generating structured document files
US6965388B2 (en) * 2002-10-21 2005-11-15 Microsoft Corporation System and method for block scaling data to fit a screen on a mobile device
US7365758B2 (en) * 2002-10-21 2008-04-29 Microsoft Corporation System and method for scaling data according to an optimal width for display on a mobile device
US7295711B1 (en) * 2002-10-23 2007-11-13 Altera Corporation Method and apparatus for merging related image segments
US20040083268A1 (en) * 2002-10-28 2004-04-29 Arti Shukla Methods and apparatuses for interfacing portable devices with digital sender devices
US7019713B2 (en) * 2002-10-30 2006-03-28 The University Of Chicago Methods and measurement engine for aligning multi-projector display systems
EP1573562A4 (de) 2002-10-31 2007-12-19 Arizan Corp Verfahren und vorrichtungen zum zusammenfassen von dokumentinhalt für mobilkommunikationsgeräte
JP3974511B2 (ja) 2002-12-19 2007-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報検索のためのデータ構造を生成するコンピュータ・システム、そのための方法、情報検索のためのデータ構造を生成するコンピュータ実行可能なプログラム、情報検索のためのデータ構造を生成するコンピュータ実行可能なプログラムを記憶したコンピュータ可読な記憶媒体、情報検索システム、およびグラフィカル・ユーザ・インタフェイス・システム
US7272258B2 (en) * 2003-01-29 2007-09-18 Ricoh Co., Ltd. Reformatting documents using document analysis information
AU2003900865A0 (en) * 2003-02-26 2003-03-13 Silverbrook Research Pty Ltd Methods, systems and apparatus (NPW010)
US7313754B2 (en) * 2003-03-14 2007-12-25 Texterity, Inc. Method and expert system for deducing document structure in document conversion
US7064829B2 (en) * 2003-03-20 2006-06-20 Timbre Technologies, Inc. Generic interface for an optical metrology system
US7305612B2 (en) * 2003-03-31 2007-12-04 Siemens Corporate Research, Inc. Systems and methods for automatic form segmentation for raster-based passive electronic documents
US8056001B2 (en) 2003-04-10 2011-11-08 Hewlett-Packard Development Company, L.P. Method and apparatus for classifying elements of a document
US7890852B2 (en) 2003-06-26 2011-02-15 International Business Machines Corporation Rich text handling for a web application
JP2005043990A (ja) * 2003-07-23 2005-02-17 Toshiba Corp 文書処理装置および文書処理方法
US7428700B2 (en) 2003-07-28 2008-09-23 Microsoft Corporation Vision-based document segmentation
US7171618B2 (en) 2003-07-30 2007-01-30 Xerox Corporation Multi-versioned documents and method for creation and use thereof
GB0320278D0 (en) 2003-08-29 2003-10-01 Hewlett Packard Development Co Constrained document layout
US7360157B1 (en) 2003-09-19 2008-04-15 Microsoft Corporation Aligning content in an electronic document
JP2005108230A (ja) 2003-09-25 2005-04-21 Ricoh Co Ltd オーディオ/ビデオコンテンツ認識・処理機能内蔵印刷システム
US7424672B2 (en) 2003-10-03 2008-09-09 Hewlett-Packard Development Company, L.P. System and method of specifying image document layout definition
US7554689B2 (en) 2003-10-15 2009-06-30 Canon Kabushiki Kaisha Document layout method
JP2005149269A (ja) 2003-11-18 2005-06-09 Hitachi Systems & Services Ltd 構造化文書の処理システム
JP4012140B2 (ja) * 2003-11-20 2007-11-21 キヤノン株式会社 画像処理装置、情報処理装置及びそれらの制御方法、プログラム
US7814419B2 (en) * 2003-11-26 2010-10-12 Nokia Corporation Changing an orientation of a user interface via a course of motion
US7085590B2 (en) 2003-12-31 2006-08-01 Sony Ericsson Mobile Communications Ab Mobile terminal with ergonomic imaging functions
US7441186B2 (en) * 2004-01-23 2008-10-21 Microsoft Corporation System and method for automatically grouping items
US7441204B2 (en) 2004-02-06 2008-10-21 Microsoft Corporation Method and system for automatically displaying content of a window on a display that has changed orientation
US7386789B2 (en) * 2004-02-27 2008-06-10 Hewlett-Packard Development Company, L.P. Method for determining logical components of a document
US7441207B2 (en) 2004-03-18 2008-10-21 Microsoft Corporation Method and system for improved viewing and navigation of content
US7697756B2 (en) * 2004-04-09 2010-04-13 Siemens Medical Solutions Usa, Inc. GPU accelerated multi-label image segmentation (MLS)
US7499588B2 (en) 2004-05-20 2009-03-03 Microsoft Corporation Low resolution OCR for camera acquired documents
US7769756B2 (en) * 2004-06-07 2010-08-03 Sling Media, Inc. Selection and presentation of context-relevant supplemental content and advertising
KR100747879B1 (ko) * 2004-06-10 2007-08-08 캐논 가부시끼가이샤 화상 처리 장치, 제어 방법 및 기록 매체
US20050283739A1 (en) 2004-06-18 2005-12-22 Julia Mohr Method and system to improve usability of a web application by providing a zoom function
US20060004753A1 (en) * 2004-06-23 2006-01-05 Coifman Ronald R System and method for document analysis, processing and information extraction
US7284192B2 (en) * 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents
US7584422B2 (en) * 2004-07-12 2009-09-01 Informatica Corporation System and method for data format transformation
US7343369B2 (en) * 2004-11-18 2008-03-11 International Business Machines Corporation Method and apparatus for predicting selectivity of database query join conditions using hypothetical query predicates having skewed value constants
CN100568221C (zh) 2004-11-22 2009-12-09 北京北大方正技术研究院有限公司 一种对报纸版面进行文字阅读顺序恢复的方法
JP4550882B2 (ja) * 2004-11-25 2010-09-22 シャープ株式会社 情報分類装置、情報分類方法、情報分類プログラム、情報分類システム
US7676743B2 (en) * 2004-11-30 2010-03-09 Adobe Systems, Incorporated Applying type fitting across grouped text frames in a page layout application
US7693848B2 (en) * 2005-01-10 2010-04-06 Xerox Corporation Method and apparatus for structuring documents based on layout, content and collection
US8245131B2 (en) 2005-02-10 2012-08-14 Hewlett-Packard Development Company, L.P. Constraining layout variations for accommodating variable content in electronic documents
JP4314204B2 (ja) 2005-03-11 2009-08-12 株式会社東芝 文書管理方法、システム及びプログラム
US7924285B2 (en) * 2005-04-06 2011-04-12 Microsoft Corporation Exposing various levels of text granularity for animation and other effects
US7543229B2 (en) 2005-04-14 2009-06-02 Hewlett-Packard Development Company, L.P. Analysis of graphic design material
US7386558B2 (en) * 2005-04-22 2008-06-10 Microsoft Corporation Methods and systems for filtering an Extensible Application Markup Language (XAML) file to facilitate indexing of the logical content contained therein
US8302002B2 (en) 2005-04-27 2012-10-30 Xerox Corporation Structuring document based on table of contents
KR101196566B1 (ko) * 2005-05-24 2012-11-01 가부시키가이샤 터보 데이터 라보라토리 멀티 프로세서 시스템 및 그 정보처리방법
US7392473B2 (en) 2005-05-26 2008-06-24 Xerox Corporation Method and apparatus for determining logical document structure
DE602005002835T2 (de) * 2005-06-09 2008-02-07 Pdflib Gmbh Verfahren zur Identifizierung von redundantem Text in elektronischen Dokumenten
US7697757B2 (en) * 2005-06-15 2010-04-13 Hewlett-Packard Development Company, L.P. Computer assisted document modification
JP2006350867A (ja) 2005-06-17 2006-12-28 Ricoh Co Ltd 文書処理装置、文書処理方法、プログラム及び情報記録媒体
US7555711B2 (en) 2005-06-24 2009-06-30 Hewlett-Packard Development Company, L.P. Generating a text layout boundary from a text block in an electronic document
ATE373274T1 (de) 2005-07-01 2007-09-15 Pdflib Gmbh Verfahren zur identifizierung von wörtern in einem elektronischen dokument
US8249344B2 (en) 2005-07-01 2012-08-21 Microsoft Corporation Grammatical parsing of document visual structures
GB2428114A (en) * 2005-07-08 2007-01-17 William Alan Hollingsworth Data Format Conversion System
US7559033B2 (en) * 2005-07-21 2009-07-07 International Business Machines Corporation Method and system for improving selection capability for user interface
US7613996B2 (en) * 2005-08-15 2009-11-03 Microsoft Corporation Enabling selection of an inferred schema part
US7734554B2 (en) 2005-10-27 2010-06-08 Hewlett-Packard Development Company, L.P. Deploying a document classification system
JP4666155B2 (ja) 2005-11-18 2011-04-06 ソニー株式会社 リチウムイオン二次電池
US8307275B2 (en) 2005-12-08 2012-11-06 International Business Machines Corporation Document-based information and uniform resource locator (URL) management
JP5238105B2 (ja) 2005-12-09 2013-07-17 富士通株式会社 プログラム、及びデータ抽出方法
US7853869B2 (en) 2005-12-14 2010-12-14 Microsoft Corporation Creation of semantic objects for providing logical structure to markup language representations of documents
US7877685B2 (en) * 2005-12-29 2011-01-25 Sap Ag Persistent adjustable text selector
US7730422B2 (en) * 2006-01-25 2010-06-01 Microsoft Corporation Smart icon placement across desktop size changes
US7676741B2 (en) * 2006-01-31 2010-03-09 Microsoft Corporation Structural context for fixed layout markup documents
US7623710B2 (en) * 2006-02-14 2009-11-24 Microsoft Corporation Document content and structure conversion
US7461349B1 (en) * 2006-02-28 2008-12-02 Adobe Systems Incorporated Methods and apparatus for applying functions to content
EP1841073A1 (de) * 2006-03-29 2007-10-03 STMicroelectronics N.V. Schnell konvergierende Decodierung von LDPC Codes mit Anwendung des BCJR Algorithmus bei den Prüfknoten
CN101055578A (zh) 2006-04-12 2007-10-17 龙搜(北京)科技有限公司 基于规则的文档内容挖掘器
CN101055577A (zh) 2006-04-12 2007-10-17 龙搜(北京)科技有限公司 可扩展标记语言集中器
US7756333B2 (en) 2006-04-26 2010-07-13 Microsoft Corporation Document layout verification
JP5049515B2 (ja) * 2006-06-06 2012-10-17 キヤノン株式会社 情報処理装置および情報処理方法および情報処理プログラム
US20070294646A1 (en) 2006-06-14 2007-12-20 Sybase, Inc. System and Method for Delivering Mobile RSS Content
US7805289B2 (en) 2006-07-10 2010-09-28 Microsoft Corporation Aligning hierarchal and sequential document trees to identify parallel data
DE102006046703A1 (de) * 2006-10-02 2008-04-17 Siemens Audiologische Technik Gmbh Hörvorrichtung mit gesteuerten Eingangskanälen und entsprechendes Verfahren
US20080120309A1 (en) * 2006-11-17 2008-05-22 Microsoft Corporation Storing, maintaining and locating information
US7911481B1 (en) * 2006-12-14 2011-03-22 Disney Enterprises, Inc. Method and apparatus of graphical object selection
US8689132B2 (en) * 2007-01-07 2014-04-01 Apple Inc. Portable electronic device, method, and graphical user interface for displaying electronic documents and lists
US9813531B2 (en) * 2007-01-22 2017-11-07 Sisvel International S.A. System and method for screen orientation in a rich media environment
US20080183657A1 (en) 2007-01-26 2008-07-31 Yuan-Chi Chang Method and apparatus for providing direct access to unique hierarchical data items
US7778953B2 (en) 2007-02-19 2010-08-17 Kabushiki Kaisha Toshiba Document management apparatus and document management method
US20080231643A1 (en) * 2007-03-21 2008-09-25 Nick Fletcher Method and apparatus for controlling the size or opacity of map elements rendered in an interactive map view
US20080235564A1 (en) * 2007-03-21 2008-09-25 Ricoh Co., Ltd. Methods for converting electronic content descriptions
US8504553B2 (en) 2007-04-19 2013-08-06 Barnesandnoble.Com Llc Unstructured and semistructured document processing and searching
TW200846942A (en) 2007-05-21 2008-12-01 Univ Nat Taiwan Science Tech Clustering TRIZ analysis model
US20080307308A1 (en) 2007-06-08 2008-12-11 Apple Inc. Creating Web Clips
US8201096B2 (en) 2007-06-09 2012-06-12 Apple Inc. Browsing or searching user interfaces and other aspects
WO2009154589A2 (en) * 2008-01-31 2009-12-23 Hewlett-Packard Development Company L.P. Printing structured documents
JP4402138B2 (ja) * 2007-06-29 2010-01-20 キヤノン株式会社 画像処理装置、画像処理方法、コンピュータプログラム
JP4590433B2 (ja) * 2007-06-29 2010-12-01 キヤノン株式会社 画像処理装置、画像処理方法、コンピュータプログラム
WO2009026508A1 (en) 2007-08-22 2009-02-26 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for providing content-aware scrolling
US8638363B2 (en) * 2009-02-18 2014-01-28 Google Inc. Automatically capturing information, such as capturing information using a document-aware device
US20090089448A1 (en) 2007-09-28 2009-04-02 David Sze Mobile browser with zoom operations using progressive image download
WO2009039649A1 (en) * 2007-09-28 2009-04-02 Research In Motion Limited Method and apparatus for providing zoom functionality in a portable device display
US20090091564A1 (en) 2007-10-03 2009-04-09 Raju Thevan System and method for rendering electronic documents having overlapping primitives
US8125691B2 (en) 2007-10-11 2012-02-28 Canon Kabushiki Kaisha Information processing apparatus and method, computer program and computer-readable recording medium for embedding watermark information
US20090109243A1 (en) * 2007-10-25 2009-04-30 Nokia Corporation Apparatus and method for zooming objects on a display
JP2009110500A (ja) 2007-10-29 2009-05-21 Toshiba Corp ドキュメント処理装置、ドキュメント処理方法、ドキュメント処理装置のプログラム
US8015168B2 (en) * 2007-11-12 2011-09-06 Sap Ag String pooling
RU2007141666A (ru) 2007-11-13 2009-05-20 Николай Игоревич Докучаев (RU) Способ сбора, обработки и каталогизации целевой информации из неструктурированных источников
US8909654B2 (en) 2007-11-19 2014-12-09 Nippon Telegraph And Telephone Corporation Information search method, apparatus, program and computer readable recording medium
US8136402B2 (en) * 2007-11-28 2012-03-20 International Business Machines Corporation Accelerometer module for use with a touch sensitive device
US8504945B2 (en) * 2008-02-01 2013-08-06 Gabriel Jakobson Method and system for associating content with map zoom function
US8217964B2 (en) * 2008-02-14 2012-07-10 Nokia Corporation Information presentation based on display screen orientation
WO2010000020A1 (en) 2008-06-30 2010-01-07 Cathrx Ltd A catheter
US7809195B1 (en) * 2008-09-18 2010-10-05 Ernest Greene Encoding system providing discrimination, classification, and recognition of shapes and patterns
US8539342B1 (en) 2008-10-16 2013-09-17 Adobe Systems Incorporated Read-order inference via content sorting
US20100145720A1 (en) 2008-12-05 2010-06-10 Bruce Reiner Method of extracting real-time structured data and performing data analysis and decision support in medical reporting
US8352855B2 (en) 2009-01-02 2013-01-08 Apple Inc. Selection of text in an unstructured document
US20100185651A1 (en) * 2009-01-16 2010-07-22 Google Inc. Retrieving and displaying information from an unstructured electronic document collection
TW201224718A (en) * 2010-12-03 2012-06-16 Hon Hai Prec Ind Co Ltd Wind guiding cover and computer system with same
US8543911B2 (en) 2011-01-18 2013-09-24 Apple Inc. Ordering document content based on reading flow
EP2477122B1 (de) 2011-01-18 2018-10-24 Apple Inc. Bestimmung der Reihenfolge von Dokumenteninhalt
US20130007004A1 (en) * 2011-06-30 2013-01-03 Landon Ip, Inc. Method and apparatus for creating a search index for a composite document and searching same
US20150121298A1 (en) * 2013-10-31 2015-04-30 Evernote Corporation Multi-touch navigation of multidimensional object hierarchies

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070250497A1 (en) 2006-04-19 2007-10-25 Apple Computer Inc. Semantic reconstruction

Also Published As

Publication number Publication date
US20100174975A1 (en) 2010-07-08
GB201111173D0 (en) 2011-08-17
KR20130051017A (ko) 2013-05-16
US20130185631A1 (en) 2013-07-18
US8473467B2 (en) 2013-06-25
US20100174976A1 (en) 2010-07-08
JP6141921B2 (ja) 2017-06-07
US20100174980A1 (en) 2010-07-08
US8352855B2 (en) 2013-01-08
GB201305919D0 (en) 2013-05-15
US8719701B2 (en) 2014-05-06
US8365072B2 (en) 2013-01-29
KR101324799B1 (ko) 2013-11-01
CN102317933A (zh) 2012-01-11
US20130042172A1 (en) 2013-02-14
US20150324338A1 (en) 2015-11-12
WO2010078475A3 (en) 2011-04-14
US20100174732A1 (en) 2010-07-08
KR20110112397A (ko) 2011-10-12
US9063911B2 (en) 2015-06-23
WO2010078475A4 (en) 2011-06-03
GB2498137A (en) 2013-07-03
US9460063B2 (en) 2016-10-04
US20130311490A1 (en) 2013-11-21
GB2479479A (en) 2011-10-12
US20100174983A1 (en) 2010-07-08
US9575945B2 (en) 2017-02-21
JP2012514792A (ja) 2012-06-28
US20100174979A1 (en) 2010-07-08
US20100174977A1 (en) 2010-07-08
JP2016006661A (ja) 2016-01-14
KR20130116958A (ko) 2013-10-24
US20100174978A1 (en) 2010-07-08
US8892992B2 (en) 2014-11-18
EP2374067A2 (de) 2011-10-12
US8832549B2 (en) 2014-09-09
WO2010078475A2 (en) 2010-07-08
US8438472B2 (en) 2013-05-07
US20100174982A1 (en) 2010-07-08
US8261186B2 (en) 2012-09-04
US8443278B2 (en) 2013-05-14
US20100174985A1 (en) 2010-07-08
KR101463703B1 (ko) 2014-11-19
US9959259B2 (en) 2018-05-01

Similar Documents

Publication Publication Date Title
DE112009004951T5 (de) Verfahren und System zur Dokumentenrekonstruktion
JP2023078363A (ja) ウェブサイト構築システムおよびウェブサイト構築システムのための方法
DE112005003157T5 (de) Domainspezifisches Datenelement-Mappingverfahren- und System
DE112019000972T5 (de) Verfahren und Systeme für vereinfachte grafische Abbildungen von bipartiten Graphen
DE102013203831A1 (de) Verfahren und System für ein Master-Seiten-basiertes integriertes Editieren und eine dynamische Layout-Aktivierung
DE102021001321A1 (de) Logisches Gruppieren von exportierten Textblöcken
DE102012215488A1 (de) Adaptive Anwenderschnittstelle für ein kreatives Multimedia-Gestaltungssystem
CN102317933B (zh) 用于文档重构的方法和系统

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R409 Internal rectification of the legal status completed
R016 Response to examination communication
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017270000

Ipc: G06F0040200000