[go: up one dir, main page]

DE102021001321A1 - Logisches Gruppieren von exportierten Textblöcken - Google Patents

Logisches Gruppieren von exportierten Textblöcken Download PDF

Info

Publication number
DE102021001321A1
DE102021001321A1 DE102021001321.2A DE102021001321A DE102021001321A1 DE 102021001321 A1 DE102021001321 A1 DE 102021001321A1 DE 102021001321 A DE102021001321 A DE 102021001321A DE 102021001321 A1 DE102021001321 A1 DE 102021001321A1
Authority
DE
Germany
Prior art keywords
text
blocks
lines
horizontal
text blocks
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
DE102021001321.2A
Other languages
English (en)
Inventor
Praveen Kumar Dhanuka
Matthew Fisher
Arushi Jain
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.)
Adobe Inc
Original Assignee
Adobe 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 Adobe Inc filed Critical Adobe Inc
Publication of DE102021001321A1 publication Critical patent/DE102021001321A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/762Arrangements for image or video recognition or understanding using pattern recognition or machine learning using clustering, e.g. of similar faces in social networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/416Extracting the logical structure, e.g. chapters, sections or page numbers; Identifying elements of the document, e.g. authors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Es werden Techniken zum Clustern von Text offenbart. Die Techniken können zum Clustern von Textblöcken eingesetzt werden, die entweder in einer sequenziellen Lesereihenfolge oder einer willkürlichen Reihenfolge empfangen werden. Eine Verfahrensweise, die die Techniken entsprechend einer Ausführungsform implementiert, beinhaltet ein Empfangen von Textblöcken, die Elemente umfassen, die ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten beinhalten. Das Verfahren beinhaltet des Weiteren ein Bestimmen einer Reihenfolge der empfangenen Textblöcke als eine von einer willkürlichen Reihenfolge oder einer sequenziellen Lesereihenfolge. Textblöcke, die in einer sequenziellen Lesereihenfolge empfangen werden, schreiten von links nach rechts und von oben nach unten für horizontal orientierten Text und von oben nach unten und von links nach rechts für vertikal orientierten Text fort. Das Verfahren beinhaltet des Weiteren ein Durchführen eines z-Reihenfolge-Textclusterns in Reaktion auf ein Bestimmen, dass die empfangenen Textblöcke in einer sequenziellen Lesereihenfolge vorliegen, und ein Durchführen eines sortierte-Reihenfolge-Textclusterns in Reaktion auf ein Bestimmen, dass die empfangenen Textblöcke nicht in einer sequenziellen Lesereihenfolge vorliegen.

Description

  • Gebiet der Offenbarung
  • Die vorliegende Offenbarung betrifft Techniken zum Portieren eines Textobjektes aus einem gegebenen Dokument in eine andere Anwendung oder ein anderes Format und insbesondere zum Empfangen von konstituierenden Teilen, die ein Textobjekt bilden, das in Bruchstücken aus einem Dokument extrahiert worden ist, und Clustern dieser Bruchstücke zu einem logischen Block in dem Bereich, in den das Textobjekt importiert worden ist.
  • Hintergrund
  • Gestaltete Dokumente beinhalten oftmals Text, Bilder und Kunstobjekte (artwork) in verschiedenen Formaten und Orientierungen. Als Teil des Arbeitsablaufes beim Erzeugen und Modifizieren derartiger Dokumente werden diese gestalteten Dokumente gegebenenfalls in andere Dateiformate (beispielsweise SVG, PDF, Legacy- bzw. Vermächtnisformate und dergleichen mehr) exportiert. Erfolgt dies, so werden Textobjekte in den Dokumenten (so beispielsweise Sätze oder Absätze) während des Exportprozesses üblicherweise zu kleineren Bruchstücken zerstückelt, um das Layout beizubehalten. Die kleineren Bruchstücke von Text können beispielsweise einzeilige Sätze, Satzfragmente, Worte oder Glyphen sein. In jedem Fall kann, was noch erläutert wird, dieses Zerstückeln von Textobjekten in kleinere Bruchstücke Schwierigkeiten bei anderen Dokumentmanipulationswerkzeugen, die gegebenenfalls nachgeordnet in dem Arbeitsablauf benutzt werden, und bei anderen Anwendungen, die den Text verarbeiten oder interpretieren, darunter bei maschinell lernenden Anwendungen, verursachen. Insbesondere kann die Anzahl von kleineren Bruchstücken vergleichsweise hoch sein. Daher wird das Bearbeiten des gesamten Textobjektes, das von diesen Bruchstücken gebildet wird, aufwändiger (jedes Bruchstück muss einzeln bearbeitet werden). Darüber hinaus wird die relative Reihenfolge bzw. Ordnung der kleineren Bruchstücke, die ein gegebenes Textobjekt bilden, gegebenenfalls nicht beibehalten, und zwar beispielsweise beim Umwandeln eines Bildes oder eines anderen Dokumentes in ein bearbeitbares Format wie PDF oder in irgendein anderes gewünschtes Format, das bei einer im Arbeitsablauf nachgeordneten Anwendung möglicherweise zum Einsatz kommt. Das logische Gruppieren der kleineren Bruchstücke des mehrteiligen Textobjektes zu einem einzigen Cluster erfordert daher üblicherweise ein manuelles Eingreifen, und zwar insbesondere dann, wenn das Textobjekt Text beinhaltet, der auf andere Weise als horizontal orientiert ist (so beispielsweise bei vertikalem Text oder verkipptem Text), oder dann, wenn das Textobjekt ein anderes Objekt, so beispielsweise eine Grafik oder ein Insert-Bild, umfließt oder auf andere Weise von diesem unterbrochen wird.
  • Figurenliste
    • 1 ist abstraktes Blockdiagramm eines Wechseltextclustersystems, das bei einem Arbeitsablauf mit einem gestalteten Dokument eingesetzt wird, wobei das System dem Clustern von konstituierenden Teilen, die ein Textobjekt bilden, das in Bruchstücken aus einem gegebenen Dokument extrahiert worden ist, dient, entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 2 zeigt ein Beispiel für ein gestaltetes Dokument und die Art, wie dieses in konstituierende Teile zerstückelt sein kann, entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 3 zeigt ein weiteres Beispiel für ein gestaltetes Dokument und die Art, wie dieses in konstituierende Teile zerstückelt sein kann, entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 4 ist ein abstraktes Blockdiagramm des in 1 gezeigten Wechseltextclustersystems mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 5 zeigt Beispiele für sequenziellen Text und ungeordneten Text entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 6 zeigt ein detaillierteres Blockdiagramm des in 4 gezeigten z-Reihenfolge-Textclustermoduls mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 7 zeigt Beispiele für Textzeilenkombinationen entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 8 zeigt Beispiele für eine dynamische Beabstandungstoleranz und eine Textrahmendrehung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 9 zeigt Beispiele für eine Zerlegung auf Grundlage eines Orientierungswinkels entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 10 ist ein detaillierteres Blockdiagramm des in 6 gezeigten Moduls zum Clustern von Zeilen zu logischen Blöcken mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 11 zeigt Beispiele für Zeilengruppierungen, eine Inversdrehung und eine Sortierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 12 zeigt Beispiele für das Clustern von überlappenden Zeilen zu Absätzen entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 13 zeigt Beispiele für Cluster- und Zusammenfügungsvorgänge entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 14 ist ein detaillierteres Blockdiagramm des in 4 gezeigten sortierte-Reihenfolge-Textclustermoduls mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 15 zeigt Beispiele für zerlegte Drehcluster und eine Inversdrehung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 16 zeigt eine Anzahl von potenziellen Absatzclustern, wobei jedes Cluster eine Anzahl von gestückelten Textelementen beinhaltet, entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 17 ist ein detaillierteres Blockdiagramm des in 14 gezeigten sortierte-Reihenfolge-Clustern-gemäß-Drehwinkel-Moduls mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 18 zeigt Beispiele für das Zeilenerzeugen und Clustern entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 19 zeigt Beispiele für die Auswahl einer korrekten Textorientierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 20 zeigt Beispiele für das Clustern von Text zu logischen Blöcken entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 21 zeigt Beispiele für eine Horizontalzeilenerzeugung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 22 zeigt Beispiele für eine Vertikalzeilenerzeugung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 23 ist ein Flussdiagramm zur Darstellung eines exemplarischen Verfahrens zum Wechseltextclustern entsprechend einer Ausführungsform der vorliegenden Offenbarung.
    • 24 ist ein Flussdiagramm zur Darstellung eines exemplarischen Verfahrens zum Wechseltextclustern entsprechend einer weiteren Ausführungsform der vorliegenden Offenbarung.
    • 25 ist ein Blockdiagramm zur schematischen Darstellung einer Rechenplattform mit einer Konfigurierung zum Durchführen einer beliebigen der Techniken, die in der vorliegenden Offenbarung verschiedentlich beschrieben werden, mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung.
  • Detailbeschreibung
  • Offenbart werden Techniken zum Portieren eines Textobjektes aus einem gegebenen Dokument in eine andere Anwendung oder ein anderes Format. Die Techniken sind insbesondere dann von Nutzen, wenn das portierte Textobjekt Text, der auf nicht horizontale Weise orientiert ist (so beispielsweise verkippten Text oder vertikalen Text), oder Text, der durch ein anderes Objekt, so beispielsweise eine Grafik, unterbrochen wird, jedoch beim Importieren eines beliebigen Typs von Textobjekt benutzt werden kann, beinhaltet. Die Techniken benötigen keine Dokumentstrukturinformation und können daher sowohl bei strukturierten Dokumenten oder unstrukturierten Dokumenten benutzt werden. Das Textobjekt kann beispielsweise ein Satz, ein Absatz oder ein anderer Körper mit Textcontent sein, der in mehreren Teilen, die hier als Textblöcke bezeichnet werden, in einen neuen Bereich exportiert wird. Bei einer exemplarischen Ausführungsform sind die Techniken in einem Verfahren verkörpert, das beinhaltet: Empfangen der Textblöcke, die ein Textobjekt bilden, das in Bruchstücken aus einem gegebenen gestalteten Dokument extrahiert worden ist, und Clustern dieser Textblöcke zu einer logischen Gruppe (die hier auch als logischer Block bezeichnet wird) innerhalb der nachgeordneten Anwendung oder des nachgeordneten Formates oder in einem anderen Zielbereich. Die benutzte Clustertechnik hängt davon ab, ob die Textblöcke in einer sequenziellen Lesereihenfolge oder einer willkürlichen Reihenfolge empfangen werden. Insbesondere wenn die sequenzielle Lesereihenfolge der empfangenen Abfolge von Textblöcken bekannt ist, wird eine erste Verfahrensweise zum Clustern benutzt, um die empfangenen Textblöcke zu ihren jeweiligen Textobjekten zu clustern. Diese erste Verfahrensweise wird hier als z-Reihenfolge-Clustern bezeichnet. Ist demgegenüber die sequenzielle Lesereihenfolge der empfangenen Abfolge von Textblöcken unbekannt, so wird eine zweite Verfahrensweise zum Clustern benutzt, um die empfangenen Textblöcke zu ihren jeweiligen Textobjekten zu clustern. Diese zweite Verfahrensweise wird hier als sortierte-Reihenfolge-Textclustern bezeichnet. In derartigen Fällen wird anstelle des Rückgriffs auf eine gegebene Dokumentstrukturinformation (die verfügbar sein kann oder auch nicht) das Clustern durchgeführt, indem Relativpositionen der empfangenen Textblöcke abgefragt werden, um die korrekte logische Gruppierung von Textblöcken, die ein gegebenes Textobjekt bilden, zu bestimmen. Alle Szenarien der Textplatzierung können mit dieser Verfahrensweise erfolgreich verarbeitet werden, darunter beispielsweise Szenarien, die vertikalen Text oder eine Kombination aus vertikalem und horizontalem Text oder einen beliebigen willkürlich gedrehten horizontalen Text oder einen beliebigen willkürlich gedrehten vertikalen Text oder eine beliebige Kombination aus gedrehtem horizontalem und vertikalem Text beinhalten. Derartige Szenarien der Textplatzierung werden hier allgemein als Wechseltext (variational text) bezeichnet. Im Lichte der vorliegenden Offenbarung erschließen sich zahlreiche Ausführungsformen.
  • Der Begriff „gestaltetes Dokument“ bezeichnet im Sinne des Vorliegenden ein beliebiges Digitaldokument, das ein oder mehrere Textobjekte beinhaltet. Das Dokument kann des Weiteren Grafiken. eingebettete Video- oder Audiostücke oder beliebigen anderen Digitalcontent beinhalten. Das Dokument kann unter Nutzung einer beliebigen Anzahl von Anwendungen in einem bestimmten Dokumentformat generiert werden und unter Nutzung einer beliebigen Anzahl von weiteren Anwendungen in ein zweites Dokument, das ein anderes Format aufweist, exportiert werden. Das Dokument kann strukturiert oder unstrukturiert sein. Ein strukturiertes Dokument ist eines, das Information beinhaltet, die die Organisation oder Struktur des Dokuments angibt, wobei die Information vom Präsentationscontent des Dokumentes getrennt ist (so beispielsweise bei einem beliebigen bearbeitbaren Dokumentformat, das Dokumentstrukturinformation bereitstellt). Bei einem unstrukturierten Dokument fehlt derartige Information (beispielsweise bei einem Bild, so beispielsweise einer Bitmap).
  • Der Begriff „Textobjekt“ bezeichnet Sinne des Vorliegenden ein vollständiges Bruchstück von Textcontent eines gestalteten Dokumentes. Das Textobjekt besteht aus einer oder mehreren Textzeilen, wobei jede Textzeile mehrere Textblöcke beinhaltet. Exemplarische Textobjekte beinhalten beispielsweise einen Satz, einen Absatz oder einen anderen Körper von Textcontent, der in mehreren Teilen, die hier als Textblöcke bezeichnet werden, in einen neuen Bereich exportiert wird.
  • Der Begriff „Textzeile“ bezeichnet Sinne des Vorliegenden eine Kombination von zweien oder mehr der Textblöcke entlang einer gegebenen Achse. Man beachte, dass es möglich ist, dass einige Textzeilen eines Textobjektes nur einen Textblock beinhalten können, wobei üblicherweise wenigstens eine der Textzeilen, die ein Textobjekt bilden, zwei oder mehr Textblöcke entlang einer gegebenen Achse beinhaltet.
  • Der Begriff „Textblock“ bezeichnet im Sinne des Vorliegenden ein Bruchstück eines Textobjektes. Exemplarische Textblöcke beinhalten beispielsweise eine Glyphe (Symbol), ein Schriftzeichen, eine Zahl, ein Wort, eine Wendung oder ein Satzfragment, einen Satz oder eine beliebige Kombination aus solchen Objekten, die entlang einer gegebenen Achse orientiert sind. In einigen Fällen ist ein Textblock beispielsweise das kleinste portable Bruchstück eines Textobjektes beim Exportieren dieses Textobjektes in einen neuen Bereich. Wie ersichtlich ist, kann die Auflösung, mit der ein Textobjekt in kleinere Textblöcke zerstückelt wird, variieren (Textblöcke können auf der Ebene einzelner Schriftzeichen, auf der Wortebene, auf der Wendungsebene oder in einer beliebigen anderen Auflösung vorliegen).
  • Der Begriff „logischer Block“ bezeichnet im Sinne des Vorliegenden eine Gruppe von Textblöcken, die ein Textobjekt bilden oder diesem auf andere Weise entsprechen. Der logische Block kann beispielsweise als Ganzes während Bearbeitungsvorgängen ausgewählt und behandelt werden, anstatt dass jeder der Textblöcke dieses logischen Blocks einzeln bearbeitet werden müsste.
  • Der Begriff „Wechseltext“ bezeichnet im Sinne des Vorliegenden allgemein Textszenarien, die nicht einfach horizontaler Text sind, so beispielsweise vertikalen oder verkippten Text, oder Text mit wechselnden Orientierungen (beispielsweise bei einer Kombination von horizontalem, vertikalem und verkipptem Text) oder Text, der durch ein anderes Objekt unterbrochen wird (beispielsweise eine Textzeile, die durch ein Bild oder eine Grafik effektiv in zwei Zeilen zerstückelt wird, was bisweilen beispielsweise bei einem Insert-Bild der Fall ist, das der bereitgestellten Textbeschreibung entspricht). Der Text kann beispielsweise eine beliebige Kombination aus Glyphen (Symbolen), Schriftzeichen, Zahlen, Fonts, Fontgrößen oder Stilattributen umfassen.
  • Der Begriff „sequenzielle Lesereihenfolge“ bezeichnet im Sinne des Vorliegenden allgemein eine vorhersagbare oder auf andere Weise bekannte Reihenfolge, die nicht willkürlich oder zufällig ist. Werden Textblöcke beispielsweise aus einem ersten Digitaldokument in ein zweites Digitaldokument exportiert, so können Textzeilen des zweiten Digitaldokumentes mit den eingehenden Textblöcken auf sequenzielle Weise belegt werden, so beispielsweise von links nach rechts und von oben nach unten für horizontal orientierten Text und von oben nach unten und von links nach rechts für vertikal orientierten Text. In derartigen Fällen wächst jede Textzeile sequenziell, wenn diese Textzeile mit Textblöcken belegt wird, bis die Textzeile vollständig ist. Sodann wird die nächste Textzeile sequenziell belegt, und so weiter, bis das zweite Dokument vollständig mit Textblöcken belegt ist. In anderen exemplarischen Fällen können Textzeilen des zweiten Digitaldokumentes mit den eingehenden Textblöcken jedoch auch auf nicht sequenzielle, willkürliche Weise belegt werden, so beispielsweise in einem willkürlich schachbrettartigen Muster, in dem die Textblockplatzierung in dem zweiten Dokument von einer ersten Textzeile zu einer zweiten Textzeile und sodann zurück zu der ersten Textzeile springt oder vom Anfang einer Textzeile zum Ende dieser Textzeile und sodann zurück zum Anfang dieser Textzeile springt, und so weiter, bis das zweite Dokument vollständig mit Textblöcken belegt ist. Eine beliebige Anzahl von sequenziellen und nicht sequenziellen Belegungsmustern kann benutzt werden, wobei der Ort eines jeden eingehenden Textblocks innerhalb eines Gesamttextblockgitters des zweiten Dokumentes durch eine Gitterkoordinate, die diesem Textblock zugeordnet ist, definiert ist. Zu diesem Zweck definiert die Reihenfolge der eingehenden Textblöcke in einer serialisierten Eingabeabfolge effektiv das Muster, in dem das Gitter belegt wird, wobei jeder eingehende Textblock von einer entsprechenden Gitterkoordinate (beispielsweise kartesisch, xy oder ein anderes Gittersystem) begleitet wird.
  • Allgemeine Übersicht
  • Wie vorstehend ausgeführt worden ist, beinhalten gestaltete Dokumente oftmals Text, Bilder und Kunstobjekte (artwork) in verschiedenen Formaten, Drehungen und Orientierungen, darunter Text, der eingebettete Bilder umfließt. Beim Exportieren in andere Dateiformate werden die Textobjekte in den Dokumenten üblicherweise in kleinere Bruchstücke zerstückelt, um das Layout beizubehalten. Die Dichte dieser zerstückelten kleineren Bruchstücke variiert in Abhängigkeit davon, wie der Text für jeden Absatz und für verschiedene Fontgrößen und Schriftzeicheneigenschaften zerstückelt wird. Verursacht werden können hierdurch Probleme bei anderen Dokumentmanipulationswerkzeugen, die im nachgeordneten Arbeitsablauf benutzt werden können, oder bei anderen Anwendungen, die den Text verarbeiten, darunter bei maschinell lernenden Anwendungen, die versuchen, den Text zu analysieren und zu deuten. In einigen Fällen wird beispielsweise die relative Reihenfolge bzw. Ordnung der Elemente der Textobjekte gegebenenfalls nicht beibehalten, und zwar beispielsweise beim Umwandeln von Bildern in bearbeitbare PDF-Formate, wodurch es schwierig oder unmöglich werden kann, den Text zu bearbeiten (da beispielsweise zu viele Bruchstücke, die nicht logisch geclustert sind, vorhanden sind). Verfügbare technische Lösungen zum Neuzusammenstellen der zerstückelten kleineren Bruchstücke in einer korrekten Reihenfolge sind nicht geeignet, da sie bei Textorientierungen, die nicht horizontal sind, tendenziell scheitern, was beispielsweise in Fällen vorkommt, in denen der Text vertikal oder unter einem Winkel gedreht ist. Verfügbare Lösungen scheitern tendenziell auch in Fällen, in denen der Text eingebettete Bilder umfließt oder in denen er anderweitig durch andere Objekte unterbrochen ist. Die bestehenden Ansätze scheitern allgemein an der rechentechnischen Komplexität, die sich aus der riesigen Anzahl von Möglichkeiten zur Textlayoutformatierung und für Platzierungskombinationen ergibt, die bei mit gestalteten Dokumenten arbeitenden Anwendungen verwirklicht sein können. Nutzer müssen daher entweder an einzelnen Bruchstücken eines gegebenen Textobjektes und nicht an dem Textobjekt als Ganzes (was nicht erwünscht ist) arbeiten oder ein Neusortieren durch manuelles Neukombinieren der kleineren Textobjektbruchstücke vornehmen (was eingedenk der Anzahl von Bruchstücken, die während des Exportprozesses generiert werden, gegebenenfalls nicht praktikabel ist). Wie sich im Lichte der vorliegenden Offenbarung ergibt, wird daher eine technische Lösung zum automatischen Clustern von Wechseltext benötigt, um Arbeitsablauf bei gestalteten Dokumenten zu verbessern.
  • Zu diesem Zweck werden hier Techniken zum Wechseltextclustern bereitgestellt, um Arbeitsablauf bei gestalteten Dokumenten zu verbessern und zu ermöglichen, dass weitere nachgeordnete Anwendungen, darunter maschinell lernende Systeme, diese gestalteten Dokumente verarbeiten. Wie vorstehend erwähnt worden ist, bezeichnet Wechseltext allgemein Textszenarien, die nicht einfach horizontalen Text betreffen, so beispielsweise vertikalen oder verkippten Text, oder Text mit einer Kombination von horizontalem, vertikalem und verkipptem Text oder Text, der durch ein anderes Objekt unterbrochen wird (beispielsweise eine Textzeile, die durch ein Bild oder eine Grafik effektiv in zwei Zeilen zerstückelt wird, wie dies bisweilen bei einem Insert-Bild, das der bereitgestellten Textbeschreibung entspricht, der Fall ist). Einige Beispiele für Wechseltext sind in 2 und 3 gezeigt und werden nachstehend detaillierter beschrieben. In jedem Fall kann ein gegebenes gestaltetes Dokument in ein beliebiges von zahlreichen Dateiformaten exportiert und an andere Anwendungen weitergereicht werden. Erfolgt dies, so werden die Textobjekte in dem Dokument üblicherweise in kleinere Bruchstücke zerstückelt, um das Layout beizubehalten. Die hier offenbarten Clustertechniken ermöglichen ein Neuzusammenstellen der Bruchstücke, um eine korrekte Verarbeitung und Präsentation des Textes durch im Arbeitsablauf nachgeordnete Anwendungen, maschinell lernende Systeme und die Endproduktzustellung zu ermöglichen.
  • Im Detail bedeutet dies, dass eine Verfahrensweise, die die Techniken entsprechend einer exemplarischen Ausführungsform implementiert, beinhaltet: Empfangen von Textblöcken (beinhaltend Positionsinformation, so beispielsweise xy-Koordinaten der Textblöcke) und Bestimmen, ob die Textblöcke in einer sequenziellen Lesereihenfolge (beispielsweise von links nach rechts und von oben nach unten) geordnet sind oder ob sie in einer willkürlichen Reihenfolge (beispielsweise einer ungeordneten oder zufälligen Reihenfolge) bereitgestellt sind. Bei Textblöcken, die in einer sequenziellen Lesereihenfolge empfangen werden, wird eine offenbarte sequenzielle-Reihenfolge-Textclustertechnik (die hier auch als z-Reihenfolge-Textclustern bezeichnet wird) eingesetzt. Werden die Textblöcke demgegenüber in einer ungeordneten Abfolge empfangen, so wird eine offenbarte sortierte-Reihenfolge-Textclustertechnik benutzt. Die z-Reihenfolge- und die sortierte-Reihenfolge-Clustertechniken werden nachstehend detaillierter beschrieben. Auf abstrakter Ebene arbeiten sie jedoch mit den Relativpositionen von Textblöcken (oder gegebenenfalls Textzeilen), um die korrekten logischen Textcluster, die Absätze oder andere Textobjekte des gegebenen Dokumentes bilden, zu detektieren. Man beachte, dass keine Dokumentstrukturinformation für den erfolgreichen Einsatz der Techniken erforderlich ist. Daher gehen die offenbarten Techniken nicht mit irgendwelchen spezifischen Werkzeugen oder Formaten für gestaltete Dokumente einher. Jede der z-Reihenfolge- und sortierte-Reihenfolge-Clustertechniken wird hier kurz beschrieben, bevor eine detailliertere Beschreibung anhand der Figuren erfolgt.
  • Die z-Reihenfolge-Clustertechnik oder selbiges Verfahren beinhaltet entsprechend einigen Ausführungsformen ein Generieren von Textzeilen als Kombination von zweien oder mehr der Textblöcke auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die Textblöcke. Ist verkippter Text vorhanden, so kann das Verfahren auch ein Berechnen eines Drehwinkels der generierten Textzeilen und ein Drehen der generierten Textzeilen zum Korrigieren des Drehwinkels beinhalten. Das Verfahren beinhaltet des Weiteren ein Bestimmen einer Orientierung der generierten Textzeilen (beispielsweise horizontal oder vertikal), ein Sortieren der horizontal orientierten Textzeilen von oben nach unten und ein Sortieren der vertikal orientierten Textzeilen von links nach rechts. In einigen Sprachen kann die Sortierreihenfolge umgekehrt sein, so beispielsweise im Japanischen, wo vertikaler Text von rechts nach links gelesen wird. Das Verfahren beinhaltet des Weiteren ein Clustern der sortierten horizontal orientierten Textzeilen zu logischen Blöcken (beispielsweise Absatzgruppierungen), ein Clustern der sortierten vertikal orientierten Textzeilen zu logischen Blöcken und ein Drehen der logischen Blöcke zum Wiederherstellen des Drehwinkels der Textzeilen, die in den logischen Blöcken beinhaltet sind.
  • Die sortierte-Reihenfolge-Clustertechnik oder selbiges Verfahren beinhaltet entsprechend einigen Ausführungsformen ein Berechnen eines Drehwinkels der Textblöcke, ein Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels und ein Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist. Das Verfahren beinhaltet für jedes Cluster zudem ein Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, ein Clustern der horizontalen Zeilen zu horizontalen Absätzen und ein Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind. Das Verfahren beinhaltet des Weiteren für jeden horizontalen Absatz ein Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, und ein Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind. Das Verfahren beinhaltet des Weiteren ein Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, und andernfalls ein Wählen eines Vertikalzeilenformates. Das Verfahren beinhaltet des Weiteren ein Drehen der Absätze zum Wiederherstellen des Drehwinkels der Cluster, die den Absätzen zugeordnet sind.
  • Viele weitere Abwandlungen und alternative Ausführungsformen erschließen sich im Lichte der vorliegenden Offenbarung.
  • Framework- und Systemarchitektur
  • 1 ist ein abstraktes Blockdiagramm 100 eines Wechseltextclustersystems 130, das bei einem Arbeitsablauf 110 mit einem gestalteten Dokument zum Einsatz kommt, entsprechend einer Ausführungsform der vorliegenden Offenbarung. Spezifische Details des Wechseltextclustersystems 130 werden wiederum anhand 2 bis 25 beschrieben, wobei 1 ein exemplarisches Umfeld zeigt, in dem das System 130 benutzt werden kann. Andere Umfelder erschließen sich ebenso, und die vorliegende Offenbarung soll nicht auf bestimmte Umfelder beschränkt sein. Wie in dem exemplarischen Umfeld ersichtlich ist, wird ein gestaltetes Dokument 120 aus dem Arbeitsablauf 110 mit dem gestalteten Dokument in das Wechseltextclustersystem 130 exportiert, das das gestaltete Dokument derart ausgibt, dass dessen Text zu logischen Blöcken 140 geclustert ist. Das gestaltete Dokument 140 (dessen Textobjekte so geclustert sind) kann sodann in eine beliebige Anzahl von nachgeordneten Anwendungen zur anschließenden Verarbeitung exportiert werden. Es sollte einsichtig sein, dass ein erfolgtes Clustern des Textes zu logischen Blöcken diese nachgeordnete Verarbeitung erleichtert.
  • Der Arbeitsablauf 110 mit dem gestalteten Dokument kann beispielsweise eine oder mehrere Anwendungen umfassen, die dafür konfiguriert sind, Text und Bilder zu manipulieren, um gestaltete Dokumente zu generieren. Beinhalten können die Anwendungen beispielsweise Illustratorwerkzeuge Textbearbeitungs- und Manipulationswerkzeuge, Bildverarbeitungswerkzeuge, Fotomanipulationswerkzeuge und dergleichen. Diese Anwendungen können exportierte gestaltete Dokumente 120 generieren.
  • 2 zeigt ein Beispiel für ein derartiges gestaltetes Dokument 200, das einen großen Textblock 210 umfasst, der ein mittig befindliches künstlerisches Bild eines Pfeiles mit zwei Köpfen 220 umfließt. 2 zeigt zudem das gestaltete Dokument mit dem zerstückelten Text 230 beispielsweise nach dem Exportieren in ein ausgewähltes Dateiformat, so beispielsweise PDF, was die Art darstellt, wie das Dokument gegebenenfalls in eine nachfolgend eingesetzte Anwendung importiert wird. Der einzelne Textblock 210 ist in kleinere Bruchstücke 240a, 240b, ..., 240n zerstückelt, die den Umfang des Bildes umgeben, wobei diese Bruchstücke durchweg nicht in der Lage sind, dem gerecht zu werden, dass der einzelne Textblock das Bild umfließen soll. Das Wechseltextclustersystem 130 ist dafür konfiguriert, die Bruchstücke 240a, 240b, ... 240n wieder zu dem einzelnen Textblock 210 zu kombinieren oder zu clustern. 3 zeigt ein weiteres Beispiel eines gestalteten Dokumentes 300, das eine künstlerische Darstellung eines Fahrrades 310 zusammen mit begleitenden Textblöcken 320 zeigt. 3 zeigt zudem das gestaltete Dokument mit dem zerstückelten Text 330. Die Textblöcke 320 sind in kleinere Bruchstücke 340a, 340b, ... 340n zerstückelt, die der beabsichtigten Segmentierung der Textobjekte nicht gerecht werden. 3 zeigt zudem das gestaltete Dokument mit den geclusterten Textblöcken 350 nach der Verarbeitung durch das Wechseltextclustersystem 130. Die Bruchstücke 240a, 240b, ... 240n sind zu korrekten logischen Textblöcken 360a, ..., 360n kombiniert oder geclustert worden.
  • In derartigen Fällen kann das gestaltete Dokument 140, das von dem Wechseltextclustersystem 130 generiert worden ist, in eine beliebige Anzahl von nachgeordneten Anwendungen importiert werden. In einem derartigen exemplarischen Nutzungsfall können die gestalteten Dokumente 140, deren Text zu logischen Blöcken geclustert ist, die von dem Wechseltextclustersystem 130 generiert worden sind, von nachfolgenden Follow-on-Anwendungen importiert werden, um eine zusätzliche im Arbeitsablauf nachgeordnete Verarbeitung 150 des Dokumentes durchzuführen. Beinhalten kann dieser Arbeitsablauf beispielsweise Vorgänge wie das Textbearbeiten (beispielsweise Einfügen, Löschen, Ausschneiden-und-Einfügen und dergleichen), das Textmanipulieren, das Textformatieren, das Hervorheben und das Suchen, um nur einige wenige Beispiele zu nennen. In einem anderen exemplarischen Nutzungsfall ermöglicht das hier bereitgestellte Textclustern, dass Anwendungen Information aus dem Dokument extrahieren, so beispielsweise Textcontent, Font, Fontgröße und andere charakteristische Eigenschaften von Textblöcken. Von Nutzen ist diese Information oftmals beim Präparieren von Datensätzen zum Trainieren der maschinell lernenden Systeme 160 dafür, Paare, die in demselben Textobjekt benutzt werden, Korrelationen zwischen Font-/Schriftzeicheneigenschaften und Textcontent ausfindig zu machen und ein selbstständiges Vervollständigen (autocompletion) von Text durchzuführen, um nur einige wenige Beispiele zu nennen. Zusätzlich können die gestalteten Dokumente mit dem geclusterten Text 140 als Enderzeugnis 170 zur Präsentation gegenüber dem Nutzer oder zur Zustellung an einen Client präsentiert werden. Es sollte einsichtig sein, dass zahlreiche weitere dem Clustern nachgeordnete Anwendungen und exemplarische Nutzungsfälle im Lichte der vorliegenden Offenbarung möglich sind.
  • 4 ist ein abstraktes Blockdiagramm des Wechseltextclustersystems 130 mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung. Das Textclustersystem 130 ist dafür konfiguriert, ein Dokument, so beispielsweise ein gestaltetes Dokument 120, das von einer Anwendung 110 für einen Arbeitsablauf mit dem gestalteten Dokument exportiert wird, zu empfangen. Das gestaltete Dokument 120 beinhaltet einen oder mehrere Textblöcke, die Elemente wie Glyphen (Symbole), Schriftzeichen und/oder Worte beinhalten, zusammen mit Positionsdaten für jeden Textblock, so beispielsweise eine xy-Koordinate in einer kartesischen Ebene. Das Textclustersystem 130 ist derart gezeigt, dass es ein z-Reihenfolge-Bestimmungsmodul 400, ein z-Reihenfolge-Textclustermodul 430 und ein eine sortierte-Reihenfolge-Textclustermodul 440 beinhaltet.
  • Das z-Reihenfolge-Bestimmungsmodul 440 ist dafür konfiguriert, die eingehende Abfolge von Textblöcken (die hier auch als Textart bzw. Textkunst bezeichnet wird) zu analysieren und die Reihenfolge dieser Blöcke entweder als beliebige Reihenfolge oder als sequenzielle Lesereihenfolge (z-Reihenfolge) zu bestimmen. Die sequenzielle Lesereihenfolge schreitet allgemein von links nach rechts und von oben nach unten für horizontal orientierten Text und von oben nach unten und von links nach rechts für vertikal orientierten Text fort, obwohl dies bei einigen Sprachen auch anders sein kann. Wie vorstehend erwähnt worden ist, kann eine beliebige sequenzielle Lesereihenfolge benutzt werden. Im Gegensatz hierzu wird ein willkürlicher oder ungeordneter Text in einer allgemeinen, zufälligen Reihenfolge empfangen, in der sich die Position eines jeden neuen Textblocks in abrupten Sprüngen ändert. Dies ist in 5 dargestellt, die ein Beispiel für sequenziellen Text 410 und ein Beispiel für ungeordneten Text 420 in einem kartesiechen xy-Koordinatensystem zeigt. Die empfangene Reihenfolge 520 von Textblöcken, die den sequenziellen Text 410 bilden, geht gemäß der Nummerierung (1 bis 11) von links nach rechts und von oben nach unten, wobei die Eingabeabfolge 530 in einer normalen Lesereihenfolge vorliegt. Daher belegen die Textblöcke das Zieldokument auf sequenzielle Weise. Im Gegensatz hierzu springt die empfangene Reihenfolge 550 der Textblöcke, die den ungeordneten Text 420 bilden, auf erratische Weise, wie durch die Nummerierung (1 bis 11) angegeben ist, herum, wobei die Eingabeabfolge 560, wie gezeigt ist, nicht die normale Lesereihenfolge ist. Daher belegen die Textblöcke das Zieldokument auf nicht sequenzielle, willkürlich schachbrettartige Weise.
  • Die Bestimmung der willkürlichen Reihenfolge gegenüber der z-Reihenfolge kann unter Nutzung eines beliebigen geeigneten Mittels oder einer solchen Technik (beispielsweise auf Grundlage von Heuristiken) im Lichte der vorliegenden Offenbarung durchgeführt werden. Bei einigen Ausführungsformen ist das z-Reihenfolge-Bestimmungsmodul 400 beispielsweise dafür programmiert oder auf andere Weise konfiguriert, eine Gitterkoordinate, die jeden eingehenden Textblock begleitet, abzufragen und auf Grundlage dieser Abfrage zu bestimmen, dass dieselbe Orientierung aufweisende Textzeilen in dem Zieldigitaldokument auf sequenzielle Weise liegen. In einigen derartigen Fällen wächst jede Textzeile beispielsweise sequenziell, wenn diese Textzeile mit Textblöcken belegt wird, bis die Textzeile vollständig ist. Sodann wird die nächste Textzeile sequenziell belegt, und so weiter, bis das Zieldokument vollständig mit Textblöcken belegt ist. Das z-Reihenfolge-Bestimmungsmodul 400 ist des Weiteren dafür programmiert oder auf andere Weise konfiguriert, auf Grundlage des Abfragens der Textblockgitterkoordinaten zu bestimmen, wann Textzeilen des Zieldigitaldokumentes mit den eingehenden Textblöcken auf nicht sequenzielle, willkürliche Weise belegt werden. In einigen derartigen Fällen werden die Textzeilen des Zieldokumentes beispielsweise in einem willkürlich schachbrettartigen Muster belegt, in dem die Textblockplatzierung in dem Zieldokument von einer ersten Textzeile zu einer zweiten Textzeile und sodann zurück zu der ersten Textzeile springt oder vom Anfang einer Textzeile zum Ende dieser Textzeile und sodann zum Anfang dieser Textzeile springt, und so weiter, bis das Zieldokument vollständig mit Textblöcken belegt ist. Bei einigen Ausführungsformen kann eine grammatikalische Analyse der eingehenden Textabfolge (oder eines Abschnittes hiervon) durchgeführt werden, um grammatikalische Fehler zu detektieren, wobei eine vergleichsweise hohe Fehlerrate als Angabe dafür eingesetzt werden kann, dass die Textblöcke in einer willkürlichen Reihenfolge vorliegen. Obwohl das Mittel zum heuristische Bestimmen, ob Textblöcke, die in einer Eingabeabfolge empfangen werden, in einer sequenziellen Lesereihenfolge vorliegen, von einer Ausführungsform zur anderen variieren kann, umfasst das z-Reihenfolge-Bestimmungsmodul 400 bei einigen exemplarischen Ausführungsformen einen oder mehrere Prozessoren (beispielsweise einen Mikroprozessor oder eine zentrale Verarbeitungseinheit, eine grafische Verarbeitungseinheit, einen digitalen Signalprozessor oder eine Kombination hieraus), die dafür programmiert oder auf andere Weise konfiguriert sind, die Textblockplatzierung (beispielsweise auf Grundlage der xy-Koordinaten eines gegebenen Textblocks, die den Ort eines Textblocks innerhalb eines Gesamtgitters identifizieren, das das Zieldokument bildet, das als Ergebnis des Exportprozesses erzeugt wird) zu analysieren und/oder eine derartige grammatikalische Analyse oder eine andere heuristische Analyse durchzuführen, um zu bestimmen, ob die Textblöcke in einer sequenziellen Lesereihenfolge empfangen werden. Man beachte, dass die willkürliche Reihenfolge von einer sequenziellen Lesereihenfolge unabhängig ist.
  • Das z-Reihenfolge-Textclustermodul 430 ist ein erstes Clustermittel und dafür konfiguriert, Text unter Rückgriff auf die sequenzielle Lesereihenfolge zu clustern, wie nachstehend noch detaillierter erläutert wird. Das sortierte-Reihenfolge-Textclustermodul 440 ist ein zweites Clustermittel und dafür konfiguriert, Text ohne Rückgriff auf eine bestimmte Reihenfolge der empfangenen Textabfolge zu clustern, wie nachstehend ebenfalls noch detaillierter beschrieben wird. Die ersten und zweiten Clustermittel können beispielsweise einen oder mehrere Prozessoren (beispielsweise einen Mikroprozessor oder eine zentrale Verarbeitungseinheit, eine grafische Verarbeitungseinheit, einen digitalen Signalprozessor oder eine Kombination hieraus) beinhalten, die dafür programmiert oder auf andere Weise konfiguriert sind, ein Textclustern, wie es hier verschiedentlich beschrieben wird, durchzuführen.
  • 6 ist ein detaillierteres Blockdiagramm des z-Reihenfolge-Textclustermoduls 430 mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung. Das z-Reihenfolge-Textclustermodul 430 ist derart gezeigt, dass es ein Textzeilenerzeugungsmodul 600, ein Textzeilenzerlegungsmodul 620 und ein Modul 640 zum Clustern von Zeilen zu logischen Blöcken beinhaltet.
  • Das Textzeilenerzeugungsmodul 600 ist dafür konfiguriert, Anfangstextzeilen aus den Textblöcken der Eingabedatenabfolge zu erzeugen. Da die eingehende Abfolge in einer sequenziellen Lesereihenfolge vorliegt, wird der Versuch unternommen, Textzeilen aus aufeinanderfolgenden Textblöcken der Abfolge zu erzeugen. Die Textblöcke können ein einzelnes Schriftzeichen, zahlreiche Schriftzeichen in Form von Worten oder eine Serie von Worten enthalten. Zudem wird Positionsinformation für jeden Textblock bereitgestellt, und zwar beispielsweise in Form von xy-Koordinaten von entgegengesetzten bzw. gegenüberliegenden Endpunkten des Textblocks (beispielsweise obere linke Ecke und untere rechte Ecke). Bei einigen Ausführungsformen wird ein neuempfangener Textblock zu einer bestehenden Textzeile hinzugefügt, wenn die Mittelachsen der bestehenden Textzeile und des neuen Textblocks innerhalb einer ausgewählten Verschiebungstoleranz (beispielsweise auf Grundlage einer Ausrichtungskostenfunktion) liegen und wenn der Abstand zwischen der bestehenden Textzeile und dem neuen Textblock kleiner als eine dynamische Toleranz ist (beispielsweise eine Nähemessung). Die dynamische Toleranz kann auf Grundlage eines Fonts, einer Fontgröße und einer Textskalierung ausgewählt werden. Sind diese Bedingungen nicht erfüllt, so wird unter Nutzung des neuen Textblocks eine neue Textzeile begonnen.
  • 7 zeigt Textzeilenkombinationen entsprechend einer Ausführungsform der vorliegenden Offenbarung. In einem ersten exemplarischen Fall 710 sind eine bestehende Textzeile „This is first text line“ („Dies ist die erste Textzeile“) 715 und ein neues Textobjekt „New text line“ („neue Textzeile“) 735 vorhanden. Die Endpunkte 720 und die Mittelachse 725 sind angegeben und können aus der Positionsinformation, die mit den empfangenen Textblöcken geliefert wird, berechnet werden. Bei einigen Ausführungsformen wird eine angenäherte Zeile 730 als am besten passende (best fit) Zeile auf Grundlage der Endpunkte 720 einer Kombination der bestehenden Textzeile 715 und der neuen Textzeile 735 generiert. Die angenäherte Zeile 730 kann im Lichte der vorliegenden Offenbarung unter Nutzung eines Line-Fitters oder eines Linear-Solvers oder einer beliebigen geeigneten Technik generiert werden. Fehler 740 werden auf Grundlage der Quadrate der Abstände (oder auf Grundlage eines anderen geeigneten Maßes) zwischen den Endpunkten 720 an der angenäherten Zeile 730 berechnet. In dem exemplarischen Fall 710 wird bestimmt, dass die Summe dieser Fehler (die eine Ausrichtungskostenfunktion darstellen) eine ausgewählte Toleranz überschreitet, weshalb das neue Textobjekt 735 in eine neue Textzeile 740 gestückelt bzw. umgebrochen wird.
  • In dem zweiten exemplarischen Fall 750 sind eine bestehende Textzeile „This is first text“ („Dies ist der erste Text“) 760 und ein neues Textobjekt „line“ („Zeile“) 770 gegeben. Die jeweiligen Mittelachsen 775 und 780 reihen sich, wie bei 785 gezeigt ist, innerhalb einer ausgewählten Toleranz 790 aneinander, weshalb das neue Textobjekt 770 mit der bestehenden Textzeile 760 verkettet wird und so eine neue kombinierte Textzeile 795 bildet.
  • 8 zeigt eine dynamische Beabstandungstoleranz 800 und eine Textdrehung 850 entsprechend einer Ausführungsform der vorliegenden Offenbarung. Es wird eine dynamische Toleranz 830 auf Grundlage eines Fonts, einer Fontgröße und einer horizontalen und vertikalen Textskalierung ausgewählt. Dies erfolgt als Folge dessen, dass bei verschiedenen Fontgrößen und Textskalierungen der visuelle Raum oder Spalt zwischen benachbarten Schriftzeichen variiert, wobei Text mit größerer Fontgröße einen größeren annehmbaren Abstand zwischen Elementen als Text mit kleinerer Fontgröße aufweist. Dies ist aus den Beispielen mit kleinen Fontgrößen 840 und großen Fontgrößen 845 und der zugeordneten Abstandsdifferenz zwischen den Endpunkten ersichtlich. Bei einigen exemplarischen Ausführungsformen kann die dynamische Toleranz beispielsweise als multiplikatives Produkt eines ausgewählten statischen Toleranzwertes, eines Textfontgrößenwertes und eines Textskalierungswertes berechnet werden. Bei dem dargestellten Beispiel übersteigt die Beabstandung zwischen der ersten Textzeile 810 und dem neuen Textobjekt 820 die Schwelle 830. Als solches wird das neue Textobjekt in eine neue Textzeile 845 gestückelt bzw. umgebrochen.
  • Mit Blick auf die Textdrehung 850 wird, wenn die Textzeile 806 wächst, durch eine Kombination von neuen Textobjekten der Drehwinkel 870 dieser wachsenden Textzeile 860 berechnet und aktualisiert. Bei diesem Beispiel ist gezeigt, dass der berechnete Drehwinkel annähernd gleich 30° ist. Das Verfolgen der Textzeilendrehung - sei sie nun horizontal, vertikal oder mit einem Zwischenwinkelwert - ist für die weitere Verarbeitung, wie nachstehend erläutert wird, nützlich.
  • Wie wiederum in 6 gezeigt ist, ist das Textzeilenzerlegungsmodul 620 dafür konfiguriert, die Textzeilen auf Grundlage eines Orientierungswinkels in horizontale und vertikale Zeilengruppen zu zerlegen. Es werden zwei Eigenschaften eines Textrahmens bestimmt, nämlich (1) der Drehwinkel des Textrahmens und (2) der durchschnittliche Drehwinkel der Elemente des Textrahmens. Ist der Drehwinkel des Textrahmens vom durchschnittlichen Drehwinkel der Elemente des Textrahmens um annähernd 90° verschieden, so wird bestimmt, dass der Rahmen vertikalen Text beinhaltet, während andernfalls bestimmt wird, dass der Rahmen horizontalen Text beinhaltet. Dies ist bei den in 9 gezeigten Beispielen dargestellt. In dem Rahmen mit horizontalem Text 910 ist der Rahmen bei 0° orientiert, und es sind die Elemente (Schriftzeichen) ebenfalls bei 0° orientiert. Die Differenz ist 0, weshalb bestimmt wird, dass der Text eine horizontale Orientierung aufweist. Bei dem gedrehten Textrahmen 920 ist der Rahmen auf 30° gedreht, und es sind die Elemente ebenfalls mit 30° orientiert. Die Differenz ist 0, weshalb bestimmt wird, dass der Text eine horizontale Orientierung aufweist. In dem Textrahmen mit den gedrehten Elementen 930 ist der Rahmen bei 0° orientiert, und die Elemente sind auf 30° gedreht. Die Differenz ist 30, weshalb bestimmt wird, dass der Text noch eine horizontale Orientierung aufweist. Bei dem Beispiel 940 ist der Textrahmen auf 30° gedreht, und die Elemente sind auf 60° gedreht. Die Differenz ist 30, weshalb bestimmt wird, dass der Text noch eine horizontale Orientierung aufweist.
  • Bei Beispiel 950 ist der Textrahmen bei 90° orientiert, wohingegen die Elemente bei 0° orientiert sind. Die Differenz ist 90, weshalb bestimmt wird, dass der Text eine vertikale Orientierung aufweist. Bei Beispiel 960 ist der Textrahmen bei 120° orientiert, und die Elemente sind bei 30° orientiert. Die Differenz ist 90, weshalb bestimmt wird, dass der Text eine vertikale Orientierung aufweist.
  • 10 ist ein detaillierteres Blockdiagramm des Moduls 640 zum Clustern von Zeilen zu logischen Blöcken (beispielsweise Absatzgruppierungen) mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung. Das Modul 640 ist derart gezeigt, dass es ein Inversdrehmodul 1000, Zeilensortiermodule 1010 und 1020, Clustermodule 1030, 1040, ein Zusammenfügungsmodul 1050 und ein Wiederherstellungsdrehmodul 1060 aufweist.
  • Das Drehmodul 1000 ist dafür konfiguriert, die horizontalen und vertikalen Zeilengruppierungen 630, die bis zu diesem Punkt generiert worden sind, invers zu drehen, um eine bestehende Drehung zu korrigieren und sie beispielsweise zur x-Achse der kartesischen Ebene parallel zu machen. 11 zeigt horizontale und vertikale Zeilengruppierungen 630 vor und nach der Inversdrehung 1000.
  • Das Sortiermodul 1010 ist dafür konfiguriert, die horizontalen Zeilen von oben nach unten zu sortieren, wie bei 1010 in 11 gezeigt ist (beispielsweise 1, 2, 3 und 4). Das Sortiermodul 1020 ist dafür konfiguriert, die vertikalen Zeilen von links nach rechts zu sortieren, wie bei 1020 in 11 gezeigt ist (beispielsweise 5, 6, 7 und 8).
  • Das Clustermodul 1030 ist dafür konfiguriert, überlappende Zeilen zu Absätzen zu clustern. Wie in 12 bei 1210 gezeigt ist, überlappen die horizontalen Zeilen 1, 2, 3 und 4 in der vertikalen Dimension 1230 und sind daher Kandidaten zum Clustern. Die Zeilen 1, 2 und 3 sind durch einen vertikalen Abstand 1240 getrennt, der kleiner als eine Abstandsschwelle ist, und werden daher zu einem Absatz geclustert. Die Zeile 4 ist wiederum durch einen Abstand 1250 getrennt, der größer als die Abstandsschwelle ist, weshalb die Zeile 4 zu einem neuen Absatz wird. Die Abstandsschwelle wird auf Grundlage des Fonts, der Fontgröße und der Textskalierung gewählt. Wie in 12 bei 1260 gezeigt ist, überlappen die vertikalen Zeilen 5, 6, 7 und 8 in der horizontalen Dimension 1270 und sind daher Kandidaten zum Clustern. Die Zeilen 5 und 6 sowie die Zeilen 7 und 8 sind durch einen horizontalen Abstand 1290 getrennt, der kleiner als eine Abstandsschwelle ist, und sind daher zu zwei jeweiligen Absätzen geclustert. Die Zeilen 6 und 7 sind hingegen durch einen Abstand 1280 getrennt, der größer als die Abstandsschwelle ist, weshalb die zwei Absätze nicht zu einem Absatz geclustert sind.
  • Das Clustermodul 1040 ist dafür konfiguriert, eng beabstandete Absätze zu einer Einheit zu clustern. Horizontale Absätze, die innerhalb eines Schwellenabstandes vertikal überlappen, werden zusammengeclustert, und vertikale Absätze, die innerhalb eines Schwellenabstandes horizontal überlappen, werden zusammengeclustert. Dies ist beispielsweise in 13 gezeigt, wo der Absatz 1300 mit dem Absatz 1310 geclustert ist, um den geclusterten Absatz 1320, der den Bildblock 1330 umfließt, zu erzeugen.
  • Das Zusammenfügungsmodul 1050 ist dafür konfiguriert, Zeilen (beispielsweise Sätze oder Satzfragmente oder andere Textobjektschnipsel oder Abschnitte, die von einer dazwischen eingefügten Grafik oder einem anderen Objekt getrennt werden) der geclusterten Absätze, die auf derselben geraden Linie liegen, zusammenzufügen. Beim Clustern von Absätzen können Fälle auftreten, in denen die Zeilen von zwei Absätzen in einer geraden Zeile liegen, jedoch durch einen merklichen Abstand getrennt sind. Dies ist in 13 durch die Zeilen 1350 und 1360 dargestellt, die zu einer Zeile 1370 zusammengefügt sind. Für jeden geclusterten Absatz werden die Textzeilen innerhalb dieses Absatzes sortiert, wobei dann, wenn zwei aufeinanderfolgende Zeilen in derselben Richtung und entlang derselben geraden Zeile liegen, diese zu einer einzigen Textzeile zusammengefügt werden.
  • Das Drehmodul 1060 ist dafür konfiguriert, die logischen Blöcke oder Absätze zurück in ihre ursprünglichen Orientierungen zu drehen, um den Drehwinkel der Textzeilen, die in den logischen Blöcken beinhaltet sind, wiederherzustellen.
  • 14 ist ein detaillierteres Blockdiagramm des sortierte-Reihenfolge-Textclustermoduls 440 mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung. Das sortierte-Reihenfolge-Textclustermodul 440 ist dafür konfiguriert, Text ohne Rückgriff auf eine bestimmte Reihenfolge der empfangenen Textabfolge zu clustern, was ein komplizierteres Problem darstellt und einen stärker strukturierten Clusterprozess erfordert, wie nachstehend noch beschrieben wird. Das sortierte-Reihenfolge-Textclustermodul 440 ist derart gezeigt, dass es ein zerlegtes-Drehcluster- Generierungsmodul 1400, ein Inversdrehmodul 1000, ein sortierte-Reihenfolge-Clustern-gemäß-Drehwinkel-Modul 1410 und ein Wiederherstellungsdrehmodul 1060 beinhaltet.
  • Das zerlegtes-Drehcluster-Generierungsmodul 1400 ist dafür konfiguriert, Cluster von ähnlich orientierten Textblöcken zu generieren. 15 zeigt Beispiele für diese zerlegten Cluster 1500.
  • Das Inversdrehmodul 1000 ist dafür konfiguriert, die zerlegten Cluster invers zu drehen, um deren vorhandene Drehung zu korrigieren und sie beispielsweise zur x-Achse der kartesischen Ebene parallel zu machen. 15 zeigt Beispiele für invers gedrehte Cluster 1510. Der Text in diesen Clustern scheint, in mehreren potenziellen Absätzen angeordnet zu sein. Man beachte jedoch, dass die Textelemente in einer zufälligen Reihenfolge empfangen worden sind, sodass die Sequenz der Textelemente nicht bekannt ist. Dies wird in 16 dargestellt, in der gezeigt ist, dass jedes Textelement 1600 herausgestückelt bzw. herausgebrochen worden ist. Potenzielle Absatzcluster 1610 sind durch gepunktete Linien angegeben.
  • Das Modul 1410 für das sortierte-Reihenfolge-Clustern gemäß Drehwinkel ist dafür konfiguriert, Zeilen innerhalb eines jeden invers gedrehten Clusters zu identifizieren und diese entweder zu horizontal oder vertikal orientierten Absätzen zu clustern, was nachstehend detaillierter in Verbindung mit 17 noch erläutert wird.
  • Das Wiederherstellungsdrehmodul 1060 ist dafür konfiguriert, die Absätze zu drehen, um den Drehwinkel der Cluster, die den Absätzen zugeordnet sind, wiederherzustellen.
  • 17 ist ein detaillierteres Blockdiagramm des sortierte-Reihenfolge-Clusterngemäß-Drehwinkel-Moduls 1410 mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung. Das sortierte-Reihenfolge-Clusterngemäß-Drehwinkel-Modul 1410 ist derart gezeigt, dass es ein horizontale Zeilen erzeugendes Modul 1700, ein horizontale Zeilen clusterndes Modul 1710, ein eine durchschnittliche horizontale Beabstandung bestimmendes Modul 1720, ein vertikale Zeilen erzeugendes Modul 1730, ein eine durchschnittliche vertikale Beabstandung bestimmendes Modul 1740 und ein eine Textorientierung auswählendes Modul 1750 beinhaltet.
  • Das horizontale Zeilen erzeugende Modul 1700 ist dafür konfiguriert, horizontale Zeilen 1800 innerhalb eines jeden invers gedrehten Clusters, wie in 18 dargestellt ist, zu generieren. Der horizontale Zeilen generierende Prozess wird nachstehend detaillierter in Verbindung mit 21 beschrieben.
  • Das horizontale Zeilen clusternde Modul 1710 ist dafür konfiguriert, die generierten horizontalen Zeilen zu horizontalen Absätzen 1810 zu clustern. Bei einigen Ausführungsformen wird das Clustern von horizontalen Zeilen derart durchgeführt, wie es vorstehend in Verbindung mit dem Clustermodul 1030 und 12 beschrieben worden ist. Umfassen kann das Clustern insbesondere ein Identifizieren von horizontalen Textzeilen, die innerhalb einer ersten Toleranz vertikal überlappen, siehe 1230, und die vertikal innerhalb einer zweiten Toleranz beabstandet sind, siehe 1250. Die erste Toleranz und die zweite Toleranz können auf einem Font, einer Fontgröße und einer Textskalierung, die den horizontalen Textzeilen zugeordnet sind, beruhen. Beinhalten kann das Clustern des Weiteren ein Clustern der identifizierten horizontalen Textzeilen zu Absätzen, ein Clustern der Absätze, die innerhalb der ersten Toleranz vertikal überlappen, und ein Zusammenfügen der horizontalen Textzeilen, die eine gemeinsame horizontale Achse teilen, innerhalb des geclusterten Absatzes.
  • Das eine durchschnittliche horizontale Beabstandung bestimmende Modul 1720 ist dafür konfiguriert, eine durchschnittliche horizontale Beabstandung 1815 zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen, die zu horizontalen Absätzen zusammengefügt worden sind, beinhaltet sind, zu berechnen.
  • Das vertikale Zeilen erzeugende Modul 1730 ist dafür konfiguriert, vertikale Zeilen 1820 für jeden horizontalen Absatz innerhalb eines jeden invers gedrehten Clusters, wie in 18 dargestellt ist, zu generieren. Der vertikale Zeilen generierende Prozess wird nachstehend detaillierter in Verbindung mit 22 beschrieben.
  • Das eine durchschnittliche vertikale Beabstandung bestimmende Modul 1740 ist dafür konfiguriert, eine durchschnittliche vertikale Beabstandung 1825 zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen, die zu horizontalen Absätzen zusammengefügt worden sind, beinhaltet sind, zu berechnen.
  • Das eine Textorientierung auswählende Modul 1750 ist dafür konfiguriert, ein Horizontalzeilenformat zu wählen, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, und andernfalls ein Vertikalzeilenformat zu wählen. Bei einigen Ausführungsformen kann die Wahl zwischen dem Horizontalzeilenformat und dem Vertikalzeilenformat auch darauf beruhen, welches Format eine größere Ordnung bzw. bessere Reihenfolge bereitstellt. Ein Beispiel für ein geeignetes Maß zur Bestimmung der Reihenfolge bzw. Ordnung ist ein Vergleich der Anzahl von horizontalen Zeilen mit der Anzahl von vertikalen Zeilen. Ist die Zählung der Anzahl von horizontalen Zeilen kleiner als die Zählung der Anzahl von vertikalen Zeilen, so kann davon ausgegangen werden, dass das Horizontalzeilenformat einen größeren Grad der Ordnung bzw. eine bessere Reihenfolge bereitstellt.
  • Dies ist in 19 dargestellt, die eine Auswahl der korrekten Textorientierung darstellt. Wie gezeigt ist, wird ein Horizontalzeilenformat 1900 für den ersten Absatz 1920 gewählt, da die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist und die Anzahl von horizontalen Zeilen kleiner als die Anzahl von vertikalen Zeilen ist. Auf ähnliche Weise wird aus denselben Gründen für den zweiten Absatz 1930 das Horizontalzeilenformat 1900 gewählt. Für den dritten Absatz 1940 wird aus denselben Gründen ebenfalls das Horizontalzeilenformat gewählt. Im Gegensatz hierzu wird das Vertikalzeilenformat 1910 für den vierten Absatz 1950 gewählt, da die durchschnittliche vertikale Beabstandung kleiner als die durchschnittliche horizontale Beabstandung ist und die Anzahl von vertikalen Zeilen kleiner als die Anzahl von horizontalen Zeilen ist. Auf ähnliche Weise wird aus denselben Gründen ebenfalls das Vertikalzeilenformat für den fünften Absatz 1960 gewählt.
  • 20 zeigt das Clustern 2000 von Text zu logischen Blöcken oder Absätzen 1920, 1930, 1940, 1950, 1960 als Ergebnis des vorbeschriebenen Auswahlprozesses entsprechend einer Ausführungsform der vorliegenden Offenbarung.
  • 21 zeigt eine Horizontalzeilenerzeugung 1700 entsprechend einer Ausführungsform der vorliegenden Offenbarung. Da die Reihenfolge des Textes unbekannt ist, kann das Clustern nicht einfach an einem beliebigen zufälligen Punkt im Text beginnen. Anstatt dessen wird ein Verfahren offenbart, das ein auf geordnete Weise erfolgendes Clustern folgendermaßen bereitstellt. Ein am weitesten oben befindliches Element 2100 der Textblöcke, die in dem Cluster beinhaltet sind, wird als Anfangspunkt identifiziert. Die Identifizierung beruht auf einem Vergleich der y-Koordinaten der Elemente. Als Nächstes werden Textblöcke 2120, 2130 identifiziert, die so betrachtet werden, dass sie innerhalb eines vertikalen Schwellenabstandes einer horizontalen Zeile 2110, die durch das am weitesten oben befindliche Element 2100 hindurchgeht, befindlich sind.
  • Die Elemente der identifizierten Textblöcke werden in einer von rechts nach links gegebenen Reihenfolge 2140 von dem am weitesten oben befindlichen Element 2100 bis zu einer am weitesten links befindlichen räumlichen Diskontinuität durchlaufen. Die Größe der räumlichen Diskontinuität beruht auf einer Fontgröße und Textskalierung, die den Textblöcken zugeordnet sind. Die Textblockelemente werden sodann in einer von links nach rechts gegebenen Reihenfolge 2150 von dem am weitesten oben befindlichen Element 2100 bis zu einer am weitesten rechts befindlichen räumlichen Diskontinuität durchlaufen. Die horizontale Zeile wird derart erzeugt, dass sie die Textblockelemente von der am weitesten links befindlichen räumlichen Diskontinuität zu der am weitesten rechts befindlichen räumlichen Diskontinuität beinhaltet. Bei diesem Beispiel wird die Einbeziehung des Textblocks 2130 in die erzeugte horizontale Zeile nicht vollzogen, da dieser jenseits der Toleranz 2160 der räumlichen Diskontinuität befindlich ist. Die sich ergebende erzeugte Zeile 2170 beinhaltet die Textblockelemente „this is another“ („dies ist ein weiterer“).
  • 22 zeigt eine Vertikalzeilenerzeugung 1730 entsprechend einer Ausführungsform der vorliegenden Offenbarung. Ein am weitesten rechts befindliches Element 2200 der Textblöcke, die in dem Cluster beinhaltet sind, wird als Anfangspunkt identifiziert. Die Identifizierung beruht auf einem Vergleich der x-Koordinaten der Elemente. Als Nächstes werden Elemente des Textblocks 2220 identifiziert, die so betrachtet werden, dass sie innerhalb eines horizontalen Schwellenabstandes einer vertikalen Zeile 2210, die durch das am weitesten rechts befindliche Element 2200 hindurchgeht, befindlich sind.
  • Die Elemente des identifizierten Textblocks werden in einer von unten nach oben gegebenen Reihenfolge 2240 von dem am weitesten rechts befindlichen Element 2200 bis hin zu einer am weitesten oben befindlichen räumlichen Diskontinuität durchlaufen. Die Größe der räumlichen Diskontinuität beruht auf einer Fontgröße und Textskalierung, die dem Textblock zugeordnet sind. Die Textblockelemente werden sodann in einer von oben nach unten gegebenen Reihenfolge 2250 von dem am weitesten rechts befindlichen Element 2200 nach unten zu einer am weitesten unten befindlichen räumlichen Diskontinuität durchlaufen. Die vertikale Zeile wird derart erzeugt, dass die Textblockelemente von der am weitesten oben befindlichen räumlichen Diskontinuität zu der am weitesten unten räumlichen Diskontinuität beinhaltet sind. Bei diesem Beispiel werden alle Elemente des Textblocks 2220 zur Einbeziehung in die erzeugte vertikale Zeile angenommen, da sie innerhalb der Toleranz 2260 der räumlichen Diskontinuität befindlich sind. Die sich ergebende erzeugte Zeile 2270 beinhaltet die Textblockelemente „Newtext“ („NeuerText“).
  • Verfahrensweise
  • 23 und 24 sind Flussdiagramme zur Darstellung von Verfahren 2300 und 2400 zum Wechseltextclustern entsprechend einer Ausführungsform der vorliegenden Offenbarung. Wie ersichtlich ist, wird das Verfahren anhand der Konfigurierung des Wechseltextclustersystems 100 von 1, 4, 6, 10, 14 und 17 beschrieben. Es kann jedoch eine beliebige Anzahl von Modulkonfigurationen zur Implementierung des Verfahrens, wie im Lichte der vorliegenden Offenbarung ersichtlich ist, benutzt werden. Man beachte des Weiteren, dass die verschiedenen Funktionen, die in dem Verfahren dargestellt sind, nicht den gezeigten spezifischen exemplarischen Modulen zugeordnet sein müssen. Zu diesem Zweck ist die dargestellte exemplarische Verfahrensweise derart bereitgestellt, dass sie ein exemplarisches Beispiel angibt, wobei die Verfahrensweise nicht auf eine bestimmte physische bzw. physikalische oder strukturelle Konfigurierung beschränkt sein soll. Vielmehr können die hier bereitgestellten Clustertechniken mit einer Anzahl von Architekturen und Plattformen sowie Abwandlungen, wie einsichtig sein sollte, benutzt werden.
  • Das Verfahren 2300 zum Clustern von Text, der in einer sequenziellen Lesereihenfolge empfangen wird, beginnt bei dem Vorgang 2310 durch Generieren von Textzeilen als Kombination von zwei oder mehr der empfangenen Textblöcke auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die Textblöcke. Die empfangenen Textblöcke umfassen Elemente, die ein(e) oder mehrere Glyphen, Schriftzeichen und/oder Worte beinhalten.
  • Fortgesetzt wird das Verfahren bei dem Vorgang 2320 durch Berechnen eines Drehwinkels für jede der generierten Textzeilen und Drehen (beispielsweise inverses Drehen) der generierten Textzeilen zum Korrigieren des Drehwinkels.
  • Bei dem Vorgang 2330 wird bestimmt, dass die Orientierung der generierten Textzeilen horizontal oder vertikal ist. Bestimmt wird die Orientierung bei einigen Ausführungsformen durch Berechnen eines durchschnittlichen Drehwinkels der Schriftzeichen der generierten Textzeile und Bestimmen der Orientierung als vertikal, wenn der durchschnittliche Drehwinkel der Schriftzeichen vom Drehwinkel der generierten Textzeile um annähernd 90° (innerhalb eines Toleranzbereiches) verschieden ist, und andernfalls erfolgendes Bestimmen der Orientierung als horizontal. Bei einigen Ausführungsformen kann der Toleranzbereich in der Größenordnung von ± 5° sein.
  • Bei dem Vorgang 2340 werden horizontal orientierte Textzeilen von oben nach unten sortiert, und es werden vertikal orientierte Textzeilen von links nach rechts sortiert. Bei dem Vorgang 2350 werden die sortierten horizontal orientierten Textzeilen zu logischen Blöcken geclustert. Bei dem Vorgang 2360 werden die sortierten vertikal orientierten Textzeilen zu logischen Blöcken geclustert. Bei einigen Ausführungsformen werden, um mit Textumfließszenarien umzugehen, beispielsweise logische Blöcke, die innerhalb einer Toleranz vertikal überlappen oder die innerhalb einer Toleranz horizontal überlappen, geclustert. Bei einigen Ausführungsformen werden Textzeilen, die eine gemeinsame horizontale Achse oder eine gemeinsame vertikale Achse teilen, innerhalb des geclusterten logischen Blocks zusammengefügt.
  • Bei dem Vorgang 2370 werden die logischen Blocks gedreht, um den Drehwinkel der Textzeilen, die in den logischen Blöcken beinhaltet sind, wiederherzustellen.
  • Das Verfahren 2400 zum Clustern von Text, der in einer willkürlichen Reihenfolge (beispielsweise ungeordnet) empfangen wird, beginnt bei dem Vorgang 2410 mit dem Berechnen des Drehwinkels von empfangenen Textblöcken. Die empfangenen Textblöcke umfassen Elemente, die ein(e) oder mehrere Glyphen, Schriftzeichen und/oder Worte umfassen.
  • Fortgesetzt wird das Verfahren bei dem Vorgang 2420 durch Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels. Bei dem Vorgang 2430 werden die Cluster gedreht (beispielsweise invers gedreht), um den Drehwinkel, der dem Cluster zugeordnet ist, zu korrigieren.
  • Bei dem Vorgang 2440 werden für jedes Cluster horizontale Zeilen erzeugt, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, und es werden die horizontalen Zeilen zu horizontalen Absätzen zusammengefügt. Eine durchschnittliche horizontale Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind, wird bestimmt.
  • Bei dem Vorgang 2450 werden für jeden horizontalen Absatz vertikale Zeilen bestimmt, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen. Eine durchschnittliche vertikale Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind, wird bestimmt.
  • Bei dem Vorgang 2460 wird ein Horizontalzeilenformat gewählt, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, und andernfalls wird ein Vertikalzeilenformat gewählt. Bei einigen Ausführungsformen beruht die Wahl des Horizontalzeilenformates des Weiteren auf einem Bestimmen, dass eine Zählung der Anzahl von horizontalen Zeilen kleiner als eine Zählung der Anzahl von vertikalen Zeilen ist. Bei einigen Ausführungsformen werden, um mit Textumfließszenarien umzugehen, logische Blöcke, die innerhalb einer Toleranz vertikal überlappen, geclustert, und es werden Textzeilen, die eine gemeinsame horizontale Achse teilen, innerhalb des geclusterten logischen Blocks zusammengefügt.
  • Bei dem Vorgang 2470 werden die Absätze gedreht, um den Drehwinkel der Cluster, die den Absätzen zugeordnet sind, wiederherzustellen.
  • Exemplarische Plattform
  • 25 ist ein Blockdiagramm zur schematischen Darstellung einer Rechenplattform 2500, die dafür konfiguriert ist, eine beliebige der Techniken, wie sie in der vorliegenden Offenbarung verschiedentlich beschrieben werden, durchzuführen, mit einer Konfigurierung entsprechend einer Ausführungsform der vorliegenden Offenbarung. Bei einigen Ausführungsformen sind beispielsweise das Wechseltextclustersystem 130 von 1 oder beliebige Abschnitte hiervon, wie sie in 1, 4, 6, 10, 14 und 17 dargestellt sind, sowie die Verfahrensweisen von 23 und 24 oder beliebige Abschnitte hiervon in der Rechenplattform 2500 implementiert. Bei einigen Ausführungsformen ist die Rechenplattform 2500 ein Rechensystem, so beispielsweise eine Workstation, ein Desktopcomputer, ein Server, ein Laptop, ein Handcomputer, ein Tabletcomputer (beispielsweise der Tabletcomputer iPad), eine mobile Rechen- oder Kommunikationsvorrichtung (beispielsweise die mobile Kommunikationsvorrichtung iPhone, die mobile Kommunikationsvorrichtung Android und dergleichen) oder eine andere Form von Rechenvorrichtung, die ausreichend Verarbeitungsleistung und Speicherkapazität aufweist, um die in der vorliegenden Offenbarung beschriebenen Vorgänge durchzuführen. Bei einigen Ausführungsformen wird ein verteiltes Rechensystem bereitgestellt, das mehrere derartige Rechenvorrichtungen bereitstellt.
  • Die Rechenplattform 2500 beinhaltet eine oder mehrere Speichervorrichtungen 2590 und/oder nichttemporäre computerlesbare Medien 2530, auf denen eine oder mehrere computerausführbare Anweisungen oder Software zur Implementierung von Techniken, wie sie in der vorliegenden Offenbarung verschiedentlich beschrieben werden, codiert sind. Bei einigen Ausführungsformen beinhalten die Speichervorrichtungen 2590 einen Computersystemspeicher oder einen Speicher mit wahlfreiem Zugriff, so beispielsweise einen dauerhaften Plattenspeicher (beispielsweise eine beliebige geeignete optische oder magnetische dauerhaft speichernde Vorrichtung, darunter RAM, ROM, Flash, USB-Laufwerk oder ein anderes halbleiterbasiertes Speichermedium), ein Festplattenlaufwerk, CD-ROM oder andere computerlesbare Medien zum Speichern von Daten und computerlesbaren Anweisungen und/oder Software, die verschiedene Ausführungsformen, wie sie in der vorliegenden Offenbarung erläutert werden, implementieren. Bei einigen Ausführungsformen beinhaltet die Speichervorrichtung 2590 zudem andere Typen von Speicher wie auch Kombinationen hieraus. Bei einer Ausführungsform ist die Speichervorrichtung 2590 auf der Rechenvorrichtung 2500 bereitgestellt. Bei einer anderen Ausführungsform ist die Speichervorrichtung 2590 separat oder fern (remote) von der Rechenplattform 2500 bereitgestellt. Die nichttemporären computerlesbaren Medien 2530 beinhalten unter anderem einen oder mehrere Typen von Hardwarespeicher, nichttemporäre physische Medien (beispielsweise einen oder mehrere Magnetplattenspeicher, eine oder mehrere optische Platten, eine oder mehrere USB-Flash-Laufwerke) und dergleichen mehr. Bei einigen Ausführungsformen speichern die nichttemporären computerlesbaren Medien 2530, die in der Rechenplattform 2500 beinhaltet sind, computerlesbare und computerausführbare Anweisungen oder Software zur Implementierung von verschiedenen Ausführungsformen. Bei einer Ausführungsform sind die computerlesbaren Medien 2530 auf der Rechenplattform 2500 bereitgestellt. Bei einer weiteren Ausführungsform sind die computerlesbaren Medien 2530 separat oder fern von der Rechenplattform 2500 bereitgestellt.
  • Die Rechenplattform 2500 beinhaltet zudem wenigstens einen Prozessor 2510 zum Ausführen von computerlesbaren und computerausführbaren Anweisungen oder Software mit Speicherung in der Speichervorrichtung 2590 und/oder auf den nichttemporären computerlesbaren Medien 2530 und anderen Programmen zum Steuern bzw. Regeln von Systemhardware. Bei einigen Ausführungsformen wird eine Virtualisierung auf der Rechenplattform 2500 derart eingesetzt, dass die Infrastruktur und die Ressourcen auf der Rechenplattform 2500 dynamisch geteilt werden. Es wird beispielsweise eine virtuelle Maschine dafür bereitgestellt, mit einem Prozess, der auf mehreren Prozessoren läuft, derart umzugehen, als ob der Prozess anstatt auf mehreren Rechenvorrichtungen scheinbar nur auf einer Vorrichtung genutzt würde. Bei einigen Ausführungsformen werden mehrere virtuelle Maschinen mit einem Prozessor benutzt.
  • Wie weiter ersichtlich ist, ist zudem ein Bus oder Interconnect 2505 vorgesehen, um eine Kommunikation zwischen den vorstehend aufgeführten verschiedenen Komponenten und/oder anderen nicht gezeigten Komponenten zu ermöglichen. Die Rechenplattform 2500 kann mit einem Netzwerk 2550 (beispielsweise einem Orts- oder Großbereichsnetzwerk, so beispielsweise dem Internet) durch eine Netzwerkschnittstellenschaltung 2540 gekoppelt sein, um Kommunikationen mit anderen Rechenvorrichtungen, Plattformen, Ressourcen, Clients und loT-Vorrichtungen (Internet of Things loT, Internet der Dinge) zu ermöglichen.
  • Bei einigen Ausführungsformen interagiert ein Nutzer mit der Rechenplattform 2500 durch eine Eingabe-/Ausgabesystem 2560, das eine Schnittstelle zu Vorrichtungen, so beispielsweise zu einer Tastatur und einer Maus 2570 und/oder einem Anzeigeelement (Bildschirm/Monitor) 2580, bildet. Die Tastatur und die Maus können dafür konfiguriert sein, eine Nutzerschnittstelle bereitzustellen, die eine Nutzereingabe und eine Anweisung annimmt und die das Wechseltextclustersystem 130 anderweitig steuert bzw. regelt. Das Anzeigeelement kann beispielsweise dafür konfiguriert sein, die Ergebnisse der unter Nutzung der offenbarten Techniken erfolgenden Verarbeitung anzuzeigen. Bei einigen Ausführungsformen beinhaltet die Rechenplattform 2500 andere I/O-Vorrichtungen (nicht gezeigt) zum Empfangen einer Eingabe von einem Nutzer, beispielsweise eine Zeigevorrichtung oder ein Touchpad und dergleichen oder eine beliebige geeignete Nutzerschnittstelle. Bei einigen Ausführungsformen beinhaltet die Rechenplattform 2500 andere geeignete herkömmliche I/O-Peripheriegeräte. Die Rechenplattform 2500 kann verschiedene geeignete Vorrichtungen zur Durchführung eines oder mehrerer der Aspekte, die in der vorliegenden Offenbarung verschiedentlich beschrieben werden, beinhalten und/oder operativ damit gekoppelt sein.
  • Bei einigen Ausführungsformen betreibt die Rechenplattform 2500 ein Betriebssystem (Operating System OS) 2520, so beispielsweise eine beliebige der Versionen der Windows-Betriebssysteme von Microsoft, einen beliebigen der verschiedenen Releases der Betriebssysteme Unix und Linux und eine beliebige Version von MacOs für Macintosh Computer, ein beliebiges eingebettetes Betriebssystem, ein beliebiges Echtzeitbetriebssystem, ein beliebiges Open-Source-Betriebssystem, ein beliebiges proprietäres Betriebssystem, ein beliebiges Betriebssystem für mobile Rechenvorrichtungen oder ein beliebiges anderes Betriebssystem, das auf der Rechenplattform 2500 laufen und die in der vorliegenden Offenbarung beschriebenen Vorgänge durchführen kann. Bei einer Ausführungsform läuft das Betriebssystem auf einer oder mehreren Cloud-Maschineninstanzen.
  • Wie im Lichte der vorliegenden Offenbarung ersichtlich ist, können die verschiedenen Module und Komponenten des Systems, wie sie in 1, 4, 6, 10, 14 und 17 gezeigt sind, in Software implementiert sein, so beispielsweise als Satz von Anweisungen (beispielsweise HTML, XML, C, C++, objektorientiertes C, JavaScript, Java, BASIC und dergleichen mehr), die auf einem beliebigen computerlesbaren Medium oder einem Computerprogrammerzeugnis (beispielsweise einem Festplattenlaufwerk, einem Server, einer Disk oder einem anderen geeigneten nichttemporären Speicher oder einem Satz von Speichern) codiert sind und die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass die in der vorliegenden Offenbarung beschriebenen verschiedenen Verfahrensweisen ausgeführt werden. Er sollte einsichtig sein, dass bei einigen Ausführungsformen verschiedene Funktionen und Datentransformationen, die von dem Rechensystem durchgeführt werden und die in der vorliegenden Offenbarung beschrieben sind, auch von ähnlichen Prozessoren in anderen Konfigurationen und Anordnungen durchgeführt werden können, wobei die dargestellten Ausführungsformen nicht beschränkend sein sollen. Verschiedene Komponenten der exemplarischen Ausführungsform, darunter die Rechenplattform 2500, können beispielsweise in einen oder mehrere Desktop- oder Laptop-Computer, Workstations, Tablets, Smartphones, Spielekonsolen, Set-Top-Boxen oder andere derartige Rechenvorrichtungen integriert sein. Weitere Komponenten und Module, die für ein Rechensystem typisch sind, so beispielsweise ein Coprozessor, ein Prozessorkern, eine grafische Verarbeitungseinheit, ein Touchpad, ein Touchscreen und dergleichen mehr, sind nicht gezeigt, erschließen sich jedoch ohne Weiteres.
  • Bei anderen Ausführungsformen sind die funktionellen Komponenten/Module mit Hardware implementiert, so beispielsweise einer Gate-Level-Logik (beispielsweise FPGA) oder einem zweckgebundenen Halbleiter (beispielsweise ASIC). Wieder andere Ausführungsformen sind mit einem Microcontroller implementiert, der eine Anzahl von Eingabe-/Ausgabeports zum Empfangen und Ausgeben von Daten sowie eine Anzahl von eingebetteten Routinen zum Ausführen der Funktionalität, die in der vorliegenden Offenbarung beschrieben ist, aufweist. Allgemein kann eine beliebige geeignete Kombination von Hardware, Software und Firmware benutzt werden, wie sich erschließt.
  • Weitere exemplarische Ausführungsformen
  • Es erschließen sich zahlreiche exemplarische Ausführungsformen, und es können hier beschriebene Merkmale in einer beliebigen Anzahl von Konfigurationen kombiniert werden.
  • Beispiel 1 ist ein Computerprogrammerzeugnis, das ein oder mehrere nichttemporäre maschinell lesbare Medien beinhaltet, die mit Anweisungen codiert sind, die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass ein Prozess zum Clustern eines Textes ausgeführt wird, der aus einem ersten Digitaldokument, das ein erstes Format aufweist, in ein zweites Digitaldokument, das ein zweites Format aufweist, das von dem ersten Format verschieden ist, exportiert wird, wobei der Prozess umfasst: in dem zweiten Digitaldokument erfolgendes Empfangen einer Abfolge von Textblöcken, die aus dem ersten Digitaldokument exportiert sind, wobei die Textblöcke erste und zweite Textblöcke, die Teil eines Textobjektes des ersten Digitaldokumentes sind, beinhalten; in Reaktion darauf, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird, erfolgendes Ausführen eines ersten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem logischen Block, der dem Textobjekt entspricht, gehören; und in Reaktion darauf, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, erfolgendes Ausführen eines zweiten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören, wobei das zweite Clusterverfahren verschieden von dem ersten Clusterverfahren ist; wobei eines oder beide von den ersten und zweiten Clusterverfahren beinhalten: Messen des Abstandes zwischen den ersten und zweiten Textblöcken und in Reaktion darauf, dass dieser Abstand kleiner als eine Abstandsschwelle ist, erfolgendes Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören. Das eine oder die mehreren nichttemporären maschinell lesbaren Medien können ein beliebiges physisches Speichermedium, so beispielsweise ein Nur-LeseSpeicher (ROM), ein Speicher mit wahlfreiem Zugriff (RAM), ein Cache-Speicher, ein eingebetteter Speicher, ein Plattenlaufwerk, ein Solid-State-Speicher oder ein beliebiger anderer Typ von Speicher, sein.
  • Beispiel 2 beinhaltet den Erfindungsgegenstand von Beispiel 1, wobei der Prozess des Weiteren umfasst: heuristisches Bestimmen, ob die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  • Beispiel 3 beinhaltet den Erfindungsgegenstand von Beispiel 2, wobei das heuristische Bestimmen, ob die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, eines oder mehrere beinhaltet von: Abfragen einer Gitterkoordinate, die jeden Textblock begleitet; in Reaktion auf ein Bestimmen, dass dieselbe Orientierung aufweisende Textzeilen in dem zweiten Digitaldokument auf sequenzielle Weise liegen, auf Grundlage des Abfragens erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird; in Reaktion auf ein Bestimmen, dass die Textzeilen in dem zweiten Digitaldokument auf willkürlich schachbrettartige Weise liegen, auf Grundlage des Abfragens erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird; und Durchführen einer grammatikalischen Analyse wenigstens eines Abschnittes der empfangenen Abfolge von Textblöcken zum Detektieren von grammatikalischen Fehlern und in Reaktion darauf, dass eine Rate von grammatikalischen Fehlern eine Fehlerschwelle übersteigt, erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  • Beispiel 4 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 1 bis 3, wobei die Textblöcke des Weiteren dritte und vierte Textblöcke, die Teil des Textobjektes sind, beinhalten und wobei die Abstandsschwelle eine erste Abstandsschwelle ist und wobei eines oder beide von den ersten und zweiten Clusterverfahren beinhalten: Generieren einer ersten Textzeile, die den ersten Textblock und den dritten Textblock beinhaltet, auf Grundlage einer Nähemessung zum Bestimmen, dass der Abstand zwischen dem ersten Textblock und dem dritten Textblock innerhalb einer zweiten Abstandsschwelle ist; und Generieren einer zweiten Textzeile, die den zweiten Textblock und den vierten Textblock beinhaltet, auf Grundlage einer Nähemessung zum Bestimmen, dass der Abstand zwischen dem zweiten Textblock und dem vierten Textblock innerhalb einer dritten Abstandsschwelle ist; wobei das Messen des Abstandes zwischen den ersten und zweiten Textblöcken und das Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören, beinhaltet: Messen des Abstandes zwischen den ersten und zweiten Textzeilen und in Reaktion darauf, dass dieser Abstand kleiner als die erste Abstandsschwelle ist, erfolgendes Bestimmen, dass die ersten und zweiten Textzeilen zu dem logischen Block, der dem Textobjekt entspricht, gehören; wobei jede von den ersten, zweiten und dritten Abstandsschwellen zueinander gleich oder voneinander verschieden sein können.
  • Beispiel 5 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 1 bis 4, wobei: die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird, wobei die sequenzielle Lesereihenfolge von links nach rechts und von oben nach unten für horizontal orientierte Textblöcke und von oben nach unten und von links nach rechts für vertikal orientierte Textblöcke fortschreitet; oder die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, wobei die nicht sequenzielle, willkürliche Reihenfolge unabhängig von der sequenziellen Lesereihenfolge ist.
  • Beispiel 6 beinhaltet den Erfindungsgegenstand von Beispiel 5, wobei die Textblöcke ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten umfassen.
  • Beispiel 7 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 1 bis 6, wobei das erste Clusterverfahren beinhaltet: Generieren von Textzeilen als Kombination von zweien oder mehr der Textblöcke auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die Textblöcke; Berechnen eines Drehwinkels der generierten Textzeilen; Drehen der generierten Textzeilen zum Korrigieren des Drehwinkels; Bestimmen einer Orientierung der generierten Textzeilen, wobei die Orientierung eine von horizontal oder vertikal ist; Sortieren der horizontal orientierten Textzeilen von oben nach unten; Sortieren der vertikal orientierten Textzeilen von links nach rechts; Clustern der sortierten horizontal orientierten Textzeilen zu logischen Blöcken; Clustern der sortierten vertikal orientierten Textzeilen zu logischen Blöcken; und Drehen der logischen Blöcke zum Wiederherstellen des Drehwinkels der Textzeilen, die in den logischen Blöcken beinhaltet sind.
  • Beispiel 8 beinhaltet den Erfindungsgegenstand von Beispiel 7, wobei das Generieren von Textzeilen umfasst: Bewerten der Ausrichtungskostenfunktion als Abstand zwischen einer ersten Achse, die einen Anfangspunkt und einen Endpunkt des ersten Textblocks verbindet, und einer zweiten Achse, die einen Anfangspunkt und einen Endpunkt des zweiten Textblocks verbindet; Bewerten der Nähemessung als Abstand zwischen dem Endpunkt des ersten Textblocks und dem Anfangspunkt des zweiten Textblocks; Generieren einer ersten Textzeile, die den ersten Textblock umfasst; in Reaktion darauf, dass die Ausrichtungskostenfunktion kleiner als eine erste Schwelle ist und die Nähemessung kleiner als eine zweite Schwelle ist, erfolgendes Verketten des zweiten Textblocks mit der ersten Textzeile; und in Reaktion darauf, dass die Ausrichtungskostenfunktion nicht kleiner als die erste Schwelle ist und/oder die Nähemessung nicht kleiner als die zweite Schwelle ist, erfolgendes Generieren einer zweiten Textzeile, die den zweiten Textblock umfasst.
  • Beispiel 9 beinhaltet den Erfindungsgegenstand von Beispiel 7 oder 8, wobei das Bestimmen der Orientierung der generierten Textzeile umfasst: Berechnen eines durchschnittlichen Drehwinkels von Schriftzeichen der generierten Textzeile; in Reaktion darauf, dass der durchschnittliche Drehwinkel der Schriftzeichen vom Drehwinkel der generierten Textzeile um 90° innerhalb eines Toleranzbereiches verschieden ist, erfolgendes Bestimmen der Orientierung als vertikal; und in Reaktion darauf, dass der durchschnittliche Drehwinkel der Schriftzeichen vom Drehwinkel der generierten Textzeile nicht um 90° innerhalb des Toleranzbereiches verschieden ist, erfolgendes Bestimmen der Orientierung als horizontal.
  • Beispiel 10 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 7 bis 9, wobei: das Clustern der sortierten horizontal orientierten Textzeilen umfasst: Identifizieren von Textzeilen, die vertikal innerhalb einer ersten Toleranz überlappen und die vertikal innerhalb einer zweiten Toleranz beabstandet sind, wobei die erste Toleranz und die zweite Toleranz auf einer Fontgröße, die den Textzeilen zugeordnet ist, beruhen; Clustern der identifizierten Textzeilen zu logischen Blöcken, Clustern der logischen Blöcke, die vertikal innerhalb der ersten Toleranz überlappen, und Zusammenfügen von Textzeilen, die eine gemeinsame horizontale Achse teilen, innerhalb des geclusterten logischen Blocks. Zusätzlich umfasst das Clustern der sortierten vertikal orientierten Textzeilen: Identifizieren von Textzeilen, die horizontal innerhalb einer ersten Toleranz überlappen und die horizontal innerhalb einer zweiten Toleranz beabstandet sind, wobei die erste Toleranz und die zweite Toleranz auf einer Fontgröße, die den Textzeilen zugeordnet ist, beruhen; Clustern der identifizierten Textzeilen zu logischen Blöcken; Clustern der logischen Blöcke, die horizontal innerhalb der ersten Toleranz überlappen; und Zusammenfügen von Textzeilen, die eine gemeinsame vertikale Achse teilen, innerhalb des geclusterten logischen Blocks.
  • Beispiel 11 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 1 bis 10, wobei das zweite Clusterverfahren beinhaltet: Empfangen von mehreren Textblöcken, wobei die Textblöcke Elemente umfassen, die ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten beinhalten; Berechnen eines Drehwinkels der Textblöcke; Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels; und Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist, derart, dass alle gedrehten Cluster eine horizontale Orientierung aufweisen. Für jedes Cluster beinhaltet das zweite Clusterverfahren des Weiteren: Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen; Clustern der horizontalen Zeilen zu horizontalen Absätzen; und Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind. Zusätzlich beinhaltet das zweite Clusterverfahren für jeden horizontalen Absatz des Weiteren: Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen; Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind, und Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, ansonsten Wählen eines Vertikalzeilenformates. Das zweite Clusterverfahren beinhaltet entsprechend einigen derartigen Ausführungsformen des Weiteren: Drehen der Absätze zum Wiederherstellen des Drehwinkels der Cluster, die den Absätzen zugeordnet sind.
  • Beispiel 12 ist ein Computerprogrammerzeugnis, das ein oder mehrere nichttemporäre maschinell lesbare Medien beinhaltet, die mit Anweisungen codiert sind, die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass ein Prozess zum Clustern von Text ausgeführt wird, wobei der Prozess umfasst: Empfangen von mehreren Textblöcken, wobei die Textblöcke Elemente umfassen, die ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten beinhalten; Berechnen eines Drehwinkels der Textblöcke; Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels; und Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist. Für jedes Cluster umfasst der Prozess des Weiteren: Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen; Clustern der horizontalen Zeilen zu horizontalen Absätzen; und Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind. Zusätzlich beinhaltet der Prozess für jeden horizontalen Absatz des Weiteren: Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen; Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind; und Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, andernfalls Wählen eines Vertikalzeilenformates. Der Prozess beinhaltet des Weiteren: Drehen der Absätze zum Wiederherstellen des Drehwinkels der Cluster, die den Absätzen zugeordnet sind.
  • Beispiel 13 beinhaltet den Erfindungsgegenstand von Beispiel 12, wobei: das Erzeugen von horizontalen Zeilen umfasst: Identifizieren eines am weitesten oben befindlichen Elementes der Textblöcke, die in dem Cluster beinhaltet sind; Identifizieren von Textblöcken, die innerhalb eines vertikalen Schwellenabstandes einer horizontalen Zeile, die durch das am weitesten oben befindliche Element hindurchgeht, befindlich sind; Durchlaufen der identifizierten Textblöcke in einer von rechts nach links gegebenen Reihenfolge von dem identifizierten am weitesten oben befindlichen Element bis hin zu einer am weitesten links befindlichen räumlichen Diskontinuität, wobei die räumliche Diskontinuität auf einer Fontgröße und einer Textskalierung, die den Textblöcken zugeordnet sind, beruht; Durchlaufen der identifizierten Textblöcke in einer von links nach rechts gegebenen Reihenfolge von dem identifizierten am weitesten oben befindlichen Element bis hin zu einer am weitesten rechts befindlichen räumlichen Diskontinuität; und Erzeugen der horizontalen Zeile derart, dass der Textblock von der am weitesten links befindlichen räumlichen Diskontinuität zu der am weitesten rechts befindlichen räumlichen Diskontinuität beinhaltet ist. Zusätzlich umfasst das Erzeugen von vertikalen Zeilen: Identifizieren eines am weitesten rechts befindlichen Elementes der Textblöcke, die in dem Cluster beinhaltet sind; Identifizieren von Textblöcken, die innerhalb eines horizontalen Schwellenabstandes einer vertikalen Zeile, die durch das am weitesten rechts befindliche Element hindurchgeht, befindlich sind; Durchlaufen der identifizierten Textblöcke in einer von unten nach oben gegebenen Reihenfolge von dem identifizierten am weitesten rechts befindlichen Element bis hin zu einer am weitesten oben befindlichen räumlichen Diskontinuität, wobei die räumliche Diskontinuität auf einer Fontgröße und einer Textskalierung, die den Textblöcken zugeordnet sind, beruht; Durchlaufen der identifizierten Textblöcke in einer von oben nach unten gegebenen Reihenfolge von dem identifizierten am weitesten rechts befindlichen Element bis hin zu einer am weitesten unten befindlichen räumlichen Diskontinuität; und Erzeugen der vertikalen Zeile derart, dass der Textblock von der am weitesten oben befindlichen räumlichen Diskontinuität zu der am weitesten unten befindlichen räumlichen Diskontinuität beinhaltet ist.
  • Beispiel 14 beinhaltet den Erfindungsgegenstand von Beispiel 12 oder 13, wobei das Clustern der horizontalen Zeilen zu horizontalen Absätzen umfasst: Identifizieren von horizontalen Textzeilen, die vertikal innerhalb einer ersten Toleranz überlappen und die vertikal innerhalb einer zweiten Toleranz beabstandet sind, wobei die erste Toleranz und die zweite Toleranz auf einer Fontgröße, die den horizontalen Textzeilen zugeordnet ist, beruhen; Clustern der identifizierten horizontalen Textzeilen zu logischen Blöcken; Clustern der logischen Blöcke, die vertikal innerhalb der ersten Toleranz überlappen; und Zusammenfügen der horizontalen Textzeilen, die eine gemeinsame horizontale Achse teilen, innerhalb des geclusterten logischen Blocks.
  • Beispiel 15 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 12 bis 14, wobei das Wählen des Horizontalzeilenformates des Weiteren auf einem Bestimmen beruht, dass eine Zählung der Anzahl von horizontalen Zeilen kleiner als eine Zählung der Anzahl von vertikalen Zeilen ist.
  • Beispiel 16 ist ein System zum Clustern von Text, wobei das System umfasst: Mittel zum Bestimmen, ob Textblöcke, die in einer Eingabeabfolge empfangen werden, in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen werden, wobei die Textblöcke aus einem Digitaldokument exportiert sind und erste und zweite Textblöcke, die Teil eines Textobjektes eines Digitaldokumentes sind, beinhalten; ein erstes Clustermittel zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem logischen Block, der dem Textobjekt entspricht, gehören, in Reaktion darauf, dass Textblöcke der Eingabeabfolge in einer sequenziellen Lesereihenfolge empfangen werden; und ein zweites Clustermittel zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem logischen Block, der dem Textobjekt entspricht, gehören, in Reaktion darauf, dass Textblöcke der Eingabeabfolge in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen werden, wobei das zweite Clustermittel verschieden von dem ersten Clustermittel ist. Man beachte, dass all diese Mittel beispielsweise Anweisungen sein können, die ein oder mehrere Prozessoren ausführen, um die angeführte Funktion zu übernehmen. Implementiert sein können all diese Funktionen alternativ beispielsweise in Hardware, die dafür konfiguriert ist, die angeführte Funktion zu übernehmen, so beispielsweise als feldprogrammierbares Gate-Array (FPGA) oder zweckgebundener Halbleiter, oder als eingebettete Routinen, die der Prozessor eines Microcontrollers ausführt. Im Lichte der vorliegenden Offenbarung erschließen sich zahlreiche derartige Mittel.
  • Beispiel 17 beinhaltet den Erfindungsgegenstand von Beispiel 16, wobei eines oder beide von den ersten und zweiten Clüstermitteln konfiguriert sind zum: Messen des Abstandes zwischen den ersten und zweiten Textblöcken und in Reaktion darauf, dass dieser Abstand kleiner als eine Abstandsschwelle ist, erfolgenden Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören.
  • Beispiel 18 beinhaltet den Erfindungsgegenstand von Beispiel 16 oder 17, wobei das Digitaldokument ein erstes Digitaldokument, das ein erstes Format aufweist, ist und die Textblöcke aus dem ersten Digitaldokument in ein zweites Digitaldokument, das ein zweites Format aufweist, das von dem ersten Format verschieden ist, exportiert werden, und das Mittel zum Bestimmen, ob die Textblöcke, die in der Eingabeabfolge empfangen werden, in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen werden, einen oder mehrere Prozessoren beinhaltet, die konfiguriert sind zum: Abfragen von Gitterkoordinaten, die Textblöcken zugeordnet sind; in Reaktion auf ein Bestimmen, dass dieselbe Orientierung aufweisende Textzeilen in dem zweiten Digitaldokument auf sequenzielle Weise liegen, auf Grundlage des Abfragens erfolgenden Bestimmen, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird; und in Reaktion auf ein Bestimmen, dass Textzeilen in dem zweiten Digitaldokument auf willkürlich schachbrettartige Weise liegen, auf Grundlage des Abfragens erfolgenden Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  • Beispiel 19 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 16 bis 18, wobei das erste Clustermittel einen oder mehrere Prozessoren beinhaltet, die konfiguriert sind zum: Generieren von Textzeilen als Kombination von zweien oder mehr der Textblöcke auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die Textblöcke; Berechnen eines Drehwinkels der generierten Textzeilen; Drehen der generierten Textzeilen zum Korrigieren des Drehwinkels; Bestimmen einer Orientierung der generierten Textzeilen, wobei die Orientierung eine von horizontal oder vertikal ist; Sortieren der horizontal orientierten Textzeilen von oben nach unten; Sortieren der vertikal orientierten Textzeilen von links nach rechts; Clustern der sortierten horizontal orientierten Textzeilen zu logischen Blöcken; Clustern der sortierten vertikal orientierten Textzeilen zu logischen Blöcken; und Drehen der logischen Blöcke zum Wiederherstellen des Drehwinkels der Textzeilen, die in den logischen Blöcken beinhaltet sind.
  • Beispiel 20 beinhaltet den Erfindungsgegenstand nach einem von Beispielen 16 bis 19, wobei das zweite Clustermittel einen oder mehrere Prozessoren beinhaltet, die konfiguriert sind zum: Empfangen von mehreren Textblöcken, wobei die Textblöcke Elemente umfassen, die ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten beinhalten; Berechnen eines Drehwinkels der Textblöcke; Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels; und Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist, derart, dass alle gedrehten Cluster eine horizontale Orientierung aufweisen. Für jedes Cluster sind der eine oder die mehreren Prozessoren des Weiteren konfiguriert zum: Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, Clustern der horizontalen Zeilen zu horizontalen Absätzen, und Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind. Zusätzlich sind der eine oder die mehreren Prozessoren für jeden horizontalen Absatz des Weiteren konfiguriert zum: Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen; Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind; und Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, andernfalls Wählen eines Vertikalzeilenformates. Zusätzlich sind der eine oder die mehreren Prozessoren des Weiteren konfiguriert zum: Drehen der Absätze zum Wiederherstellen des Drehwinkels der Cluster, die den Absätzen zugeordnet sind.
  • Die vorstehende Beschreibung von exemplarischen Ausführungsformen der Offenbarung ist nur zur Zwecken der Darstellung und Beschreibung aufgeführt. Weder soll sie erschöpfend sein, noch soll sie die Offenbarung auf die genau offenbarten Formen beschränken. Im Lichte der vorliegenden Offenbarung sind viele Modifikationen und Variationen möglich. Der Umfang der Erfindung soll nicht durch diese Detailbeschreibung, sondern durch die beigefügten Ansprüche beschränkt sein.
  • Weitere Aspekte, Ausführungsformen und Merkmale der vorliegenden Erfindung sind in den nachfolgenden Punkten beschrieben.
  • Punkt 1. Computerprogrammerzeugnis, das ein oder mehrere nichttemporäre maschinell lesbare Medien beinhaltet, die mit Anweisungen codiert sind, die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass ein Prozess zum Clustern von Text ausgeführt wird, der aus einem ersten Digitaldokument, das ein erstes Format aufweist, in ein zweites Digitaldokument, das ein zweites Format aufweist, das von dem ersten Format verschieden ist, exportiert wird, wobei der Prozess umfasst:
    • in dem zweiten Digitaldokument erfolgendes Empfangen einer Abfolge von Textblöcken, die aus dem ersten Digitaldokument exportiert sind, wobei die Textblöcke erste und zweite Textblöcke, die Teil eines Textobjektes des ersten Digitaldokumentes sind, beinhalten;
    • in Reaktion darauf, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird, erfolgendes Ausführen eines ersten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem logischen Block, der dem Textobjekt entspricht, gehören; und in Reaktion darauf, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, erfolgendes Ausführen eines zweiten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören, wobei das zweite Clusterverfahren verschieden von dem ersten Clusterverfahren ist;
    • wobei eines oder beide von den ersten und zweiten Clusterverfahren beinhalten:
      • Messen eines Abstandes zwischen den ersten und zweiten Textblöcken und in Reaktion darauf, dass dieser Abstand kleiner als eine Abstandsschwelle ist, erfolgendes Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören; und
      • wobei das erste Clusterverfahren beinhaltet:
        • Generieren von Textzeilen als Kombination von zweien oder mehr der Textblöcke in der Abfolge von Textblöcken auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die zwei oder mehr Textblöcke;
        • Berechnen eines Drehwinkels der generierten Textzeilen;
        • Drehen der generierten Textzeilen zum Korrigieren des Drehwinkels; Bestimmen einer Orientierung der generierten Textzeilen, wobei die Orientierung eine von horizontal orientierten Textzeilen oder vertikal orientierten Textzeilen ist;
        • Sortieren der horizontal orientierten Textzeilen von oben nach unten;
        • Sortieren der vertikal orientierten Textzeilen von links nach rechts;
        • Clustern der sortierten horizontal orientierten Textzeilen zu logischen Blöcken von horizontalem Text;
        • Clustern der sortierten vertikal orientierten Textzeilen zu logischen Blöcken von vertikalem Text; und
        • Drehen wenigstens eines logischen Blocks unter den logischen Blöcken von horizontalem Text und den logischen Blöcken von vertikalem Text zum Wiederherstellen des Drehwinkels der Textzeilen, die in dem gedrehten wenigstens einen logischen Block beinhaltet sind.
  • Punkt 2. Computerprogrammerzeugnis nach Punkt 1, wobei der Prozess des Weiteren umfasst:
    • heuristisches Bestimmen, ob die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  • Punkt 3. Computerprogrammerzeugnis nach Punkt 2, wobei das heuristische Bestimmen, ob die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, eines oder mehrere beinhaltet von:
    • Abfragen einer Gitterkoordinate, die jeden Textblock begleitet, und in Reaktion auf ein Bestimmen, dass dieselbe Orientierung aufweisende Textzeilen in dem zweiten Digitaldokument auf sequenzielle Weise liegen, auf Grundlage des Abfragens der Gitterkoordinaten erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird, und in Reaktion auf ein Bestimmen, dass Textzeilen in dem zweiten Digitaldokument auf willkürlich schachbrettartige Weise liegen, auf Grundlage des Abfragens der Gitterkoordinaten erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird; und
    • Durchführen einer grammatikalischen Analyse wenigstens eines Abschnittes der empfangenen Abfolge von Textblöcken zum Detektieren von grammatikalischen Fehlern und in Reaktion darauf, dass eine Rate von grammatikalischen Fehlern eine Fehlerschwelle übersteigt, erfolgenden Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  • Punkt 4. Computerprogrammerzeugnis nach Punkt 1, wobei die Textblöcke in der Abfolge von Textblöcken des Weiteren dritte und vierte Textblöcke, die Teil des Textobjektes sind, beinhalten, und wobei die Abstandsschwelle eine erste Abstandsschwelle ist und wobei eines oder beide von den ersten und zweiten Clusterverfahren beinhalten:
    • Generieren einer ersten Textzeile, die den ersten Textblock und den dritten Textblock beinhaltet, auf Grundlage der Nähemessung zum Bestimmen, dass ein Abstand zwischen dem ersten Textblock und dem dritten Textblock innerhalb einer zweiten Abstandsschwelle ist; und
    • Generieren einer zweiten Textzeile, die den zweiten Textblock und den vierten Textblock beinhaltet, auf Grundlage der Nähemessung zum Bestimmen, dass ein Abstand zwischen dem zweiten Textblock und dem vierten Textblock innerhalb einer dritten Abstandsschwelle ist;
    • wobei das Messen des Abstandes zwischen den ersten und zweiten Textblöcken und das Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören, beinhaltet: Messen eines Abstandes zwischen den ersten und zweiten Textzeilen und in Reaktion darauf, dass dieser Abstand kleiner als der erste Schwellenabstand ist, erfolgendes Bestimmen, dass die ersten und zweiten Textzeilen zu dem logischen Block, der dem Textobjekt entspricht, gehören;
    • wobei jede der ersten, zweiten und dritten Abstandsschwellen zueinander gleich oder voneinander verschieden sein können.
  • Punkt 5. Computerprogrammerzeugnis nach Punkt 1, wobei:
    • die sequenzielle Lesereihenfolge von links nach rechts und von oben nach unten für horizontal orientierte Textblöcke und von oben nach unten und von links nach rechts für vertikal orientierte Textblöcke fortschreitet; oder
    • die nicht sequenzielle, willkürliche Reihenfolge unabhängig von der sequenziellen Lesereihenfolge ist.
  • Punkt 6. Computerprogrammerzeugnis nach Punkt 1, wobei das Generieren von Textzeilen umfasst:
    • Bewerten der Ausrichtungskostenfunktion als Abstand zwischen einer ersten Achse, die einen Anfangspunkt und einen Endpunkt des ersten Textblocks verbindet, und einer zweiten Achse, die einen Anfangspunkt und einen Endpunkt des zweiten Textblocks verbindet;
    • Bewerten der Nähemessung als Abstand zwischen dem Endpunkt des ersten Textblocks und dem Anfangspunkt des zweiten Textblocks;
    • Generieren einer ersten Textzeile, die den ersten Textblock umfasst; in Reaktion darauf, dass die Ausrichtungskostenfunktion kleiner als eine erste Schwelle ist und die Nähemessung kleiner als eine zweite Schwelle ist, erfolgendes Verketten des zweiten Textblocks mit der ersten Textzeile; und in Reaktion auf wenigstens eines davon, dass (a) die Ausrichtungskostenfunktion nicht kleiner als die erste Schwelle ist und (b) die Nähemessung nicht kleiner als die zweite Schwelle ist, erfolgendes Generieren einer zweiten Textzeile, die den zweiten Textblock umfasst.
  • Punkt 7. Computerprogrammerzeugnis nach Punkt 1, wobei das Bestimmen der Orientierung der generierten Textzeile umfasst:
    • Berechnen eines durchschnittlichen Drehwinkels von Schriftzeichen der generierten Textzeile;
    • in Reaktion darauf, dass der durchschnittliche Drehwinkel der Schriftzeichen von dem Drehwinkel der generierten Textzeile um 90° innerhalb eines Toleranzbereiches verschieden ist, erfolgendes Bestimmen der Orientierung als vertikal; und
    • in Reaktion darauf, dass der durchschnittliche Drehwinkel der Schriftzeichen von dem Drehwinkel der generierten Textzeile nicht um 90° innerhalb des Toleranzbereiches verschieden ist, erfolgendes Bestimmen der Orientierung als horizontal.
  • Punkt 8. Computerprogrammerzeugnis nach Punkt 1, wobei
    das Clustern der sortierten horizontal orientierten Textzeilen umfasst:
    • Identifizieren von Textzeilen, die vertikal innerhalb einer ersten horizontalen Toleranz überlappen und die vertikal innerhalb einer zweiten horizontalen Toleranz beabstandet sind, wobei die erste horizontale Toleranz und die zweite horizontale Toleranz auf einer Fontgröße beruhen, die den identifizierten vertikal überlappenden Textzeilen zugeordnet ist,
    • Clustern der identifizierten vertikal überlappenden Textzeilen zu den logischen Blöcken von horizontalem Text,
    • Clustern von logischen Blöcken von horizontalem Text, die vertikal innerhalb der ersten horizontalen Toleranz überlappen, und
    • Zusammenfügen von Textzeilen, die eine gemeinsame horizontale Achse teilen,
    • innerhalb des geclusterten logischen Blocks; und

    das Clustern der sortierten vertikal orientierten Textzeilen umfasst:
    • Identifizieren von Textzeilen, die horizontal innerhalb einer ersten vertikalen Toleranz überlappen und die horizontal innerhalb einer zweiten vertikalen Toleranz beabstandet sind, wobei die erste vertikale Toleranz und die zweite vertikale Toleranz auf einer Fontgröße beruhen, die den identifizierten horizontal überlappenden Textzeilen zugeordnet ist,
    • Clustern der identifizierten horizontal überlappenden Textzeilen zu den logischen Blöcken von vertikalem Text,
    • Clustern von logischen Blöcken von vertikalem Text, die horizontal innerhalb der ersten vertikalen Toleranz überlappen, und
    • Zusammenfügen von Textzeilen, die eine gemeinsame vertikale Achse teilen, innerhalb des geclusterten logischen Blocks.
  • Punkt 9. Computerprogrammerzeugnis nach Punkt 1, wobei das zweite Clusterverfahren beinhaltet:
    • Berechnen eines Drehwinkels der Textblöcke in der Abfolge von Textblöcken, wobei die Textblöcke, die in der Abfolge von Textblöcken beinhaltet sind, Elemente umfassen, die ein(e) oder mehrere von Schriftzeichen, Glyphen und Worten beinhalten;
    • Gruppieren der Textblöcke in der Abfolge von Textblöcken zu Clustern auf Grundlage des Drehwinkels;
    • Drehen der Cluster um einen zweiten Drehwinkel, der dem Cluster zugeordnet ist, derart, dass alle gedrehten Cluster eine horizontale Orientierung aufweisen; für jedes Cluster Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, Clustern der horizontalen Zeilen zu horizontalen Absätzen, und Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind;
    für jeden horizontalen Absatz
    • Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen,
    • Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind, und Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, andernfalls Wählen eines Vertikalzeilenformates; und Drehen der horizontalen Absätze zum Wiederherstellen des zweiten Drehwinkels der Cluster, die den horizontalen Absätzen zugeordnet sind.
  • Punkt 10. Computerprogrammerzeugnis, das ein oder mehrere nichttemporäre maschinell lesbare Medien beinhaltet, die mit Anweisungen codiert sind, die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass ein Prozess zum Clustern von Text ausgeführt wird, wobei der Prozess umfasst:
    • Empfangen von mehreren Textblöcken, wobei die Textblöcke Elemente umfassen;
    • Berechnen eines Drehwinkels der Textblöcke;
    • Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels;
    • Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist;
    • für jedes Cluster: (a) Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, (b) Clustern der horizontalen Zeilen zu horizontalen Absätzen und (c) Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind;
    • für jeden horizontalen Absatz: (a) Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen, (b) Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind, und (c) Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, andernfalls Wählen eines Vertikalzeilenformates; und
    • Drehen der horizontalen Absätze zum Wiederherstellen des Drehwinkels.
  • Punkt 11. Computerprogrammerzeugnis nach Punkt 10, wobei das Erzeugen einer bestimmten horizontalen Zeile umfasst:
    • Identifizieren eines am weitesten oben befindlichen Elementes der Textblöcke, die in einem bestimmten Cluster beinhaltet sind;
    • Identifizieren von Textblöcken, die innerhalb eines vertikalen Schwellenabstandes einer horizontalen Referenzzeile, die durch das am weitesten oben befindliche Element hindurchgeht, befindlich sind;
    • Durchlaufen der identifizierten Textblöcke in einer von rechts nach links gegebenen Reihenfolge von dem identifizierten am weitesten oben befindlichen Element bis hin zu einer am weitesten links befindlichen räumlichen Diskontinuität, wobei die räumliche Diskontinuität auf einer Fontgröße und einer Textskalierung, die den identifizierten Textblöcken zugeordnet sind, beruht;
    • Durchlaufen der identifizierten Textblöcke in einer von links nach rechts gegebenen Reihenfolge von dem identifizierten am weitesten oben befindlichen Element bis hin zu einer am weitesten rechts befindlichen räumlichen Diskontinuität; und Erzeugen der bestimmten horizontalen Zeile derart, dass ein oder mehrere Textblöcke von der am weitesten links befindlichen räumlichen Diskontinuität zu der am weitesten rechts befindlichen räumlichen Diskontinuität beinhaltet sind.
  • Punkt 12. Computer Programmerzeugnis nach Punkt 10, wobei das Clustern der horizontalen Zeilen zu horizontalen Absätzen umfasst:
    • Identifizieren von horizontalen Zeilen, die vertikal innerhalb einer ersten Toleranz überlappen und die vertikal innerhalb einer zweiten Toleranz beabstandet sind,
    • wobei die erste Toleranz und die zweite Toleranz auf einer Fontgröße, die den horizontalen Zeilen zugeordnet ist, beruhen;
    • Clustern der identifizierten horizontalen Textzeilen zu logischen Blöcken;
    • Clustern der logischen Blöcke, die vertikal innerhalb der ersten Toleranz überlappen; und
    • Zusammenfügen von horizontalen Textzeilen, die eine gemeinsame horizontale Achse teilen, innerhalb der geclusterten logischen Blöcke.
  • Punkt 13. Computerprogrammerzeugnis nach Punkt 10, wobei das Wählen des Horizontalzeilenformates des Weiteren auf einem Bestimmen beruht, dass eine Zählung der horizontalen Zeilen kleiner als eine Zählung der vertikalen Zeilen ist.
  • Punkt 14. System, umfassend einen Speicher und einen oder mehrere Prozessoren, die operativ mit dem Speicher gekoppelt sind, wobei der Speicher Anweisungen speichert, die bei Ausführung durch den einen oder die mehreren Prozessoren veranlassen, dass ein Textclusterverfahren ausgeführt wird, wobei das Textclusterverfahren umfasst:
    • Empfangen einer Eingabeabfolge von Textblöcken, die aus einem ersten Digitaldokument, das ein erstes Format aufweist, exportiert sind, wobei die Eingabeabfolge von Textblöcken in einem zweiten Digitaldokument, das ein zweites Format aufweist, das verschieden von dem ersten Format ist, empfangen wird, und wobei die Eingabeabfolge erste und zweite Textblöcke, die Teil eines Textobjektes des ersten Digitaldokumentes sind, beinhaltet;
    • Abfragen von Gitterkoordinaten, die den empfangenen Textblöcken zugeordnet sind;
    • in Reaktion auf ein Bestimmen, dass dieselbe Orientierung aufweisende Textzeilen in dem zweiten Digitaldokument auf sequenzielle Weise liegen, auf Grundlage des Abfragens der Koordinaten erfolgendes Bestimmen, dass die Eingabeabfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird;
    • in Reaktion auf ein Bestimmen, dass Textzeilen in dem zweiten Digitaldokument auf willkürliche Weise liegen, auf Grundlage des Abfragens der Gitterkoordinaten erfolgendes Bestimmen, dass die Eingabeabfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird;
    • Ausführen eines ersten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem ersten logischen Block, der dem Textobjekt entspricht, gehören, wobei das erste Clusterverfahren in Reaktion darauf ausgeführt wird, dass Textblöcke der Eingabeabfolge in einer sequenziellen Lesereihenfolge empfangen werden; und
    • Ausführen eines zweiten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem zweiten logischen Block, der dem Textobjekt entspricht, gehören, wobei das zweite Clusterverfahren in Reaktion darauf ausgeführt wird, dass Textblöcke der Eingabeabfolge in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen werden, wobei das zweite Clusterverfahren verschieden von dem ersten Clusterverfahren ist.
  • Punkt 15. System nach Punkt 14, wobei eines oder beide von den ersten und zweiten Clusterverfahren konfiguriert sind zum:
    • Messen eines Abstandes zwischen den ersten und zweiten Textblöcken und in Reaktion darauf, dass der Abstand kleiner als eine Abstandsschwelle ist, erfolgenden Bestimmen, dass die ersten und zweiten Textblöcke entweder zu dem ersten logischen Block oder dem zweiten logischen Block gehören.
  • Punkt 16. System nach Punkt 14, wobei in Reaktion darauf, dass (a) bestimmt wird, dass Textzeilen in dem zweiten Digitaldokument auf willkürlich schachbrettartige Weise liegen und (b) eine Rate von grammatikalischen Fehlern, die der Eingabeabfolge zugeordnet ist, eine Fehlerschwelle übersteigt, bestimmt wird, dass die Eingabeabfolge in einer nicht sequenziellen willkürlichen Reihenfolge empfangen wird.
  • Punkt 17. System nach Punkt 14, wobei das erste Clusterverfahren umfasst:
    • Generieren von Textzeilen aus einer Kombination von zwei oder mehr Textblöcken in der Eingabeabfolge auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die zwei oder mehr Textblöcke;
    • Berechnen eines Drehwinkels der generierten Textzeilen;
    • Drehen der generierten Textzeilen zum Korrigieren des Drehwinkels;
    • Bestimmen einer Orientierung der generierten Textzeilen, wobei die Orientierung eine von horizontal orientierten Textzeilen oder vertikal orientierten Textzeilen ist; Sortieren der horizontal orientierten Textzeilen von oben nach unten;
    • Sortieren der vertikal orientierten Textzeilen von links nach rechts;
    • Clustern der sortierten horizontal orientierten Textzeilen zu logischen Blöcken von horizontalem Text;
    • Clustern der sortierten vertikal orientierten Textzeilen zu logischen Blöcken von vertikalem Text; und
    • Drehen wenigstens eines logischen Blocks unter den logischen Blöcken von horizontalem Text und den logischen Blöcken von vertikalem Text zum Wiederherstellen des Drehwinkels von Textzeilen, die in dem gedrehten wenigstens einen logischen Block beinhaltet sind.
  • Punkt 18. System nach Punkt 14, wobei das zweite Clusterverfahren umfasst:
    • Berechnen eines Drehwinkels der Textblöcke, wobei die Textblöcke Elemente umfassen;
    • Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels;
    • Drehen der Cluster derart, dass alle gedrehten Cluster eine horizontale Orientierung aufweisen;
    • für jedes Cluster (a) Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, (b) Clustern der horizontalen Zeilen zu horizontalen Absätzen, und (c) Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind;
    • für jeden horizontalen Absatz (a) Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen, (b) Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind, und (c) Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, andernfalls Wählen eines Vertikalzeilenformates; und
    • Drehen der horizontalen Absätze zum Wiederherstellen des Drehwinkels.

Claims (20)

  1. Computerprogrammerzeugnis, das ein oder mehrere nichttransitorische bzw. nichttemporäre maschinell lesbare Medien beinhaltet, die mit Anweisungen codiert sind, die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass ein Prozess zum Clustern eines Textes ausgeführt wird, der aus einem ersten Digitaldokument, das ein erstes Format aufweist, in ein zweites Digitaldokument, das ein zweites Format aufweist, das von dem ersten Format verschieden ist, exportiert wird, wobei der Prozess umfasst: in dem zweiten Digitaldokument erfolgendes Empfangen eines Streams bzw. einer Abfolge von Textblöcken, die aus dem ersten Digitaldokument exportiert sind, wobei die Textblöcke erste und zweite Textblöcke, die Teil eines Textobjektes des ersten Digitaldokumentes sind, beinhalten; in Reaktion darauf, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird, erfolgendes Ausführen eines ersten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem logischen Block, der dem Textobjekt entspricht, gehören; und in Reaktion darauf, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, erfolgendes Ausführen eines zweiten Clusterverfahrens zum Bestimmen, ob die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören, wobei das zweite Clusterverfahren verschieden von dem ersten Clusterverfahren ist; wobei eines oder beide von den ersten und zweiten Clusterverfahren beinhalten: Messen des Abstandes zwischen den ersten und zweiten Textblöcken und in Reaktion darauf, dass dieser Abstand kleiner als eine Abstandsschwelle ist, erfolgendes Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören.
  2. Computerprogrammerzeugnis nach Anspruch 1, wobei der Prozess des Weiteren umfasst: heuristisches Bestimmen, ob die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  3. Computerprogrammerzeugnis nach Anspruch 2, wobei das heuristische Bestimmen, ob die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, eines oder mehrere beinhaltet von: Abfragen einer Gitterkoordinate, die jeden Textblock begleitet; in Reaktion auf ein Bestimmen, dass dieselbe Orientierung aufweisende Textzeilen in dem zweiten Digitaldokument auf sequenzielle Weise liegen, auf Grundlage des Abfragens erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird; in Reaktion auf ein Bestimmen, dass die Textzeilen in dem zweiten Digitaldokument auf willkürlich schachbrettartige Weise liegen, auf Grundlage des Abfragens erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird; und Durchführen einer grammatikalischen Analyse wenigstens eines Abschnittes der empfangenen Abfolge von Textblöcken zum Detektieren von grammatikalischen Fehlern und in Reaktion darauf, dass eine Rate von grammatikalischen Fehlern eine Fehlerschwelle übersteigt, erfolgendes Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  4. Computerprogrammerzeugnis nach einem der vorhergehenden Ansprüche, wobei die Textblöcke des Weiteren dritte und vierte Textblöcke, die Teil des Textobjektes sind, beinhalten und wobei die Abstandsschwelle eine erste Abstandsschwelle ist und wobei eines oder beide von den ersten und zweiten Clusterverfahren beinhalten: Generieren einer ersten Textzeile, die den ersten Textblock und den dritten Textblock beinhaltet, auf Grundlage einer Nähemessung zum Bestimmen, dass der Abstand zwischen dem ersten Textblock und dem dritten Textblock innerhalb einer zweiten Abstandsschwelle ist; und Generieren einer zweiten Textzeile, die den zweiten Textblock und den vierten Textblock beinhaltet, auf Grundlage einer Nähemessung zum Bestimmen, dass der Abstand zwischen dem zweiten Textblock und dem vierten Textblock innerhalb einer dritten Abstandsschwelle ist; wobei das Messen des Abstandes zwischen den ersten und zweiten Textblöcken und das Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören, beinhaltet: Messen des Abstandes zwischen den ersten und zweiten Textzeilen und in Reaktion darauf, dass dieser Abstand kleiner als die erste Abstandsschwelle ist, erfolgendes Bestimmen, dass die ersten und zweiten Textzeilen zu dem logischen Block, der dem Textobjekt entspricht, gehören; wobei die ersten, zweiten und dritten Abstandsschwellen jeweils zueinander gleich oder voneinander verschieden sein können.
  5. Computerprogrammerzeugnis nach einem der vorhergehenden Ansprüche, wobei: die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird, wobei die sequenzielle Lesereihenfolge von links nach rechts und von oben nach unten für horizontal orientierte Textblöcke und von oben nach unten und von links nach rechts für vertikal orientierte Textblöcke fortschreitet; oder die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird, wobei die nicht sequenzielle, willkürliche Reihenfolge unabhängig von der sequenziellen Lesereihenfolge ist.
  6. Computerprogrammerzeugnis nach Anspruch 5, wobei die Textblöcke ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worte umfassen.
  7. Computerprogrammerzeugnis nach einem der vorhergehenden Ansprüche, wobei das erste Clusterverfahren beinhaltet: Generieren von Textzeilen als Kombination von zweien oder mehr der Textblöcke auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die Textblöcke; Berechnen eines Drehwinkels der generierten Textzeilen; Drehen der generierten Textzeilen zum Korrigieren des Drehwinkels; Bestimmen einer Orientierung der generierten Textzeilen, wobei die Orientierung eine von horizontal oder vertikal ist; Sortieren der horizontal orientierten Textzeilen von oben nach unten; Sortieren der vertikal orientierten Textzeilen von links nach rechts; Clustern der sortierten horizontal orientierten Textzeilen zu logischen Blöcken; Clustern der sortierten vertikal orientierten Textzeilen zu logischen Blöcken; und Drehen der logischen Blöcke zum Wiederherstellen des Drehwinkels der Textzeilen, die in den logischen Blöcken beinhaltet sind.
  8. Computerprogrammerzeugnis nach Anspruch 7, wobei das Generieren von Textzeilen umfasst: Bewerten der Ausrichtungskostenfunktion als Abstand zwischen einer ersten Achse, die einen Anfangspunkt und einen Endpunkt des ersten Textblocks verbindet, und einer zweiten Achse, die einen Anfangspunkt und einen Endpunkt des zweiten Textblocks verbindet; Bewerten der Nähemessung als Abstand zwischen dem Endpunkt des ersten Textblocks und dem Anfangspunkt des zweiten Textblocks; Generieren einer ersten Textzeile, die den ersten Textblock umfasst; in Reaktion darauf, dass die Ausrichtungskostenfunktion kleiner als eine erste Schwelle ist und die Nähemessung kleiner als eine zweite Schwelle ist, erfolgendes Verketten des zweiten Textblocks mit der ersten Textzeile; und in Reaktion darauf, dass die Ausrichtungskostenfunktion nicht kleiner als die erste Schwelle ist und/oder die Nähemessung nicht kleiner als die zweite Schwelle ist, erfolgendes Generieren einer zweiten Textzeile, die den zweiten Textblock umfasst.
  9. Computerprogrammerzeugnis nach Anspruch 7 oder 8, wobei das Bestimmen der Orientierung der generierten Textzeile umfasst: Berechnen eines durchschnittlichen Drehwinkels von Schriftzeichen der generierten Textzeile; in Reaktion darauf, dass der durchschnittliche Drehwinkel der Schriftzeichen vom Drehwinkel der generierten Textzeile um 90° innerhalb eines Toleranzbereiches verschieden ist, erfolgendes Bestimmen der Orientierung als vertikal; und in Reaktion darauf, dass der durchschnittliche Drehwinkel der Schriftzeichen vom Drehwinkel der generierten Textzeile nicht um 90° innerhalb des Toleranzbereiches verschieden ist, erfolgendes Bestimmen der Orientierung als horizontal.
  10. Computerprogrammerzeugnis nach einem der Ansprüche 7 bis 9, wobei: das Clustern der sortierten horizontal orientierten Textzeilen umfasst: Identifizieren von Textzeilen, die vertikal innerhalb einer ersten Toleranz überlappen und die vertikal innerhalb einer zweiten Toleranz beabstandet sind, wobei die erste Toleranz und die zweite Toleranz auf einer Fontgröße, die den Textzeilen zugeordnet ist, beruhen; Clustern der identifizierten Textzeilen zu logischen Blöcken, Clustern der logischen Blöcke, die vertikal innerhalb der ersten Toleranz überlappen, und Zusammenfügen von Textzeilen, die eine gemeinsame horizontale Achse teilen, innerhalb des geclusterten logischen Blocks; und das Clustern der sortierten vertikal orientierten Textzeilen umfasst: Identifizieren von Textzeilen, die horizontal innerhalb einer ersten Toleranz überlappen und die horizontal innerhalb einer zweiten Toleranz beabstandet sind, wobei die erste Toleranz und die zweite Toleranz auf einer Fontgröße, die den Textzeilen zugeordnet ist, beruhen, Clustern der identifizierten Textzeilen zu logischen Blöcken, Clustern der logischen Blöcke, die horizontal innerhalb der ersten Toleranz überlappen, und Zusammenfügen von Textzeilen, die eine gemeinsame vertikale Achse teilen, innerhalb des geclusterten logischen Blocks.
  11. Computerprogrammerzeugnis nach einem der vorhergehenden Ansprüche, wobei das zweite Clusterverfahren beinhaltet: Empfangen von mehreren Textblöcken, wobei die Textblöcke Elemente umfassen, die ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten beinhalten; Berechnen eines Drehwinkels der Textblöcke; Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels; Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist, derart, dass alle gedrehten Cluster eine horizontale Orientierung aufweisen; für jedes Cluster Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, Clustern der horizontalen Zeilen zu horizontalen Absätzen, und Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind; für jeden horizontalen Absatz Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen, Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind, und Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, ansonsten Wählen eines Vertikalzeilenformates; und Drehen der Absätze zum Wiederherstellen des Drehwinkels der Cluster, die den Absätzen zugeordnet sind.
  12. Computerprogrammerzeugnis, das ein oder mehrere nichttransitorische bzw. nichttemporäre maschinell lesbare Medien beinhaltet, die mit Anweisungen codiert sind, die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass ein Prozess zum Clustern von Text ausgeführt wird, wobei der Prozess umfasst: Empfangen von mehreren Textblöcken, wobei die Textblöcke Elemente umfassen, die ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten beinhalten; Berechnen eines Drehwinkels der Textblöcke; Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels; Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist; für jedes Cluster Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen; Clustern der horizontalen Zeilen zu horizontalen Absätzen; Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind; für jeden horizontalen Absatz Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen; Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind; und Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, andernfalls Wählen eines Vertikalzeilenformates; und Drehen der Absätze zum Wiederherstellen des Drehwinkels der Cluster, die den Absätzen zugeordnet sind.
  13. Computerprogrammerzeugnis nach Anspruch 12, wobei: das Erzeugen von horizontalen Zeilen umfasst: Identifizieren eines am weitesten oben befindlichen Elementes der Textblöcke, die in dem Cluster beinhaltet sind; Identifizieren von Textblöcken, die innerhalb eines vertikalen Schwellenabstandes einer horizontalen Zeile, die durch das am weitesten oben befindliche Element hindurchgeht, befindlich sind; Durchlaufen der identifizierten Textblöcke in einer von rechts nach links gegebenen Reihenfolge von dem identifizierten am weitesten oben befindlichen Element bis hin zu einer am weitesten links befindlichen räumlichen Diskontinuität, wobei die räumliche Diskontinuität auf einer Fontgröße und einer Textskalierung, die den Textblöcken zugeordnet sind, beruht; Durchlaufen der identifizierten Textblöcke in einer von links nach rechts gegebenen Reihenfolge von dem identifizierten am weitesten oben befindlichen Element bis hin zu einer am weitesten rechts befindlichen räumlichen Diskontinuität; und Erzeugen der horizontalen Zeile derart, dass der Textblock von der am weitesten links befindlichen räumlichen Diskontinuität zu der am weitesten rechts befindlichen räumlichen Diskontinuität beinhaltet ist; und das Erzeugen von vertikalen Zeilen umfasst: Identifizieren eines am weitesten rechts befindlichen Elementes der Textblöcke, die in dem Cluster beinhaltet sind; Identifizieren von Textblöcken, die innerhalb eines horizontalen Schwellenabstandes einer vertikalen Zeile, die durch das am weitesten rechts befindliche Element hindurchgeht, befindlich sind; Durchlaufen der identifizierten Textblöcke in einer von unten nach oben gegebenen Reihenfolge von dem identifizierten am weitesten rechts befindlichen Element bis hin zu einer am weitesten oben befindlichen räumlichen Diskontinuität, wobei die räumliche Diskontinuität auf einer Fontgröße und einer Textskalierung, die den Textblöcken zugeordnet sind, beruht; Durchlaufen der identifizierten Textblöcke in einer von oben nach unten gegebenen Reihenfolge von dem identifizierten am weitesten rechts befindlichen Element bis hin zu einer am weitesten unten befindlichen räumlichen Diskontinuität; und Erzeugen der vertikalen Zeile derart, dass der Textblock von der am weitesten oben befindlichen räumlichen Diskontinuität zu der am weitesten unten befindlichen räumlichen Diskontinuität beinhaltet ist.
  14. Computerprogrammerzeugnis nach Anspruch 12 oder 13, wobei das Clustern der horizontalen Zeilen zu horizontalen Absätzen umfasst: Identifizieren von horizontalen Textzeilen, die vertikal innerhalb einer ersten Toleranz überlappen und die vertikal innerhalb einer zweiten Toleranz beabstandet sind, wobei die erste Toleranz und die zweite Toleranz auf einer Fontgröße, die den horizontalen Textzeilen zugeordnet ist, beruhen; Clustern der identifizierten horizontalen Textzeilen zu logischen Blöcken; Clustern der logischen Blöcke, die vertikal innerhalb der ersten Toleranz überlappen; und Zusammenfügen der horizontalen Textzeilen, die eine gemeinsame horizontale Achse teilen, innerhalb des geclusterten logischen Blocks.
  15. Computerprogrammerzeugnis nach einem der Ansprüche 12 bis 14, wobei das Wählen des Horizontalzeilenformates des Weiteren auf einem Bestimmen beruht, dass eine Zählung der Anzahl von horizontalen Zeilen kleiner als eine Zählung der Anzahl von vertikalen Zeilen ist.
  16. System zum Clustern von Text, wobei das System umfasst: Mittel zum Bestimmen, ob Textblöcke, die in einem Eingabestream bzw. einer Eingabeabfolge empfangen werden, in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen werden, wobei die Textblöcke aus einem Digitaldokument exportiert sind und erste und zweite Textblöcke, die Teil eines Textobjektes eines Digitaldokumentes sind, beinhalten; ein erstes Clustermittel zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem logischen Block, der dem Textobjekt entspricht, gehören, in Reaktion darauf, dass Textblöcke der Eingabeabfolge in einer sequenziellen Lesereihenfolge empfangen werden; und ein zweites Clustermittel zum Bestimmen, ob die ersten und zweiten Textblöcke zu einem logischen Block, der dem Textobjekt entspricht, gehören, in Reaktion darauf, dass Textblöcke der Eingabeabfolge in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen werden, wobei das zweite Clustermittel verschieden von dem ersten Clustermittel ist.
  17. System nach Anspruch 16, wobei eines oder beide von den ersten und zweiten Clustermitteln konfiguriert sind zum: Messen des Abstandes zwischen den ersten und zweiten Textblöcken und in Reaktion darauf, dass dieser Abstand kleiner als eine Abstandsschwelle ist, erfolgenden Bestimmen, dass die ersten und zweiten Textblöcke zu dem logischen Block, der dem Textobjekt entspricht, gehören.
  18. System nach Anspruch 16 oder 17, wobei das Digitaldokument ein erstes Digitaldokument, das ein erstes Format aufweist, ist und die Textblöcke aus dem ersten Digitaldokument in ein zweites Digitaldokument, das ein zweites Format aufweist, das von dem ersten Format verschieden ist, exportiert werden, und das Mittel zum Bestimmen, ob die Textblöcke, die in der Eingabeabfolge empfangen werden, in einer sequenziellen Lesereihenfolge oder einer nicht sequenziellen, willkürlichen Reihenfolge empfangen werden, einen oder mehrere Prozessoren beinhaltet, die konfiguriert sind zum: Abfragen von Gitterkoordinaten, die Textblöcken zugeordnet sind; in Reaktion auf ein Bestimmen, dass dieselbe Orientierung aufweisende Textzeilen in dem zweiten Digitaldokument auf sequenzielle Weise liegen, auf Grundlage des Abfragens erfolgenden Bestimmen, dass die Abfolge von Textblöcken in einer sequenziellen Lesereihenfolge empfangen wird; und in Reaktion auf ein Bestimmen, dass Textzeilen in dem zweiten Digitaldokument auf willkürlich schachbrettartige Weise liegen, auf Grundlage des Abfragens erfolgenden Bestimmen, dass die Abfolge von Textblöcken in einer nicht sequenziellen, willkürlichen Reihenfolge empfangen wird.
  19. System nach einem der Ansprüche 16 bis 18, wobei das erste Clustermittel einen oder mehrere Prozessoren beinhaltet, die konfiguriert sind zum: Generieren von Textzeilen als Kombination von zweien oder mehr der Textblöcke auf Grundlage einer Bewertung einer Ausrichtungskostenfunktion und einer Nähemessung mit Anwendung auf die Textblöcke; Berechnen eines Drehwinkels der generierten Textzeilen; Drehen der generierten Textzeilen zum Korrigieren des Drehwinkels; Bestimmen einer Orientierung der generierten Textzeilen, wobei die Orientierung eine von horizontal oder vertikal ist; Sortieren der horizontal orientierten Textzeilen von oben nach unten; Sortieren der vertikal orientierten Textzeilen von links nach rechts; Clustern der sortierten horizontal orientierten Textzeilen zu logischen Blöcken; Clustern der sortierten vertikal orientierten Textzeilen zu logischen Blöcken; und Drehen der logischen Blöcke zum Wiederherstellen des Drehwinkels der Textzeilen, die in den logischen Blöcken beinhaltet sind.
  20. System nach einem der Ansprüche 16 bis 19, wobei das zweite Clustermittel einen oder mehrere Prozessoren beinhaltet, die konfiguriert sind zum: Empfangen von mehreren Textblöcken, wobei die Textblöcke Elemente umfassen, die ein(e) oder mehrere von Glyphen, Schriftzeichen und/oder Worten beinhalten; Berechnen eines Drehwinkels der Textblöcke; Gruppieren der Textblöcke zu Clustern auf Grundlage des Drehwinkels; Drehen der Cluster zum Korrigieren des Drehwinkels, der dem Cluster zugeordnet ist, derart, dass alle gedrehten Cluster eine horizontale Orientierung aufweisen; für jedes Cluster Erzeugen von horizontalen Zeilen, die die Textblöcke, die in dem Cluster beinhaltet sind, umfassen, Clustern der horizontalen Zeilen zu horizontalen Absätzen, und Bestimmen einer durchschnittlichen horizontalen Beabstandung zwischen den Elementen der Textblöcke, die in den horizontalen Zeilen beinhaltet sind; für jeden horizontalen Absatz Erzeugen von vertikalen Zeilen, die die Textblöcke, die in dem horizontalen Absatz beinhaltet sind, umfassen, Bestimmen einer durchschnittlichen vertikalen Beabstandung zwischen den Elementen der Textblöcke, die in den vertikalen Zeilen beinhaltet sind, und Wählen eines Horizontalzeilenformates, wenn die durchschnittliche horizontale Beabstandung kleiner als die durchschnittliche vertikale Beabstandung ist, andernfalls Wählen eines Vertikalzeilenformates; und Drehen der Absätze zum Wiederherstellen des Drehwinkels der Cluster, die den Absätzen zugeordnet sind.
DE102021001321.2A 2020-06-25 2021-03-11 Logisches Gruppieren von exportierten Textblöcken Pending DE102021001321A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/911,569 US10970458B1 (en) 2020-06-25 2020-06-25 Logical grouping of exported text blocks
US16/911,569 2020-06-25

Publications (1)

Publication Number Publication Date
DE102021001321A1 true DE102021001321A1 (de) 2021-12-30

Family

ID=75275360

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021001321.2A Pending DE102021001321A1 (de) 2020-06-25 2021-03-11 Logisches Gruppieren von exportierten Textblöcken

Country Status (3)

Country Link
US (1) US10970458B1 (de)
DE (1) DE102021001321A1 (de)
GB (2) GB2596384B (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713519B2 (en) * 2017-06-22 2020-07-14 Adobe Inc. Automated workflows for identification of reading order from text segments using probabilistic language models
US11132497B2 (en) * 2018-10-14 2021-09-28 Bonggeun Kim Device and method for inputting characters
US12169681B2 (en) 2021-05-04 2024-12-17 Adobe Inc. Context-aware font recommendation from text
CN113673294B (zh) * 2021-05-11 2024-06-18 苏州超云生命智能产业研究院有限公司 文献关键信息的提取方法、装置、计算机设备和存储介质
CN113869314B (zh) * 2021-10-13 2024-07-16 广东金赋科技股份有限公司 一种文本方向聚类矫正的图像信息提取方法及系统
US11775734B2 (en) * 2021-11-24 2023-10-03 Adobe Inc. Multimodal input contextual font recommendations
US12205393B2 (en) * 2022-07-12 2025-01-21 Dell Products L.P. Automating text and graphics coverage analysis of a website page
CN115482537B (zh) * 2022-10-14 2024-03-12 北京中科万国互联网技术有限公司 基于迭代聚类处理ocr识别结果的文本对齐方法及系统
US12361202B2 (en) 2022-11-18 2025-07-15 Microsoft Technology Licensing, Llc Method and system of generating an editable document from a non-editable document
CN115641573B (zh) * 2022-12-22 2023-07-14 苏州浪潮智能科技有限公司 一种文本排序方法、装置、电子设备和存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188779B1 (en) * 1998-12-30 2001-02-13 L&H Applications Usa, Inc. Dual page mode detection
JP2005526314A (ja) * 2002-05-20 2005-09-02 タタ インフォテック リミティド 文書構造識別器
US7386789B2 (en) * 2004-02-27 2008-06-10 Hewlett-Packard Development Company, L.P. Method for determining logical components of a document
ATE530988T1 (de) * 2005-07-27 2011-11-15 Hewlett Packard Development Co Verfahren zum finden der textlesereihenfolge in einem dokument
US7715045B2 (en) * 2006-10-31 2010-05-11 Pitney Bowes Inc. System and methods for comparing documents
WO2008101355A1 (en) * 2007-02-23 2008-08-28 1698413 Ontario Inc. System and method for delivering content and advertisements
US8719701B2 (en) * 2009-01-02 2014-05-06 Apple Inc. Identification of guides and gutters of a document
CN101882215B (zh) * 2009-05-25 2013-01-09 汉王科技股份有限公司 判断文本区域排版方向的方法
US8549399B2 (en) * 2011-01-18 2013-10-01 Apple Inc. Identifying a selection of content in a structured document
US10146419B2 (en) * 2012-02-20 2018-12-04 Wix.Com Ltd. Method and system for section-based editing of a website page
KR102084176B1 (ko) * 2012-10-10 2020-03-04 삼성전자주식회사 휴대용 장치 및 이의 영상 표시 방법
US9817804B2 (en) * 2013-09-12 2017-11-14 Wix.Com Ltd. System for comparison and merging of versions in edited websites and interactive applications
CN106295486B (zh) * 2015-06-12 2019-11-05 富士通株式会社 文档图像的处理方法和处理装置
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
CN106326854B (zh) * 2016-08-19 2019-09-06 掌阅科技股份有限公司 一种版式文档段落识别方法
RU2699687C1 (ru) * 2018-06-18 2019-09-09 Общество с ограниченной ответственностью "Аби Продакшн" Обнаружение текстовых полей с использованием нейронных сетей
CN111062365B (zh) * 2019-12-30 2023-05-26 上海肇观电子科技有限公司 识别混合排版文字的方法、设备、芯片电路和计算机可读存储介质

Also Published As

Publication number Publication date
GB2606474A (en) 2022-11-09
GB2606474B (en) 2023-04-26
GB202103307D0 (en) 2021-04-21
US10970458B1 (en) 2021-04-06
GB2596384B (en) 2022-10-12
GB2596384A (en) 2021-12-29
GB202209370D0 (en) 2022-08-10

Similar Documents

Publication Publication Date Title
DE102021001321A1 (de) Logisches Gruppieren von exportierten Textblöcken
DE69525401T2 (de) Verfahren und Gerät zur Identifikation von Wörtern, die in einem portablen elektronischen Dokument beschrieben sind
DE69624433T2 (de) Gerät und Verfahren zur Extrahierung von Titeln aus Dokumentbildern
DE69610882T2 (de) Blockselektionsystem, bei dem überlappende Blöcke aufgespaltet werden
DE69434434T2 (de) Verfahren und gerät um text- und bilddaten zu synchronisieren, anzeigen und manipulieren
DE4311172C2 (de) Verfahren und Einrichtung zum Identifizieren eines Schrägenwinkels eines Vorlagenbildes
DE69610478T2 (de) Zeichenerkennungssystembestimmung von abgetasteten und "echtzeit"-handgeschriebenen zeichen
DE112009004951T5 (de) Verfahren und System zur Dokumentenrekonstruktion
DE69226846T2 (de) Verfahren zur Bestimmung von Wortgrenzen im Text
US9817804B2 (en) System for comparison and merging of versions in edited websites and interactive applications
DE69231923T2 (de) System mit Annäherungsmittel zur Erkennung von graphischen Elementen in einer Zeichnung
JP2023159102A (ja) モバイル向けのおよび他の表示環境をサポートするインタラクティブなサイトおよびアプリケーションの自動変換のためのシステムおよび方法
DE60219048T2 (de) Sektionsextrahierungswerkzeug für pdf-dokumente
DE69817916T2 (de) Ordnen von Textgruppen in einem Bild
DE69932167T2 (de) Zeichenerkennung
DE602005002473T2 (de) Verfahren zum Erkennen von semantischen Einheiten in einem elektronischen Dokument
DE112018005418T5 (de) Kognitive dokumentbild-digitalisierung
DE69026885T2 (de) Dynamische Selektion von Datenformaten für rekursiv geschachtelte logische Elemente
DE102013221125A1 (de) System, Verfahren und Computer-Programm-Produkt zum Durchführen einer Zeichenkette-Suche
DE212012000266U1 (de) System zum Bereitstellen einer Scrollkarte
DE112019000972T5 (de) Verfahren und Systeme für vereinfachte grafische Abbildungen von bipartiten Graphen
DE112020002886T5 (de) Kontextabhängiges data-mining
DE112012004809T5 (de) Kantenverfolgung mit Hysterese-Schwellenwertbildung
DE102016015381A1 (de) Verwendung von Bloom-Filtern zur Vereinfachung der Erweiterung und Unterteilung eines dynamischen Fonts
DE112021000371T5 (de) Digitale bildbearbeitung

Legal Events

Date Code Title Description
R012 Request for examination validly filed