Zum Hauptinhalt springen
ABBYY FlexiLayout Studio verfügt über mehrere spezielle Funktionen für die Entwicklung zusätzlicher FlexiLayouts für Rechnungsprojekte:
  • Sie können die Positionen von Elementen relativ zu den Regionen von Feldern festlegen, die erkannt wurden, als das Haupt-FlexiLayout aus dem Rechnungsprojekt angewendet wurde.
  • Bezeichner von Vendors und Geschäftsbereichen können in Anfragen an den Datensatz der Document Definition verwendet werden.
  • Listen mit Schlüsselwörtern und anderen Parametern eines FlexiLayouts können in eine XML-Datei exportiert werden, sodass Sie sie bearbeiten können, ohne das FlexiLayout oder die Document Definition selbst zu bearbeiten.
  1. Öffnen Sie einen Batch mit erkannten Rechnungen in FC.
  2. Erstellen Sie ein neues Projekt in ABBYY FlexiLayout Studio. Wählen Sie im Hauptmenü Tools → Export Batch to FlexiLayout Studio → Create New FlexiLayout Studio Project…
Dieser Befehl ist nur für FC-Projekte verfügbar, die auf Ihrem Computer gespeichert sind. Wenn Sie die Distributed-Version von FC verwenden und das Projekt auf dem Server gespeichert ist, müssen Sie es zunächst auf Ihren Computer herunterladen. Klicken Sie dazu im Menü Project auf Export Project…
Das Suffix des ABBYY FlexiLayout Studio-Projekts gibt die Version der Document Definition zum Zeitpunkt der Erstellung des Projekts an.
Das ABBYY FlexiLayout Studio-Projekt, das Sie gerade erstellt haben, enthält alle Dokumente aus dem FC-Batch sowie die Regionen von Feldern, die bei der Erkennung in FC erkannt wurden, in Form eines Referenzlayouts.

Baum

Knoten

Beschreibung

SearchElements

CommonBlockRegions

Dieser Knoten enthält Elemente, die allen Feldern der Document Definition entsprechen. Die Koordinaten aller Regionen von Blöcken, die erkannt wurden, als FlexiLayouts auf die einzelnen Dokumente in FC angewendet wurden, werden im ABBYY FlexiLayout Studio-Projekt gespeichert. Standardmäßig werden Regionen mit diesen Koordinaten Elementen zugewiesen, die denselben Namen wie Felder in der Document Definition haben. Dadurch können sie verwendet werden, um die relativen Positionen von Elementen festzulegen und neue Elemente zu erstellen.

CustomSearchElements

Dieser Knoten enthält Beispielelemente. Sie sind standardmäßig deaktiviert, damit es bei der Anwendung des FlexiLayouts nicht zu Interferenzen kommt.

DataSetRequestSample - Ein Beispiel für eine Anfrage an den Datensatz von Vendors und Geschäftsbereichen, die in der Document Definition gespeichert sind. Dieser Datensatz enthält Bezeichner von Vendors und Geschäftsbereichen.

Um einem zusätzlichen FlexiLayout ein Feld hinzuzufügen, müssen Sie einen Block für dieses Feld erstellen und dessen search element angeben.Felder in der Document Definition müssen eindeutige Namen haben. Das bedeutet:
  • Um die Suchlogik für ein Feld zu beschreiben, müssen Sie einen Block mit einem eindeutigen Namen erstellen.
  • Um die Suchlogik für ein Feld zu ändern, das bereits in der Document Definition vorhanden ist, müssen Sie einen Block mit demselben Namen erstellen.
Wenn Sie die Änderungen, die Sie an einem zusätzlichen FlexiLayout vorgenommen haben, mit neuen Bildern testen möchten, können Sie Ihre FC-Batches in ein vorhandenes Rechnungsprojekt in ABBYY FlexiLayout Studio exportieren. Um Ihre Batches zu exportieren, klicken Sie auf Tools → Export Batch to FlexiLayout Studio → Add to Existing FlexiLayout Studio Project…
  • Sie können FC-Batches nur in solche ABBYY FlexiLayout Studio-Projekte exportieren, die durch Auswahl von Tools → Export Batch to FlexiLayout Studio → Create New FlexiLayout Studio Project… erstellt wurden.
  • Wenn Sie einen FC-Batch in ABBYY FlexiLayout Studio exportieren, wird dort für diesen Batch ein neuer Batch erstellt.
  • Wenn die neue Document Definition mehr Felder enthält als die Document Definition, die für das ABBYY FlexiLayout Studio-Projekt verwendet wurde, enthält das Exportprotokoll für jedes zusätzliche Feld eine Warnung.
  • Damit das Programm die zusätzlichen Felder exportiert, fügen Sie für jedes zusätzliche Feld im Knoten CommonBlockRegions des Baums SearchElements einen Block mit demselben Namen hinzu.
Eine Beispielanforderung finden Sie im Element DataSetRequestSample. Dieses Element ist standardmäßig deaktiviert.
TypBeschreibung
NamedValueEin benannter Wert
Konstruktor
NamedValue( String, String )
Methoden
String Name()Gibt den Namen eines benannten Werts zurück
String Value()Gibt den Wert eines benannten Werts zurück
NamedValueArrayEin Array aus benannten Werten
Konstruktoren
NamedValueArray()
NamedValueArray( NamedValue namedValue )
Methoden
Int Count()Gibt die Gesamtzahl der Elemente im Array zurück.
NamedValue GetAt( Int index )Gibt das Element mit dem angegebenen Index zurück.
Void Add( NamedValue namedValue )Fügt dem Array einen benannten Wert hinzu.
Void Add( NamedValueArray namedValueArray )Fügt ein Named-Value-Array zu einem Named-Value-Array hinzu.
Void InsertAt( Int index, NamedValue namedValue )Fügt namedValue an der Indexposition ein.
Void DeleteAll()Löscht alle Elemente in einem Array.
Void DeleteAt( Int index )Löscht ein Element an der Indexposition.
Int FindByName( String name )Gibt die Position des Werts namens name zurück.

Funktionen

Syntax:
  • Der Pfad zur Dokumentdefinition und der Name des Datensatzes werden verwendet, um beim Arbeiten mit einem FlexiLayout in ABBYY FlexiLayout Studio auf den Datensatz zuzugreifen.
  • Nach dem Hinzufügen eines kompilierten FlexiLayouts zu einer Dokumentdefinition in FC wird beim Zugriff auf den Datensatz nur dessen Name verwendet.
  • Format von connectionString:
“dbtype=FCDataset;fcTemplate=path_to_Document_Definition;datasetName=name_of_Data_Set;”Hinweis: Die Teile des Pfads müssen durch doppelte Backslashes "" getrennt werden.
  • searchFields Array mit den Namen der Spalten, aus denen Werte abgerufen werden sollen.
  • searchCriteria Array aus Spalten-Eintrag-Paaren; wenn leer, werden alle Werte zurückgegeben.
    • Wenn eine Anfrage mehrere Werte für ein Feld enthält, verwenden Sie den OR-Operator.
    • Wenn eine Anfrage mehrere Werte enthält, von denen jeder nur einem Feld zugeordnet ist, verwenden Sie den AND-Operator.
    • Wenn eine Anfrage mehrere Werte für ein Feld und zugleich Werte für mehrere Felder enthält, verwenden Sie den OR-Operator, um mehrere Werte für ein Feld voneinander zu unterscheiden, und den AND-Operator, um Werte für verschiedene Felder zu verknüpfen.
DefinitionBeschreibung
Logic TestAccessToFCDataSet( String connectionString )Prüft die Verbindung zum Datensatz
Logic TestFCDataSetSearchCriteria( String connectionString, StringArray searchFields, NamedValueArray searchCriteria )Prüft die Suchbedingungen für den Datensatz
StringArray FieldNamesOfFCDataset( String connectionString )Gibt eine Liste aller Felder aus dem Datensatz zurück, sortiert nach ihren Indexnummern in aufsteigender Reihenfolge.
StringArray FieldNamesOfFCDataset( String connectionString, StringArray searchFields )Gibt eine Liste der Felder aus dem angegebenen Datensatz in aufsteigender Reihenfolge ihrer Indexnummern zurück. Sollte zusammen mit der Funktion RecordOfFCDataset verwendet werden, wenn komplexe Spalten vorhanden sind.
Int RecordCountOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria )Gibt die Anzahl der Einträge des in den Suchbedingungen angegebenen Datensatzes zurück. Dient dazu, festzustellen, wie viele Einträge mit der Funktion RecordOfFCDataset zurückgegeben werden können.
Void PrepareRecordsetOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount )Bereitet Daten für eine Abfrage des Datensatzes vor. Dies muss für jede neue Gruppe von Suchbedingungen ausgeführt werden, bevor die Funktion RecordOfFCDataset aufgerufen wird.
StringArray RecordOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int rowIndex )Gibt ein Array von Werten aus dem Eintrag mit der Nummer rowIndex in den Ergebnissen zurück, die von einer Abfrage des Datensatzes zurückgegeben werden. Die Anzahl der Werte entspricht der Anzahl der in searchFields übergebenen Felder (dies schließt auch komplexe 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 Indexnummern für Felder. Sie können die Indexnummern ermitteln, indem Sie die Ausgabe der Funktion FieldNamesOfFCDataset indizieren.
Void SearchTextFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount )Mit dieser Funktion legen Sie Suchbedingungen für Wörter in der Funktion Static Text fest. Beim Aufruf dieser Funktion werden vorhandene Suchbedingungen durch neue ersetzt. Es werden Feldindizes akzeptiert. Sie können die Indexnummern ermitteln, indem Sie die Ausgabe der Funktion FieldNamesOfFCDataset indizieren.
Void RegularExpressionFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount )Diese Funktion wird verwendet, um Suchbedingungen für die Funktion CharString mithilfe regulärer Ausdrücke anzugeben. Wenn diese Funktion aufgerufen wird, werden vorhandene Suchbedingungen durch neue ersetzt. Akzeptiert Feldindizes. Sie können die Indexnummern ermitteln, indem Sie die Ausgabe der Funktion FieldNamesOfFCDataset indizieren.

So suchen Sie nach Zeilen aus einer Spalte einer externen Datenbank in einem Bild

  1. Verwenden Sie FieldNamesOfFCDataset, um eine nach Indexnummern aufsteigend sortierte Liste von Spalten abzurufen.
  2. Bestimmen Sie den Index der Spalte, in der sich die gesuchten Daten befinden.
  3. Erstellen Sie ein Array von Bedingungen, um Daten aus dem Datensatz zu filtern.
  4. Übergeben Sie die Indexnummern der Spalte sowie die Filterbedingungen an SearchTextFromFCDataSet (oder an RegularExpressionFromFCDataSet, wenn Sie reguläre Ausdrücke benötigen).
Dieser Code wird automatisch generiert, wenn ein erkannter Batch aus FC exportiert wird

So durchsuchen Sie ein Bild nach Einträgen aus mehreren Spalten einer externen Datenbank

Da die Suchparameter bei jedem Aufruf der Funktion SearchTextFromFCDataSet ersetzt werden, ist ein mehrfacher Aufruf dieser Funktion sinnlos. Es gibt jedoch eine Möglichkeit, dies zu umgehen: Sie können Strings aus einer externen Datenbank abrufen und sie an die Funktion SearchText übergeben. Beim Aufruf dieser Funktion wird der String den vorhandenen Suchparametern hinzugefügt, anstatt sie zu ersetzen.Führen Sie dazu die folgenden Schritte aus:
  1. Erstellen Sie ein Array mit den Namen der Spalten, in denen Sie Daten finden müssen.
  2. Erstellen Sie ein Array mit Filterbedingungen, um Daten aus dem Datensatz zu filtern.
  3. Ermitteln Sie, wie viele Einträge mit der Funktion RecordCountOfFCDataset zurückgegeben werden.
  4. Bereiten Sie die Abfragedaten mithilfe der PrepareRecordsetOfFCDataset-Funktion vor.
  5. Durchlaufen Sie alle Datensätze und rufen Sie für jeden Datensatz mit der Methode RecordOfFCDataset das Array ab.
  6. Übergeben Sie den Wert jedes Array-Elements an die Funktion SearchText.

Weitere Hinweise zum Umgang mit komplexen Spalten

  • Die Funktion FieldNamesOfFCDataset gibt ein Array zurück, das mehrere Vorkommen des Namens der komplexen Spalte enthält. Die Anzahl der Vorkommen entspricht der Anzahl der Spalteninstanzen in einer kodierten externen Datenbank. Beispiel: {VendorId, VATID, Name, Name, Name, City}. In diesem Fall enthält die externe Datenbank 3 Spalten für die komplexe Spalte Name im Datensatz.
  • Wenn SearchCriteria eine Bedingung für ein Feld enthält, das einer komplexen Spalte entspricht (wie im obigen Beispiel), wird diese Bedingung verwendet, um alle Instanzen dieser Spalte zu prüfen.
  • Wenn searchFields eine Bedingung für ein Feld enthält, das einer komplexen Spalte entspricht (wie im obigen Beispiel), enthält das Ergebnis ein Array mit den Werten aus jeder Spalteninstanz. Wenn Sie beispielsweise für {VendorId, VATID, Name, Name, Name, City} Folgendes anfordern
searchFields = { VATID, Name, City}, you will receive
{VATID_value, Name_valueInColumn1, Name_valueInColumn2, Name_valueInColumn3, City_value}
  • Sie können eine Liste der zurückgegebenen Spalten abrufen, indem Sie das Array searchFields an die Funktion FieldNamesOfFCDataset übergeben.
Sie können eine XML-Datei mit FlexiLayout-Einstellungen mithilfe von zwei Standardfunktionen abfragen, die in der Dokumentation zu ABBYY FlexiLayout Studio beschrieben sind:
StringArray ReadFromXML(String filename, String xPathQuery)
String ReadSingleStringFromXML(String filename, String xPathQuery)
Diese Datei muss sich in den Unterordnern des ABBYY FlexiLayout Studio-Projektordners befinden, wenn Sie sie bei der Arbeit an einem FlexiLayout in ABBYY FlexiLayout Studio verwenden möchten. Der Pfad zu dieser Datei wird relativ zur ABBYY FlexiLayout Studio-Projektdatei angegeben.Wenn Sie ein kompiliertes FlexiLayout in eine Document Definition in FC laden und es als zusätzliches FlexiLayout verwenden, wird die XML-Datei im Ordner Templates abgelegt und Sie können sie bearbeiten. Wenn das FlexiLayout angewendet wird, verwaltet das Programm den Zugriff auf diese Datei automatisch.