Spezielle Funktionen von ABBYY FlexiLayout Studio für das Erstellen zusätzlicher FlexiLayouts
ABBYY FlexiLayout Studio bietet mehrere Spezialfunktionen für die Entwicklung zusätzlicher FlexiLayouts für Rechnungsprojekte:
- Sie können die Positionen der Elemente in Bezug auf die Feldbereiche festlegen, die beim Anwenden des Haupt-FlexiLayouts vom Rechnungsprojekt erkannt wurden.
- In Anfragen an den Datensatz der Dokumentdefinition können Kennungen für Lieferanten und Geschäftseinheiten verwendet werden.
- Die Listen mit Schlüsselwörtern und andere Parameter eines FlexiLayouts können in eine XML-Datei exportiert werden, wo diese dann ohne Bearbeitung des FlexiLayouts oder der Dokumentdefinition bearbeitet werden können.
Erstellung eines zusätzlichen FlexiLayouts
- Öffnen Sie einen Stapel mit erkannten Rechnungen in ABBYY FlexiCapture
- Erstellen Sie ein neues Projekt in ABBYY FlexiLayout Studio. Wählen Sie im Hauptmenü Tools → Stapel zu FlexiLayout Studio exportieren → Neues FLS-Projekt erstellen....
Hinweis. Dieser Befehl ist nur verfügbar fürABBYY FlexiCapture Projekte, die auf Ihrem Computer gespeichert sind. Nutzen Sie eine verteilte Version von ABBYY FlexiCapture und das Projekt ist auf dem Server gespeichert, muss es zuerst durch Klicken auf Projekt exportieren... im Menü Projekt auf Ihren Computer heruntergeladen werden.
Hinweis. Der Suffix des ABBYY FlexiLayout Studio-Projekts gibt die Version der Dokumentdefinition zum Zeitpunkt der Projekterstellung an.
Das von Ihnen soeben erstellte ABBYY FlexiLayout Studio-Projekt enthält alle Dokumente aus dem ABBYY FlexiCapture-Stapel und die Regionen der Felder, die während der Erkennung in ABBYY FlexiCapture in der Form eines Referenzlayouts erfasst wurden.
Baum | Knoten | Beschreibung |
SearchElements | CommonBlockRegions | Dieser Knoten enthält Elemente, die allen Feldern der Dokumentdefinition entsprechen. Die Koordinaten aller Blockbereiche, die bei der Anwendung der FlexiLayouts auf die einzelnen Dokumente in ABBYY FlexiCapture erkannt wurden, werden im ABBYY FlexiLayout Studio-Projekt gespeichert. Standardmäßig werden Bereiche mit diesen Koordinaten den Elementen zugewiesen, die den gleichen Namen tragen wie die Felder in der Dokumentdefinition. Das ermöglicht die Verwendung dieser Felder für das Festlegen relativer Positionen von Elementen und für die Erstellung neuer Elemente. |
CustomSearchElements |
Diese Knoten enthält Beispielelemente. Diese sind standardmäßig deaktiviert, um so Überschneidungen bei der Anwendung des FlexiLayouts zu vermeiden.
Ein Beispiel für eine Anfrage an den Datensatz der Lieferanten und Geschäftseinheiten, die in der Dokumentdefinition gespeichert sind. Dieser Datensatz enthält Kennungen von Lieferanten und Geschäftseinheiten.
Ein Beispiel dafür, wie man eine Liste von Schlüsselwörtern aus der KeywordsCustom.xml erhält. Diese Datei finden Sie im Unterordner Einstellungen des ABBYY FlexiLayout Studio-Projektordners. |
Hinzufügen eines Feldes zu einem zusätzlichen FlexiLayout
Um einem zusätzlichen FlexiLayout ein Feld hinzuzufügen, muss ein Block für dieses Feld erstellt und dessen Suchelement festgelegt werden.
Die Felder in der Dokumentdefinition müssen einzigartige Namen besitzen. Das bedeutet:
- Zur Beschreibung der Suchlogik für ein Feld muss ein Block mit einem einzigartigen Namen erstellt werden.
- Zur Änderung der Suchlogik für ein Feld, das bereits in der Dokumentdefinition vorhanden ist, muss ein Block mit demselben Namen erstellt werden.
Seiten zu einem zusätzlichen FlexiLayout hinzufügen
Wenn Sie die an einem zuätzlichen FlexiLayout vorgenommenen Änderungen an einem neuen Bild testen möchten, können Sie Ihre ABBYY FlexiCapture Stapel in ein vorhandenes Rechnungsprojekt in ABBYY FlexiLayout Studio exportieren. Um Ihre Stapel zu exportieren, klicken Sie auf Tools → Stapel zu FlexiLayout Studio exportieren → Hinzufügen zu vorhandenem FLS-Projekt....
- Sie können die Stapel ABBYY FlexiCapture nur in die ABBYY FlexiLayout Studio-Projekte exportieren, die durch die Auswahl von Tools → Export Batch to FlexiLayout Studio → Neues FLS-Projekt erstellen....
- Wenn Sie einen ABBYY FlexiCapture Stapel zu ABBYY FlexiLayout Studio exportieren, wird für diesen Stapel in ABBYY FlexiLayout Studio ein neuer Stapel erstellt.
- Enthält die neue Dokumentdefinition mehr Felder als die für das ABBYY FlexiLayout Studio-Projekt verwendete Dokumentdefinition, enthält das Exportprotokoll eine Warnung für jedes Zusatzfeld.
- Damit das Progamm die Zusatzfelder exportiert, fügen Sie für jedes Zusatzfeld einen Block mit dem gleichen Namen im Knoten CommonBlockRegions zur Struktur SearchElements hinzu.
Anfragen für Datensätze von der Dokumentdefinition formulieren
Sie finden eine Beispielanfrage im Element "DataSetRequestSample". Dieses Element ist standardmäßig deaktiviert.
Typ | Beschreibung |
NamedValue | Ein benannter Wert |
Konstruktor | |
NamedValue( String, String ) | |
Methoden | |
String Name() | Gibt den Namen eines benannten Werts zurück |
String Value() | Gibt den Wert einer benannten Werts zurück |
NamedValueArray | Ein Array aus benannten Werten |
Konstruktoren | |
NamedValueArray() | |
NamedValueArray( NamedValue namedValue ) | |
Methoden | |
Int Count() | Gibt die Gesamtanzahl der Elemente im Array zurück.. |
NamedValue GetAt( Int index ) | Gibt das Element mit der angegebenen Indexnummer zurück.. |
Void Add( NamedValue namedValue ) | Fügt dem Array einen benannten Wert hinzu. |
Void Add( NamedValueArray namedValueArray ) | Fügt einem benannten Wertearray ein benanntes Wertearray hinzu. |
Void InsertAt( Int index, NamedValue namedValue ) | Fügt namedValue an der Position index ein. |
Void DeleteAll() | Löscht alle Elemente in einem Array. |
Void DeleteAt( Int index ) | Löscht ein Element an der Position index. |
Int FindByName( String name ) | Gibt die Position des benannten Wertes name zurück. |
Functionen
Syntax:
- Der Pfad zur Dokumentdefinition und der Name des Datensatzes werden bei der Arbeit mit einem FlexiLayout in ABBYY FlexiLayout Studio für den Zugriff auf den Datensatz verwendet.
- Nachdem ein kompiliertes FlexiLayout einer Dokumentdefinition in ABBYY FlexiCapture hinzugefügt wurde, wird beim Zugriff auf den Datensatz nur dessen Name verwendet.
- connectionString Format:
"dbtype=FCDataset;fcTemplate=path_to_Document_Definition;datasetName=name_of_Data_Set;"
Hinweis. Teile des Pfads müssen durch doppelte umgekehrte Schrägstriche getrennt werden "\\"
- searchFields
Array der Namen der Spalten, aus denen die Werte abgerufen werden sollen. - searchCriteria
Array aus Spalten-Eintrags-Paaren, gibt alle Werte zurück, wenn leer. - Enthält eine Anfrage mehrere Werte für ein Feld, verwenden Sie den Operator OR
- Enthält eine Anfrage mehrere Werte, wobei jeder davon nur einem Feld entspricht, verwenden Sie den Operator AND
- Enthält eine Anfrage mehrere Werte für ein Feld und Werte für mehrere Felder, verwenden Sie den Operator OR, um mehrere Werte für ein Feld zu trennen, und den Operator AND für die Verbindung von Werten für verschiedene Felder.
Definition | Beschreibung |
Logic TestAccessToFCDataSet( String connectionString ) | Testet die Verbindung zum Datensatz |
Logic TestFCDataSetSearchCriteria( String connectionString, StringArray searchFields, NamedValueArray searchCriteria ) | Testet die Suchbedingungen für den Datensatz |
StringArray FieldNamesOfFCDataset( String connectionString ) | Gibt eine Liste aller Felder im Datensatz zurück, sortiert in aufsteigender Reihenfolge ihrer Indexnummern. |
StringArray FieldNamesOfFCDataset( String connectionString, StringArray searchFields ) | Gibt eine Liste aller Datensatz felder vom festgelegten Datensatz zurück, sortiert in aufsteigender Reihenfolge ihrer Indexnummern. Sollte in Verbindung mit der Funktion RecordOfFCDataset verwendet werden, wenn komplexe Spalten vorhanden sind. |
Int RecordCountOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria ) | Gibt die Menge der Einträge aus dem Datensatz zurück, die in den Suchbedingungen festgelegt ist. Verwendbar um herauszufinden, wie viele Einträge mithilfe der Funktion RecordOfFCDataset voraussichtlich zurückgegeben werden. |
Void PrepareRecordsetOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Bereitet die Daten für eine Abfrage des Datensatzes vor. Muss für jeden neuen Satz von Suchbedingungen ausgeführt werden, bevor die Funktion RecordOfFCDataset aufgerufen wird. |
StringArray RecordOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int rowIndex ) | Gibt ein Array aus Werten des Eintrags mit der Anzahl rowIndex von den Ergebnissen zurück, die von einer Abfrage des Datensatzes zurückgegeben werden. Die Anzahl der Werte entspricht der Anzahl der in searchFields weitergegebenen Felder (schließt den Fall komplexer Spalten ein). |
Quality ValidateByFCDataSet( String word, String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxErrors, Rational maxErrorsPart, Logic ignoreSpaces = true, Int maxRecordsCount = DefaultMaxRecordsCount ); | Gibt die Qualität der Zeichenfolge word zurück. Akzeptiert die Indexnummern von Feldern. Sie erhalten die Indexnummern durch Indexierung der Ausgabe der Funktion FieldNamesOfFCDataset. |
Void SearchTextFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Mit dieser Funktion können die Suchbedingungen für Wörter der Funktion Statischer Text festgelegt werden. Wird diese Funktion aufgerufen, werden die vorhandenen Suchbedingungen durch neue ersetzt. Akzeptiert Feldindexnummern. Sie erhalten die Indexnummern durch Indexierung der Ausgabe der Funktion FieldNamesOfFCDataset. |
Void RegularExpressionFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Mit dieser Funktion können die Suchbedingungen für die Verwendung regulärer Ausdrücke für die Funktion CharString festgelegt werden. Wird diese Funktion aufgerufen, werden die vorhandenen Suchbedingungen durch neue ersetzt. Akzeptiert Feldindexnummern. Sie erhalten die Indexnummern durch Indexierung der Ausgabe der Funktion FieldNamesOfFCDataset. |
Suchen nach Zeilen von einer Spalte aus einer externen Datenbank in einem Bild
- Mit FieldNamesOfFCDataset erhalten Sie eine Liste der Spalten, sortiert in aufsteigender Reihenfolge ihrer Indexnummern.
- Bestimmen Sie die Indexnummer der Spalte, in der Daten gefunden werden sollen.
- Erstellen Sie aus dem Datensatz ein Array von Bedingungen für die Filterung von Daten.
- Geben Sie die Indexnummern der Spalte und die Filterbedingungen an SearchTextFromFCDataSet weiter (oder an RegularExpressionFromFCDataSet, wenn reguläre Ausdrücke verwendet werden müssen).
Dieser Code wird automatisch generiert, sobald ein erkannter Stapel von ABBYY FlexiCapture exportiert wird
Ein Bild nach Einträgen aus mehreren Spalten einer externen Datenbank durchsuchen
Da die Suchparameter bei jedem Aufruf der Funktion SearchTextFromFCDataSet ersetzt werden, ist der mehrmalige Aufruf dieser Funktion sinnlos. Aber es gibt eine Lösung: Sie können Zeichenfolgen von einer externen Datenbank abrufen und diese an die Funktion SearchText weiterleiten. Der Aufruf dieser Funktion fügt den String den vorhandenen Suchparametern hinzu, anstatt diese zu ersetzen.
Führen Sie dafür die folgenden Schritte aus:
- Erstellen Sie ein Array aus Namen der Spalten, in denen Daten gesucht werden sollen.
- Erstellen Sie ein Array von Filterbedingungen für die Filterung von Daten aus dem Datensatz.
- Bestimmen Sie die Menge von Einträgen, die bei der Verwendung der Funktion RecordCountOfFCDataset zurückgegeben werden.
- Bereiten Sie mithilfe der Funktion PrepareRecordsetOfFCDataset die Abfragedaten vor.
- Durchsuchen Sie alle Einträge und finden Sie mithilfe der Methode RecordOfFCDataset das Array für jeden Eintrag.
- Geben Sie den Wert der einzelnen Elemente im Array an die Funktion SearchText weiter.
Zusätzliche Überlegungen im Umgang mit komplexen Spalten
- Die Funktion FieldNamesOfFCDataset gibt ein Array zurück, in dem der Name der komplexen Spalte mehrmals auftritt. Die Anzahl der Vorkommen entspricht der Anzahl der Spalteninstanzen in einer codierten externen Datenbank.
Beispiel: {VendorId, VATID, Name, Name, Name, City}. In diesem Falle enthält die externe Datenbank 3 Spalten für die eine komplexe Spalte im Datensatz Name. - Enthält SearchCriteria eine Bedingung für ein Feld, das der komplexen Spalte entspricht (wie im Beispiel oben), wird diese Bedingung für die Überprüfung aller dieser Spalteninstanzen verwendet.
- Enthält searchFields eine Bedingung für ein Feld, das der komplexen Spalte entspricht (wie im Beispiel oben), enthält das Ergebnis das Array aus Werten jeder Spalteninstanz.
Beispielsweise, wenn Sie für {VendorId, VATID, Name, Name, Name, City} anfordern:
searchFields = { VATID, Name, City}, werden Sie erhalten
{VATID_value, Name_valueInColumn1, Name_valueInColumn2, Name_valueInColumn3, City_value}
- Sie erhalten eine Liste der Spalten, die durch die Weitergabe des Arrays searchFields an die Funktion FieldNamesOfFCDataset zurückgegeben wird.
Anfrage an eine XML-Datei, die FlexiLayout-Einstellungen enthält
Sie können mithilfe der in der Dokumentation für ABBYY FlexiLayout-Studio beschriebenen zwei Standardfunktionen Anfragen an eine XML-Datei mit FlexiLayout-Einstellungen stellen:
StringArray ReadFromXML(String filename, String xPathQuery)
String ReadSingleStringFromXML(String filename, String xPathQuery)
Das Element XMLSettingsSample enthält Beispielcode, der eine Liste von Schlüsselwörtern aus der Datei KeywordsCustom.xml ausliest. Diese Datei finden Sie im Unterordner Einstellungen des ABBYY FlexiLayout Studio-Projektordners.
Diese Datei muss sich in den Unterordnern des ABBYY FlexiLayout Studio-Projektordners befinden, wenn diese bei der Arbeit mit einem FlexiLayout in ABBYY FlexiLayout Studio verwendet werden soll. Der Pfad zu dieser Datei ist relativ zur ABBYY FlexiLayout Studio-Projektdatei.
Laden Sie ein kompiliertes FlexiLayout in eine Dokumentdefinition in ABBYY FlexiCapture und verwenden es als zusätzliches FlexiLayout, wird die XML-Datei im Ordner Vorlagen abgelegt, wo sie dann bearbeitet werden kann. Wird das FlexiLayout angewendet, verwaltet das Programm den Zugriff auf diese Datei automatisch.
12.04.2024 18:16:01