-
Die vorliegende Erfindung betrifft
die Erzeugung einer Layoutbeschreibung auf der Grundlage eines eingegebenen
Bitmaskenbilds, die das Layout des ursprünglichen eingegebenen Bitmaskenbilds
genau wiedergibt.
-
In den letzten Jahren hat die Popularität des Internet
drastisch zugenommen. Ein Grund für eine derartige Zunahme besteht
in der weit verbreiteten Anwendung von HTML (HyperText Markup Language),
bei dem es sich um eine Sprache zum Beschreiben des Dokumenterscheinungsbilds,
des Dokumentlayouts und von Hyperlink-Spezifikationen handelt. Sie
definiert die Syntax, die die Struktur und den Inhalt eines Dokuments
einschließlich
Text, Bildern und anderer unterstützter Medien beschreibt. Die
Sprache stellt auch Verbindungen zwischen Dokumenten und anderen
Internet-Betriebsmitteln über
nachstehend als Hypertext-Links bezeichnete
Hypertext-Verknüpfungen
und andere Hyperlinks bereit. Unter Verwendung von HTML kann eine Web-Seite
erzeugt werden, die zusätzlich
zu Bitmaskenbildern, Grafikbildern und Text verschiedener Stile
und Größen Hyperlinks
umfaßt,
die es einem Betrachter der Web-Seite erlauben, leicht zu einem
anderen Punkt in der Seite oder zu einer völlig anderen Web-Seite, selbst
einer durch einen anderen Server bereitgestellten Web-Seite, zu
springen.
-
Sobald eine HTML-Datei über einen
Server auf dem World-Wide
Web verfügbar
gemacht wurde, kann irgendein mit dem World-Wide Web verbundener
Client auf die Seite zugreifen, indem lediglich die Seitenadresse
in das passende Feld seines Browsers eingetippt wird. Nachdem die
Adresse eingegeben worden ist, fordert der Browser den Server zum
Senden der HTML-Datei auf, die Text, Verweise auf Grafik- und Bitmaskenbilddateien
und Formatierungs- und Hyperlink-Informationen für die ganze Seite umfassen
kann. Bei dem Empfang der HTML-Datei fordert der Browser automatisch
die Grafik- und Bitmaskenbilddateien, auf die in der HTML-Datei
verwiesen wird, von der identifizierten Quelle an.
-
Zum Anzeigen der HTML-Datei und der
heruntergeladenen Bilddateien stützt
sich der Browser auf in die HTML-Datei eingebettete HTML-Befehle.
Auf diese Befehle wird als "Identifizierungskennzeichen" Bezug genommen.
Die Identifizierungskennzeichen geben Merkmale oder Elemente einer
Seite an und veranlassen den Browser zur Ausführung verschiedener Funktionen
wie beispielsweise eines speziellen Typs von Formatierung. HTML-Identifizierungskennzeichen
können
in HTML-Dateien durch ihre Syntax identifiziert werden. D. h., die
Identifizierungskennzeichen sind durch linke und rechte spitze Klammern
umgeben, wie beispielsweise "<P>". In diesem Fall gibt "<" den
Anfang des HTML-Identifizierungskennzeichens
an, "P" ist das Identifizierungskennzeichen
selbst (in diesem Fall ein einen neuen Textabsatz angebendes Identifizierungskennzeichen),
und ">" gibt das Ende des Identifizierungskennzeichens
an. Häufig
treten Identifizierungskennzeichen in Paaren auf, um den Anfang
und das Ende einer speziellen Funktion anzugeben. Das Anfangs-Identifizierungskennzeichen
startet ein Merkmal (wie beispielsweise Überschrift, Fettdruck usw.),
und das End-Identifizierungskennzeichen schaltet es ab. End-Identifizierungskennzeichen
bestehen typischerweise aus dem Namen des startenden Identifizierungskennzeichens,
dem ein Vorwärtsschrägstrich
(/) vorangeht. Beispielsweise zeigen <strong> und </strong>, die Text umgeben,
den umgebenden Text stärker
an als anderen Text. Irgendwelche zusätzlichen Wörter in einem Identifizierungskennzeichen
sind Attribute, gelegentlich mit einem zugeordneten Wert nach einem
Gleichheitszeichen (=), die die Aktionen des Identifizierungskennzeichens
weiter definieren oder modifizieren.
-
HTML 3.0 ist gegenwärtig der
de facto World-Wide-Web-Standard,
der zulässige
Identifizierungskennzeichen und die Verschachtelung von Identifizierungskennzeichen
definiert. Annähernd
100 verschiedene Identifizierungskennzeichen sind erlaubt und definiert.
-
Aufgrund der Komplexität von HTML
3.0 sowie seiner beschwerlichen Verwendungsanforderungen wird eine
beträchtliche
Anstrengung durch den Web-Designer aufgeboten, wenn er visuell ansprechende
und verwendbare Web-Seiten verfaßt. Es wird z. B. angenommen,
daß eine
Organisation gute vorhandene geschriebene Marketingmaterialien hatte,
die sie auf einer Web-Seite identisch wiedergeben wollte. Selbst
diese scheinbar einfache Aufgabe hat es typischerweise erfordert,
daß ein
Spezialist in einem Versuch, das Layout und Erscheinungsbild der
geschriebenen Materialien wiederzugeben, eine bedeutende Menge von
Zeit für
die Verfassung von HTML-Anweisungen von Hand verwendet hat.
-
Es sind mehrere Systeme vorgeschlagen
worden, die diese Arbeit der Verfassung von HTML-Dateien aus geschriebenen Dokumenten
automatisieren würden.
Xerox Text Bridge Pro und Caere Omni Page Pro sind Beispiele für Systeme,
die geschriebene Dokumente einscannen und auf der Grundlage des
eingescannten Dokumentbilds HTML-Dateien erzeugen. Es ist bei der
Erzeugung von HTML-Dateien, die das Layout, Tabellen und Bilder
des ursprünglichen
geschriebenen Dokuments genau darstellen, wo diese Systeme versagen.
Insbesondere ist die automatische Erzeugung von HTML-Anweisungen für den Fall,
in dem das geschriebene Dokument in Spalten angeordnet ist, oder
allgemeiner, wenn Bereiche in dem ursprünglichen Dokument horizontal
angrenzend sind, ein Hauptproblem gewesen. Der Ausdruck "horizontal angrenzend" bedeutet bei der
Verwendung mit Bezug auf zwei Bildblöcke eine Situation, in der
die vertikale Ausdehnung der zwei Blöcke überlappt, oder äquivalent,
in der eine horizontale Linie gefunden werden kann, die beide Blöcke schneidet. Ähnlich bedeutet
der Ausdruck "vertikal
angrenzend" bei
der Verwendung mit Bezug auf zwei Bildblöcke eine Situation, in der
die horizontale Ausdehnung der zwei Blöcke überlappt, oder äquivalent,
in der eine vertikale Linie gefunden werden kann, die beide Blöcke schneidet.
-
Ein typisches Beispiel für die mit
derartigen Systemen verbundenen Probleme ist unter Bezugnahme auf 1 und 2 veranschaulicht. 1 stellt ein in das HTML-Format zu wandelndes
ursprüngliches
gedrucktes Dokument 10 dar. Wie es in 1 gezeigt ist, weist das ursprüngliche
Dokument neben anderen Merkmalen auf: einen Titel 1 in
der oberen linken Ecke, einen Untertitel 2 in der oberen
rechten Ecke, Textspalten 4, 5 und 6,
ein Bild 7 in der unteren linken Ecke und eine Fußzeile 9 in
der unteren rechten Ecke.
-
2 veranschaulicht
es, wie auf der Grundlage der durch ein vorhandenes System zum Wandeln von
Bitmaskenbildern in HTML erzeugten HTML-Datei eine Web-Seite 20 durch einen
Web-Browser auf einer Anzeige 23 angezeigt werden würde. Denjenigen
in 1 entsprechende Elemente
in 2 sind ähnlich denen
in 1 numeriert. Somit
wird nach der Verarbeitung durch das vorhandene System der Titel 1 als
ein Titel 11 wiedergegeben. Jedoch wird der Untertitel 2 statt
in der oberen rechten Ecke wiedergegeben zu werden, statt dessen
als ein Element 12 in der oberen linken Ecke gerade unterhalb
des Titels 11 wiedergegeben. Auf ähnliche Weise ist die ganze
Textspaltenstruktur des ursprünglichen
Dokuments beseitigt worden, und das Bild 17 belegt die
ganze Breite der Seite und ist zwischen Textzeilen gelegt, statt
sich in der unteren linken Ecke zu befinden. Schließlich wird
eine Fußzeile 19 in
der unteren linken Ecke statt der unteren rechten Ecke wiedergegeben.
-
Der vorstehende Vergleich zeigt das
vollständige
Versagen von kommerziell verfügbaren
Systemen bei der Erfassung vieler Layout- und Stilistikelemente
des ursprünglichen
Dokuments. Andere bekannte verfügbare
Systeme verpassen ebenfalls zu häufig
Layoutmerkmale. Entsprechend befassen sich kommerziell verfügbare Systeme
nicht angemessen mit den durch die komplexe und beschwerliche Natur
von HTML verursachten Problemen.
-
Y. Tang et al. "Document Analysis and Understanding
A Brief Survey",
ICDAR, First International Conference on Document Analysis and Recognition,
Frankreich, 30. September bis 2. Oktober 1991, Seiten 17 bis 31
offenbart eine Dokumentverarbeitungstechnik, bei der die logische Struktur
eines Dokuments durch eine Baumform dargestellt wird, in der nur
vertikal angeordnete Blöcke
identifiziert werden.
-
Gemäß einer ersten Ausgestaltung
der Erfindung wird ein Verfahren zur Erzeugung von Layoutdaten aus
sich aus horizontal und vertikal angeordneten Blöcken zusammensetzenden Blockdaten
bereitgestellt, mit:
einem Vertikalbestimmungsschritt des Bestimmens,
ob eine Kombination von vertikal angeordneten Blöcken auf irgendeinen anderen
der horizontal und vertikal angeordneten Blöcke überlappt;
einem Vertikalkombinationsschritt
des Kombinierens der Kombination von vertikal angeordneten Blöcken in dem
Fall, in dem es der Vertikalbestimmungsschritt bestimmt, daß keine Überlappung
vorhanden ist;
wobei das Verfahren die nachfolgenden Schritte
umfaßt:
einen
Horizontalbestimmungsschritt des Bestimmens, ob eine Kombination
von horizontal angeordneten Blöcken
auf irgendeinen anderen der horizontal und vertikal angeordneten
Blöcke überlappt;
einen
Horizontalkombinationsschritt des Kombinierens der Kombination von
horizontal angeordneten Blöcken in
einem Fall, in dem es der Horizontalbestimmungsschritt bestimmt,
daß keine Überlappung
vorhanden ist; und
einen Erzeugungsschritt des Erzeugens von
Layoutdaten auf der Grundlage der in dem Vertikalkombinationsschritt
und dem Horizontalkombinationsschritt ausgebildeten Kombinationen.
-
Gemäß einer zweiten Ausgestaltung
der Erfindung wird eine Vorrichtung zur Erzeugung von Layoutdaten
aus sich aus horizontal und vertikal angeordneten Blöcken zusammensetzenden
Blockdaten bereitgestellt, mit:
einer Erhalteinrichtung zum
Erhalten der Blockdaten; und
einem Speicher zum Speichern von
durch eine Verarbeitungseinrichtung ausführbaren Prozeßschritten;
einer
Verarbeitungseinrichtung, die von der Vorrichtung verwendet die
in der Verarbeitungseinrichtung gespeicherten Prozeßschritte
ausführt,
um es zu bestimmen, ob eine Kombination von vertikal angeordneten
Blöcken auf
irgendeinen anderen der horizontal und vertikal angeordneten Blöcke überlappt,
um die Kombination von vertikal angeordneten Blöcken in einem Fall zu kombinieren,
in dem es der Vertikalbestimmungsschritt bestimmt, daß keine Überlappung
vorhanden ist;
wobei die Verarbeitungseinrichtung von der Vorrichtung
verwendet nachfolgend die weiteren in der Verarbeitungseinrichtung
gespeicherten Prozeßschritte
ausführt,
um es zu bestimmen, ob eine Kombination von horizontal angeordneten
Blöcken
auf irgendeinen anderen der horizontal und vertikal angeordneten
Blöcke überlappt,
um die Kombination von horizontal angeordneten Blöcken in
einem Fall zu kombinieren, in dem es der Horizontalbestimmungsschritt
bestimmt, daß keine Überlappung
vorhanden ist, und um auf der Grundlage der in dem Vertikalkombinationsschritt
und dem Horizontalkombinationsschritt ausgebildeten Kombinationen
Layoutdaten zu erzeugen.
-
Gemäß einer dritten Ausgestaltung
der Erfindung werden durch einen Computer ausführbare Prozeßschritte
bereitgestellt, die auf einem durch einen Computer lesbaren Träger gespeichert
sind, wobei die durch einen Computer ausführbaren Prozeßschritte
zur Erzeugung von Layoutdaten aus sich aus horizontal und vertikal
angeordneten Blöcken
zusammensetzenden Blockdaten dienen, wobei die durch einen Computer
ausführbaren
Prozeßschritte
umfassen:
einen Vertikalbestimmungsschritt zum Bestimmen, ob
eine Kombination von vertikal angeordneten Blöcken auf irgendeinen anderen
der horizontal und vertikal angeordneten Blöcke überlappt;
einen Vertikalkombinationsschritt
zum Kombinieren der Kombination von vertikal angeordneten Blöcken in
einem Fall, in dem es der Vertikalbestimmungsschritt bestimmt, daß keine Überlappung
vorhanden ist;
einen nachfolgenden Horizontalbestimmungsschritt
zum Bestimmen, ob eine Kombination von horizontal angeordneten Blöcken auf
irgendeinen anderen der horizontal und vertikal angeordneten Blöcke überlappt;
einen
Horizontalkombinationsschritt zum Kombinieren der Kombination von
horizontal angeordneten Blöcken in
einem Fall, in dem es der Horizontalbestimmungsschritt bestimmt,
daß keine Überlappung
vorhanden ist; und
einen Erzeugungsschritt zum Erzeugen von
Layoutdaten auf der Grundlage der in dem Vertikalkombinationsschritt
und dem Horizontalkombinationsschritt ausgebildeten Kombinationen.
-
Diese kurze Zusammenfassung ist bereitgestellt
worden, damit die Natur der Erfindung schnell verstanden werden
kann. Ein vollständigeres
Verständnis
der Erfindung kann unter Bezugnahme auf die folgende ausführliche
Beschreibung der bevorzugten Ausführungsbeispiele davon in Verbindung
mit den beigefügten Zeichnungen
erhalten werden.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 stellt
ein ursprüngliches
gedrucktes Dokument dar.
-
2 stellt
eine auf der Grundlage einer durch ein kommerziell verfügbares System
erzeugten HTML-Datei durch einen Web-Browser angezeigte HTML-Seite
dar.
-
3 zeigt
eine perspektivische Ansicht, die das äußerliche Erscheinungsbild einer
Workstation darstellt.
-
4 zeigt
ein Blockschaltbild der in 3 dargestellten
Workstation.
-
5 zeigt
ein Flußdiagramm,
das ein Verfahren zum Erzeugen einer HTML-Datei auf der Grundlage eines
Bitmaskenbilds veranschaulicht.
-
6 zeigt
eine grafische Darstellung, die eine Ausgabe einer bei dem gedruckten
Dokument gemäß 1 ausgeführten Blockauswahlanalyse veranschaulicht.
-
7 zeigt
eine Ansicht zum Erläutern
einer Datenausgabe durch eine Blocksegmentierungsanalyse. 8 zeigt eine Ansicht zum
Erläutern
einer Ausgabe einer Blockanalyse. 9 zeigt
ein Flußdiagramm
zum Erläutern
einer Layoutanalyse und Erzeugung von Layoutdaten auf der Grundlage
einer Blockanalyse.
-
10A-1 bis 10A-14 zeigen Ansichten zum
Erläutern
einer iterativen Verarbeitung einer Layoutanalyse bei den in 6 dargestellten Blöcken. 10B-1 bis 10B-14 zeigen Ansichten zum Erläutern einer
Erzeugung von Layoutdaten für
jede entsprechende Iteration gemäß 10A-1 bis 10A-14.
-
11A zeigt
ein Flußdiagramm,
das eine Identifizierung des Blocktyps gemäß der vorliegenden Erfindung
veranschaulicht.
-
11B veranschaulicht
zwei Fälle,
in denen eine Blockneuordnung erforderlich ist.
-
12 zeigt
eine Ansicht zum Erläutern
einer Ausgabe einer Blocktypbestimmung auf der Grundlage von Layoutdaten.
-
13A bis 13D zeigen Flußdiagramme,
die die Erzeugung von HTML-Anweisungen für jeden Block in einem Bitmaskenbild
veranschaulichen.
-
14 zeigt
eine Ansicht, die eine auf der Grundlage eines gemäß der Erfindung
automatisch erzeugten HTML-Dokuments durch einen Web-Browser angezeigte
HTML-Seite darstellt.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
3 zeigt
eine Ansicht, die das äußerliche
Erscheinungsbild einer Computerworkstation zum Realisieren der Erfindung
darstellt. In 3 ist
eine Workstation 30 wie beispielsweise ein Macintosh oder
ein IBM PC oder PC-kompatibler Computer mit einer Fensterumgebung
wie beispielsweise Microsoft Windows gezeigt. Mit der Workstation 30 sind
ein Bildschirm 31 wie beispielsweise ein Farbmonitor, eine
Tastatur 32 zum Eingeben von Benutzerbefehlen und eine
Zeigevorrichtung 34 wie beispielsweise eine Maus zum Zeigen
auf und zum Manipulieren von auf dem Bildschirm 31 angezeigten
Objekten bereitgestellt. Die Workstation 30 umfaßt eine
Massenspeichervorrichtung wie beispielsweise eine Computerplatte 35 zum
Speichern von Datendateien. Eine nachstehend als Scanner bezeichnete
Abtasteinrichtung 37 ist zum Erzeugen eines Bitmaskenbilds
aus einem eingegebenen gedruckten Dokument bereitgestellt.
-
4 zeigt
ein ausführliches
Blockschaltbild, das den internen Aufbau der Workstation 30 darstellt. Wie
es in 4 gezeigt ist,
umfaßt
die Workstation 30 eine Zentraleinheit (CPU) 41,
die mit einem Computerbus 42 verbunden ist. Ebenfalls mit
dem Computerbus 42 verbunden sind eine Scannerschnittstelle 44,
eine Anzeigeschnittstelle 45, eine Tastaturschnittstelle 46,
eine Mausschnittstelle 47, ein Hauptspeicher 49 und
eine Festplatte 35. Die Platte 35 speichert ein
Fensterbetriebssystem wie beispielsweise Microsoft Windows, verschiedene
Fensteranwendungen, ein HTML-Wandlungsprogramm
zum Erzeugen einer HTML-Datei auf der Grundlage eines Bitmaskenbilds
gemäß der Erfindung,
vorher gescannte Bitmaskenbilder, vorher erzeugte HTML-Dateien und einen
Web-Browser zum Anzeigen von HTML-Dateien. Der Hauptspeicher 49 tritt
mit dem Computerbus 42 in Verbindung, um Schreib-Lese-Speicher
mit wahlfreiem Zugriff zur Verwendung durch die CPU 41 während der
Ausführung
gespeicherter Prozeßschritte
wie beispielsweise denjenigen des HTML-Wandlungsprogramms bereitzustellen.
Genauer lädt
die CPU 41 die Prozeßschritte
von der Platte 35 in den Hauptspeicher 49 und
führt die
gespeicherten Prozeßschritte
aus dem Hauptspeicher 49 aus.
-
[Erzeugung von HTML]
-
5 zeigt
ein Flußdiagramm,
das aus auf der Platte 35 gespeicherten Prozeßschritten
zum Erzeugen einer HTML-Datei
auf der Grundlage eines Bitmaskenbilds gemäß der Erfindung besteht. Kurz
gesagt wird gemäß 5 ein Bitmaskenbild erhalten,
wie beispielsweise durch ein nachstehend als Scannen bezeichnetes
Abtasten oder eine Wiedergewinnung, und in Blöcke segmentiert. Die Lage jedes
Blocks wird bestimmt, jeder Block wird in Vorbereitung auf eine
Einfügung
in eine HTML-Datei analysiert, und es wird eine Layoutanalyse zum
Identifizieren von Layoutbeziehungen zwischen den Blöcken auf
der Grundlage der relativen Lagen in dem Bitmaskenbild ausgeführt. Auf
der Grundlage der Layoutbeziehungen wird ein Blocktyp für jeden Block
bestimmt, es wird eine Spaltenspanne und Zeilenspanne für jeden
Block bestimmt, Blöcke
werden bei Bedarf neu geordnet, und es wird eine HTML-Datei auf
der Grundlage des Blocktyps und der Spalten- und Zeilenspanneninformationen
für die
Blöcke
erzeugt.
-
[Erhalten eines Bitmaskenbilds]
-
Insbesondere wird in einem Schritt
S501 ein Bitmaskenbild erhalten. Typischerweise wird dies erreicht,
indem ein gedrucktes Bild unter Verwendung des Scanners 37 gescannt
wird. Das Bitmaskenbild kann jedoch auch aus einer auf der Platte 35 gespeicherten
Datei oder in irgendeiner anderen Art und Weise wiedergewonnen werden.
-
[Blockidentifizierung
und -segmentierung]
-
Ein Schritt S502 umfaßt Prozeßschritte,
durch die Blöcke
in den Bilddaten automatisch erfaßt werden und ihre Lagen mit
Bezug auf das Bild automatisch identifiziert werden. Ein "Block" ist eine logische
verwandte Gruppe von Bilddaten wie beispielsweise ein Bereich von
aufeinanderfolgenden Absätzen
von Textbilddaten, ein Bereich mit Titelbilddaten oder Bereiche
mit Nicht-Text-Bilddaten
wie beispielsweise Grafikbilddaten, Linienzeichnungsbilddaten, Abbildungsdaten
oder Tabellenbilddaten. Vorzugsweise erzeugt die Blocksegmentierung
gemäß dem Schritt
S502 zusätzlich
zu der automatischen Erfassung und Identifizierung von Blöcken und ihren
Lagen auch hierarchische Baumdaten, durch die die logische Beziehung
jedes Blocks mit Bezug auf andere Blöcke identifiziert wird. Beispielsweise
werden häufig
Textbilddaten in Nicht-Text-Bilddaten gefunden, wie beispielsweise
in dem Fall von Textetiketten in einer Linienkunstgrafik. In einer
derartigen Situation würden die
Textetiketten in dem hierarchischen Baum als ein Kindknoten des
Elternblocks, der die Grafik umfaßt, identifiziert werden. Hierarchische
Baumdaten wie beispielsweise diese sind in nachfolgenden Verarbeitungsschritten
verwendbar, um die Beziehung jedes der Blöcke zu bestimmen.
-
Geeignete Blocksegmentierungstechniken
sind in der Literatur und auch in der am 24. April 1992 eingereichten
und "Method And
Apparatus For Character Recognition" betitelten gleichzeitig anhängigen Patentanmeldung
mit der Seriennummer 07/873,012; und der am 10. November 1994 eingereichten
und "Page Analysis
System" betitelten
gleichzeitig anhängigen
Patentanmeldung mit der Seriennummer 08/338,781 beschrieben. Die
Inhalte dieser zwei Patentanmeldungen werden hiermit in diese Anmeldung
aufgenommen als ob sie vollständig
dargelegt seien. Allgemein ausgedrückt arbeiten derartige Blocksegmentierungstechniken, indem
sie einzelne Bildelementdaten in dem Bild zum Identifizieren verbundener
Komponenten des Bilds analysieren, die verbundenen Komponenten zum
Bestimmen, ob eine verbundene Komponente eine verbundene Textkomponente
oder eine verbundene Nicht-Text-Komponente ist, analysieren und
danach die verbundenen Komponenten in Blöcke gruppieren. Die Text- und
Nicht-Text-Blöcke
werden daraufhin analysiert, um Attribute jedes Blocks zu bestimmen.
Beispielsweise werden in dem Fall von Textblöcken die Blöcke analysiert, um es bestimmen,
ob sie Titel, Klartext, Beschriftungen für Figuren und dergleichen sind.
In dem Fall von Nicht-Text-Blöcken
werden die Blöcke
analysiert, um es bestimmen, ob sie Linienkunstbilder, Halbtonbilder, Farbbilder,
tabellenförmig
angeordnete Daten und dergleichen sind. Zu der gleichen Zeit wird
ein hierarchischer Baum erzeugt, der durch Eltern-Kind-Knotenbeziehungen
die Beziehungen der Text- und Nicht-Text-Blöcke in den Bilddaten zeigt.
-
6 zeigt
eine Veranschaulichung der Ergebnisse der Blocksegmentierung gemäß dem Schritt S502.
Wie in 6 gezeigt und
mit Bezug auf in 1 veranschaulichte
ursprüngliche
Bilddaten entspricht ein erster Block 51 (BLK1) der ersten
Zeile von Titeldaten gemäß 1. Desgleichen entspricht
ein zweiter Block 52 (BLK2) der zweiten Zeile von Titeldaten
gemäß 1. Ein fünfter Block 55 (BLK5)
entspricht der ersten Zeile des Untertitels. Ein achter Block 58 (BLK8)
entspricht dem großen "S" in der Beschriftung des Artikels, wohingegen ein
neunter Block 59 (BLK9) dem Rest des Texts in der Beschriftung
des Artikels entspricht. Blöcke 53 (BLK10,
BLK11, BLK14 und BLK15) entsprechen Text in dem Artikel selbst.
Ein Block 54 (BLK12) entspricht dem Halbtonbild in dem
Artikel, wohingegen ein Block 56 (BLK13) der Textbeschriftung
für das
Bild entspricht. Andere in 6 gezeigte
Blöcke
haben Bedeutungen, die aus dem Vorstehenden leicht erkannt werden
können.
-
7 zeigt
eine Ansicht zum Erläutern
von Daten, die für
jeden Block gespeichert werden, einschließlich Attributdaten und Daten
einer hierarchischen Baumstruktur. Im einzelnen und wie in 7 gezeigt werden für jeden
Block Blockdaten 150 gespeichert und umfassen zumindest
eine Blocknummeridentifizierung 151, Koordinateninformationen 152 (wie
beispielsweise obere linke und untere rechte Koordinaten eines umschreibenden
Rechtecks für
den Block), Attributdaten 153, die es zusammen mit irgendwelchen
anderen während der
Blocksegmentierung bestimmten Attributen speichern, ob der Block
Text oder Nicht-Text ist, und eine hierarchische Baumstruktur 154,
die Zeiger auf Eltern- und
Kindknoten für
den Block umfaßt.
-
Zusammenfassend sind bei dem Ende
der Blocksegmentierung in dem Schritt S502 Bilddaten analysiert
worden, um Blöcke
von logisch verwandten Bilddaten automatisch zu erfassen und Lagen
der Blöcke
automatisch zu identifizieren. Darüber hinaus ist eine die logische
Beziehung von einem Block zu einem anderen Block zeigende hierarchische
Baumstruktur für
jeden derartigen Block gespeichert worden.
-
[Blockanalyse]
-
Die Blockanalyse in dem Schritt S504
umfaßt
Prozeßschritte,
durch die jeder der in dem Schritt S502 identifizierten Blöcke analysiert
wird, um es zu bestimmen, ob er ein Block ist, der das Dokumentlayout
beeinflußt,
und falls dem so ist, benötigte
Informationen zur HTML-Erzeugung zu extrahieren.
-
Im einzelnen bestimmt es die Blockanalyse
gemäß dem Schritt
S504 für
jeden in dem Schritt S502 identifizierten Block, ob der Block das
Dokumentlayout beeinflußt,
indem sie den hierarchischen Baum prüft, um es zu bestimmen, ob
der Block ein Textblock ist, der kein Kind eines Nicht-Text-Blocks
ist. Der Zweck dieses Tests besteht darin, jeden Textblock, der
sich in einem Nicht-Text-Block
befindet, von der weiteren Verarbeitung auszuschließen, da
ja ein derartiger Textblock das Dokumentlayout nicht beeinflußt. Beispielsweise beeinflußt ein Textetikett
in einer Linienkunstgrafik das Dokumentlayout nicht; es ist vielmehr
das Histogramm, das das Dokumentlayout beeinflußt. Entsprechend ist es durch
ein Prüfen
des in dem Schritt S502 erzeugten hierarchischen Baums möglich, Blöcke, die
das Dokumentlayout beeinflussen, von Blöcken, die das Dokumentlayout
nicht beeinflussen, zu unterscheiden.
-
Demgegenüber beeinflussen Nicht-Text-Blöcke wie
beispielsweise Linienkunstzeichnungen, Halbtonbilder und Tabellendaten
vermutlich das Dokumentlayout und werden daher in dem Schritt S504
zur weiteren Analyse ins Auge gefaßt.
-
In dem Kontext des Beispiels gemäß 6 ist es zu erkennen, daß alle dort
gezeigten Blöcke
das Dokumentlayout beeinflussen. Entsprechend werden keine Blöcke von
der weiteren Verarbeitung ausgeschlossen. Dies würde z. B. in der Situation
nicht der Fall sein, in der ein Dokumentbild Textdaten in einem
Bild oder einer Tabelle umfassen würde. In diesen Situationen
würde der
derartige Textdaten umfassende Block von der weiteren Verarbeitung
ausgeschlossen werden, da ein derartiger Textblock das Dokumentlayout
nicht beeinflußt,
sondern vielmehr der Bildblock das Dokumentlayout beeinflußt.
-
Alle so als das Dokumentlayout beeinflussend
identifizierten Blöcke
werden danach in Vorbereitung auf die HTML-Erzeugung gemäß Bildattributen 153 verarbeitet.
Im einzelnen erzeugt dann, wenn ein Bildattribut 153 den
Block als Nicht-Text-Daten wie beispielsweise ein Halbtonbild identifiziert,
die Blockanalyse in dem Schritt S504 eine geeignete Bilddatei für das Bild.
Vorzugsweise wird die Bilddatei in einem gemeinsam verwendeten Web-Browser-Format
wie beispielsweise dem Format .GIF oder .JPEG gespeichert. Demgegenüber wird
der Block für
Blöcke
des Texttyps einer Analyse einer optischen Zeichenerkennung unterzogen,
um eine Datei von durch einen Computer lesbaren Zeichencodes wie
beispielsweise ASCII-Zeichencodes zur nachfolgenden Verwendung bei
der HTML-Erzeugung zu erhalten und auch die Anzahl von Textzeilen
in jedem Textblock zu bestimmen.
-
8 zeigt
eine Ansicht zum Erläutern
der Ausgabe der Blockanalyse in dem Schritt S504. Insbesondere werden
wie in 8 gezeigt für jeden
Block, der das Dokumentlayout beeinflußt, Daten 160 gespeichert, die zumindest
eine Blocknummer 161, Koordinatendaten 162, Attributdaten 163,
die die gleichen Attributdaten wie die Attributdaten 153 gemäß 7 sind, Daten eines hierarchischen
Baums 164, die mit der Ausnahme, daß Kindknoteninformationen weggelassen
sein können,
die gleichen wie die Daten eines hierarchischen Baums 154 gemäß 7 sind, und Blockanalyseergebnisse 165 umfassen.
Die Blockanalyseergebnisse 165 können z. B. in dem Fall, in
dem die Attributdaten 163 es angeben, daß es sich
bei dem Block um Nicht-Text-Daten handelt, einen Bilddateinamen
umfassen, oder können
in dem Fall, in dem die Attributdaten 163 es angeben, daß es sich
bei dem Block um Daten des Texttyps handelt, Ergebnisse einer optischen
Zeichenkennung und eine Anzahl von Textzeilen in jedem Textblock
umfassen.
-
Zusammenfassend führt die Blockanalyse gemäß dem Schritt
S504 zu einer Identifizierung derjenigen Blöcke, die das Dokumentlayout
beeinflussen, und einer Bilddatei oder Ergebnissen einer optischen
Zeichenerkennung für
jeden dieser Blöcke.
-
[Layoutanalyse]
-
Der Schritt S505 gemäß 5 umfaßt Prozeßschritte, durch die die in
dem Schritt S504 identifizierten Blöcke analysiert werden, um Layoutdaten
für das
Dokument bereitzustellen. Diese Prozeßschritte sind in 9 veranschaulicht. Allgemein
ausgedrückt
testen die Prozeßschritte
gemäß 9 jede mögliche Kombination von Paaren
von vertikal angeordneten Blöcken
oder Gruppierungen von Blöcken,
um es zu bestimmen, ob das kleinste Rechteck, das das Paar von Blöcken umschreibt,
auf irgendwelche anderen Blöcke überlappt, und
falls die Kombination nicht überlappt,
wird das Paar in einer einzelnen Gruppierung kombiniert. Desgleichen
wird jede mögliche
Kombination von Paaren von horizontal angeordneten Blöcken oder
Gruppierungen von Blöcken
getestet, um es zu bestimmen, ob die Kombination auf irgendwelche
anderen Blöcke überlappt, und
falls keine Überlappung
vorhanden ist, wird das Paar in einer horizontalen Gruppierung kombiniert.
Vertikale Kombinationen werden zuerst getestet, da die meisten englischsprachigen
Dokumente in vertikalen Layouts angeordnet sind; entsprechend sollten
in Situationen, in denen es erwartet werden kann, daß Dokumente in
horizontalen Layouts angeordnet sind, wie beispielsweise bei einigen
japanischsprachigen Dokumenten, horizontale Gruppierungen zuerst
getestet werden. Der Prozeß des
Testens von vertikalen Gruppierungen und daraufhin horizontalen
Gruppierungen wird wiederholt, bis keine weiteren Gruppierungen
vorhanden sind, die ausgebildet werden können, und das ganze Dokument
in einer einzelnen Gruppierung kombiniert worden ist, woraufhin
die Layoutdaten vollständig
sind.
-
Nachstehend ist 9 in Verbindung mit dem veranschaulichenden
Beispiel gemäß 10, das auf dem Dokument
gemäß 1 basiert, ausführlicher
erläutert.
Somit wird in einem Schritt S901 eine Kombination von zwei vertikal
angeordneten "Gruppierungen" zuerst getestet.
Gruppierungen sind entweder einzelne Blöcke oder Blöcke, die vorher in einer einzelnen
Gruppierung kombiniert worden sind. "Vertikal angeordnete" Gruppierungen sind Gruppierungen, die
sich in der Lage vertikal unterscheiden; somit werden Gruppierungen, die
sich in der vertikalen Richtung nicht unterscheiden, wie es auf
der Grundlage von Koordinatendaten 162 gemessen wird, in
diesem Schritt S901 nicht getestet.
-
Ein veranschaulichendes Beispiel
für eine
erste derartige Kombination ist in 10A-1 gezeigt.
Wie es in 10A-1 gezeigt
ist, sind Blöcke
BLK1 und BLK2 in dem Sinne vertikal angeordnet, daß sie sich
in ihren vertikalen Lagen unterscheiden. Eine gestrichelte Linie 171 stellt
ein umschreibendes Rechteck dar, das diese zwei Blöcke einschließt. Es ist
diese Kombination wie durch das umschreibende Rechteck dargestellt,
die in dem Schritt S902 getestet wird. Für veranschaulichende Zwecke
ist eine kleine Lücke
zwischen dem Rechteck und den eingeschlossenen Blöcken gezeigt.
Es ist jedoch zu beachten, daß die
tatsächliche
Gruppierungsgrenze im allgemeinen mit den Blockgrenzen zusammenfällt.
-
Im einzelnen testet der Schritt S902
zum Bestimmen, ob die Kombination von vertikal angeordneten Gruppierungen
auf irgendeine andere Gruppierung überlappt. Eine Kombination
würde auf
eine andere Gruppierung überlappen,
falls bei der Ausbildung der Kombination die Kombination die Gesamtheit
oder irgendeinen Teil irgendeines anderen Blocks oder irgendeiner
anderen Gruppierung umfassen würde.
Wenn die Kombination nicht auf irgendeine andere Gruppierung überlappt,
dann verzweigt der Ablauf zu einem Schritt S903, in dem die Gruppierungen
in einer vertikalen Gruppierung vertikal kombiniert werden. Demgegenüber rückt der Ablauf
dann, wenn die Kombination auf irgendeine andere Gruppierung überlappt,
direkt zu einem Schritt S904 vor, der es bestimmt, ob noch mehr
vertikale Kombinationen vorhanden sind, die getestet werden müssen. Wenn
mehr vertikale Kombinationen getestet werden müssen, dann kehrt der Ablauf
zu dem Schritt S901 zurück,
bis alle vertikal angeordneten Gruppierungen geeignet getestet sind.
-
Zu 10A-1 zurückkehrend
werden somit die Blöcke
BLK1 und BLK2 in einer einzelnen vertikalen Gruppierung vertikal
kombiniert (Schritt S903), da das umschreibende Rechteck 171 nicht
auf irgendwelche anderen Gruppierungen überlappt (Schritt S902). Dies
ist in 10B-1 grafisch
veranschaulicht, die die Kombination der Blöcke BLK1 und BLK2 in einer
einzelnen vertikalen Gruppierung darstellende Layoutdaten zeigt.
-
Nachstehend auf 10A-2 Bezug nehmend werden, da mehr vertikale
Kombinationen vorhanden sind (Schritt S904), diese vertikalen Kombinationen
getestet. Somit stellt in 10A-2 ein
umschreibendes Rechteck 172 die Kombination der vertikalen
Gruppierung dar, die aus den Blöcken
BLK1 und BLK2 sowie einem vertikal angeordneten Block BLK3 besteht.
Da die Kombination nicht auf irgendeine andere Gruppierung überlappt,
wird die Kombination in einer neuen Gruppierung vertikal kombiniert,
wie es in den Layoutdaten gemäß 10B-2 veranschaulicht ist.
-
In 10A-3 wird
ein Block BLK4 nicht getestet, da er auf der Grundlage von Koordinatendaten 163 keine
vertikal angeordnete Gruppierung ist. Vielmehr ist der nächste Block,
der getestet wird, ein Block BLK5, da er eine vertikal angeordnete
Gruppierung ist. Das umschreibende Rechteck für die Kombination ist mit der gestrichelten
Linie 173 veranschaulicht. Wie es zu erkennen ist, umfaßt die Kombination
den Block BLK4. Somit überlappt
die Kombination auf eine andere Gruppierung, und es wird keine vertikale
Kombination ausgebildet. Somit bleibt das Layout das gleiche, wie
es in 10B-3 veranschaulicht
ist.
-
Wie es leicht zu erkennen ist, führt irgendeine
andere Kombination der vertikalen Gruppierung der Blöcke BLK1,
BLK2 und BLK3 bei einer Kombination mit irgendeinem anderen Block
des Dokuments zu einer Überlappung
auf eine andere Gruppierung. Wenn jeder Test in dem Schritt S901
ausgeführt
wird, bestimmt es der Schritt S902 entsprechend, daß die Kombination
auf eine andere Gruppierung überlappt,
und es werden keine weiteren vertikalen Kombinationen mit dieser
Gruppierung ausgebildet.
-
Nachstehend auf 10A-4 Bezug nehmend werden nun Kombinationen
von vertikalen Gruppierungen mit dem nächsten zulässigen Block oder der nächsten zulässigen Gruppierung
ausgebildet, in diesem Fall dem Block BLK4. Ein umschreibendes Rechteck 174,
das eine Kombination des Blocks BLK4 mit dem Block BLK5 zeigt, zeigt
es klar, daß eine Überlappung
mit dem Block BLK3 vorhanden ist. Da die Kombination auf eine andere
Gruppierung überlappt,
wird somit keine vertikale Kombination ausgebildet, und die Gruppierungen
bleiben wie in den Layoutdaten gemäß 10B-4 gezeigt. Desgleichen kann es verstanden
werden, daß Kombinationen
mit irgendeinem anderen Block mit BLK4 zu einer Überlappung führen und
keine weiteren vertikalen Kombinationen ausgebildet werden.
-
Nachstehend auf 10A-5 Bezug nehmend, werden Kombinationen
von vertikal angeordneten Gruppierungen mit dem Block BLK5 getestet.
Eine gestrichelte Linie 175 stellt ein umschreibendes Rechteck für die Kombination
von Blöcken
BLK5 und BLK6 dar. Da keine Überlappungen
auf irgendeine andere Gruppierung vorhanden sind, werden die Blöcke BLK5
und BLK6 vertikal kombiniert, wie es in den Layoutdaten gemäß 10B-5 veranschaulicht ist.
-
Desgleichen wird in 10A-6 daraufhin die Gruppierung der Blöcke BLK5
und BLK6 in Kombination mit einem Block BLK7 getestet, wie es durch
ein umschreibendes Rechteck 176 veranschaulicht ist. Da
die Kombination nicht auf irgendeine andere Gruppierung überlappt,
werden die Gruppierungen vertikal kombiniert, wie es in den Layoutdaten
gemäß 10B-6 veranschaulicht ist.
-
Der Prozeß des Testens vertikaler Kombinationen
von Gruppierungen setzt sich fort, bis keine weiteren zulässigen vertikalen
Kombinationen mehr vorhanden sind, die getestet werden können. In
Verbindung mit diesem Testen ist es zu erkennen, daß die einzigen
weiteren Gruppierungen, die kombiniert werden können, Blöcke BLK12 und BLK13 sowie Blöcke BLK14
und BLK15 sind. Diese Situation ist in 10A-7 und 10B-7 veranschaulicht.
-
Da keine weiteren vertikalen Kombinationen
zum Testen verfügbar
sind, rückt
der Ablauf daraufhin zu einem Schritt S905 vor, in dem ähnliche
Kombinationen und Tests von Kombinationen in der horizontalen Richtung
ausgebildet werden. Somit testet der Schritt S905 Kombinationen
von zwei horizontal angeordneten Gruppierungen, ein Schritt S906
bestimmt es, ob die Kombination auf irgendwelche anderen Gruppierungen überlappt,
ein Schritt S907 kombiniert in einem Fall, in dem der Schritt S906
es bestimmt, daß die
Kombination nicht auf irgendeine andere Gruppierung überlappt,
Gruppierungen horizontal, und ein Schritt S908 bestimmt es, ob noch
mehr horizontale Kombinationen vorhanden sind, die getestet werden
müssen.
-
Im einzelnen wird zu 10A-8 zurückkehrend die Gruppierung der
Blöcke
BLK1, BLK2 und BLK3 in Kombination mit dem horizontal angeordneten
Block BLK4 getestet. Wie es in der 10A-8 zu
sehen ist, überlappt
ein umschreibendes Rechteck 177 nicht auf irgendwelche
anderen Gruppierungen, und die Kombination wird daher ausgebildet.
Dies ist in den Layoutdaten gemäß 10B-8 grafisch veranschaulicht.
-
Es werden keine anderen Tests mit
Bezug auf die neue horizontale Gruppierung der Blöcke BLK1
bis BLK4 ausgeführt,
da keine anderen Blöcke
oder Gruppierungen von Blöcken
horizontal angeordnet sind, wie es zu erkennen ist. Desgleichen
ist kein Block oder keine Gruppierung von Blöcken mit der vertikalen Gruppierung
der Blöcke
BLK5 bis BLK7 horizontal angeordnet, und es wird kein Test für diese
Blöcke
ausgeführt.
-
Entsprechend ist der nächste für Kombinationen
der horizontal angeordneten Gruppierung getestete Block ein Block
BLK8, und die erste derartige Kombination ist mit einem Block BLK9.
Weil ein umschreibendes Rechteck 178 nicht auf irgendeinen
anderen Block überlappt,
wird die horizontale Kombination ausgebildet, wie es in den Layoutdaten
gemäß 10B-9 veranschaulicht ist.
-
Die neue Gruppierung der Blöcke BLK8
und BLK9 wird nicht mit einem Block BLK10 getestet, da der Block
BLK10 nicht horizontal angeordnet ist. Ein Block BLK11 ist horizontal
angeordnet, aber wie es in 10A-10 gezeigt
ist, überlappt
eine horizontale Kombination der beiden auf BLK10, und entsprechend
wird keine Kombination ausgebildet. Entsprechend bleiben die Gruppierungen
wie in den Layoutdaten gemäß 10B-
10 gezeigt.
-
Alle anderen Kombinationen von horizontal
angeordneten Gruppierungen überlappen
ebenfalls auf andere Blöcke
und/oder Gruppierungen. Wenn in dem Schritt S905 ausgebildet und
in dem Schritt S906 getestet, werden entsprechend keine weiteren
horizontalen Kombinationen ausgebildet.
-
Der Ablauf rückt daraufhin zu einem Schritt
S909 vor, um es zu bestimmen, ob alle Blöcke in dem Bild in eine einzelne
Gesamtgruppe integriert worden sind. Solange Blöcke bleiben, die nicht in eine
Gesamtgruppierung gruppiert sind, werden die Prozeßschritte
von S901 bis S908 iteriert, bis alle Blöcke in einer Gruppierung enthalten
sind.
-
Wie es mit Bezug auf 10A-11 veranschaulicht ist, wird somit
die die Blöcke
BLK1 bis BLK4 umfassende horizontale Gruppierung in Kombination
mit der die Blöcke
BLK4 bis BLK6 umfassenden vertikalen Gruppierung getestet, wie es
durch ein umschreibendes Rechteck 179 veranschaulicht ist.
Da keine Blöcke überlappen,
wird eine Kombination vertikal ausgebildet, wie es in den Layoutdaten
gemäß 10B-11 veranschaulicht ist.
-
Desgleichen wird in 10A-12 die die Blöcke BLK8 und BLK9 umfassende
horizontale Gruppierung mit Bezug auf den Block BLK10 getestet,
wie es durch ein umschreibendes Rechteck 180 veranschaulicht
ist. Da keine Blöcke überlappen,
wird eine vertikale Gruppierung ausgebildet, wie es in den Layoutdaten
gemäß 10B-12 veranschaulicht ist.
-
Bei dieser Iteration der Schritte
S901 bis S904 sind keine weiteren vertikalen Kombinationen überlappungsfrei.
Entsprechend werden keine weiteren vertikalen Kombinationen ausgebildet.
-
10A-13 veranschaulicht
es, daß mit
Bezug auf diese Iteration der horizontalen Schritte S905 bis S908
eine weitere horizontale Gruppierung ausgebildet werden kann, wie
es bei einem umschreibenden Rechteck 181 veranschaulicht
ist. Entsprechend stellen sich die Gruppierungen dar, wie es in 10A-13 und in den Layoutdaten
gemäß 10B-13 gezeigt ist.
-
Weitere vertikale und horizontale
Iterationen werden von den Schritten S901 bis S908 ausgeführt, was zu
einer endgültigen
Situation führt,
die in
10A-14 und
10B-14 gezeigt ist. Es ist
zu erkennen, daß das Dokument
in einer Gesamtgruppierung angeordnet worden ist, in diesem Fall
einer vertikalen Gruppierung, die das ganze Dokument umfaßt. Die
Layoutanalyse daraufhin endet mit der Speicherung der Layoutdaten
zusammen mit der Speicherung von Koordinaten, die umschreibende
Rechtecke für
jeden einzelnen Block oder jede einzelne Gruppierung von Blöcken identifizieren,
und vorzugsweise auch der Speicherung der Breite und Höhe jedes
Blocks. Die Layoutdaten, die für
das Dokument gemäß
1 gespeichert werden, sind
nachstehend als ein veranschaulichendes Beispiel wiedergegeben:
wobei "l", "t", "r" und "b" sich
auf linke, obere, rechte und untere Blockkoordinaten beziehen, und
wobei "w" und "h" sich auf die Breite und Höhe des entsprechenden
Blocks beziehen.
-
Ferner wird in diesem Schritt die
Blockordnung gemäß der Ordnung
der Blöcke
in den Layoutdaten bei einem Lesen von oben nach unten bestimmt.
Somit ist in dem vorliegenden Beispiel die Blockordnung: BLK1, BLK2,
BLK3, BLK4, BLK5, BLK6, BLK7, BLK8, BLK9, BLK10, BLK11, BLK12, BLK13,
BLK14, BLK15.
-
[Bestimmen des Blocktyps]
-
Nachstehend ist der in 5 gezeigte Schritt S506
unter Bezugnahme auf 11 ausführlicher
erörtert.
Allgemein wird gemäß 11A ein Typ für jeden
Block bestimmt, indem aufeinanderfolgend eine Folge von Tests ausgeführt wird
und entweder der Blocktyp bezeichnet wird, wenn ein Test zuerst
bestanden wird (wobei die Bezeichnung davon abhängt, welcher Test bestanden
wurde), oder in dem Fall, daß keiner
der Tests bestanden wird, der Vorgabeblocktyp bezeichnet wird.
-
Genauer wird es in einem Schritt
S1101 bestimmt, ob der derzeitige Block der erste angetroffene Block ist.
Es wird ebenfalls bestimmt, ob der derzeitige Block irgendwo die
Baumstruktur hinauf in einer horizontalen Gruppierung enthalten
ist, und falls dem so ist, ob er der erste Block unter seiner horizontalen
Gruppierung der höchsten
Ebene ist. Wenn eines der Vorstehenden positiv beantwortet wird,
dann wird in einem Schritt S1102 der Block als "Einzelspalte" bezeichnet. Falls dem nicht so ist,
geht die Verarbeitung zu einem Schritt S1104 über.
-
In dem Schritt S1104 wird ein vierteiliger
Test angewendet. Als erstes wird es bestimmt, ob der vorherige Block
ein Nicht-Text-Bild ist. Als zweites wird eine Bestimmung dahingehend
ausgeführt,
ob die linke Kante des vorherigen Blocks sich links von der linken
Kante des derzeitigen Blocks befindet. Für Zwecke der Beschreibung dieser
Tests bezieht sich der "derzeitige" Block auf den Block,
für den
gegenwärtig
ein Typ bestimmt wird, und der "vorherige" Block bezieht sich
auf den dem derzeitigen Block in der in dem Schritt S505 identifizierten
geordneten Liste unmittelbar vorhergehenden Block.
-
Der dritte Teil des Tests des Schritts
S1104 besteht darin, es zu bestimmen, ob die rechte Kante des derzeitigen
Blocks sich nahe an der linken Kante des nächsten Blocks befindet. Bei
dem bevorzugten Ausführungsbeispiel
ist die Antwort auf diesen Teil nur dann ja, falls der Abstand zwischen
den beiden weniger als 0,01 mal die Breite des ganzen Bilds (d.
h. einschließlich
aller Blöcke)
beträgt.
Als viertes wird es bestimmt, ob die Summe der Breite des derzeitigen
Blocks und des nächsten
Blocks weniger als ein fester Schwellenwert ist. Bei dem bevorzugten
Ausführungsbeispiel
ist der Schwellenwert gleich 0,6 mal der Breite des ganzen Bilds. Wenn
jeder der vorstehenden Tests positiv beantwortet wird, dann wird
in einem Schritt S1105 der Block als "Kombinationsspalte" bezeichnet. Falls dem nicht so ist,
geht die Verarbeitung zu einem Schritt S1106 über.
-
In dem Schritt S1106 wird ein dreiteiliger
Test ausgeführt.
In dem ersten Teil wird es bestimmt, ob die linke Kante des vorherigen
Blocks sich links von der linken Kante des derzeitigen Blocks befindet.
Der zweite Teil bestimmt es, ob der vorherige Block horizontal von
dem derzeitigen Block getrennt ist, d. h. ob ein horizontaler Abstand
von nicht null zwischen der rechten Kante des vorherigen Blocks
und der linken Kante des derzeitigen Blocks vorhanden ist. Der dritte
Teil bestimmt es, ob der derzeitige Block zumindest ein zweites
Kind einer horizontalen Gruppierung ist. Dieser letzte Teil bestimmt
es, ob der derzeitige Block Teil einer horizontalen Gruppierung
ist und zumindest als zweites in dem hierarchischen Diagramm hinter
einem Element aufgelistet ist, mit dem er z. B. horizontal gruppiert
ist (oder der erste Block in einer Gruppierung ist, die zumindest das
zweite Kind der horizontalen Gruppierung ist). Wenn die vorstehenden
Tests jeweils positiv beantwortet werden, dann wird in einem Schritt
S1107 der Block als Mehrfachspalte bezeichnet. Andernfalls geht
die Verarbeitung zu einem Schritt S1109 über.
-
In dem Schritt S1109 wird ein dreiteiliger
Test angewendet. Als erstes wird es bestimmt, ob die obere Kante
des vorherigen Blocks vertikal höher
als die obere Kante des derzeitigen Blocks ist, d. h. ob die y-Koordinate
der oberen Kante des vorherigen Blocks größer als die y-Koordinate der
oberen Kante des derzeitigen Blocks ist. Als zweites wird es bestimmt,
ob der derzeitige Block und der nächste Block vertikal getrennt
sind, d. h. ob ein vertikaler Abstand von nicht null zwischen dem
unteren Ende des vorherigen Blocks und dem oberen Ende des derzeitigen
Blocks vorhanden ist. Als drittes wird es bestimmt, ob der derzeitige
Block irgendwo die Baumstruktur hinauf in einer horizontalen Gruppierung
enthalten ist, oder ob der derzeitige Block vertikal mit dem vorherigen
Block gruppiert ist. Wenn alle Teile des vorstehenden Tests positiv
beantwortet werden, dann wird in einem Schritt S1110 der Block als "Gemeinschaftsspalte" bezeichnet. Andernfalls
wird in einem Schritt S111 der Block als "Einzelspalte" bezeichnet.
-
Nachstehend ist die Anwendung der
in 11 gezeigten Verarbeitungsschritte
auf das gegenwärtige Beispiel
erörtert.
Im einzelnen ist BLK1 der erste Block und wird daher in den Schritten
S1101 und S1102 als Einzelspalte bezeichnet.
-
BLK2 ist nicht der erste Block und
ist auch nicht der erste Block unter seiner horizontalen Gruppierung der
höchsten
Ebene, so daß der
in dem Schritt S1101 bestimmte Test fehlschlägt und der in dem Schritt S1104 bestimmte
Test angewendet wird. In diesem Fall schlägt der erste Teil fehl, da
BLK1 kein Nicht-Text-Bild ist. Der in dem Schritt S1106 dargelegte
Test wird als nächstes
angewendet. In diesem Fall schlägt
der erste Teil des Tests ebenfalls fehl, da die linke Kante des
vorherigen Blocks sich nicht links von der linken Kante des derzeitigen
Blocks befindet. Entsprechend wird der in dem Schritt S1109 beschriebene
Test als nächstes
angewendet. In diesem Fall ist die obere Kante von BLK1 höher als
die Kante von BLK2, es ist eine vertikale Trennung zwischen der
unteren Kante von BLK1 und der oberen Kante von BLK2 vorhanden,
und BLK2 ist vertikal mit BLK1 gruppiert. Entsprechend ist der Test
in S1109 erfüllt,
und BLK2 wird als Gemeinschaftsspalte bezeichnet.
-
Die Analyse von BLK3 ist mit der
von BLK2 identisch, und entsprechend wird BLK3 ebenfalls als Gemeinschaftsspalte
bezeichnet.
-
BLK4 ist nicht der erste Block und
ist auch nicht der erste Block unter seiner horizontalen Gruppierung der höchsten Ebene,
und BLK3 ist kein Nicht-Text-Bild. Entsprechend schlagen die Tests
in den Schritten S1101 und S1104 fehl, und der Test in dem Schritt
S1106 wird angewendet. In diesem Fall befindet sich die linke Kante
von BLK3 links von der linken Kante von BLK4, es ist eine horizontale
Trennung zwischen der rechten Kante von BLK3 und der linken Kante
von BLK4 vorhanden, und unter Bezugnahme auf die vorstehend dargelegten
Layoutdaten kann es gesehen werden, daß BLK4 das zweite Kind einer
horizontalen Gruppierung ist. Im einzelnen ist BLK4 horizontal mit
der aus den Blöcken 1, 2 und 3 bestehenden
vertikalen Gruppe gruppiert. Außerdem
ist BLK4 in den Layoutdaten als sich unterhalb der vertikalen Gruppierung
befindend gezeigt. Entsprechend ist der Test in dem Schritt S1006
erfüllt,
und BLK4 wird als Mehrfachspalte bezeichnet.
-
BLK5 ist nicht der erste Block und
ist auch nicht der erste Block unter seiner horizontalen Gruppierung der
höchsten
Ebene, und BLK4 ist kein Nicht-Text-Bild. Daher geht die Verarbeitung
zu dem Schritt S1106 über.
Die linke Kante von BLK4 befindet sich nicht links von der linken
Kante von BLK5. Entsprechend schlägt dieser Test fehl. Mit Bezug
auf den Test in dem Schritt S1109 ist die obere Kante von BLK4 höher als
die obere Kante von BLK5, und es ist eine vertikale Trennung zwischen
den zwei Blöcken
vorhanden. BLK5 befindet sich jedoch nicht unter einer horizontalen
Gruppierung und ist nicht vertikal mit BLK4 gruppiert. Daher schlägt dieser
Test ebenso fehl. Entsprechend wird BLK5 als Einzelspalte bezeichnet.
-
Die Analyse der Blöcke 6 und 7 ist
die gleiche wie die von BLK2, und entsprechend wird jeder derartige Block
als Gemeinschaftsspalte bezeichnet.
-
BLK8 ist nicht der erste Block, aber
er ist der erste Block seiner horizontalen Gruppierung der höchsten Ebene.
Daher wird BLK8 als Einzelspalte bezeichnet.
-
BLK9 ist nicht der erste Block und
ist auch nicht der erste Block unter seiner ersten horizontalen
Gruppierung. In dem Schritt S1104 ist jedoch der vorherige Block
ein Nicht-Text-Bild, die linke Kante des vorherigen Blocks befindet
sich links von der linken Kante des derzeitigen Blocks, die zwei
Blöcke
sind horizontal nahe, und die Summe der Breiten der zwei Blöcke beträgt weniger
als 0,60 mal der Breite des ganzen Bilds. Entsprechend wird BLK9
als Kombinationsspalte bezeichnet.
-
Auf ähnliche Weise werden BLK10,
BLK12, BLK13 und BLK15 als Gemeinschaftsspalte bezeichnet, da der
Test in dem Schritt S1109 erfüllt
ist. BLK11 und BLK14 werden als Mehrfachspalte bezeichnet, da der Test
in dem Schritt S1106 erfüllt
ist.
-
Somit wird jeder der Blöcke wie
nachstehend dargelegt bezeichnet:
BLK1: | (EINZELSPALTE) |
BLK2: | (GEMEINSCHAFTSSPALTE) |
BLK3: | (GEMEINSCHAFTSSPALTE) |
BLK4: | (MEHRFACHSPALTE) |
BLK5: | (EINZELSPALTE) |
BLK6: | (GEMEINSCHAFTSSPALTE) |
BLK7: | (GEMEINSCHAFTSSPALTE) |
BLK8: | (EINZELSPALTE) |
BLK9: | (KOMBINATIONSSPALTE) |
BLK10: | (GEMEINSCHAFTSSPALTE) |
BLK11: | (MEHRFACHSPALTE) |
BLK12: | (GEMEINSCHAFTSSPALTE) |
BLK13: | (GEMEINSCHAFTSSPALTE) |
BLK14: | (MEHRFACHSPALTE) |
BLK15: | (GEMEINSCHAFTSSPALTE) |
-
Eine Veranschaulichung dieser Klassifizierungen
ist in 12 gezeigt.
-
[Bestimmen von Spaltenspanne
und Zeilenspanne]
-
Nachstehend ist der Schritt S507
ausführlich
erörtert.
Blöcke
mit einer Spaltenspanne und Zeilenspanne werden lokalisiert, indem
eine verschachtelte horizontal-vertikal-horizontale
(Eltern-Kind-Enkel) Struktur gefunden wird, die keinen Großenkel umfaßt, der
in der in dem Schritt S505 erzeugten Layoutanalyse als Kombinationsspalte
bezeichnet worden ist. Zur Erleichterung der folgenden Erörterung
wird auf jedes Element in der Layoutanalyse in Beziehung zu der
horizontalen Gruppierung der höheren
Ebene in der verschachtelten horizontal-vertikal-horizontalen (Eltern-Kind-Enkel) genetischen
hierarchischen Struktur Bezug genommen, wobei eine Baumstrukturterminologie
verwendet wird.
-
Sobald eine verschachtelte horizontal-vertikal-horizontale hierarchische
Struktur ohne einen Kombinationsspaltengroßenkel lokalisiert wird, geht
die Bestimmung von Zeilenspanne und Spaltenspanne weiter wie folgt.
Die Spaltenspannenanzahl wird derart bestimmt, daß sie die
Anzahl von Kindern des horizontalen Enkels ist. Der Block, dem die
Spaltenspannenanzahl zugewiesen wird, wird derart ausgewählt, daß er der
erste nicht-horizontale
Enkel, der ein horizontales Geschwisterteil aufweist, oder der erste
Großenkel,
dessen Elternteil ein horizontales Geschwisterteil aufweist, ist.
Die Zeilenspannenanzahl wird derart bestimmt, daß sie die Anzahl von horizontalen
Enkeln plus eins ist. Der Block, dem die Zeilenspannenanzahl zugewiesen
wird, wird derart ausgewählt,
daß er
das erste nicht-vertikale Kind oder der erste Enkel ohne ein horizontales
Geschwisterteil ist. Falls eine Gruppierung dazu ausgewählt wird,
die Spaltenspannenanzahl oder die Zeilenspannenanzahl zugewiesen
zu bekommen, geht die Zuweisung zu dem ersten Block in der Gruppierung.
-
Der vorstehende Prozeß wird am
besten beispielhaft veranschaulicht. Der strukturelle Abschnitt
der Layoutanalyse für
das in 1 gezeigte Dokument
ist nachstehend wiedergegeben, wobei Gruppierungen und Blöcke zur
leichten Bezugnahme numeriert sind (beginnend mit der Nummer 101).
-
-
Da die horizontal-vertikal-horizontale
(Eltern-Kind-Enkel)
Struktur mit den Nummern 115–117
einen Großenkel
mit einer Kombinationsspaltenbezeichnung (BLK9) aufweist, besteht
die einzige horizontal-vertikal-horizontale Struktur ohne einen
Kombinationsspaltengroßenkel
in der Layoutanalyse aus den Nummern 113–115. Der horizontale Enkel
ist mit 115 numeriert, und seine einzigen Kinder sind 116 und 121.
Daher ist die Spaltenspannenanzahl zwei. Die Enkel der horizontalen
Gruppierung 113 sind die horizontale Gruppierung 115 und die vertikale
Gruppierung 122. Da BLK12 (123) der erste Großenkel ist, dessen Elternteil
(122) ein horizontales Geschwisterteil (115) aufweist, wird BLK12
die Spaltenspannenanzahl zugewiesen.
-
Mit Bezug auf die Zeilenspanne ist
lediglich ein horizontaler Enkel vorhanden, die Gruppierung 115. Daher
ist die Zeilenspannenanzahl gleich zwei. Da BLK14 (126) der erste
Enkel ist, der kein horizontales Geschwisterteil aufweist, wird
BLK14 die Zeilenspannenanzahl zugewiesen.
-
Folglich wird BLK12 eine Spaltenspannenanzahl
von 2 zugewiesen, und BLK14 wird eine Zeilenspannenanzahl von 2
zugewiesen.
-
[Blockneuordnung]
-
Nachstehend ist der Schritt S509
unter Bezugnahme auf 11B erörtert. Wie
es in 11B gezeigt ist,
können
zwei allgemeine Situationen auftreten, in denen die in dem Schritt
S505 erhaltene Blockordnung neu angeordnet werden muß, um der
Weise, in der HTML Tabellendaten verarbeitet (d. h. sequentiell
Zeile für Zeile
nach unten), entgegenzukommen. In jeder befindet sich ein Zeilenspannenblock
rechts von einem Spaltenspannenblock und horizontal an diesen angrenzend.
-
Mit Bezug auf 11B ist der erste Fall vorhanden, wenn
Blöcke
angeordnet sind wie beispielsweise Blöcke 141–144,
wobei die obere Kante des Zeilenspannenblocks
144 sich
oberhalb der oberen Kante des Spaltenspannenblocks 143 befindet
und der Schritt S505 die Gruppe von Blöcken sequentiell geordnet hat
als: 141, 142, 143 und 144.
In diesem Fall wird die Ordnung der Blöcke 143 und 144 gewechselt,
was zu einer endgültigen
Ordnung führt
von: 141, 142, 144 und 143.
-
Auf ähnliche Weise ist der zweite
Fall vorhanden, wenn Blöcke
angeordnet sind wie beispielsweise Blöcke 146–149,
wobei die obere Kante des Zeilenspannenblocks 149 sich
oberhalb der oberen Kanten der Blöcke 147 und 148 befindet
und der Schritt S505 die Gruppe von Blöcken sequentiell geordnet hat
als: 146, 147, 148 und 149.
In diesem Fall wird die Ordnung des Blocks 149 derart in
der Position nach oben bewegt, daß er vor dem Block 147 plaziert
ist, was zu einer endgültigen
Ordnung führt
von: 146, 149, 147 und 148.
-
Das Vorstehende ist lediglich veranschaulichend
für die
zwei allgemeinen Fälle.
Es ist zu beachten, daß die
Anzahl von Blöcken
variieren kann und die gezeigten Blöcke mehr als einen Block darstellen
können. Die
Schlüsselelemente
dieses Neuordnungsschritts sind: (1) das Vorhandensein eines Zeilenspannenblocks rechts
von einem Spaltenspannenblock und horizontal an diesen angrenzend,
und (2) ob der Spaltenspannenblock sich in der ersten oder zweiten
Zeile befindet, die der Zeilenspannenblock überspannt. Obwohl das Vorstehende
die zwei Fälle
beschreibt, in denen die Zeilenspanne zwei Zeilen beträgt, kann
das Konzept außerdem
leicht auf Zeilenspannen von mehr als zwei erweitert werden.
-
Das Vorstehende auf das das in 1 gezeigte Dokument betreffende
gegenwärtige
Beispiel anwendend tritt ein Zeilenbruch zwischen BLK10 und BLK12
und daraufhin ein weiterer nach BLK12 auf. Entsprechend stellt dies
ein Beispiel für
den vorstehend beschriebenen ersten Fall dar, wobei BLK10 das Äquivalent des
Blocks 141 ist, BLK11 das Äquivalent des Blocks 142 ist,
BLK12 (der Spaltenspannenblock) und BLK13 zusammen das Äquivalent
des Blocks 143 sind, und BLK14 (der Zeilenspannenblock)
und BLK15 zusammen das Äquivalent
des Blocks 144 sind. Entsprechend werden BLK14 und BLK15
in der Ordnung nach oben vor BLK12 und BLK13 bewegt. Die endgültige Ordnung
ist somit: BLK1, BLK2, BLK3, BLK4, BLK5, BLK6, BLK7, BLK8, BLK9,
BLK10, BLK11, BLK14, BLK15, BLK12, BLK13.
-
[HTML-Formatierung]
-
Nachstehend ist der in 5 gezeigte Schritt S510
unter Bezugnahme auf 13A bis 13D ausführlich erörtert. Allgemein wird gemäß 13 zuerst ein HTML-Dateikopf eingefügt. Daraufhin
wird für
jeden Block eine Verarbeitung gemäß dem in dem Schritt S506 bestimmten
Blocktyp ausgeführt,
wobei jedem Blocktyp ein anderer Satz von Verarbeitungsschritten
zugewiesen ist. Nachdem alle Blöcke
verarbeitet worden sind, werden schließlich Ende-der-Datei-Codes
eingefügt.
-
Insbesondere werden in einem Schritt
S1301 die folgenden HTML-Dateikopfcodes eingefügt:
"<HTML><HEAD><TITLE>Titel</TITLE></HEAD><BODY><BODY GCOLOR="#FFFFFF"><CENTER>", wobei "Titel" der Titel der Datei ist.
-
In einem Schritt S1302 wird der erste
Block ausgewählt.
-
In einem Schritt S1304 wird es bestimmt,
ob der Blocktyp für
den derzeitigen Block Einzelspalte ist. Wenn dies so ist, dann wird
in einem Schritt S1305 eine Einzelspaltenverarbeitung gemäß in 13B gezeigten Schritten
ausgeführt,
und daraufhin geht die Verarbeitung zu einem Schritt S1313 über. Falls
dem nicht so ist, geht die Verarbeitung zu einem Schritt S1306 über.
-
In dem Schritt S1306 wird es bestimmt,
ob der Blocktyp Mehrfachspalte ist. Wenn dem so ist, dann wird in
einem Schritt S1307 eine Mehrfachspaltenverarbeitung gemäß den in 13C gezeigten Schritten ausgeführt, und
daraufhin geht die Verarbeitung zu dem Schritt S1313 über. Falls
dem nicht so ist, geht die Verarbeitung zu einem Schritt S1309 über.
-
In dem Schritt S1309 wird es bestimmt,
ob der Blocktyp Gemeinschaftsspalte ist. Wenn dem so ist, dann wird
in einem Schritt S1310 eine Gemeinschaftsspaltenverarbeitung gemäß den in 13D gezeigten Schritten
ausgeführt,
und daraufhin geht die Verarbeitung zu dem Schritt S1313 über. Wenn
dem nicht so ist, dann muß der
Blocktyp Kombinationsspalte sein. Da für Kombinationsspalte keine
zusätzlichen
Codes eingefügt
werden, geht die Verarbeitung einfach unmittelbar zu dem Schritt
S1313 über.
-
In dem Schritt S1313 wird der Block
in die HTML-Datei eingefügt.
Typischerweise werden entweder die Inhalte des Blocks in die HTML-Datei
eingefügt
(für Textblöcke), oder
es wird ein Verweis auf eine die relevanten Daten enthaltende Datei
eingefügt
(für Grafik
und Bitmaskenbilder).
-
In dem Schritt S1311 wird es bestimmt,
ob der derzeitige Block der letzte Block ist. Falls dem nicht so ist,
wird in einem Schritt S1312 der nächste Block ausgewählt, und
die Verarbeitung geht zu dem Schritt S1304 über. Wenn der derzeitige Block
der letzte Block ist, dann werden in einem Schritt S1314 die folgenden
Ende-der-Datei-HTML-Codes
eingefügt: "</TABLE></CENTER></BODY></HTML>".
-
Nachstehend ist die Einzelspaltenverarbeitung
gemäß dem Schritt
S1305 unter Bezugnahme auf 13B ausführlicher
erörtert.
Im einzelnen wird es in einem Schritt S1315 bestimmt, ob die Datei
derzeit in einer Tabelle ist. Wenn sie es ist, dann wird in einem
Schritt S1316 der Ende-HTML-Tabellencode ("</TABLE>") eingefügt, und die Verarbeitung geht
zu einem Schritt S1317 über.
Andernfalls geht die Verarbeitung zu dem Schritt S1317 über, ohne
den Code einzufügen.
-
In dem Schritt S1317 wird der folgende
Tabellendefinitionscode in die Datei eingefügt: "<TABLE
BORDER=0 CELLSPACING=0 CELLPADDING=7 WIDTH=w>",
wobei BORDER, CELLSPACING, CELLPADDING und WIDTH Attribute des Identifizierungskennzeichens <TABLE> sind, und wobei w
gleich der Breite des ganzen Bilds mal 72 und geteilt durch die
Anzahl von Punkten pro Zoll bzw. Punkten pro 2,54 cm in dem Bild
ist.
-
In einem Schritt S1319 wird es bestimmt,
ob die Zeilenspanne für
den Block (die in dem Schritt S507 bestimmt wurde) größer als
eins ist. Falls sie es ist, wird der folgende Code in die HTML-Datei
eingefügt "<TR><TD VALIGN=TOP ROWSPAN=n>", wobei n die in dem Schritt S507 bestimmte
Zeilenspannenanzahl ist. Andernfalls wird es in einem Schritt S1321
bestimmt, ob die Spaltenspanne größer als eins ist. Wenn sie es
ist, dann wird in einem Schritt S1322 der folgende HTML-Code in
die HTML-Datei eingefügt: "<TR><TD VALIGN=TOP COLSPAN=m>", wobei m die in dem Schritt S507 bestimmte
Spaltenspannenanzahl ist. Andernfalls wird in einem Schritt S1324
der folgende Code in die HTML-Datei eingefügt: "<TR><TD VALIGN=TOP>".
-
Nachstehend ist die Mehrfachspaltenverarbeitung
gemäß dem Schritt
S1307 unter Bezugnahme auf 13C ausführlicher
erörtert.
Im einzelnen wird es in einem Schritt S1325 bestimmt, ob die Zeilenspanne größer als
eins ist. Wenn sie es ist, dann wird der folgende HTML-Code eingefügt: "<TD VALIGN=TOP ROWSPAN=n>". Andernfalls wird es in einem Schritt
S1327 bestimmt, ob die Spaltenspanne für den derzeitigen Block größer als
eins ist. Wenn sie es ist, dann wird in einem Schritt S1329 der
folgende HTML-Code in die HTML-Datei eingefügt: "<TD
VALIGN=TOP COLSPAN=m>". Andernfalls wird
in einem Schritt S1330 der folgende HTML-Code eingefügt: "<TD VALIGN=TOP>".
-
Nachstehend ist die Gemeinschaftsspaltenverarbeitung
gemäß dem Schritt
S1310 unter Bezugnahme auf 13D ausführlich erörtert. Im
einzelnen wird es in einem Schritt S1331 bestimmt, ob die Zeilenspanne des
derzeitigen Blocks größer als
eins ist. Wenn sie es ist, dann wird in einem Schritt S1332 der
folgende HTML-Code eingefügt: "<TR><TD VALIGN=TOP ROWSPAN=n>". Andernfalls wird es in einem Schritt
S1334 bestimmt, ob die Spaltenspanne für den derzeitigen Block größer als
eins ist. Wenn sie es ist, dann wird in einem Schritt S1335 der
folgende HTML-Code eingefügt: "<TR><TD VALIGN=TOP COLSPAN=m>". Andernfalls wird es in einem Schritt
S1336 bestimmt, ob die Anzahl von Zeilen in dem Block (die in dem
Schritt S504 bestimmt wurde) eins ist. Wenn sie es ist, dann wird
in einem Schritt S1337 der folgende HTML-Code eingefügt: "<BR>". Andernfalls wird in einem Schritt
S1339 der folgende HTML-Code eingefügt: "<P>".
-
Nun wird der Schritt S510 auf das
gegenwärtige
Beispiel angewendet. Zuerst wird der HTML-Dateikopf eingefügt, wie
es in dem Schritt S1301 gezeigt ist. Als nächstes wird jeder der Blöcke 1 bis 15 aufeinanderfolgend
verarbeitet, um den Körper
der HTML-Datei aufzubauen.
-
Im einzelnen ist BLK1 eine Einzelspalte
ohne Zeilenspanne oder Spaltenspanne. Entsprechend wird der HTML-Code
in den Schritten S1317 und S1324 bestimmt. Unmittelbar nach der
Einfügung
des Codes wird BLK1 (oder ein Verweis darauf) in die HTML-Datei
eingefügt.
BLK2 ist eine Gemeinschaftsspalte ohne Spaltenspanne oder Zeilenspanne
und mit dem Inhalt einer Zeile von Text. Entsprechend wird der Code <BR> eingefügt, und
diesem folgt unmittelbar BLK2. BLK3 weist die gleiche Klassifizierung
wie BLK2 auf, und ihm geht somit der gleiche HTML-Code voraus. BLK4
ist eine Mehrfachspalte ohne Zeilenspanne oder Spaltenspanne. Entsprechend
wird der HTML-Code durch den Schritt S1330 bestimmt.
-
Auf diese Art und Weise fortfahrend
wird schließlich
die Kombinationsspalte BLK9 erreicht. Entsprechend geht BLK9 kein
HTML-Code voraus. Noch weiter fortfahrend wird BLK14 erreicht, bei
dem es sich um eine Mehrfachspalte mit einer Zeilenspanne von 2
handelt. Entsprechend wird der HTML-Code durch den Schritt S1326
bestimmt. Auf ähnliche
Weise handelt es sich bei BLK12 um eine Gemeinschaftsspalte mit
einer Spaltenspanne von 2.
-
Entsprechend wird der HTML-Code durch
den Schritt S1335 bestimmt.
-
Wenn alle Blöcke verarbeitet worden sind,
werden die in dem Schritt S1314 bestimmten Ende-der-Datei-Codes
eingefügt,
und die HTML-Datei ist vollständig.
Der sich ergebende Code ist nachstehend dargelegt:
-
14 veranschaulicht
das Erscheinungsbild einer gemäß dem vorstehenden
HTML-Code erzeugten Web-Seite. Wie es aus 14 ersichtlich ist, ist ein Titel 201 in
der oberen linken Ecke richtig plaziert, und ein Artikeltyp 202 ist
sehr nahe an der oberen rechten Ecke plaziert. Spalten 204, 205 und 206 sind
beibehalten worden und erscheinen dem Layout des ursprünglichen
Dokuments sehr ähnlich.
Ferner befindet sich eine Fußzeile 209 in
der unteren rechten Ecke, und ein Bild 207 befindet sich
in der unteren linken Ecke unterhalb der Spalten 204 und 205 und
links von der Spalte 206.
-
Somit kann die erzeugte HTML-Datei
zur Erzeugung einer Seite verwendet werden, die dem in dem ursprünglichen
Dokument dargestellten Layout dicht folgt.
-
Die Erfindung ist mit Bezug auf spezielle
veranschaulichende Ausführungsbeispiele
beschrieben. Es ist selbstverständlich,
daß die
Erfindung nicht auf die vorstehend beschriebenen Ausführungsbeispiele
und Modifikationen davon beschränkt
ist und daß durch
den Durchschnittsfachmann verschiedene Änderungen und Modifikationen
ausgebildet werden können.