Zum Hauptinhalt springen
Wir suchen das Feld TotalAmount sowohl rechts von seinem Namen als auch darunter. So erstellen Sie das Feld TotalAmount:”
  1. Erstellen Sie im Element SumGroup ein Element vom Typ Zeichenkette und nennen Sie es TotalAmount.
  2. Klicken Sie auf die Registerkarte Zeichenkette.
  3. Geben Sie das Alphabet an: ’,-.0123456789OSZosz
  4. Setzen Sie Percentage für Nicht-Alphabet-Zeichen auf 30 %.
  5. Geben Sie im Feld Zeichenanzahl das folgende fuzzy interval an: {-1, 1, 20, INF}, mit dem die Länge der Zeichenkette bewertet wird. Wir gehen davon aus, dass alle möglichen Werte in das Intervall von 1 bis 20 Zeichen fallen. Jede Hypothese außerhalb dieses Intervalls wird abgestraft.
  6. Legen Sie keine zusätzlichen Beschränkungen fest und behalten Sie die Standardeinstellungen bei.
  7. Klicken Sie auf die Registerkarte Suchbedingungen und schließen Sie die Region der Hypothese für das Element kwTotal aus dem Suchbereich aus.
  8. Klicken Sie auf die Registerkarte Erweitert.
  9. Geben Sie unter den erweiterten Vor-Suchbeziehungen zusätzliche Suchbedingungen an:Wenn der Name kwTotal *erkannt wurde, geben Sie den Suchbereich als Array von Rechtecken an: ein Rechteck rechts neben dem Feldnamen und ein Rechteck mit einem gewissen Versatz unter dem Feldnamen. Suchen Sie andernfalls nicht nach dem image object.*In der FlexiLayout-Sprache kann diese Bedingung wie folgt geschrieben werden: If not kwTotal.IsNull Then // Wenn der Feldname kwTotal erkannt wurde { WholeWordMOde: true; MaxGapInLine: 30dt; RectArray DataRegion; Let r1= Rect (kwTotal.Rect.Right, kwTotal.Rect.Top -20dt, kwTotal.Rect.Right + 1800dt, kwTotal.Rect.Bottom + 50dt); // Begrenzt den Suchbereich auf ein Rechteck rechts neben dem Feldnamen. Let r2 = Rect (kwTotal.Rect.Left - 100dt, kwTotal.Rect.Bottom, kwTotal.Rect.Right + 100dt, kwTotal.Rect.Bottom + 200dt); // Begrenzt den Suchbereich auf ein Rechteck unter dem Feldnamen. DataRegion = RectArray (r1); DataRegion.Add (r2); RestrictSearchArea (DataRegion); } else Dontfind(); // Andernfalls nicht nach dem Objekt suchen.
  10. Der Suchbereich des Feldwerts ist auf zwei Rechtecke begrenzt, eines rechts neben und das andere unter dem Feldnamen. Wenn sich der Feldwert rechts neben dem Feldnamen befindet, steht auf den meisten Bildern unter dem Feldnamen weiterer Text. Da dieser überflüssige Text auf den meisten Bildern in den Suchbereich des Felds TotalAmount einbezogen wird, erstellt das Programm eine Hypothese für diesen Text. Um die Quality dieser Hypothese zu beeinflussen (d. h. ihre Qualität zu verringern), geben Sie in den erweiterten Nach-Suchbeziehungen eine zusätzliche Prüfung an:*Je weiter unten sich der Feldwert unter dem Feldnamen befindet, desto höher ist die Abwertung.*In der FlexiLayout-Sprache kann diese Prüfung wie folgt geschrieben werden: If not IsNull then {FuzzyQuality: 400dt - width, {-50000,0,0, 50000}*dt; // Hypothesen für Elemente mit einer 400 Punkte breiten Region haben die maximale Qualität if width < 50dt then Quality: 0; // Elemente mit weniger als 50 Punkten werden nicht berücksichtigt if Top > kwTotal.Rect.Top then { FuzzyQuality: Top - kwTotal.Rect.Top, {0,0,0, 20000}*dt; } } // Diese Prüfung bedeutet: Je größer die Differenz, desto höher die Abwertung. Hinweis. Zur Beschreibung der Positionen von Objekten auf der Seite und der Abstände zwischen ihnen wird ein 2D-Koordinatensystem verwendet. Der Punkt (0, 0) befindet sich in der oberen linken Ecke des Bildes. Die horizontale Achse verläuft von links nach rechts, die vertikale Achse von oben nach unten.
  11. Führen Sie einen Abgleich des FlexiLayout mit den Bildern durch, um sicherzustellen, dass das Programm das Element auf allen Bildern, auf denen es vorkommt, zuverlässig erkennen kann.
  12. Geben Sie die Position des Blocks TotalAmount als rechteckige Region des Elements TotalAmount an, die vertikal und horizontal um 5 Punkte erweitert wurde. Wählen Sie dazu Ausdruck aus und geben Sie den folgenden Ausdruck an: Rect outputRect; outputRect = SumGroup.TotalAmount.Rect; IsNull = SumGroup.TotalAmount.IsNull; OutputRegion = outputRect; OutputRegion.Inflate (5dt, 5dt);