Zum Hauptinhalt springen
Die Dokumentverarbeitung in ABBYY FineReader Engine umfasst mehrere Schritte: Seitenvorverarbeitung, Analyse, Erkennung, Seitensynthese, Dokumentsynthese und Export. In diesem Abschnitt geht es um die Seitenvorverarbeitung, Analyse, Erkennung sowie die Seiten- und Dokumentsynthese. Ausführliche Informationen zu den Exportparametern finden Sie unter Exportparameter anpassen. Betrachten wir die Verarbeitungsstufen der Reihe nach:
  1. Seitenvorverarbeitung
    In dieser Phase verbessert FineReader Engine automatisch die Bildqualität und korrigiert Mängel, die die Optical Character Recognition (OCR) beeinträchtigen können: Seitenausrichtung, invertierte Bilder und geometrische Verzerrungen.
  2. Layout-Analyse
    Während der Analyse erkennt FineReader Engine Bereiche mit unterschiedlichen Datentypen. Diese Bereiche werden als „Blöcke“ bezeichnet.
  3. Erkennung
    Die innerhalb der Blöcke liegenden Bildbereiche werden abhängig vom Blocktyp erkannt.
  4. Seitensynthese
    Text- und Hintergrundfarben, Hyperlinks und andere Formatierungen werden erkannt.
  5. Dokumentsynthese
    Abschließend werden die Schriftstile und die logische Struktur des Dokuments rekonstruiert: FineReader Engine erkennt Überschriften im erkannten Dokument, stellt das Inhaltsverzeichnis wieder her, erkennt Beschriftungen von Bildern und Tabellen sowie weitere Elemente der Dokumentstruktur.
Vor der Verarbeitung können Sie die Parameter für Seitenvorverarbeitung, Analyse, Erkennung und Synthese mithilfe der Parameterobjekte festlegen. Das Hauptobjekt, das Zugriff auf alle Verarbeitungsparameter bietet, ist das Objekt DocumentProcessingParams. Es verfügt über eine Reihe von Unterobjekten, die die verschiedenen Verarbeitungsstufen beeinflussen. Je nach Verarbeitungsstufe kann entweder ein Zeiger auf ein DocumentProcessingParams-Objekt oder können Zeiger auf dessen Unterobjekte als Eingabeparameter an die Verarbeitungsmethoden übergeben werden und so die Verarbeitungsergebnisse beeinflussen. Die Objekte FRDocument und FRPage stellen Methoden für Seitenvorverarbeitung, Analyse, Erkennung und Synthese bereit. Die Prozesse der Seitenvorverarbeitung, Analyse, Erkennung und Synthese können auch mithilfe von Profilen angepasst werden, und die gängigsten Szenarien werden bereits durch gut getestete vordefinierte Profile abgedeckt. Ausführliche Informationen finden Sie unter Arbeiten mit Profilen.

Seitenverarbeitung

Um die Parameter für die Verarbeitung jeder Seite festzulegen, verwenden Sie die Eigenschaften des Unterobjekts PageProcessingParams des Objekts DocumentProcessingParams. Das Objekt PageProcessingParams ist das übergeordnete Objekt für eine Gruppe von Objekten, mit denen die Parameter der Seitenverarbeitung festgelegt werden: Mit dem Objekt PageProcessingParams können Sie außerdem jede Verarbeitungsstufe aktivieren oder deaktivieren. So können Sie beispielsweise die Eigenschaft PerformAnalysis des Objekts PageProcessingParams auf FALSE setzen, wenn Sie die Blöcke manuell festlegen möchten und keine Layoutanalyse benötigen.

Dokumentverarbeitung

Um die Parameter für die Dokumentverarbeitung zusätzlich zu den Parametern für die Seitenverarbeitung festzulegen, müssen Sie auch die Parameter für die Dokumentensynthese über das Objekt SynthesisParamsForDocument festlegen. Während der Dokumentensynthese werden Schriftstile und Formatierungen erkannt. Die Objekte von FineReader Engine, die mit Dokumentschriftarten und -stilen arbeiten, sind erst nach der Dokumentensynthese sinnvoll nutzbar. Sie können die Phase der Dokumentensynthese in den folgenden Fällen auslassen:
  • Wenn Sie erkannten Text in das TXT-Format exportieren möchten. Beim Export in dieses Format werden keine Syntheseinformationen verwendet.
  • Wenn Sie ein Dokument in das Format PDF ImageOnly exportieren möchten. Der erkannte Text und die Layoutinformationen werden in diesem Modus nicht verwendet.
In allen anderen Fällen muss die Dokumentensynthese durchgeführt werden. Wenn Sie die Dokumentensynthese auslassen, führt dies beim Export zu Fehlern.
Methoden, die das Wort „Process“ im Namen enthalten (zum Beispiel IFRDocument::Process), umfassen auch die Phase der Dokumentensynthese. Die Verarbeitungsmethoden des Objekts FRPage umfassen sie nicht. Daher müssen Sie nach ihrer Verwendung und vor dem Export explizit eine Methode aufrufen, die die Dokumentensynthese ausführt.
Sie können die Phase der Dokumentensynthese beschleunigen und den Speicherverbrauch verringern. Wenn Sie während der Seitensynthese die Eigenschaft DetectFontFormattingAtPageLevel des Objekts SynthesisParamsForPage auf TRUE setzen, können Sie anschließend die Erkennung von Schriftparametern und der Dokumentstruktur während der Dokumentensynthese deaktivieren (DetectFontFormatting und DetectDocumentStructure des Objekts SynthesisParamsForDocument). Allerdings kann sich die Qualität dadurch verschlechtern. Jedes Mal, wenn der Text oder das Layout des Dokuments geändert wird (z. B. wenn ein Block entfernt oder hinzugefügt oder Text bearbeitet wird), empfehlen wir, die Dokumentensynthese erneut aufzurufen. Beachten Sie, dass die Methode SynthesizePages des FRDocument es Ihnen ermöglicht, die Sammlung der geänderten Seiten des Dokuments anzugeben, sodass nur die erforderlichen Daten neu berechnet werden.

Optimierung der Dokumentverarbeitung

Ein schrittweises Verfahren, bei dem die oben genannten Parameterobjekte verwendet werden, sollte wie folgt aussehen:
  1. Erstellen Sie mithilfe der Methode CreateDocumentProcessingParams des Objekts Engine ein Objekt vom Typ DocumentProcessingParams.
  2. Konfigurieren Sie die erforderlichen Eigenschaften des Unterobjekts PageProcessingParams. Sie müssen nicht alle Eigenschaften sämtlicher Unterobjekte konfigurieren, da sie bei der Erstellung mit sinnvollen Standardwerten initialisiert werden. Sie müssen nur die Eigenschaften anpassen, deren Werte von den Standardwerten abweichen sollen.
Wenn Sie die Parameter konfigurieren, die von den Funktionen zur Layoutanalyse verwendet werden, vergessen Sie nicht, auch die korrekten Werte für die Eigenschaften der Unterobjekte von PageProcessingParams festzulegen, die sich auf die Erkennung auswirken. Dies wird empfohlen, weil all diese Parameter in die Blöcke kopiert werden, die während der Layoutanalyse erstellt werden und dann für die Erkennung verwendet werden, und weil die Analyse bestimmter Bildbereiche eine Erkennung umfassen kann.
  1. Konfigurieren Sie bei Bedarf die erforderlichen Eigenschaften des Unterobjekts SynthesisParamsForDocument. Sie müssen nicht alle Eigenschaften aller Objekte und Unterobjekte konfigurieren, da sie bei der Erstellung mit sinnvollen Standardwerten initialisiert werden. Sie müssen nur die Eigenschaften anpassen, deren Werte von den Standardwerten abweichen sollen. Stellen Sie sicher, dass der Wert der Eigenschaft PerformSynthesis des Objekts DocumentProcessingParams true ist.
  2. Sie können das Objekt DocumentProcessingParams oder eine Gruppe seiner Unterobjekte an eine der Verarbeitungsmethoden der Objekte FRDocument, FRPage und Engine übergeben.
Zum Erkennen eines Dokuments empfehlen wir die Verwendung der Verarbeitungsmethoden des Objekts FRDocument. Dieses Objekt bietet eine ganze Reihe von Verarbeitungsmethoden. Die komfortabelste Methode, mit der sich Vorverarbeitung, Analyse, Erkennung und Synthese in einem einzigen Aufruf ausführen lassen, ist die Methode Process. Außerdem nutzt sie die Möglichkeiten der gleichzeitigen Verarbeitung auf Multiprozessor- und Multicore-Systemen besonders effizient. Sie können Vorverarbeitung, Analyse, Erkennung und Synthese jedoch auch nacheinander mit den entsprechenden Methoden durchführen.
FREngine.IEngine engine;
FREngine.IFRDocument frdoc;
// Wir gehen davon aus, dass das Dokument erstellt wurde und dem Dokument Bilder hinzugefügt wurden
// DocumentProcessingParams erstellen und Parameter festlegen
FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
FREngine.IPageProcessingParams ppp = dpp.PageProcessingParams;
ppp.PagePreprocessingParams.CorrectOrientationMode = COM_Auto;
// Die Parameter für die Verarbeitung verwenden
frDoc.Process( dpp );
Ähnliche Verfahren werden in den folgenden Codebeispielen verwendet:

Siehe auch

Arbeiten mit Profilen Erkennen von Barcodes Exportparameter anpassen