DE69621992T2 - Anlage und verfahren zur automatischen seitenerfassung und detektion von formularen - Google Patents

Anlage und verfahren zur automatischen seitenerfassung und detektion von formularen

Info

Publication number
DE69621992T2
DE69621992T2 DE69621992T DE69621992T DE69621992T2 DE 69621992 T2 DE69621992 T2 DE 69621992T2 DE 69621992 T DE69621992 T DE 69621992T DE 69621992 T DE69621992 T DE 69621992T DE 69621992 T2 DE69621992 T2 DE 69621992T2
Authority
DE
Germany
Prior art keywords
image
blocks
block
module
pixels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69621992T
Other languages
English (en)
Other versions
DE69621992D1 (de
Inventor
Vijayakumar Rangarajan
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.)
Rebus Technology Inc
Original Assignee
Rebus Technology 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 Rebus Technology Inc filed Critical Rebus Technology Inc
Publication of DE69621992D1 publication Critical patent/DE69621992D1/de
Application granted granted Critical
Publication of DE69621992T2 publication Critical patent/DE69621992T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T3/608Rotation of whole images or parts thereof by skew deformation, e.g. two-pass or three-pass rotation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/14Image acquisition
    • G06V30/1444Selective acquisition, locating or processing of specific regions, e.g. highlighted text, fiducial marks or predetermined fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Character Input (AREA)
  • Editing Of Facsimile Originals (AREA)

Description

    Gebiet der Erfindung
  • Diese Erfindung betrifft das Gebiet der Verarbeitung von Formularen mit optischen Scannern und optischer Zeichenerkennung, insbesondere Systeme und Verfahren, die automatisch eine Seitenverkippung und eine Verschiebung erfassen und kompensieren.
  • Hinterrund der Erfindung
  • Optische Zeichenerkennung ("OCR") ist weit verbreitet, um Text aus gedruckten oder handgeschriebenen Dokumenten und Formularen herauszuziehen. Typischerweise wird ein Dokument mit einem optischen Scanner gescannt, um Pixel-Grafikdaten zu erzeugen. Eine OCR-Software-Anwendung verarbeitet die Grafikdaten und zieht daraus den gesamten Text heraus. Ein Anwender sieht dann oft das entstandene Textfile durch und verarbeitet es entweder mit einer anderen Software, um nur gewünschten Informationen zu erhalten, oder er speichert es in einer nutzbaren Form, wie z. B. in einem Textverarbeitungs-, Datenbank-, Tabellen-, Abrechnungssystem oder dergleichen.
  • Bei der Bearbeitung von Formularen ist es wünschenswert, aus dem auf Text basierenden, vorgedruckten Formular nur die Textdaten herauszuziehen, die von einem Benutzer auf dem Formular hinzugefügt wurden. Zum Beispiel auf einer Rechnung mit bestehenden Textdaten, wie ein Firmenname, eine Adresse und Beschreibungen verschiedener Textblöcke, wie "Kundenname", "Kundenadresse", "Gegenstand", "Menge" und dergleichen, ist es wünschenswert nur die Informationen für solche Blöcke zu erfassen, jedoch nicht den beschreibenden Text. Dies ermöglicht eine effizientere Verarbeitung der Textdaten, ohne die Notwendigkeit, den gesamten Text nachzubearbeiten, um die nützlichen Informationen herauszuziehen.
  • PROC. SPIE: REAL TIME IMAGE PROCESSING: CONCEPTS AND TECHNOLOGIES (Echtzeitbildverarbeitung: Konzepte und Technologien), Band 860, 17. November 1987, CANNES, FR, Seiten 89-94, XP002010095 A. DENGEL ET AL: "Modell basierende Segmentierung und Hypothesenerzeugung für die Erkennung von gedruckten Dokumenten" offenbart ein Verfahren zum automatischen Identifizieren benutzerdefinierter Bereiche in einem Bild, in dem Schlüsselflächen, wie die Adresse oder die Unterschrift für einen Brief oder die Zusammenfassung eines Berichtes, in einem Dokument beschrieben werden. Dieser Segmentierungsvorgang benutzt ein Modell eines speziellen Dokumentenlayouts. Die Richtigkeit dieser Segmentierung kann in einem zweiten Schritt unter Verwendung der Ergebnisse zeitaufwendigerer Vorgänge, wie Text/Grafik-Klassifikation, optische Zeichenerkennung und dem Vergleich mit aufwendigeren Modellen für bestimmte Dokumentenabschnitte, nachgeprüft werden. Diese Segmentierung ist in der Lage, direkt mit der Rastergrafik eines Dokumentes zu arbeiten.
  • Frühere Systeme zur Formularbearbeitung benutzten Schablonen mit Benutzerdefinierten Bereichen, die in der Schablone angeordnet sind, um Orte auf den Eingabedokumentenbildern zu identifizieren, an denen der gewünschte Text voraussichtlich zu finden ist. In diesen Systemen sind die benutzerdefinierten Bereiche in der Schablone in Bezug auf die identifizierten Grenzen des Bildes, d. h. das obere Ende, das untere Ende und die Seiten des Bildes, wie sie in der Pixelgrafik festgelegt sind, angeordnet.
  • Das Problem bei diesen konventionellen Systemen besteht darin, daß, wenn ein nachfolgendes Dokument mit einer Schablone verarbeitet wird, die benutzerdefinierten Bereiche auf dem aus dem Dokument erzeugten Bild nicht richtig aufgezeichnet oder angeordnet sind. Dies tritt dadurch auf, daß, wenn das Dokument eingescannt wird, das Dokument gegenüber dem Scannerbett entweder durch einen fehlerhaften Dokumenteneinzug oder durch ein ungenaues Anlegen durch den Benutzer gedreht wird. Außerdem kann das Dokument gegenüber den Seiten des Scannerbetts verschoben sein. In beiden Fällen wird das entstandene Pixelgrafik- Bild von dem Pixelgrafik-Bild der ursprünglichen Schablone eventuell erheblich abweichen und die benutzerdefinierten Bereiche werden nicht mehr auf die richtigen Abschnitte des Bildes passen. Im Ergebnis wird das System nicht in der Lage sein, den richtigen Text in jedem der benutzerdefinierten Bereiche zu erfassen.
  • Daher ist es wünschenswert, ein System oder ein Verfahren zur Verfügung zu stellen, das benutzerdefinierte Bereiche von einer Schablone auf einem Eingabebild, auch bei Vorliegen größerer Beträge einer Verdrehung oder einer Verschiebung, zu identifizieren.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung überwindet die vorhergehenden Beschränkungen durch ein Verfahren und ein System, das automatisch die benutzerdefinierten Bereiche in einem Dokument, sogar bei Vorliegen von erheblichen Beträgen einer Verdrehung oder einer Verschiebung, zu identifizieren. Das grundlegende Konzept, das der Erfindung unterliegt, besteht darin, daß das Verhältnis zwischen verschiedenen Text- oder Bildelementen in einem Bild ohne Verkippung die gleichen bleiben werden, unabhängig von der Verkippung, einer Positionsverschiebung, einer Seitenbildauflösung oder einer Seitengröße bei einer gegebenen Helligkeits- und Kontrasteinstellung. Insbesondere ändern sich die relativen Abstände zwischen diesen Text und/oder Bildbereichen nicht durch irgendeinen der vorher genannten Parameter. Demgemäß werden die Verhältnisse zwischen verschiedenen Text- und Bildbereichen auf einer gegeben Seite erfaßt und zur Seitenerfassung und zur Ermittlung der Benutzerdefinierten Bereiche verwendet. Die Beziehungen zwischen verschiedenen Text- und Bildbereichen werden unter Benutzung dynamischer Datennetze erfaßt.
  • Ein dynamisches Datennetz ist ein Netzt von Verknüpfungen oder Vektoren, die mit bestimmten qualifizierten Systemblöcken verknüpft sind, die in dem Bild vorliegen. Dynamische Datennetze sind für jedes Bild bei einer bestimmten Helligkeits- und Kontrasteinstellung eindeutig. Eine Schablone, die ein dynamisches Datennetz umfaßt, wird durch Bearbeitung eines Eingabebildes, vorzugsweise aus einem Formular, gebildet, das benutzt werden wird, um nachfolgende Eingabedokumente zu verarbeiten. Wenn diese Dokumente später eingegeben werden, wird für jedes Eingabebild ein dynamisches Datennetz erzeugt und mit dem dynamischen Datennetz einer ausgewählten Schablone verglichen. Wenn eine Übereinstimmung vorliegt, kann das System dann genau die benutzerdefinierten Bereiche auf dem Bild auffinden und dabei eine Einrichtung zur optischen Zeichenerkennung benutzen, um den Text oder irgendeine andere benutzerdefinierte Information aus dem Bild an diesen Orten herauszuziehen.
  • Eine Schablone wird durch mehrere Bearbeitungsvorgänge gebildet. Vorzugsweise wird das Eingabebild auf ungefähr 50 dpi unterabgetastet. Eine Verkippung wird erfaßt und das Bild wird zum Entfernen der Verkippung gedreht. In einer Datenaufbereitungsphase werden horizontale und vertikale Linien entfernt und anschließend die verbleibenden Bilddaten geglättet, welche im wesentlichen Textdaten und Bildtyp-Daten in Blöcke von zusammenhängenden Pixeln sein sollten. Diese Blöcke werden gekennzeichnet, mit einer Identifikationsnummer versehen und in Text-, Bild- oder Dual-Blöcke klassifiziert.
  • Die klassifizierten Blöcke werden weiterhin in der Größe und der Form gefiltert, um eine Anzahl von Systemblöcken zu bilden, die für eine Benutzung in einem dynamischen Datennetz geeignet sind. Bestimmte Systemblöcke werden gemäß der Lage und der Größe in dem Bild ausgewählt, und aus diesen wird ein dynamisches Datennetz erzeugt. Das dynamische Datennetz definiert die Beziehungen zwischen den Systemblöcken in einer Auflösungsgrößen-, Verkippungs- und Verschiebungsvarianten-Weise. Da die Systemblöcke bei einer gegebenen Helligkeits- und Kontrasteinstellung sich nicht sehr stark ändern, sind die Vektoren, die das dynamische Datennetz definieren, weniger empfindlich bei Veränderungen in der Verkippung, der Verschiebungen oder derartigem.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist ein Blockdiagramm eines Systems zum automatischen Erfassen und Bestimmen benutzerdefinierten Bereiche in Eingabedokumenten unter Benutzung von Schablonen.
  • Fig. 2 ist ein Flußdiagramm des gesamten Verfahrens der Schablonendefinition und der Seitenerfassung.
  • Fig. 3 ist ein Flußdiagramm des Vorgangs einer Definition einer Schablone.
  • Fig. 4 ist ein Datenflußdiagramm des Definitionsablaufteils bezüglich verschiedener Module, die zum Erzeugen einer Schablonendefinition benutzt werden.
  • Fig. 5a und 5b sind Darstellungen des Ablaufs der Verkippungsbestimmung zum Bestimmen einer Verkippung in einem Eingabebild.
  • Fig. 6 ist ein Flußdiagramm des Vorgangs zur Bestimmung der Verkippung.
  • Fig. 7a und 7b sind Darstellungen von Beispielen von Benutzerschnittstellen zum Definieren benutzerdefinierter Bereiche auf einem Bild.
  • Fig. 8 ist ein Datenflußdiagramm des Datenaufbereitungsmoduls in Verbindung mit verschiedenen Modulen zum Aufbereiten eines Eingabebildes.
  • Fig. 9 ist ein Flußdiagramm des Datenaufbereitungsvorgangs.
  • Fig. 10 ist ein Flußdiagramm des Ablaufs der Blockidentifikation des Kennzeichnungsmodul.
  • Fig. 11 ist ein Flußdiagramm des Ablaufs der Datentypklassifikation.
  • Fig. 12 ist ein Flußdiagramm des Ablaufs zur Erzeugung des dynamischen Datennetzes.
  • Fig. 13a und 13b sind ein Flußdiagramm des Ablaufs der Erfassung eines Eingabebildes mit einer Schablone.
  • Fig. 14 ist eine Darstellung eines zurückgekippten bitonalen Bildes, das bei 50 dpi unterabgetastet ist.
  • Fig. 15 ist eine Darstellung des Bildes der Fig. 14 nach einer Lauflängenglättung.
  • Fig. 16 ist eine Darstellung der Entfernung horizontaler Linien auf dem Bild der Fig. 15.
  • Fig. 17 ist eine Darstellung des Bildes der Fig. 14 ohne horizontale Linien.
  • Fig. 18 ist eine Darstellung des Bildes der Fig. 17, das normalisiert und gedreht ist.
  • Fig. 19 ist eine Darstellung des geglätteten Bildes der Fig. 18.
  • Fig. 20 ist eine Darstellung der Ergebnisse des Entfernens vertikaler Linien in Fig. 19.
  • Fig. 21 ist eine Darstellung eines zurückgekippten, gedrehten Bildes ohne horizontale oder vertikale Linien aus der Vereinigung der Bilder der Fig. 18 und 20.
  • Fig. 22 ist eine Darstellung des richtig gedrehten Bildes der Fig. 21 nach einer Denormalisierung.
  • Fig. 23 ist eine Darstellung einer horizontalen Glättung des Bildes der Fig. 22.
  • Fig. 24 ist eine Darstellung einer vertikalen Glättung des Bildes der Fig. 21.
  • Fig. 25 ist eine Darstellung eines Bildes nach einer vertikalen und horizontalen Glättung zum Bilden von Datenblöcken.
  • Fig. 26 ist eine Darstellung einer weiteren Glättung des Bildes der Fig. 25 zum Verbessern der Datenblöcke darin.
  • Fig. 27 ist eine schematische Darstellung der Ergebnisse einer Kennzeichnung der Datenblöcke in den Bildern der Fig. 26.
  • Fig. 28a-h sind Darstellungen eines dynamischen Datennetzes in verschiedenen Zuständen des Aufbaus.
  • Detaillierte Beschreibung der Erfindung Systemarchitektur
  • Bezug nehmend auf Fig. 1 wird ein System zur Benutzung des verbesserten automatischen Seitenserfassungssystems der vorliegenden Erfindung gezeigt. Das System 100 umfaßt ein Computer 101 mit einem Sekundärspeicher 107 zur Langzeitspeicherung von eingescannten Dokumenten und Seitenerfassungsschablonen, eine Eingabeeinrichtung 109 und eine Ausgabeeinrichtung 116 zum Empfangen und Ausgeben von Befehlen und Daten in das System 100, und einen adressierbaren Speicher 113 zum Speichern verschiedener Codemodule zum Ausführen durch einen Prozessor 111. Das System 100 umfaßt einen Scanner 115, der in der Lage ist, Eingabedokumente zu scannen und entweder Grauskalen-, schwarzweiße oder farbige Pixelgrafikdateien für die Eingabedokumente zu erzeugen. Der Scanner 115 hat vorzugsweise eine Auflösung von wenigstens 50 dpi. Das System 100 umfaßt einen Drucker 117 zum Drucken von Dokumenten, einschließlich eingescannter Dokumente oder andere Dokumente, die in dem System 100 gespeichert sind.
  • Der adressierbare Speicher 113 umfaßt eine Zahl von Codemodulen, die zusammen eine ausführbare Anwendung umfassen, die das automatische Seitenerfassungsverfahren der vorliegenden Erfindung steuert. Insbesondere umfaßt der adressierbare Speicher 113 einen Anwendungsausführungsteil 137, eine Scannersteuermodul 139, einen Definitionsausführungsteil 121, einen Erfassungsausführungsteil 135, ein Verkleinerungsmodul 123, ein Modul zur Verkippungsbestimmung 125, ein Modul zum Zurückkippen 127, ein Datenaufbereitungsmodul 129, ein Kennzeichnungsmodul 131, ein Schablonenmodul 133 und ein Modul zur optischen Zeichenerkennung 145. Die Arbeitsweisen dieser verschiedenen Module werden weiter unten, nach einer Beschreibung des Verfahrens, das eine automatische Seitenerfassung unterstützt, beschrieben. Der adressierbare Speicher 113 umfaßt weiterhin einen Primärbildpuffer 141 und einen Sekundärbildpuffer 143, die benutzt werden, um ein Bild in verschiedenen Zuständen der Umformung durch die Module zu speichern.
  • Der Anwendungsausführungsteil 137 sorgt für die Gesamtsteuerung des Systems 100, einschließlich den übrigen Modulen. Der Anwendungsausführungsteil 137 stellt eine Benutzerschnittstelle zur Kommunikation mit dem Benutzer zur Verfügung, um Benutzerbefehle und Daten aufzunehmen. Durch eine geeignete Benutzerschnittstelle ermöglicht der Anwendungsausführungsteil 137 dem Benutzer, Eingabedokumente in das System 100 mit dem Scanner 115 oder mit anderen Quellen einzugeben, um Schablonen zur Verarbeitung der Dokumente mit dem Definitionsausführungsteil 121 zu erzeugen und weitere Eingabedokumente mit definierten Schablonen mit dem Erkennungsausführungsteil 135 zu bearbeiten.
  • Systemarbeitsweise I. Gesamtprozessablauf
  • Das System 100 bildet ein verbessertes Verfahren zur automatischen Erfassung eines Eingabedokumentes, um eine Verkippung und Verschiebung zu beseitigen und dabei für ein genaueres Herausziehen von Daten aus dem Dokument unter Benutzung einer optischen Zeichenerkennung zu sorgen. Das Verfahren umfaßt zwei Grundvorgänge: Erzeugen einer Schablone für einen gegeben Typ eines Dokumentes oder eines Formulars und Anwenden der Schablone auf ein Eingabedokument, um Daten aus dem Formular zu identifizieren und herauszuziehen.
  • Bezug nehmend auf Fig. 2 wird ein Flußdiagramm des Gesamtverfahrens der vorliegenden Erfindung gezeigt. In Verbindung mit dem System 100 definiert 201 der Benutzer eine Schablone für ein gegebenes Formular. Jede Schablone beschreibt die interne Struktur eines Formulars durch Spezifizieren einer Anzahl von benutzerdefinierten Bereichen, die herauszuziehende Textdaten enthalten und eine Anzahl von Blöcken, die von dem System identifiziert werden. Die Schablone wird durch die Beziehung zwischen den systemdefinierten Blöcken definiert. Der Benutzer kann irgendeine Anzahl von Schablonen erzeugen, wobei jede einem bestimmten Formular entspricht. Zum Beispiel kann der Benutzer verschiedene Schablonen zum Bearbeiten von Rechnungen, Bestellungen, Geschäftsantwortkarten, Befragungsformularen, Fragebögen, Fernkopien, Visitenkarten und dergleichen definieren. Dies sind nur einige von vielen verschiedenen möglichen Formularen, für die Schablonen erzeugt werden können. Demgemäß ist hier ein Formular als jeder Typ von Dokument zu verstehen, für das mehrere Instanzen, die verschiedene Daten enthalten, erzeugt und benutzt werden. Die Erzeugung und Definition der Schablone wird durch den Definitionsausführungsteil 121 gesteuert.
  • Der Benutzer wählt anschließend 203 eine bestimmte Schablone aus einem Satz von definierten Schablonen aus. Wenn der Benutzer beispielsweise einen Stapel von Rechnungen bearbeitet, würde der Benutzer eine passende Rechnungsschablone für solche Dokumente auswählen.
  • Der Benutzer fährt mit der Eingabe 205 der Dokumente in das System 100 fort. Dies wird vorzugsweise mit dem Scanner 115 und dem Scannersteuermodul 139 bewerkstelligt. Alternativ kann der Benutzer die Dokumente aus anderen Quellen, einschließlich einem direkten Faxempfang, eingeben 205. Jede Quelle von Eingabedokumenten kann benutzt werden, die für jedes Dokument eine Pixelgrafikbilddatei erzeugt. Alternativ können auch auf Vektoren basierende Dateien benutzt werden, wenn diese geeignet in Pixelgrafikbilder umgewandelt werden.
  • Wenn jedes Dokument eingegeben ist 205, wird die ausgewählte Schablone auf das Bild des Dokuments angewandt 207. Die Schablone identifiziert auf dem Dokument die benutzerdefinierten Blöcke, die Textdaten enthalten, die der Benutzer herausziehen möchte. Diese Identifizierung wird automatisch ausgeführt und identifiziert die benutzerdefinierten Blöcke sogar beim Vorliegen einer Verkippung oder einer Verschiebung des Bildes gegenüber dem Originalformular, das die Schablone definiert hat. Daher ist, sogar wenn das Eingabedokument in den Scanner 115 beispielsweise fehlerhaft eingezogen wurde und das entstandene Bild verkippt ist, das System 100 noch in der Lage, die benutzerdefinierten Bereiche zu identifizieren. Zusätzlich besteht keine Notwendigkeit, auf dem Formular zusätzliche Erfassungsmarken, die üblicherweise angewandt werden, anzuordnen und das Dokument während dem Einscannen auszurichten. Die Anwendung der Schablone auf das Bild wird durch den Erfassungsausführungsteil 135 durchgeführt.
  • Wenn die benutzerdefinierten Bereich einmal identifiziert sind, wendet das System 100 das Modul zur optischen Zeichenerkennung 145 in konventioneller Weise an, um die Daten aus den identifizierten benutzerdefinierten Bereichen herauszuziehen 209. Diese Daten werden zum nachfolgenden Zugreifen und Verarbeiten gespeichert 211. Der Benutzer kann mit der Eingabe 205 weiterer Dokumente fortfahren oder er kann die Verarbeitung beenden.
  • II. Definition der Schablone
  • Bezug nehmend auf Fig. 3 wird ein Flußdiagramm des Vorgangs 201 der Definition einer Schablone gezeigt und Bezug nehmend auf Fig. 5 wird ein Datenflußdiagramm des Definitionsausführungsteil 121 in Zusammenwirkung mit anderen Modulen während der Definition einer Schablone gezeigt. Der Definitionsausführungsteil 121 steuert den Arbeitsablauf der Module 123 bis 133, ruft jedes Modul auf, wenn es benötigt wird, übergibt die notwendigen Eingaben an das Modul und empfängt die Ausgaben daraus, um die Schablone zu erzeugen. Fig. 14 bis 28 sind Darstellungen eines gegebenen Eingabedokumentes während den verschiedenen Zuständen der Schablonendefinition.
  • A. Bilderzeugung
  • Die Definition der Schablone beginnt mit der Eingabe 301 eines Formulars in das System 100, welches ein Exemplar des Dokumenttyps ist, aus dem der Benutzer ausgewählte Daten aus bestimmten Flächen oder Bereichen auf dem Formular erfassen möchte. Zum Beispiel kann der Benutzer wünschen, eine Schablone einer Rechnung zu erzeugen, und durch optische Zeichenerkennung Textdaten aus bestimmten Flächen, wie den Kundennamen, die Adresse, die Rechnungsnummer, die Produktbezeichnung, die Menge, den Preis und den Gesamtbetrag, zu erfassen.
  • Um das Formular einzugeben 301, benutzt der Benutzer vorzugsweise den Scanner 115 in Verbindung mit dem Scanner-Steuermodul 139. Das Scanner-Steuermodul 139 steuert den Betrieb des Scanners 115, zum Beispiel um die Helligkeit, den Kontrast, die Auflösung und dergleichen einzustellen. Der Scanner 11 S gibt eine Bilddatei aus, die eine Grauwert-, bitonale oder farbige Pixelgrafik sein kann. Wenn der Scanner Grauwert- oder Farbbilder ausgibt, führt das Scanner-Steuermodul 139 vorzugsweise eine Schwellenwertoperation aus, um ein bitonales Bild zur Benutzung in dem System zu erzeugen. Jede Standardschwellenwerttechnik kann benutzt werden, um ein bitonales Bild zu erlangen. Im wesentlichen wird jedes gegebene Grauwert- oder Farbbild (4, 8 oder 24 Bit/Pixel) in 1 Bit/Pixel umgewandelt, indem ermittelt wird, ob ein gegebener Grauwert- oder Farbpixel einen vorgegebenen Schwelllenwert x überschreitet, wobei x typischerweise auf 2Tiefe/2 gesetzt wird, wobei "Tiefe" die Anzahl von Bits/Pixel in dem Bild ist. Wenn dem so ist, wird dem Pixelwert eine 1 zugewiesen, und falls nicht, wird dem Pixelwert eine 0 zugewiesen. Ein Pixelwert von 1 kann bedeuten, daß der Pixel gesetzt ist oder umgekehrt, wie es zur Umsetzung gewünscht ist. Zusätzlich können Bilddateien aus irgendeiner anderen Quelle in das System 100 eingegeben werden und gemäß der vorliegenden Erfindung bearbeitet werden. Solche Quellen umfassen Faxbilden, Grafikbilder, die mit einer Grafikanwendung erzeugt wurden, oder sogar Bilder, die aus eingescannten Fotografien, einem Video oder dergleichen erlangt wurden.
  • B. Bildverkleinerung
  • Der Definitionsausführungsteil 121 empfängt die Datei des bitonalen Bilds von dem Scanner- Steuermodul 139 über den Anwendungsausführungsteil 137 oder aus einer anderen Quelle. Der Definitionsausführungsteil 121 übergibt die Datei des bitonalen Bildes zu dem Verkleinerungsmodul 123. Das Verkleinerungsmodul 123 verkleinert 303 oder unterabtastet das eingegebene bitonale Bild, wobei die Auflösung des Bildes von der ursprünglichen Auflösung zu einer niedrigen Auflösung verringert wird, die besser zur Formularbearbeitung und Schablonendefinition geeignet ist. Konventionelle Scanner, wie der Scanner 115, erzeugen ein Bild mit hoher Auflösung (wenigstens 600 dpi), die dafür geeignet ist, eine sehr genaue optische Zeichenerkennung zu erzeugen. Dieses Auflösungsniveau ist jedoch nicht notwendig, um Schablonen zur Formularbearbeitung zu erzeugen und zu definieren, und benötigt außerdem besondere Anforderungen bezüglich des Speichers und der Speicherplatzbedürfnisse und beeinträchtigt signifikant die Leistungen. Das Verkleinerungsmodul 123 bestimmt daher die ursprüngliche Auflösung der Quelle und berechnet einen Skalierungs- oder Unterabtastfaktor für das Bild.
  • In der bevorzugten Ausführungsform wird das Eingabebild von der Auflösung der Quelle auf ungefähr 50 dpi skaliert und ein geeigneter Skalierungsfaktor wird für dieses Ergebnis berechnet. Wenn beispielsweise ein Bild eine ursprüngliche Auflösung von 200 dpi besitzt, ist der Skalierungsfaktor 4 und das resultierende unterabgetastete Bild wird 25% der Größe des ursprünglichen Bildes besitzen. Wenn die Quellenauflösung kein Vielfaches von 50 dpi beträgt, wird ein Skalierungsfaktor so gewählt, daß im Ergebnis die Auflösung nächstmöglich an 50 dpi liegt und vorzugsweise eine Bildgröße gleich oder weniger als 64 kb beträgt. Die Beschränkung der Bildgröße ist nützlich, um die Gesamtleistung zu verbessern und um Begrenzungen zu vermeiden, die durch die bestehende x86-Architektur und unterstüztende Progammierwerkzeuge hervorgerufen werden. Die bevorzugte Ausführungsform des Verkleinerungsmoduls 123 verwendet eine Dezimierungstechnik, bei der eine proportionale Anzahl von Pixeln aus dem ursprünglichen Bild während des Unterabtast-Vorgangs weggelassen werden. Wenn beispielsweise das bitonale Bild 300 dpi besitzt, werden für jedes ausgewählte Bit die nächsten 6 Bits ignoriert. Das Verkleinerungsmodul 123 gibt ein unterabgetastetes Bild in dem Bildpuffer 141 aus. Der Bildpuffer 141 wird während der Bearbeitung verwendet, um den aktuellen Zustand des bearbeiteten Eingangsbildes zu speichern.
  • C. Bestimmung der Verkippung
  • Wenn die Bilddatei verkleinert ist 303, aktiviert der Definitionsausführungsteil 121 das Modul zur Verkippungsbestimmung 125, um das Vorliegen und den Grad einer Verkippung in einem Eingabebild zu bestimmen. Das Modul zur Verkippungsbestimmung 125 greift auf den Bildpuffer 141 zu, um das von dem Verkleinerungsmodul 123 ausgegebene, unterabgetastete Bild zu erlangen. In der bevorzugten Ausführungsform ist das Modul zur Verkippungsbestimmung 125 in der Lage, eine Verkippung zwischen -60º und +60º zu bestimmen, wobei 0º einer perfekten horizontalen und vertikalen Ausrichtung des Eingabedokuments auf dem Scanner 115 entspricht.
  • Die Fig. 5a und 5b sind graphische Darstellungen der Analyse der Verkippungsbestimmung. Ein eingescanntes Bild 500 soll eine Textzeile 501 umfassen, die einige Grad Verkippung aufzeigt. Die Textzeile 501 wird geglättet, wodurch eine Anzahl von Textblöcken 503 entstehen, von denen jeder eine zusammenhängende Serie von Pixeln enthält. Außerdem können in dem Bild Bildblöcke (nicht gezeigt) vorhanden sein, die Daten, die nicht von Text abgeleitet sind, enthalten, wie Linien, Schattierungen oder dergleichen. Verbundene Blöcke 503 werden identifiziert. Eine imaginäre Linie 505 wird zwischen der linken Kante und der rechten Kante eines verbundenen Satzes von Blöcken 503 berechnet und ein Verkippungswinkel F zwischen dieser Linie und einer horizontalen Linie 507, die sich von dem linken Rand des Blocks 503 erstreckt, bestimmt. Dieser Vorgang wird für jeden verbundenen Satz von Blöcken in einen Bild 500 wiederholt, und ein Verkippungswinkel F wird mit jedem solchen Satz verbundener Blöcke 503 verknüpft. Wenn eine Mehrzahl von einzelnen Verkippungswinkeln F im wesentlichen innerhalb eines vorgegebenen Toleranzbereiches gleich sind, werden alle einzelnen Verkippungswinkel F gemittelt, um einen Verkippungwinkel für das Bild 500 zusammen mit einer Orientierung (in/entgegen dem Uhrzeigersinn) zu erzeugen.
  • Bezug nehmend auf Fig. 6 wird ein Flußdiagramm eines bevorzugten Verfahrens der Verkippungsbestimmung durch das Modul zur Verkippungsbestimmung 125 gezeigt. Das Modul zur Verkippungsbestimmung 125 führt eine Lauflängenglättung auf den unterabgetasteten Pixel- Daten in dem Bildpuffer 141 durch 601, um die geglätteten Blöcke zu erzeugen. Dies wird durch Aufrufen eines Glättungsmoduls 801 (Fig. 8) bewerkstelligt. Das Glättungsmodul 801 wendet eine allgemeine Lauflängenglättungsbearbeitung auf die nicht gesetzten (weiß) Pixel in dem Eingabebild unter Verwendung eines Eingangslauflängenparameters an, der die nicht gesetzten Pixel in gesetzte (schwarzen) Pixel konvertiert. In der bevorzugten Ausführungsform wird die Glättung an diesem Punkt mit einem Lauflängenwert von 5 durchgeführt, der auf der bevorzugten Auflösung des Bildes (50 dpi) und einer typischen Schriftgröße in den Textdokumenten beruht. Wenn andere Auflösungen in dem System benutzt werden, wird ein unterschiedlicher Lauflängenparameter spezifiziert. Das geglättete Bild wird in dem primären Bildpuffer 141 gespeichert.
  • Das Modul zur Verkippungsbestimmung 125 erweitert 603 anschließend jedes Bit, das ein Pixel in dem Bild darstellt, zu einem Wort (2 Byte). Die Erweiterung jedes Bits auf eine 16- Bit-Darstellung ermöglicht die Speicherung zusätzlicher Informationen über jedes Pixel, wie ein eindeutiger Identifikationswert und Informationen, die die Pixel mit anderen Pixeln verknüpfen und dabei die einzelnen Blöcke identifizieren. Wenn eine zusätzliche Bitbreite für Blockidentifikationszahlen oder anderen Informationen benötigt wird, kann eine Erweiterung auf zusätzliche Bytes verwendet werden. Jedes Wort wird später von dem Kennzeichnungsmodul 131 benutzt, um die Blockidentifikationswerte zu speichern. Wenn beispielsweise nach einer Glättungsbearbeitung das Pixel einen Abschnitt wie 1111111110000000 umfaßt, wobei "1" das Vorliegen von Daten (schwarze Pixel) darstellt und "0" das Nicht-Vorliegen von Daten (weißes Pixel) darstellt, wird nach der Erweiterung jedes Bit als ein Zwei-Byte-Wort gespeichert:
  • Das Modul zur Verkippungsbestimmung 125 ruft dann das Kennzeichnungsmodul 131 auf, um die Pixel in dem Bild in Blöcke zu unterteilen. Die Bearbeitung durch das Kennzeichnungsmodul 131 wird nachfolgend beschrieben. Das Kennzeichnungsmodul 131 identifiziert jeden der Blöcke aus den Pixeldaten und identifiziert weiterhin jeden Satz verbundener Blöcke, d. h. Blöcke, die durch schwarze (gesetzte) Pixel verbunden sind. Jeder Satz verbundener Blöcke wird mit einer eindeutigen Identifikationsnummer gekennzeichnet, so daß alle verbundenen Blöcke die gleiche Identifikationsnummer besitzen.
  • Nicht alle der Blöcke in dem Bild sind geeignet, um die Gesamtverkippung des Bildes zu bestimmen. Insbesondere Blöcke, die entweder zu klein oder zu groß im Bezug auf die Gesamtbildgröße sind, neigen dazu, nicht signifikant zur tatsächlichen Gesamtverkippung beizutragen. Kleine Blöcke liefern nur eine sehr geringe Verkippungsinformation und große Blöcke geben zu große Verkippungswerte. Daher filtert 607 das Modul zur Verkippungsbestimmung 125 die Blöcke aus, die außerhalb vorbestimmter Bereiche in Höhe und Breite liegen, bevor ihre Verkippungswinkel bestimmt werden. In der bevorzugten Ausführungsform filtert das Modul zur Verkippungsbestimmung 125 Blöcke mit einer Höhe größer als 99 Pixel und einer Breite größer als 149 Pixel oder Blöcke mit einer Höhe geringer als 6 Pixel und einer Breite geringer als 25 Pixel heraus. Die Filterparameter beruhen wieder auf der Auflösung des unterabgetasteten Bildes und würden entsprechend bei anderen Auflösungen angepaßt werden. Aus den verbleibenden Blöcken wird die mittlere Höhe und die mittlere Breite bestimmt und nur die Blöcke mit Abmessungen, die diese Werte überschreiten, werden weiter verarbeitet. Die Blöcke, die nicht herausgefiltert werden, sind gültige Blöcke.
  • Das Modul zur Verkippungsbestimmung 125 ermittelt 609 anschließend aus den verbleibenden Blöcken den Verkippungswinkel F und die Richtung der Verkippung für jeden Satz verbundener Blöcke, wie oben beschrieben. Die imaginäre Linie wird vorzugsweise von der Mitte (in der y-Achse) des linken Randes des Blocks zu der Mitte des rechten Rands berechnet.
  • In einer bevorzugten Ausführungsform ist der Verkippungswinkel tan&supmin;¹ (ΔY/ΔX) wobei ΔX die Differenz zwischen den x-Achsenkoordinaten der Mitte des linken und rechten Randes des Blocks ist und ΔY die Differenz zwischen den y-Achsenkoordinaten der Ränder ist.
  • In einer alternativen Ausführungsform wird die imaginäre Linie von der oben linken zu der unteren rechten Ecke des Blocks genommen, und somit ist dann ΔX die Differenz zwischen den x-Achsenkoordinaten der oberen linken und der unteren rechten Ecke des Blocks und ΔY ist die Differenz der y-Achsenkoordinaten der Ecken. In dieser Ausführungsform werden die Ecken wie folgt bestimmt. Für jede Pixelspalte in dem Block wird das untere Ende der Spalte als ein nicht gesetztes Pixel gefolgt von einer Serien von gesetzten Pixeln bestimmt. Die Koordinaten des unteren Endes der Spalte werden gespeichert. Die Differenz zwischen dem unteren Ende der aktuellen Pixelspalte und dem unteren Ende der nächsten Pixelspalte, ΔC, wird für jede Pixelspalte notiert. ΔC wird berechnet, um mögliche Verkippungswinkelfehler zu eliminieren, die durch Text mit Oberlängen, wie die Buchstaben "h, 1, d", und mit Unterlängen, wie "g, p, y", hervorgerufen werden. Für den Gesamtblock wird dann der ermittelte Wert ΔC genommen. Pixelspalten, die ΔC-Werte außerhalb des Bereichs (mittleres ΔC ± 2 Pixel) (unter Annahme eines Bildes von 50 dpi) liegen, werden zur Ermittlung der Enden der imaginären Linie ignoriert, die zur Bestimmung des Verkippungswinkels benutzt werden wird. Dies ist der "ΔC-Test". Das untere Ende der ersten Pixelspalte mit einem ΔC-Wert, der dem ΔC-Test beim Querlaufen aus der linken oberen Ecke des Blocks genügt, legt den Beginn der imaginären Linie fest, und das untere Ende der letzten Pixelspalte, das dieser Bedingung genügt, legt das andere Ende der imaginären Linie fest. Dieser Vorgang wird für jedem gültigen Block wiederholt, und die Orientierung (Drehrichtung) und der Verkippungswinkel wird in dem erweiterten Wort jedes Pixels gespeichert.
  • Das Modul zur Verkippungsbestimmung 125 führt eine Serie von Tests durch, um sicherzustellen, daß das Bild einen Richtungs- und Verkippungsbetrag besitzt, der sowohl signifikant als auch von dem System 100 ausgleichbar ist. Das Modul zur Verkippungsbestimmung 125 ermittelt 611, ob die Gesamtanzahl gültiger Blöcke geringer oder gleich 2 ist. Eine solche geringe Anzahl qualifizierter Blöcke ist nicht aussagekräftig für die Verkippung des gesamten Bildes. Wenn dies der Fall ist, setzt 617 das Modul zur Verkippungsbestimmung 125 demgemäß den Bildverkippungswinkel F auf 0º.
  • In den anderen Fällen ermittelt 613 das Modul zur Verkippungsbestimmung 125 dann die Orientierung, die von der größten Zahl von Sätzen verbundener Blöcke eingenommen wird. Wenn diese Anzahl einer Mehrzahl, vorzugsweise von wenigstens 75% der gesamten Anzahl von Sätzen verbundener Blöcke ist, wird diese Orientierung als die Orientierung des gesamten Bildes genommen. Das Modul zur Verkippungsbestimmung 125 berechnet den Bildverkippungswinkel F durch Mitteln 615 der einzelnen Verkippungswinkel F der gültigen Blöcke.
  • Das Modul zur Verkippungsbestimmung 125 ermittelt 619, ob der Bildverkippungswinkel F größer als 60º ist. Wenn dem so ist, kann das Dokument stark fehlausgerichtet und wahrscheinlich nicht korrekt eingescannt oder andersweitig erfaßt sein und es ist daher unwahrscheinlich, daß es erfolgreich identifiziert und berarbeitet werden kann. In diesem Fall setzt 617 das Modul zur Verkippungsbestimmung 125 den Bildverkippungswinkel F auf 0º. Andernfalls, wenn der Bildverkippungswinkel F innerhalb der Grenzbedingungen liegt, gibt das Modul zur Verkippungsbestimmung 125 diesen Wert zurück. Dies wird in Fig. 4 als Rückgabe des bestimmten Verkippungswinkels gezeigt.
  • D. Zurückkippen
  • Wieder Bezug nehmend auf Fig. 3 ermittelt 307 der Definitionsausführungsteil 121 mit dem bestimmten Verkippungswinkel, ob das Bild zurückzukippen ist oder nicht. In der bevorzugten Ausführungsform kippt der Definitionsausführungsteil 121 das Bild nicht zurück, wenn der Bildverkippungswinkel gleich oder kleiner als 1º ist, da dieser kleine Betrag der Verkippung keinen Einfluß auf die Erfassung des Formulars gegenüber der Schablone hat.
  • Wenn der Bildverkippungswinkel F 1º übersteigt, ruft der Definitionsausführungsteil 121 das Modul zum Zurückkippen 127 auf, um sowohl das unterabgetastete als auch das ursprüngliche Bild zurück in die richtige horizontale und vertikale Orientierung zurückzukippen 309. Das Modul zum Zurückkippen 127 liest sowohl das ursprüngliche Bild aus einer Bilddatei, als auch das unterabgetastete Bild aus dem Bildpuffer aus und dreht sie um ihren Bildverkippungswinkel F in die Richtung entgegen ihrer bestimmten Verkippungsrichtung. Die Drehung wird unter Verwendung einer konventionellen Technik ausgeführt.
  • Fig. 14 ist ein Beispiel eines Eingabedokuments, das in eine bitonale Bilddatei eingescannt, auf 50 dpi (gedruckte Vollbildgröße) unterabgetastet und anschließen zurückgekippt wurde.
  • E. Auswahl der benutzerdefinierten Bereiche
  • Wieder Bezug nehmend auf Fig. 3 stellt der Definitionsausführungsteil 121 das zurückgekippte Bild dem Anwendungsausführungsteil 137 zur Verfügung, der weiterhin das zurückgekippte Bild dem Benutzer durch eine geeignete Benutzerschnittstellenanzeige darstellt. Der Anwendungsausführungsteil 137 stellt weiterhin einen üblichen Satz von Hilfsmitteln, wie sie zum Zeichnen benutzt werden, zur Verfügung, mit denen der Benutzer grafisch die benutzerdefinierten Bereiche erzeugen kann 311. Dies wird durch Auswählen eines geeigneten Zeichenhilfsmittels, wie ein Hilfsmittel zum Erzeugen eines Rechtecks oder eines Polygons, und durch Anwenden von ihm auf das zurückgekippte Bild bewerkstelligt, um die einzelnen Flächen und Bereiche auszuwählen, die gewünschten Textinformationen enthalten. Fig. 7a stellt ein Beispiel einer geeigneten Benutzerschnittstelle 705 dar, welche ein zurückgekipptes Dokument 700 zeigt. Fig. 7b stellt das gleiche Dokument dar, das nun eine Anzahl benutzerdefinierter Bereiche 701 umfaßt. Es wird außerdem eine Palette von Zeichenwerkzeugen 703 mit verschiedenen grafischen Hilfsmitteln zum Auswählen der benutzerdefinierten Bereiche 701 gezeigt. Wenn der Benutzer eine Anzahl von Bereichen definiert hat, werden die Koordinaten der Grenze jedes benutzerdefinierten Bereichs gespeichert, wobei vorzugsweise die Koordinaten einer oberen linken Ecke und einer unteren rechten Ecke benutzt werden, wenn der benutzerdefinierte Bereich ein Rechteck ist. Für benutzerdefinierte Bereiche in Form eines allgemeinen Polygons, können auch die Koordinaten jedes Eckpunkts gespeichert werden.
  • F. Datenaufbereitung
  • Wieder Bezug nehmend auf Fig. 3, ruft der Definitionsausführungsteil 121 anschließend das Modul zur Datenaufbereitung 129 auf 313, um eine Anzahl von Tasks auf dem unterabgetasteten Bild auszuführen, um unnötige oder nicht signifikante Elemente in dem Bild herauszufiltern. Dies umfaßt ein Glätten, ein Entfernen vertikaler und horizontaler Linien und ein Formatieren von Blöcken. Das Modul zur Datenaufbereitung 129 erzeugt ein Bild mit geglätteten Blöcken, die zur Kennzeichnung durch das Kennzeichnungsmodul 131 bereit sind. Bezug nehmend auf Fig. 8 wird ein Datenflußdiagramm der zugrundeliegenden Module des Moduls zur Datenaufbereitung 129 gezeigt. Das Modul zur Datenaufbereitung 129 umfaßt ein Glättungsmodul 801, ein Modul zur Linienentfernung 803, ein Modul zum Bilddrehen 805 und ein Vereinigungsmodul 807. Bezug nehmend auf Fig. 9 wird ein Flußdiagramm der Bearbeitung durch das Modul zur Datenaufbereitung 129 gezeigt. In der Figur bezieht sich der Text zwischen den Blöcken auf die aktuellen Zustände des bearbeiteten Bildes. Der Text über den Verbindungspfeilen zeigt an, daß das Bild sich in dem primären Bildpuffer 141 befindet. Der Text unter den Verbindungspfeilen zeigt an, daß das Bild sich im sekundären Bildpuffer 143 befindet. In der Figur wird ein Schlüssel für die benutzten Textabkürzungen zur Verfügung gestellt. Zusätzlich wurde der Text so beschriftet, daß eine Figur kennzeichnet ist, die ein beispielhaftes Bild zu dem gegebenen Bearbeitungszustand zeigt.
  • Entfernen horizontaler und vertikaler Linien
  • Das Modul zur Datenaufbereitung 129 ruft das Glättungsmodul 801 auf, um das zurückgekippte Bild zu glätten 901. Die Glättung erhöht die Genauigkeit mit der horizontale Linien entfernt werden. Das Glättungsmodul 801 führt eine Lauflängenglättung unter Verwendung eines Eingabelauflängenparameters in konventioneller Weise durch. Während dem Scannen können vertikale und horizontale Linien in einem Dokument in einer Anzahl unterbrochener Liniensegmente getrennt werden. Dies folgt aus Veränderungen in der Helligkeit oder in dem Kontrast, der Einscanntechniken, der Orientierung des Dokuments und dergleichen. Solche unterbrochenen Linien sind schwieriger bei dem Linienentfernungsarbeitsgang durch das Modul zur Linienentfernung 803 zu identifizieren und zu entfernen. Ähnlich kann ein Formular durch gestrichelte oder gepunktete Linien abgegrenzte Bereiche enthalten, die ebenfalls schwierig zu entfernen sind. Um daher die Zuverlässigkeit des Moduls zur Linienentfernung 803 zu erhöhen, ist es vorteilhaft, dafür zu sorgen, daß aus unterbrochenen, gestrichelt oder gepunkteten Linien kontinuierliche Linien gebildet werden. Dies wird durch das Glättungsmodul 801 bewerkstelligt.
  • Das Glättungsmodul 801 wird aufgerufen und mit einem Lauflängenparameter, wieder abhängig von der Auflösung des unten abgetasteten Bildes, durchgeführt, wodurch verursacht wird, daß solche unterbrochenen Linien mit gesetzten Pixeln verbunden werden. In der bevorzugten Ausführungsform wird der Lauflängenparameter auf ein Maximum von fünf bei gegebener bevorzugter Auslösung von 50 dpi gesetzt. Den Lauflängenparameter würde man für andere Auflösungen anpassen. Dies überführt jede Sequenz von fünf oder weniger weißen Pixeln in einer Sequenz von schwarzen Pixeln. Dieser Durchgang wird gepunktete, gestrichelte oder ähnliche Linien zu kontinuierlichen Liniensegmenten verbinden. Ein geringer Lauflängenwert trägt außerdem dazu bei, daß die Punkte, wie sie in Buchstaben wie "i" und "j" verwendet werden, oder die Querstriche auf "t", "f" und anderen, nicht entfernt werden.
  • Fig. 15 ist eine Darstellung des Bildes der Fig. 14 nach einer Lauflängenglättung durch das Glättungsmodul 801.
  • Das Modul zur Datenaufbereitung 129 ruft anschließend das Modul zur Linienentfernung 803 auf, um horizontale Linien in dem geglätteten Bild zu entfernen 903. Fig. 16 zeigt die Ergebnisse der Entfernung horizontaler Linien 903 in dem Bild der Fig. 15. Das Modul zur Linienentfernung 803 untersucht sequentiell den Bildpuffer zum Identifizieren gesetzter (schwarzer) Pixel mit einer Lauflänge von wenigstens 15. Dadurch werden die potentiellen Liniensegmente identifiziert. Das Modul zur Linienentfernung 803 überprüft anschließend die zweite Linie über dem potentiellen Liniensegment, um zu ermitteln, ob auch dieses Liniensegment eine Serie von nicht gesetzten Pixeln über die gleiche Lauflänge wie das potentielle Liniensegment, besitzt. Alternativ kann das Modul zur Linienentfernung 803 die Anzahl von Übergängen von gesetzten zu nicht gesetzten oder nicht gesetzten zu gesetzten Pixeln bestimmen und diesen Wert mit einem vorbestimmten Maximum von Übergängen für eine gegebene Lauflänge vergleichen.
  • Wenn die vorhergehende Bedingung erfüllt ist, zeigt dies die obere Kante des potentiellen Liniensegments an. Das Modul zur Linienentfernung 803 überprüft gleichzeitig die zweite Linie unter dem potentiellen Liniensegment, um das untere Ende des potentiellen Linienelements zu identifizieren. Auf diese Weise kann das potentielle Liniensegment eine maximale Höhe von 3 Pixel besitzen. Wenn beide dieser Bedingungen zutreffen, ist das potentielle Liniensegment ein echtes Liniensegment. Das Modul zur Linienentfernung 803 entfernt dann das Linienelement durch Ändern aller gesetzten Pixel in nicht gesetzte Pixel. Dieser Vorgang wird von dem oberen Ende des Bildes zu dem unteren Ende wiederholt. Das entstandene Bild wird in dem sekundären Bildpuffer 143 gespeichert. Die spezifische Anzahl von Linien und die Linienhöhe hängen wieder von der Auflösung des Bildes ab und kann demgemäß angepaßt werden.
  • Das Vereinigungsmodul 807 vereinigt zwei Bilder in den Bildspeichern 141, 143. Dieses Modul 807 wird von dem Modul zur Datenaufbereitung 129 nach der Linienentfernung aufgerufen, um ein Bild zu erzeugen 905, bei dem sowohl vertikale als auch horizontale Linien entfernt sind. Die Vereinigung wird durch eine logische UND-Verknüpfung jedes Bits der zwei Eingabebilder durchgeführt. Das Vereinigungsmodul 807 wird nach der Entfernung horizontaler Linien aufgerufen, um das zurückgekippte bitonale Bild mit dem geglätteten Bild ohne horizontale Linien zu vereinigen. Dies führt zu einem zurückgekippten Bild ohne horizontale Linien. Fig. 17 zeigt eine Darstellung eines zurückgekippten Bilds ohne horizontale Linien, welches hier die Vereinigung der Fig. 14 und 16 ist.
  • Nach dem Entfernen der horizontalen Linien normalisiert 907 das Modul zur Datenaufbereitung 129 das zurückgekippte Bild ohne horizontale Linien. Normalisierung ist der Vorgang, bei dem temporäre horizontale Linien (ein Pixel Breite) an dem oberen Ende des Bilds und an dem unteren Ende des Bilds gezeichnet werden. Dieser Vorgang wird ausgeführt, um die Genauigkeit während des Entfernens der vertikalen Linien in dem Bild durch klares Abgrenzen des oberen und unteren Endes des Bildes während der Glättungsbearbeitung zu verbessern. Ohne die temporären Linien während der Glättung können Teile des Bildes quer durch die Bildbegrenzung geglättet werden. Nachdem die vertikalen Linien entfernt sind, werden die temporären Linien ebenfalls entfernt.
  • Nach dem Normalisieren wird das zurückgedrehte Bild um 90º gedreht. Diese Drehung wird durch das Modul zur Bilddrehung 805 ausgeführt 909 und wird so durchgeführt, daß die vertikalen Linien durch das Modul zur Linienentfernung 803 entfernt werden können. Fig. 18 zeigt die Normalisierung und die Drehung des zurückgekippten Bildes der Fig. 17.
  • Das Modul zur Datenaufbereitung 129 ruft das Glättungsmodul 801 auf, um das normalisierte zurückgekippte Bild ohne horizontale Linien zu glätten 911. Fig. 19 zeigt die Ergebnisse der Glättung 911 des Bildes der Fig. 18. Das Modul zur Linienentfernung 803 entfernt anschließend die vertikalen Linien, welche nun horizontale Linien in dem gedrehten Bild sind. Fig. 20 zeigt die Ergebnisse der Entfernung 913 horizontaler (in dem nicht gedrehten Bild vertikaler) Linien der Fig. 19.
  • Nachdem die vertikalen Linien entfernt sind 913, wird das Bild in dem primären Bildpuffer 141 gespeichert, separat von dem gedrehten, normalisierten, zurückgekippten Bild ohne horizontale Linien in dem sekundären Bildpuffer 143, das aus dem Schritt 909 folgt. Das Vereinigungsmodul 807 wird dann aufgerufen, um das gedrehte, zurückgekippte Bild ohne horizontale Linien aus dem Schritt 909 mit dem geglätteten Bild ohne vertikale Linien zu vereinigen 915, wodurch hier ein gedrehtes, zurückgekipptes Bild ohne horizontale oder vertikale Linien erzeugt wird. Fig. 21 zeigt die Ergebnisse der Vereinigung des Bildes mit entfernten vertikalen Linien der Fig. 20 mit dem zurückgekippten, gedrehten, normalisierten Bild der Fig. 18, wodurch ein zurückgekipptes, gedrehtes Bild ohne horizontale oder vertikale Linien erzeugt wird. Die Reihenfolge, in der die vertikalen und horizontalen Linien entfernt werden können, kann mit den geeigneten Modifikationen umgeschaltet werden.
  • Nachdem die horizontalen und vertikalen Linien entfernt wurden, dreht 917 das Modul zur Bilddrehung 805 das vereinigte Bild zurück in seine ursprüngliche Ausrichtung. Das Modul zur Datenaufbereitungen 129 denormalisiert 919 das Bild und entfernt die temporären Linien, die während der Normalisierung eingeführt wurden. Das Ergebnis ist ein zurückgekippptes Bild ohne vertikale oder horizontale Linien. Das Bild wird in dem primären Bildpuffer 141 gespeichert. Fig. 22 zeigt die Ergebnisse des Zurückdrehens des Bildes der Fig. 21 und der Denormalisierung zur Entfernung der oberen und unteren temporären Linien.
  • Bildung von Systemblöcken
  • Die zweite Hauptfunktion des Moduls zur Datenaufbereitung 129 ist die Bildung von Blöcken, die danach zur Kennzeichnung als Systemblöcke durch das Kennzeichnungsmodul 131 berücksichtigt werden können. Die Blöcke werden wie folgt gebildet.
  • Die Blöcke werden durch eine ähnliche Serie von Schritten, wie bei dem Vorgang der Linienentfernung, gebildet. Eine horizontale Lauflinienglättung 921 wird auf dem zurückgekippten Bild ohne horizontale und vertikale Linien durch das Glättungsmodul 801 mit einem Lauflängenparamter durchgeführt, der große Blöcke von zusammenhängenden Pixeln erzeugen wird. In der bevorzugten Ausführungsform wird die Glättungsbearbeitung 921 mit einem Lauflängenwert von ungefähr 80 (bei 50 dpi) ausgeführt, so daß Lauflängenerscheinungen von 80 oder weniger weißer (nicht gesetzter) Pixeln entlang jeder Pixellinie umgewandelt werden oder mit schwarzen (gesetzten) Pixeln gefüllt werden. Das entstehende Bild wird in dem primären Bildpuffer 141 gespeichert. Fig. 23 zeigt die Ergebnisse des Glättens 921 des Bildes der Fig. 22.
  • Anschließend wird eine Glättung 923 auf den von vertikalen Linien freien Bilddaten, die aus dem Schritt 915 folgen, durchgeführt, die anschließend in dem sekundären Bildpuffer 143 gespeichert werden. Fig. 24 zeigt die Ergebnisse der vertikalen Glättung auf dem Bild der Fig. 21. Das vertikal geglättete Bild wird dann auf eine Hochformatausrichtung zurückgedreht und in dem sekundären Bildpuffer 143 gespeichert.
  • Das horizontal geglättete Bild in dem primären Bildpuffer 141 und das vertikal geglättete Bild in dem sekundären Bildpuffer 143 werden durch das Vereinigungsmodul 807 miteinander vereinigt 925. Dieser Vorgang erzeugt einen Satz von Datenblöcken in dem Bild. Fig. 25 zeigt die vereinigten Ergebnisse der horizontalen und vertikalen Glättung zur Erzeugung der Datenblöcke, hier die Kombinationen der Fig. 23 und 24 (nach der Drehung).
  • In einigen Fällen können einige kleine Lücken in der Ausgabe sein, die weiter geglättet werden müssen. Eine weitere Glättung 927 der resultierenden Daten wird mit einem Lauflängenwert von 3 Pixeln durchgeführt, wodurch diese restlichen Elemente eliminiert werden. Das resultierende Bild wird in dem primären Bildpuffer 141 gespeichert und enthält die Blöcke, die zur Verarbeitung durch das Kennzeichnungsmodul 131 bereit sind. Fig. 26 zeigt die Ergebnisse der Glättung 127, um die verbleibenden Elemente in Fig. 25 zu entfernen.
  • G. Kennzeichnen und Klassifizieren der Systemblöcke
  • Wieder Bezug nehmend auf Fig. 3 werden nach der Datenaufbereitung die Blöcke durch das Kennzeichnungsmodul 131 gekennzeichnet und klassifiziert 315. Allgemein analysiert das Kennzeichnungsmodul 131 die Blöcke, die von dem Modul zur Datenaufbereitung 129 erzeugt wurden, wobei jeder Block mit einer eindeutigen Blockidentifikationsnummer identifiziert wird und jeder Block entweder als ein Textblock, als ein Bildblock oder als ein dualer Block klassifiziert wird. Textblöcke sind jene Blöcke, die wahrscheinlich durch das Vorliegen von Textbereichen auf dem ursprünglichen Bild erzeugt wurden. Bildblöcke sind jene Blöcke, die wahrscheinlich durch das Vorliegen von Grafiken oder Bildern in dem ursprünglichen Bild erzeugt wurden. Duale Blöcke sind jene Blöcke, die weder als Text- noch als Bildblock identifizierbar sind. Jeder Gruppe eines zusammehängenden Blocks wird eine eindeutige Blockidentifikationsnummer zugeordnet.
  • Das Kennzeichnungsmodul 131 speichert eine Liste von Blockidentifikationsnummern, wobei jede einem Block entspricht, und es speichert für jede Blockidentifikationsnummer weiterhin Statistik- und Klassifizierungsdaten über dem Block. In der bevorzugten Ausführungsform ist die Blockidentifizierungsliste ein Matrixfeld von Blockstrukturen, wobei jede Blockstruktur Attribute für Blockidentifikationsnummer und andere Datenwerte, wie sie unten beschrieben werden, besitzt.
  • Das Kennzeichnungsmodul 131 wendet vorzugsweise eine 4 Pixel Verbindungsablaufverfolgungstechnik an, um zu ermitteln, ob ein ausgewähltes Pixel mit seinen Nachbarpixeln verbunden ist. Solche Ansammlungen von Pixeln bilden kollektive Cluster, die dabei zur Bildung eines Blocktyps beitragen. Für jeden Block, der gebildet wird, werden verschiedene Merkmale herausgezogen, um sie als eindeutige Blöcke zu unterscheiden, die zu einem der Blocktypen gehören.
  • Blockidentifikation und Kennzeichnung
  • Bezug nehmend auf Fig. 10, wird ein Flußdiagramm des Vorgangs der Blockidentifikation durch das Kennzeichnungsmodul 131 gezeigt. Das Kennzeichnungsmodul 131 erhält von dem Modul zur Datenaufbereitung 129 über den primären Bildpuffer 141 das geglättete Bild ohne horizontale oder vertikale Linien zusammen mit einer Liste der Blöcke und deren Identifikationswerte. Das Kennzeichnungsmodul 131 erweitert 1001 jedes Bit in dem Bild auf eine 2- Byte-Darstellung, wie oben beschrieben. Die zusätzliche Bitbreite wird benutzt werden, um Informationen über die identifizierten Systemblöcke zu speichern. Die erweiterten Daten werden in dem adressierbaren Speicher 113 gespeichert.
  • Das Kennzeichnungsmodul 131 untersucht sequentiell 1003 die erweiterten Daten des Bildes, um gesetzte Pixel zu identifizieren. Nur das Bit in den erweiterten Daten, das den tatsächlichen Bilddaten entspricht, wird überprüft. Dieser Absuchvorgang erfolgt von links nach rechts, und von oben nach unten. Ein Zähler der Anzahl von Linien (abhängig von der Auflösung) in dem Bild wird gespeichert, um zu bestimmen, wann das Gesamtbild abgesucht ist.
  • Wenn ein gesetzter Pixel aufgefunden wird, werden sofort die Pixel unmittelbar neben dem gesetzten Pixel in der gleichen und der vorherigen Zeile, die bereits überprüft wurde (also links, oben links, oben, oben rechts) überprüft 1009, um zu ermitteln 1011, ob sie alle die gleiche Blockidentifikationsnummer besitzen. Wenn dem so ist, wird dem gesetzten Pixel die gleiche Blockidentifikationsnummer zugewiesen 1013. Das Kennzeichnungsmodul 131 ermittelt 1005, ob die aktuelle Zeile die erste Zeile in dem Bild ist oder neben einer leeren Zeile liegt. Wenn dem so ist, wird nur das Pixel unmittelbar links, wie oben, überprüft.
  • Wenn die Blockidentifikationsnummern zwischen den benachbarten Pixeln sich unterscheiden, ermittelt 1015 das Kennzeichnungsmodul 131, ob das gesetzte Pixel mehrere Blockidentifikationsnummern besitzt. Wenn dem so ist, wird das Kennzeichnungsmodul 131 dem Pixel die Blockidentifikationsnummer zuordnet, die die größte Anzahl der benachbarten Pixel trägt. Außerdem werden auch alle anderen benachbarten Pixel ihre Blockidentifikationsnummern auf diese Blockidentifikationsnummer geändert haben. Die Blockidentifikationsnummern werden aus der Liste verfügbarer Blockidentifikationsnummern zugewiesen. Die Blockidentifikationsnummern der geänderten Pixel wird daher zurück in die Liste der verfügbaren Blockidentifikationsnummern gegeben 1023. Jede Blockidentifikationsnummer ist daher mit einem Satz verbundener Pixel verknüpft.
  • Wenn die Blockidentifkatiosnummer zugewiesen ist, wird eine Statistikzahl auf den Blockidentifikationsnummern aktualisiert 1025. Insbesondere speichert das Kennzeichnungsmodul 131 für jede Blockidentifikationsnummer folgendes:
  • die in dem Bildpuffer vorliegende Anzahl gesetzter Pixel, die die Blockidentifikationnummer besitzen (ZAHL);
  • die überspannte Fläche des Blocks, wie sie durch das obere linke und untere rechte gesetzte Pixel des Blocks bestimmt wird (FLÄCHE);
  • die Zahl der Übergänge von gesetzt zu nicht gesetzt (abgetastet von links nach rechts und von oben nach unten) in dem Block (ÜBERGANG);
  • die Höhe des Blocks, als die Differenz zwischen den x-Achsen-Koordinaten des oberen linken und unteren rechten gesetzten Pixel des Blocks (HOCH);
  • die Breite des Blocks, als die Differenz zwischen den y-Achsen-Koordinaten des oberen linken und unteren rechten gesetzten Pixel des Blocks (BREIT);
  • einen Lauffaktor, der durch den Quotienten aus ZAHL/ÜBERGANG bestimmt wird, wobei der Lauffaktor die mittlere Lauflänge der gesetzten Pixel in dem Block anzeigt (LAUF);
  • ein Seitenverhältnis, das durch den Quotienten von BREITHOCH bestimmt ist (SEITE), und
  • einen Dichtfaktor, der durch den Quotient von ZAHL/FLÄCHE bestimmt ist, wobei der Dichtfaktor die mittlere Zahl der gesetzten Pixel pro Pixel in dem Block anzeigt (DICHTE).
  • Diese Datenwerte werden mit jedem untersuchten Pixel aktualisiert 1025.
  • Das Kennzeichnungsmodul 131 ermittelt 1027, ob alle Zeilen in dem Bild bearbeitet wurden. Wenn dem nicht so ist, fährt das Kennzeichnungsmodul 131 fort, die erweiterten Daten zu untersuchen. Wenn dem so ist, wurden alle deutlich getrennten Blöcke verbundener Pixel identifiziert und mit einer Blockidentifikationsnummer versehen, und jede Blockidentifikationsnummer bezieht sich nur auf eine Gruppe verbundener Pixel.
  • Wenn allen Blöcken Blockidentifikationsnummern zugewiesen wurden, qualifiziert 1029 das Kennzeichnungsmodul 131 ausgewählte Blöcke zum Bestimmen der mittleren Blockdaten für das Gesamtbild. Qualifizierte Blöcke sind jene, die eine adäquate Größe und Form besitzen, um leicht durch das System identifizierbar zu sein. In der bevorzugten Ausführungsform, unter Verwendung von 50 dpi-Bildern, haben qualifizierte Blöcke folgende Kriterien:
  • HOCHLAUF > 4,00
  • HOCH < = 22 ZEILEN
  • SEITE > = 5,00
  • DICHTE > = 0,5.
  • Jeder Block wird mit diesen Kriterien überprüft 1029, und die Liste der Blockidentifikationsnummern wird aktualisiert, um anzuzeigen, ob der Block qualifiziert ist. Die Werte sind auf die bevorzugte Auflösung bezogen und in anderen Ausführungsformen können andere Kriterien eingesetzt werden.
  • Aus den qualifizierten Blöcken wird eine mittlere Höhe und eine mittlere Lauflänge berechnet 1031. Die mittlere Höhe wird durch Summieren der Höhen der qualifizierten Blöcke und durch Dividieren durch die Anzahl der qualifizierten Blöcke bestimmt. Die mittlere Lauflänge wird entsprechend bestimmt.
  • Fig. 27 zeigt ein schematisches Beispiel der Ergebnisse einer Kennzeichnung auf dem Bild der Fig. 26. In dem Bild der Fig. 27 wurden Blöcke, die die gleiche Pixeldichteverteilung besitzen, als ein Teil eines Blockes gekennzeichnet und besitzen die gleiche Blockidentifikationsnummer.
  • Block-Klassifkation
  • Das Kennzeichnungsmodul 131 fährt anschließend fort, den Datentyp jedes Blocks (sowohl die qualifizierten, wie oben, und die nicht qualifizierten) zu ermitteln, ob er entweder zum Text-, Bild- oder Dual-Typ gehört. Bezug nehmend auf Fig. 11 wird ein Flußdiagramm des Vorgangs der Datentypklassifikation des Kennzeichnungsmoduls 131 gezeigt.
  • Das Kennzeichnungsmodul 131 testet 1100, ob irgendwelche qualifizierten Blöcke aus dem Qualifikationsvorgang hervorgegangen sind. Wenn dem nicht so ist, trennt das Kennzeichnungsmodul 131 alle Blöcke in ungültige Blöcke und duale Blöcke. Das Kennzeichnungsmodul 131 führt eine Schleife über die Blockliste aus 1101 und ermittelt 1103 für jeden Block, ob die Fläche (FLÄCHE) weniger als 100 Pixel (unter Annahme von 50 dpi) besitzt. Wenn dem so ist, ist der Block ein ungültiger Block und die Bearbeitung wird fortgesetzt. Wenn der Bereich größer als 100 Pixel ist, wird der Block als ein Dualblock klassifiziert 1105. In jedem Fall wird die Blockliste mit den zugewiesenen Werten aktualisiert.
  • Wenn die Blöcke anfangs getrennt sind oder wenn es irgendwelche qualifizierten Blöcke gibt, ermittelt das Kennzeichnungsmodul 131, ob die Blöcke Text- oder Bildblöcke oder einfach unbestimmt sind. Dies wird durch Ausführen einer Schleife 1109 über die Liste der qualifizierten oder dualen Blöcke gemacht und durch ermitteln 1111 für jeden Block, ob die Höhe des Blocks innerhalb eines bestimmten Bereiches von Blockhöhen aus der mittleren Blockhöhe des Bildes liegt. In der bevorzugten Ausführungsform, bei der die bevorzugte Bildauflösung 50 dpi beträgt, besteht der Test darin, ob die Höhe jedes Blocks geringer oder gleich der vierfachen Höhe der mittleren Blockhöhe ist. Andere entsprechende Verhältnisse können bei anderen Bildauflösungen benutzt werden.
  • Wenn die Blockhöhe innerhalb des gewünschten Bereichs liegt, zeigt dies eine kleine bis mittlere Blockgröße an, was entweder Text- oder Bilddaten sein können. Danach ermittelt 1113 das Kennzeichnungsmodul 131 weiter die Lauflänge (LAUF) des Blocks gegenüber der mittleren Lauflänge aller qualifizierten Blöcke. Wenn in der bevorzugten Ausführungsform die Blocklauflänge geringer als die sechsfache mittlere Lauflänge zuzüglich eines Anpassungsfaktors von 2 beträgt, ist der Block ein Textblock und die Blockidentifikationsliste wird entsprechend aktualisiert 1115. Dadurch wird effektiv getestet, ob der Block eine Fläche und eine Länge besitzt, die Textblöcken entsprechen, die durch die Datenaufbereitung geglättet sind. Blöcke, die diesen verschiedenen Tests entsprechen, sind wahrscheinlich Textblöcke und werden so klassifiziert.
  • Wenn die Lauflänge diesen Wert übersteigt, kann der Block noch ein Bildblock oder unbestimmt sein, in welchem Fall er mit der Klassifizierung als ein Dualblock verbleibt. Danach überprüft 1117 das Kennzeichnungsmodul 131, ob die Höhe (HOCH) des Blocks größer als drei Zeilen ist (wieder unter Annahme eines 50 dpi-Bildes; dieser Wert sollte für andere Auflösungen skaliert werden). Da die meisten Textblöcke geringer als dieser Betrag sind, ist, wenn die Höhe diesen Wert übersteigt, der Block wahrscheinlich ein Bildblock, und die Blockidentifikationsliste wird entsprechend aktualisiert 1119. Wenn dem nicht so ist, wird keine weitere Klassifikation ausgeführt und der Block verbleibt mit der Klassifizierung als ein Dualblock.
  • Wenn, zurückkehrend zu der Bedingung 1111, die Höhe des Blocks größer als ungefähr die vierfache mittlere Blockhöhe ist, ist der Block wahrscheinlich ein Bildblock. Es werden jedoch weitere Tests angesetzt, um diese Klassifizierung zu verifizieren. Das Kennzeichnungsmodul 131 ermittelt 1121, ob das Seitenverhältnis (SEITE) des Blocks größer oder gleich ungefähr 0,2 ist. Wenn dem so ist, zeigt dies an, daß der Block die ungefähre Breite und Höhe, die bei den meisten Bildern gebräuchlich ist, besitzt. Jeder kleinere Wert würde einen sehr schmalen Block kennzeichnen, der wahrscheinlich kein Bild ist. Dementsprechend wird das Kennzeichnungsmodul 131 die Blockliste aktualisieren, um ein Bildblock anzuzeigen. Wenn dieser Test versagt, ermittelt 1123 das Kennzeichnungsmodul 131, ob die Breite des Blocks größer als drei Pixel ist. Wenn dies so ist, wird der Block wieder als ein Bildblock klassifiziert 1119. Andernfalls verbleibt der Block mit der Klassifizierung als ein Dualblock.
  • Am Ende der Kennzeichnungs- und Klassifizierungsvorgänge wurden die Blöcke in dem Bild klar identifiziert und entweder als Text-, Bild- oder Dualblöcke typisiert. Der entstandene Satz von Blöcken bildet "Systemblöcke" und wird benutzt werden, um die Struktur der Schablone zu definieren.
  • H. Erzeugung des dynamischen Datennetzes
  • Wieder Bezug nehmend auf Fig. 3 wird das dynamische Datennetz, das die Struktur einer Schablone beschreibt, aus den gültigen, gekennzeichneten und klassifizierten Blöcken definiert 317. Bezug nehmend auf Fig. 12 wird ein Flußdiagramm des Vorgangs der Erzeugung des dynamischen Datennetzes einer Schablone durch das Schablonenmodul 133 gezeigt.
  • Das Schablonenmodul 133 bestimmt 1200, ob irgendein Systemblock einen der benutzerdefinierten Bereiche schneidet. Diese Systemblöcke werden für den weiteren Vorgangausgesondert. Das Schablonenmodul 133 bestimmt außerdem die erste Zeile des zurückgekippten, unterabgetasteten Bildes, in der ein gesetzter Pixel auftritt, und die letzte Zeile, in der ein Pixelsatz auftritt. Diese Zeilen bestimmen die Fläche des Bildes, in denen alle Daten vorliegen, wobei ein unnötiges Bearbeiten des Bildgebietes außerhalb dieser Zeilen unterbleibt.
  • Das Schablonenmodul 133 unterteilt 1201 die Bilddaten zwischen der ersten und der letzten Zeile in eine Zahl von Bereichen mit gleicher Fläche. Die Unterteilung des Bildes in Segmente sorgt für die Normalisierung der Blockgröße in jedem Segment, so daß große Blöcke nicht übermäßig die Auswahl von Blöcken für das dynamische Datennetz beeinflussen. Durch Benutzung von Segmenten werden in jedem Bereich des Bildes Blöcke in der Schablone benutzt, was zu einer stabileren Schablone führt. In der bevorzugten Ausführungsform wird das Bild in 15 Segmente unterteilt, die das Bild von oben nach unten unterteilen.
  • In jedem Segment ermittelt 1203 das Schablonenmodul 133 die mittlere Fläche der Textblöcke und separat die der Bildblöcke in dem Segment. Die mittlere Fläche jedes Blocktyps in jedem Segment wird anschließend gespeichert. Das Schablonenmodul 133 wählt 1205 in jedem Segment jene Blöcke mit einer Fläche aus, die ungefähr gleich der mittleren Blockfläche des Segments entsprechend dem Blocktyp ist. In der bevorzugten Ausführungsform liegen die ausgewählten Blöcke innerhalb von ± 20% der mittleren Blockfläche ihres Typs. Alternativ kann ein Block mit einer Fläche kleiner als und nahe an (in einer geordneten Liste) der mittleren Blockgröße und ein Block mit einer Fläche größer als und nahe an der mittleren Blockgröße ausgewählt werden. Beispielsweise sei angenommen, daß die Blöcke in einem Segment eine Fläche von 104, 100, 118, 132, 138, 102 und 128 Quadratpixel besitzen und die mittlere Blockfläche 120 Pixel beträgt. Dann wären die ausgewählten Blöcke jene mit 118 und 128 Quadratpixeln. Diese Auswahl wird sowohl für die Bild- als auch für die Textblöcke vorgenommen, wodurch sich vier Blöcke in jedem Segment ergeben.
  • Das Schablonenmodul 133 ermittelt 1207 anschließend, ob wenigstens fünf Blöcke ausgewählt sind. Wenn dem so ist, kann ein dynamisches Datennetz für die Schablone erzeugt werden. Aus Versuchen wurde bestimmt, daß ein Minimum von fünf Blöcken bevorzugt ist, um ein dynamisches Datennetz zu erzeugen. Wenn keine fünf Blöcke ausgewählt sind, zeigt das Schablonenmodul 133 dem Formularbearbeitungs-Definitionsausführungsteil 121 an, daß die Schablonendefinition fehlgeschlagen ist.
  • Wenn es mehr als fünf Blöcke für das Gesamtbild gibt, wird das dynamische Datennetz für das Bild erzeugt 1211. Das dynamische Datennetz umfaßt eine Liste von Vektoren zwischen den Systemblöcken, die Anforderungen an die mittlere Größe entsprechen, vorzugsweise zwischen ihren Schwerpunkten. Insbesondere wird für jeden Systemblock ein Vektor von dem Schwerpunkt des Systemblocks zu dem Schwerpunkt jedes anderen Systemblocks definiert. Somit gibt es für jeden Systemblock Bi (i = 1 bis n, wobei n die Zahl der Systemblöcke ist) eine Vektorliste Vi, die Vektoren v(i,j) zwischen dem Systemblock Bi und den Systemblöcken Bj enthalten:
  • Vi = [v(i,j), v(i,j+1), ... v(i,n))]
  • In der bevorzugten Ausführungsform wird jeder Vektor vorzugsweise als ein Abstand zwischen den Schwerpunkten der Systemblöcke und einer Richtung definiert.
  • v(i,j) = [ ,(Bi &rarr; Bj)]
  • wobei (Bi Bj) die Richtung des Vektors von dem Systemblock Bi zu dem Systemblock Bj kennzeichnen.
  • Andere Vektordefinitionen können auch benutzt werden, so lange ein Vektor einen Systemblock invariant mit dem anderen verknüpft. Beispielsweise kann jeder Vektor in Form der Koordinaten seiner Endpunkte gespeichert werden:
  • v(i,j) = [(XiYj)·(XiYj)]
  • woraus der Abstand und die Richtung wie benötigt berechnet werden können.
  • Das dynamische Datennetz D für das Bild umfaßt einen Satz von Vektorenlisten V für die Systemblöcke:
  • D = [V&sub1;, V&sub2;, V&sub3;, ... Vn]
  • Das dynamische Datennetz eines Bildes beschreibt die Struktur des Bildes, da die Vektorverhältnisse zwischen den Systemblöcken auf dem Bild festgelegt sind und auch erhalten bleiben, wenn das Bild um einen signifikanten Betrag gedreht oder verschoben wird. Fig. 28a zeigt ein Beispielformular, bei dem die Textflächen als Systemblöcke benutzt werden, und die Fig. 28b bis 28 h zeigen die unterschiedlichen Vektorliste Vi zwischen jedem der Systemblöcke und den anderen Systemblöcken.
  • Zusätzlich kann ein Abschnitt des dynamischen Datennetzes D in Bezug auf die benutzerdefinierten Bereiche definiert werden. Dies geschieht durch Einrichten einer Vektorliste U für jeden benutzerdefinierten Bereich Zk (k = 1 bis m, die Zahl der benutzerdefinierten Bereiche), die Vektoren u(k,l) zwischen den Bereichen Zk und jedem Systemblock Bi enthält:
  • Ui = [u(i,j), u(i,j+1), ... u(i,m)]
  • In dieser Ausführungsform wurde festgestellt, daß die Vektoren zwischen benutzerdefinierten Bereichen nicht signifikant zur Stabilität der Schablone beitragen, und werden daher nicht gespeichert. In alternativen Ausführungsformen können diese Vektoren benutzt werden, wenn diese die Schablone verbessern sollten. In beiden Fällen, wenn Vektoren zwischen den benutzerdefinierten Bereichen enthalten sind, würde das dynamische Datennetz D zusätzlich einen Satz von Vektorenlisten U für die benutzerdefinierten Zonen umfassen:
  • D = [V&sub1;, V&sub2;, V&sub3;, ... Vn, U&sub1;, U&sub2;, U&sub3;, ... Um]
  • Das Schablonenmodul 133 speichert 1213 anschließend die erzeugte Schablone mit einem vom Benutzer eingegebenen Namen und den definierten Schablonendaten, einschließlich dem Ort jedes Systemblocks in der Schablone, die statistischen Daten auf jedem Systemblock, die Informationen des dynamischen Datennetzes und die Koordinaten der benutzerdefinierten Bereiche. Das Schablonenmodul 133 führt die Steuerung zurück zu dem Definitionsausführungsteil 121.
  • III. Erfassung der Schablone
  • Wieder Bezug nehmend auf Fig. 2, kann, nachdem eine oder mehrere Schablonen definiert 201 wurden, der Benutzer die Bearbeitung der Dokumente mit den Schablonen beginnen. Die Auswahl der Schablone und die Eingabe von Dokumenten wurde vorhergehend beschrieben. Die Anwendung der Schablone ist der Vorgang der automatischen Erfassung der Dokumente mit einer Schablone.
  • Der Vorgang des Erfassens ist im allgemeinen sehr ähnlich zu dem Vorgang der Schablonendefinition, abgesehen davon, daß anstatt eine neuen Schablone zu erzeugen, die identifizierten Systemblöcke in jedem Eingabebild mit den Systemblöcken und dem dynamischen Datennetz der Schablone verglichen werden. Wenn eine Übereinstimmung besteht, wendet dass System die benutzerdefinierten Bereiche der Schablone auf das Eingabebild an und zieht über eine optische Zeichenerkennung allen Text heraus.
  • Bezug nehmend auf die Fig. 13a und 13b, wird im einzelnen ein Flußdiagramm des Erfassungsvorgang gezeigt. Die Module, die während der Erfassung verwendet werden, wurden vorhergehend beschrieben und ihre zugrunde liegenden Arbeitsabläufe sind effektiv die gleichen. Der Erfassungsvorgang wird von dem Erfassungsausführungsteil 135 gesteuert.
  • Der Erfassungsausführungsteil 135 steuert den Scanner 115 und das Scanner-Steuermodul 139, um die Eingabedokumente zu scannen und um die Bilddaten zu erlangen 1301. Die Bilddaten werden einer Schwellenwertoperation, wie beschrieben, unterzogen, um ein bitonales Bild zu erzeugen. Der Erfassungsausführungsteil 135 ruft das Verkleinerungsmodul 123 auf, um die Bilddaten auf die gewünschte Auflösung zu verkleinern 1303.
  • Der Erfassungsausführungsteil 135 ruft das Modul zur Verkippungsbestimmung 125 auf, um eine Verkippung in dem Bild zu bestimmen und den Verkippungswinkel des Bildes und die Richtung zu melden. Die Erfassungsausführungsteil 135 ermittelt 1306, ob die Verkippung 1º überschreitet. Wenn dem so ist, ruft sie das Modul zum Zurückkippen 127 auf, um das verkleinerte Bild und die ursprünglichen Bilddaten zurückzukippen 1307. Das verkleinerte Bild wird in dem primären Bildpuffer 141 gespeichert.
  • Der Erfassungsausführungsteil 135 ruft das Modul zur Datenaufbereitung 129 auf, um die horizontalen und vertikalen Linien zu entfernen 1309 und um das Bild in unterschiedlichen Datenblöcke zu glätten 1311. Das Kennzeichnungsmodul 131 wird anschließend aufgerufen, um die Datenblöcke mit Blockidentifikationsnummern zu kennzeichnen und zu klassifizieren 1313. Die gekennzeichneten Blöcke werden, wie oben, qualifiziert, um eine Liste qualifizierter Blöcke zu erzeugen. Die qualifizierten Blöcke werden, wie oben beschrieben, entweder als Text-, als Bild- oder als Dualblöcke klassifiziert.
  • Der Erfassungausführungsteil 135 ruft das Schablonenmodul 133 auf, welches das dynamische Datennetz der Schablone lädt 1315. Das Schablonenmodul 133 erzeugt anschließend ein dynamisches Datennetz für das Eingabebild. Dies wird durch weitere Qualifizierung 1317 der klassifizierten Datenblöcke bewerkstelligt. Diese Qualifizierung identifiziert jene Blöcke, die potentielle Systemblöcke sind, die zu den Systemblöcken der Schablone passen. Jeder Datenblock in dem Eingabebild wird mit jedem Systemblock in der Schablone verglichen. Die Kriterien zur Qualifizierung sind:
  • die Klassifizierung der Datenblöcke muß die gleiche sein (Text oder Bild);
  • die absolute Differenz zwischen der Breite der Blöcke muß kleiner oder gleich 5 Pixeln sein;
  • die absolute Differenz zwischen der Höhe der Blöcke muß kleiner oder gleich 5 Zeilen sein;
  • die absolute Differenz zwischen der Anzahl der gesetzten Pixel in dem Datenblock und dem Systemblock muß kleiner als 10% der Anzahl der gesetzten Pixel in dem Systemblock sein.
  • Das Schablonenmodul 133 prüft 1319, ob die Anzahl der qualifizierten Systemblöcke des Eingabebilds wenigstens 20% der Anzahl der Systemblöcke in der Schablone beträgt. Wenn dem nicht so ist, paßt die Schablone nicht zu dem Eingabebild und das Schablonenmodul gibt eine Fehlerbedingung zu dem Erfassungsausführungsteil 135 zurück.
  • Wenn die Anzahl der qualifizierten Systemblöcke bezüglich des Schwellenwerts zutrifft, erzeugt 1321 das Schablonenmodul 133 ein dynamisches Datennetz für das Eingabebild, wie vorhergehend beschrieben. Dieses dynamische Datennetz wird nicht als eine Schablone gespeichert, sondern mit dem dynamischen Datennetz der von dem Benutzer ausgewählten Schablone verglichen 1323.
  • Der Vergleichsvorgang 1323 iteriert über jede Vektorliste in dem dynamischen Datennetz des Eingabebildes, wodurch effektiv über jeden Systemblock in dem Eingabebild iteriert wird. Die Vektoren jeder Bildvektorenliste werden mit den Vektoren in der Vektorliste der Schablone verglichen. Ein Vektor in dem Eingabebild paßt zu einem Vektor in der Schablone, wenn er innerhalb eines vorgegebenen Bereichs einer Abmessungstoleranz liegt. In der bevorzugten Ausführungsform, unter Benutzung eines 50 dpi-Bildes, beträgt die Abmessungstoleranz 3 Pixel. Das bedeutet, wenn die Vektorlänge des Eingabebildes innerhalb von ± 3 Pixeln der Vektorlänge der Schablone liegt, passen die Vektoren zueinander. In anderen Ausführungsformen kann eine andere entsprechend skalierte Abmessungstoleranz benutzt werden. Der Vektor kann auch über die Koordinaten der Endpunkte verglichen werden, wobei die Abmessungstoleranz ungefähr quadriert wird. Das Schablonenmodul 133 speichert einen Zähler der Anzahl der zueinander passenden Vektoren.
  • Das Schablonenmodul 133 ermittelt 1325 anschließend, ob die Anzahl der zueinander passenden Vektoren, und damit der zueinander passenden Systemblöcke, wenigstens 10% der Anzahl der Systemblöcke in der Schablone beträgt. Wenn dem so ist, passen die dynamischen Datennetze zusammen und die Erfassung ist erfolgreich.
  • Wenn die dynamischen Datennetze des Eingabebildes und der Schablone zusammenpassen, wird der (x,y) Offset zwischen den Schwerpunkten jedes Paares einander entsprechender Systemblöcke (einer in der Schablone und einer in dem Eingabebild) ermittelt 1327. Dadurch wird eine Liste von Offset-Werten (x,y) erzeugt. Der Offset-Wert, der sich auf die größte Anzahl von Systemblockpaaren beziehen, wird als Bild-Offset genommen. Wenn zum Beispiel fünf Systemblockpaare einen Offset von (2, 3), zwei einen Offset von (2,4) und sechs einen Offset von (3, 3) haben, dann ist der Bild-Offset (3, 3) Pixel. Der Bild-Offset wird zu den Koordinaten jeder der benutzerdefinierten Bereiche, die in der Schablone gespeichert sind, addiert, um die Koordinaten der benutzerdefinierten Bereiche auf dem Eingabebild zu bestimmen 1329.
  • Die Koordinaten der benutzerdefinierten Bereiche in der Eingabe werden dem Modul zur optischen Zeichenerkennung 145 zur Verfügung gestellt. Das Modul zur optischen Zeichenerkennung 145 zieht dann den Text aus solchen Bereichen auf dem Bild (Fig. 2) heraus 209, und liefert die Daten an eine Datei, an eine Datenbank oder an andere Speichereinrichtungen.
  • Wenn keine Übereinstimmung mit der Datenvorlage vorgelegen hat, gibt der Erkennungsausführungsteil 135 eine Fehlerbedingung an den Anwenderausführungsteil 137 zurück, die dem Benutzer sagt, daß die Schablone nicht angewendet werden konnte. Dies wird auftreten, wenn das Dokument nicht von dem gleichen Typ wie das Formular ist oder mit erheblich unterschiedlichen Helligkeits- und Kontrasteinstellungen eingescannt wurde, so daß entweder erheblich mehr oder weniger Pixel in dem Bild gesetzt waren, als in dem ursprünglichen Bild, von dem die Schablone abstammt. Der Benutzer kann dann die Scannereinstellungen 115 überprüfen und das Dokument erneut scannen.
  • In der bevorzugten Ausführungsform ermöglicht der Anwenderausführungsteil 137 dem Anwender, wenn die Übereinstimmung scheiterte, die Schablone neu zu definieren 1335, einschließlich einer Neuzeichnung der benutzerdefinierten Bereiche. Dies ermöglicht dem Benutzer, die Schablone anzupassen und über die Zeit für Änderungen in dem Formular zu entwickeln, wenn beispielsweise neue Versionen des zugrunde liegenden Formulars hergestellt werden. Der Erfassungausführungsteil 135 wird dann versuchen, die geänderte Schablone wieder anzupassen. Der Benutzer kann einen Ausstieg wählen, wenn er nicht möchte, daß die Schablone neu definiert wird.

Claims (12)

1. Verfahren zum automatischen Identifizieren benutzerdefinierter Bereiche in einem zweiten Bild in bezug auf wenigstens einen benutzerdefinierten Bereich in einem ersten Bild und zur Kompensation einer Verkippung und einer Verschiebung in dem zweiten Bild in bezug auf das erste, welches folgende Schritte umfaßt:
Identifizieren einer ersten Mehrzahl von Blöcken verbundener Pixel in dem ersten Bild und Identifizieren einer zweiten Mehrzahl von Blöcken verbundener Pixel in dem zweiten Bild, wobei jeder Block durch Glätten von Bilddaten erzeugt wird und Linien entfernt werden;
Definieren wenigstens eines ersten Satzes von Vektoren von einem Block zu anderen Blöcken der ersten Mehrzahl von Blöcken, wobei ein erster Vektor zwischen irgendwelchen zwei der ersten Mehrzahl von Blöcken eine verkippungs- und verschiebungsinvariante Beziehung zwischen den zwei Blöcken beschreibt;
Definieren wenigstens eines zweiten Satzes von Vektoren von einem Block zu anderen Blöcken der zweiten Mehrzahl von Blöcken, wobei ein zweiter Vektor zwischen irgendwelchen zwei der zweiten Mehrzahl von Blöcken eine verkippungs- und verschiebungsinvariante Beziehung zwischen den zwei Blöcken beschreibt;
Vergleichen des wenigstens einen ersten Satzes von Vektoren mit dem wenigstens einen zweiten Satz von Vektoren, um zu bestimmen, ob es zwischen dem ersten Satz von Vektoren und dem zweiten Satz von Vektoren übereinstimmende Vektoren gibt; und
abhängig von der Präsenz übereinstimmender Vektoren zwischen dem ersten Satz von Vektoren und dem zweiten Satz von Vektoren Anwenden der benutzerdefinierten Bereiche des ersten Bildes auf das zweite Bild.
2. Verfahren nach Anspruch 1, das weiterhin den Schritt umfaßt:
Definieren des wenigstens einen benutzerdefinierten Bereichs in dem ersten Bild.
3. Verfahren nach Anspruch 1, das weiterhin den Schritt umfaßt:
Durchführen einer Schwellwertoperation für das erste und zweite Bild, um ein bitonales Bild zu erhalten.
4. Verfahren nach Anspruch 1, das weiterhin den Schritt umfaßt:
Unterabtasten des ersten und zweiten Bildes, um die Auflösung jedes Bildes zu verringern.
5. Verfahren nach Anspruch 1, wobei der Schritt des Identifizierens einer ersten Mehrzahl von Blöcken von verbundenen Pixeln in dem ersten Bild die Unterschritte umfaßt:
Feststellen eines Verkippungswinkels und der Orientierung in dem ersten Bild;
Zurückkippen des ersten Bildes gemäß dem Verkippungswinkel und der Orientierung;
Entfernen horizontaler Linien aus dem ersten Bild;
Entfernen vertikaler Linien aus dem ersten Bild;
Glätten des ersten Bildes, um die erste Mehrzahl von Blöcken verbundener Pixel hervorzubringen.
6. Verfahren nach Anspruch 5, welches weiterhin die Schritte umfaßt:
deutliches Identifizieren jedes Blocks der ersten Mehrzahl von Blöcken und Bestimmen einer Datenklassifizierung für jeden Block.
7. Verfahren nach Anspruch 1, wobei der Schritt des Definierens wenigstens eines ersten Satzes von Vektoren weiterhin den Schritt umfaßt:
Bestimmen eines Vektors zwischen einem Schwerpunkt von jedem der ausgewählten Blöcke zu einem Schwerpunkt in jedem anderen ausgewählten Block.
8. Verfahren nach Anspruch 7, das weiterhin den Schritt umfaßt:
Bestimmen eines Vektors zwischen einem Schwerpunkt von jedem des wenigstens einen benutzerdefinierten Bereichs zu einem Schwerpunkt in jedem ausgewählten Block.
9. Verfahren nach Anspruch 7, wobei jeder Vektor einen Abstand und eine Richtung umfaßt.
10. Verfahren nach Anspruch 5, wobei der Schritt des Bestimmens eines Verkippungswinkels und der Orientierung in dem ersten Bild weiterhin die Schritte umfaßt:
Glätten der Pixeldaten in dem ersten Bild in einer Mehrzahl von Blöcken;
Identifizieren von Blöcken, die zusammenhängende Sätze von Pixeln bilden, wobei jeder Block eine Höhe und eine Breite besitzt;
Qualifizieren jener Blöcke als gültige Blöcke, die eine Höhe und eine Breite innerhalb vorbestimmter Bereiche besitzen;
für jeden gültigen Block Bestimmen eines Blockverkippungswinkels und der Orientierung;
Bestimmung einer Orientierung einer Mehrheit der gültigen Blöcke; und
Mitteln der Blockverkippungswinkel der gültigen Blöcke.
11. Verfahren nach Anspruch 5, wobei der Schritt des Entfernens horizontaler Linien aus dem ersten Bild weiterhin die Schritte umfaßt:
Lauflängenglätten des ersten Bildes unter Benutzung eines Lauflängenparameters, der ausgewählt ist, um unterbrochene horizontale Linienabschnitte in kontinuierliche horizontalen Linienabschnitte zu konvertieren;
Identifizieren horizontaler Linienabschnitte mit einer geringeren als eine Maximalhöhe; und
Entfernen der identifizierten horizontalen Linienabschnitte durch Konvertieren gesetzter Pixel in den horizontalen Linienabschnitten in nicht gesetzte Pixel.
12. Verfahren nach Anspruch 5, wobei der Schritt des Entfernens vertikaler Linien aus dem ersten Bild weiterhin die Schritte umfaßt:
Normalisieren des ersten Bildes durch Hinzufügen temporärer horizontaler Linien auf der Ober- und Unterseite des Bildes;
Drehen des ersten Bildes um 90º;
Lauflängenglätten des ersten Bildes unter Benutzung eines Lauflängenparameters, der ausgewählt ist, um unterbrochene vertikale Linienabschnitte in kontinuierliche vertikale Linienabschnitte zu konvertieren;
Identifizieren vertikaler Linienabschnitte, die eine geringere als eine Maximalhöhe besitzen;
Entfernen der identifizierten vertikalen Linienabschnitte durch Konvertieren gesetzter Pixel in den vertikalen Linienabschnitten in nicht gesetzte Pixel;
Zurückdrehen des ersten Bildes um 90º; und
Denormalisieren des ersten Bildes durch Entfernen der temporären horizontalen Linien.
DE69621992T 1995-04-10 1996-04-10 Anlage und verfahren zur automatischen seitenerfassung und detektion von formularen Expired - Lifetime DE69621992T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/419,135 US5822454A (en) 1995-04-10 1995-04-10 System and method for automatic page registration and automatic zone detection during forms processing
PCT/US1996/005011 WO1996032691A1 (en) 1995-04-10 1996-04-10 System and method for automatic page registration and automatic zone detection during forms processing

Publications (2)

Publication Number Publication Date
DE69621992D1 DE69621992D1 (de) 2002-08-01
DE69621992T2 true DE69621992T2 (de) 2003-02-27

Family

ID=23660939

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69621992T Expired - Lifetime DE69621992T2 (de) 1995-04-10 1996-04-10 Anlage und verfahren zur automatischen seitenerfassung und detektion von formularen

Country Status (12)

Country Link
US (1) US5822454A (de)
EP (1) EP0764308B1 (de)
JP (1) JP4101290B2 (de)
KR (1) KR100390264B1 (de)
AU (1) AU696889B2 (de)
BR (1) BR9606305B1 (de)
CA (1) CA2192436C (de)
DE (1) DE69621992T2 (de)
ES (1) ES2180761T3 (de)
NO (1) NO965255L (de)
NZ (1) NZ306769A (de)
WO (1) WO1996032691A1 (de)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009198A (en) * 1997-11-21 1999-12-28 Xerox Corporation Method for matching perceptual shape similarity layouts across multiple 2D objects
US6446099B1 (en) 1998-09-30 2002-09-03 Ricoh Co., Ltd. Document matching using structural information
US6697525B1 (en) 1998-10-02 2004-02-24 Parthusceva Ltd. System method and apparatus for performing a transform on a digital image
US6711292B2 (en) 1998-12-30 2004-03-23 Canon Kabushiki Kaisha Block selection of table features
US6741737B1 (en) 1999-03-18 2004-05-25 Choicepoint Asset Company System and method for the secure data entry from document images
US6438433B1 (en) * 1999-04-16 2002-08-20 Ncr Corporation Financial document processing system and method of operating a financial document processing system
US6400845B1 (en) 1999-04-23 2002-06-04 Computer Services, Inc. System and method for data extraction from digital images
US6880122B1 (en) * 1999-05-13 2005-04-12 Hewlett-Packard Development Company, L.P. Segmenting a document into regions associated with a data type, and assigning pipelines to process such regions
FR2806814B1 (fr) * 2000-03-22 2006-02-03 Oce Ind Sa Procede de reconnaissance et d'indexation de documents
US20090059271A1 (en) * 2000-03-28 2009-03-05 Mongonet Methods and apparatus for web-based status of facsimile transmissions to electronic storage destinations
JP4603658B2 (ja) * 2000-07-07 2010-12-22 キヤノン株式会社 画像処理装置及び画像処理方法並びに記憶媒体
US6868186B1 (en) 2000-07-13 2005-03-15 Ceva D.S.P. Ltd. Visual lossless image compression
US7898695B1 (en) 2000-10-06 2011-03-01 Lexmark International, Inc. Method of compensating for electronic printhead skew and bow correction in an imaging machine to reduce print artifacts
US7213249B2 (en) * 2000-12-22 2007-05-01 Oracle International Corporation Blocking cache flush requests until completing current pending requests in a local server and remote server
US7802174B2 (en) 2000-12-22 2010-09-21 Oracle International Corporation Domain based workflows
US7349912B2 (en) 2000-12-22 2008-03-25 Oracle International Corporation Runtime modification of entries in an identity system
US7363339B2 (en) * 2000-12-22 2008-04-22 Oracle International Corporation Determining group membership
US8015600B2 (en) 2000-12-22 2011-09-06 Oracle International Corporation Employing electronic certificate workflows
US7937655B2 (en) 2000-12-22 2011-05-03 Oracle International Corporation Workflows with associated processes
US7475151B2 (en) 2000-12-22 2009-01-06 Oracle International Corporation Policies for modifying group membership
US7581011B2 (en) * 2000-12-22 2009-08-25 Oracle International Corporation Template based workflow definition
US7085834B2 (en) 2000-12-22 2006-08-01 Oracle International Corporation Determining a user's groups
US7380008B2 (en) 2000-12-22 2008-05-27 Oracle International Corporation Proxy system
US7415607B2 (en) 2000-12-22 2008-08-19 Oracle International Corporation Obtaining and maintaining real time certificate status
US7711818B2 (en) 2000-12-22 2010-05-04 Oracle International Corporation Support for multiple data stores
US7411593B2 (en) * 2001-03-28 2008-08-12 International Business Machines Corporation Image rotation with substantially no aliasing error
JP4261783B2 (ja) * 2001-09-11 2009-04-30 キヤノン株式会社 文書登録システム、方法、プログラム及び記憶媒体
US7225256B2 (en) 2001-11-30 2007-05-29 Oracle International Corporation Impersonation in an access system
US20030202683A1 (en) * 2002-04-30 2003-10-30 Yue Ma Vehicle navigation system that automatically translates roadside signs and objects
TW581972B (en) * 2002-05-06 2004-04-01 Newsoft Technology Corp Method to determine adjacency relation
US7216163B2 (en) 2002-05-15 2007-05-08 Oracle International Corporation Method and apparatus for provisioning tasks using a provisioning bridge server
US7840658B2 (en) 2002-05-15 2010-11-23 Oracle International Corporation Employing job code attributes in provisioning
US7050630B2 (en) * 2002-05-29 2006-05-23 Hewlett-Packard Development Company, L.P. System and method of locating a non-textual region of an electronic document or image that matches a user-defined description of the region
JP2004242295A (ja) * 2003-01-15 2004-08-26 Ricoh Co Ltd 画像形成装置、画像形成方法、情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体
RU2251738C2 (ru) * 2003-01-28 2005-05-10 "Аби Софтвер Лтд." Способ приведения в соответствие заполненной машиночитаемой формы и ее шаблона при наличии искажений (варианты)
US9224040B2 (en) 2003-03-28 2015-12-29 Abbyy Development Llc Method for object recognition and describing structure of graphical objects
US9015573B2 (en) 2003-03-28 2015-04-21 Abbyy Development Llc Object recognition and describing structure of graphical objects
US20070172130A1 (en) * 2006-01-25 2007-07-26 Konstantin Zuev Structural description of a document, a method of describing the structure of graphical objects and methods of object recognition.
US6990224B2 (en) * 2003-05-15 2006-01-24 Federal Reserve Bank Of Atlanta Method and system for communicating and matching electronic files for financial transactions
US20050053311A1 (en) * 2003-09-05 2005-03-10 Sharp Laboratories Of America, Inc. Non-integer scaling of bi-tonal files
US7424672B2 (en) * 2003-10-03 2008-09-09 Hewlett-Packard Development Company, L.P. System and method of specifying image document layout definition
US7904487B2 (en) 2003-10-09 2011-03-08 Oracle International Corporation Translating data access requests
US7882132B2 (en) 2003-10-09 2011-02-01 Oracle International Corporation Support for RDBMS in LDAP system
US7340447B2 (en) 2003-10-09 2008-03-04 Oracle International Corporation Partitioning data access requests
US7630974B2 (en) 2004-09-28 2009-12-08 Oracle International Corporation Multi-language support for enterprise identity and access management
JP2006201935A (ja) * 2005-01-19 2006-08-03 Fuji Xerox Co Ltd 画像データ処理装置
US8749839B2 (en) * 2005-03-24 2014-06-10 Kofax, Inc. Systems and methods of processing scanned data
US9137417B2 (en) 2005-03-24 2015-09-15 Kofax, Inc. Systems and methods for processing video data
US9769354B2 (en) 2005-03-24 2017-09-19 Kofax, Inc. Systems and methods of processing scanned data
WO2007024216A1 (en) * 2005-08-23 2007-03-01 The Mazer Corporation Test scoring system and method
WO2007117334A2 (en) * 2006-01-03 2007-10-18 Kyos Systems Inc. Document analysis system for integration of paper records into a searchable electronic database
RU2006101908A (ru) * 2006-01-25 2010-04-27 Аби Софтвер Лтд. (Cy) Структурное описание документа, способ описания структуры графических объектов и способы их распознавания (варианты)
US8571262B2 (en) * 2006-01-25 2013-10-29 Abbyy Development Llc Methods of object search and recognition
US9740692B2 (en) 2006-08-01 2017-08-22 Abbyy Development Llc Creating flexible structure descriptions of documents with repetitive non-regular structures
US8233714B2 (en) 2006-08-01 2012-07-31 Abbyy Software Ltd. Method and system for creating flexible structure descriptions
JP2008192032A (ja) * 2007-02-07 2008-08-21 Fuji Xerox Co Ltd 文書処理装置、文書処理方法、プログラム
US7880921B2 (en) * 2007-05-01 2011-02-01 Michael Joseph Dattilo Method and apparatus to digitally whiteout mistakes on a printed form
US8290272B2 (en) * 2007-09-14 2012-10-16 Abbyy Software Ltd. Creating a document template for capturing data from a document image and capturing data from a document image
US8295590B2 (en) * 2007-09-14 2012-10-23 Abbyy Software Ltd. Method and system for creating a form template for a form
US9390321B2 (en) 2008-09-08 2016-07-12 Abbyy Development Llc Flexible structure descriptions for multi-page documents
US8547589B2 (en) 2008-09-08 2013-10-01 Abbyy Software Ltd. Data capture from multi-page documents
US8249343B2 (en) 2008-10-15 2012-08-21 Xerox Corporation Representing documents with runlength histograms
US9576272B2 (en) 2009-02-10 2017-02-21 Kofax, Inc. Systems, methods and computer program products for determining document validity
US8774516B2 (en) 2009-02-10 2014-07-08 Kofax, Inc. Systems, methods and computer program products for determining document validity
US9349046B2 (en) 2009-02-10 2016-05-24 Kofax, Inc. Smart optical input/output (I/O) extension for context-dependent workflows
US9767354B2 (en) 2009-02-10 2017-09-19 Kofax, Inc. Global geographic information retrieval, validation, and normalization
US8958605B2 (en) 2009-02-10 2015-02-17 Kofax, Inc. Systems, methods and computer program products for determining document validity
US8189961B2 (en) 2010-06-09 2012-05-29 Microsoft Corporation Techniques in optical character recognition
US8116761B1 (en) 2010-08-11 2012-02-14 Sprint Communications Company L.P. Modifying wireless network paging zone broadcast based on wireless access congestion
US8832546B2 (en) * 2011-03-03 2014-09-09 Palo Alto Research Center Incorporated System for automatically filling in paper forms with electronic data
US9111140B2 (en) 2012-01-10 2015-08-18 Dst Technologies, Inc. Identification and separation of form and feature elements from handwritten and other user supplied elements
US9483794B2 (en) 2012-01-12 2016-11-01 Kofax, Inc. Systems and methods for identification document processing and business workflow integration
US9058515B1 (en) 2012-01-12 2015-06-16 Kofax, Inc. Systems and methods for identification document processing and business workflow integration
US9514357B2 (en) 2012-01-12 2016-12-06 Kofax, Inc. Systems and methods for mobile image capture and processing
US10146795B2 (en) 2012-01-12 2018-12-04 Kofax, Inc. Systems and methods for mobile image capture and processing
US9058580B1 (en) 2012-01-12 2015-06-16 Kofax, Inc. Systems and methods for identification document processing and business workflow integration
US8971630B2 (en) 2012-04-27 2015-03-03 Abbyy Development Llc Fast CJK character recognition
US8989485B2 (en) 2012-04-27 2015-03-24 Abbyy Development Llc Detecting a junction in a text line of CJK characters
CN103020619B (zh) * 2012-12-05 2016-04-20 上海合合信息科技发展有限公司 一种自动切分电子化笔记本中手写条目的方法
WO2014160426A1 (en) 2013-03-13 2014-10-02 Kofax, Inc. Classifying objects in digital images captured using mobile devices
US9355312B2 (en) 2013-03-13 2016-05-31 Kofax, Inc. Systems and methods for classifying objects in digital images captured using mobile devices
US9208536B2 (en) 2013-09-27 2015-12-08 Kofax, Inc. Systems and methods for three dimensional geometric reconstruction of captured image data
US20140316841A1 (en) 2013-04-23 2014-10-23 Kofax, Inc. Location-based workflows and services
EP2992481A4 (de) 2013-05-03 2017-02-22 Kofax, Inc. Systeme und verfahren zur detektion und klassifizierung von objekten in mithilfe von mobilen vorrichtungen aufgenommenen videos
JP2016538783A (ja) 2013-11-15 2016-12-08 コファックス, インコーポレイテッド モバイル映像データを用いて長尺文書の合成画像を生成するためのシステムおよび方法
CN107977989B (zh) * 2014-01-24 2021-11-16 青岛海信移动通信技术股份有限公司 一种确定图像偏移量的方法及设备
US9760788B2 (en) 2014-10-30 2017-09-12 Kofax, Inc. Mobile document detection and orientation based on reference object characteristics
US10242285B2 (en) 2015-07-20 2019-03-26 Kofax, Inc. Iterative recognition-guided thresholding and data extraction
JP6623597B2 (ja) * 2015-07-27 2019-12-25 富士ゼロックス株式会社 情報処理装置及びプログラム
US9779296B1 (en) 2016-04-01 2017-10-03 Kofax, Inc. Content-based detection and three dimensional geometric reconstruction of objects in image and video data
US11062176B2 (en) 2017-11-30 2021-07-13 Kofax, Inc. Object detection and image cropping using a multi-detector approach
US11328524B2 (en) 2019-07-08 2022-05-10 UiPath Inc. Systems and methods for automatic data extraction from document images
US11341325B2 (en) 2019-09-19 2022-05-24 Palantir Technologies Inc. Data normalization and extraction system
KR102256667B1 (ko) * 2020-03-23 2021-05-26 주식회사 신한디에스 문서 인식 방법 및 그 장치
WO2022182104A1 (ko) * 2021-02-23 2022-09-01 네이버 주식회사 테이블 생성 방법 및 시스템, 그리고 테이블이 포함된 이미지 보정 방법 및 시스템
KR102642095B1 (ko) * 2021-03-23 2024-02-28 네이버 주식회사 테이블이 포함된 이미지 보정 방법 및 시스템
WO2022182111A1 (ko) * 2021-02-23 2022-09-01 네이버 주식회사 테이블 생성 방법 및 시스템, 그리고 테이블 인식 방법 및 시스템
US20230073775A1 (en) * 2021-09-06 2023-03-09 Nathalie Goldstein Image processing and machine learning-based extraction method
CN117893612B (zh) * 2024-03-15 2024-05-24 葫芦岛天力工业有限公司 一种用于中厚板吊具夹取过程的视觉定位方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3636513A (en) * 1969-10-17 1972-01-18 Westinghouse Electric Corp Preprocessing method and apparatus for pattern recognition
US5185813A (en) * 1988-01-19 1993-02-09 Kabushiki Kaisha Toshiba Document image processing apparatus
US5140650A (en) * 1989-02-02 1992-08-18 International Business Machines Corporation Computer-implemented method for automatic extraction of data from printed forms
US5335290A (en) * 1992-04-06 1994-08-02 Ricoh Corporation Segmentation of text, picture and lines of a document image
US5416849A (en) * 1992-10-21 1995-05-16 International Business Machines Corporation Data processing system and method for field extraction of scanned images of document forms
US5513304A (en) * 1993-04-19 1996-04-30 Xerox Corporation Method and apparatus for enhanced automatic determination of text line dependent parameters
EP0654746B1 (de) * 1993-11-24 2003-02-12 Canon Kabushiki Kaisha System zum Identifizieren und Verarbeiten von Formularen
AU2702095A (en) * 1994-06-09 1996-01-04 Moneyfax, Inc. System and method for reading data from prescribed regions of a document of variable size

Also Published As

Publication number Publication date
BR9606305B1 (pt) 2010-08-10
CA2192436A1 (en) 1996-10-17
KR100390264B1 (ko) 2003-09-22
WO1996032691A1 (en) 1996-10-17
BR9606305A (pt) 1997-09-09
CA2192436C (en) 2005-02-08
DE69621992D1 (de) 2002-08-01
US5822454A (en) 1998-10-13
NO965255D0 (no) 1996-12-09
AU5541596A (en) 1996-10-30
EP0764308A1 (de) 1997-03-26
NZ306769A (en) 1998-06-26
ES2180761T3 (es) 2003-02-16
JPH10501913A (ja) 1998-02-17
EP0764308B1 (de) 2002-06-26
NO965255L (no) 1997-02-06
JP4101290B2 (ja) 2008-06-18
AU696889B2 (en) 1998-09-24

Similar Documents

Publication Publication Date Title
DE69621992T2 (de) Anlage und verfahren zur automatischen seitenerfassung und detektion von formularen
DE69517564T2 (de) Verfahren und Gerät zur Erzeugung einer hybriden Datenstruktur zur Anzeige eines Rasterbildes
DE69432585T2 (de) Verfahren und Gerät zur Auswahl von Text und/oder Non-Text-Blöcken in einem gespeicherten Dokument
DE69713941T2 (de) Bildverarbeitungssystem
DE69226846T2 (de) Verfahren zur Bestimmung von Wortgrenzen im Text
DE69421117T2 (de) Gerät zur Bildinformationsverarbeitung und -wiedergabe
DE4311172C2 (de) Verfahren und Einrichtung zum Identifizieren eines Schrägenwinkels eines Vorlagenbildes
DE60129872T2 (de) Verfahren zur Extrahierung von Titeln aus numerischen Bildern
DE69724755T2 (de) Auffinden von Titeln und Photos in abgetasteten Dokumentbildern
DE69516751T2 (de) Bildvorverarbeitung für Zeichenerkennungsanlage
DE3716787C2 (de)
DE19814075B4 (de) Verfahren zum Abtasten und Erkennen mehrerer Fotografien und zum Beseitigen von Randfehlern
DE3926327C2 (de) Verfahren und System zum Erkennen von Zeichen auf einem Medium
DE69723220T2 (de) Gerät und Verfahren zur Extrahierung von Tabellengeraden innerhalb normaler Dokumentbilder
DE69724557T2 (de) Dokumentenanalyse
DE69519323T2 (de) System zur Seitensegmentierung und Zeichenerkennung
DE69332459T2 (de) Verfahren und Vorrichtung zur Zeichenerkennung
DE69428475T2 (de) Verfahren und Gerät zur automatischen Spracherkennung
DE602005005117T2 (de) Detektion abweichender Seiten während des Scannens
DE69029594T2 (de) Ermittlung von Linienabschnitten und von vorbestimmten Mustern in einem optisch abgetasteten Dokument
DE69605255T2 (de) Vorrichtung und Verfahren für die Extraktion von Artikeln eines Dokuments
DE3650554T2 (de) Speicherungs- und Wiederauffindungsverfahren für Bilddaten
DE69530025T2 (de) Editieren eingescannter Bilddokumente unter Benutzung einfacher Interpretationen
DE69423926T2 (de) Verfahren und Gerät zur automatischen Schriftermittlung
DE68922772T2 (de) Verfahren zur Zeichenkettenermittlung.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition