Wenn Sie eine Zeichenkette aus statischem Text erkennen müssen und wissen, dass dieses Feld auf allen Bildern nur einzeilig ist, empfiehlt es sich, den Textwert ohne Leerzeichen einzugeben. Dadurch wird die Suche beschleunigt, ohne die Qualität der gefundenen Hypothese zu beeinträchtigen.
Dies gilt nur, wenn der statische Text des Namens fehlerfrei erkannt wurde. Der Grund dafür ist, dass die maximale Anzahl von Fehlern (für Static Text-Elemente durch die beiden Parameter Max number of errors und Max error percentage festgelegt) die Anzahl der Fehler pro Wort angibt. Wenn also Max number of errors auf 1 gesetzt ist, der Name aus 3 Wörtern besteht und der Wert des Static Text ohne Leerzeichen eingegeben wird, darf das Programm bei der Erkennung höchstens 1 Fehler machen. Wird der Name ohne Leerzeichen eingegeben, interpretiert das Programm ihn als ein einziges Wort, unabhängig davon, aus wie vielen Wörtern er tatsächlich besteht. Wenn Sie die Wörter im Namen jedoch durch Leerzeichen trennen, gilt die zulässige Anzahl bzw. der zulässige Prozentsatz an Fehlern für jedes der Wörter, die Sie in das Search text eingegeben haben. Treten in einem Static Text Erkennungsfehler auf, wird die Hypothese nach einem bestimmten Algorithmus abgewertet, und die Qualität der Hypothesen mit und ohne Leerzeichen kann unterschiedlich ausfallen.
Sehen wir uns das Projekt Spaces.fsp an (Ordner %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Spaces in StaticText\Project1) und lernen wir einige Methoden für die Arbeit mit Static Text-Elementen kennen.
Das Projekt hat 2 Seiten:
- Seite 1 – die Bildqualität ist gut;
- Seite 2 – der Name des Datenfelds ist verrauscht.
Wir suchen nach dem Datenfeld “Father’s name”, das sich auf den Namen “Please indicate your father’s name here:” bezieht.
Im Projekt haben wir ein Element vom Typ Static Text erstellt und es NameOfFatherHeader genannt. Seinen Wert haben wir als ein Wort ohne Leerzeichen angegeben (d. h. Pleaseindicateyourfather’snamehere:). Die Groß-/Kleinschreibung im Namen spielt dabei keine Rolle. Für alle anderen Eigenschaften des Elements haben wir die Standardwerte beibehalten. Die maximale Anzahl von Fehlern im Namen beträgt 10 Zeichen (30 % der 35 Zeichen, aus denen der Text besteht).
Nachdem Sie das FlexiLayout-Matching ausgeführt haben, indem Sie den Befehl Match auswählen, sehen Sie, dass der Name auf beiden Seiten erfolgreich erkannt wurde. Auf Seite 2 beträgt die Chain quality der Elementhypothese jedoch etwa 0,994, weil sie aufgrund des durch das Rauschen im Dokument verursachten Erkennungsfehlers abgewertet wurde.
Um die Ergebnisse der Voraberkennung für den gesuchten Namen anzuzeigen, klicken Sie in der Symbolleiste auf “L” (“Show Recognized Lines”) und zeigen Sie auf den Text des Namens. Das Ergebnis der Voraberkennung für den Feldnamen auf Seite 2 sieht dann so aus: “PLEASEINDICATE|OURFATHER’SNAMEHERE:”. Alternativ können Sie den erkannten Static Text anzeigen, indem Sie die Hypothese des Elements NameOfFatherHeader im Fenster Tree of Hypotheses auswählen und den Mauszeiger auf die Zeile Keyword im Fenster Properties-Hypothesis bewegen. In diesem Fall werden die Ergebnisse der Voraberkennung und die erkannten Fehler (falls vorhanden) im unteren Teil des Fensters Properties-Hypotheses angezeigt.
Um das Datenfeld “Father’s name” zu erkennen, haben wir ein Element vom Typ Character String erstellt, weil das gesuchte Datenfeld nur eine Zeile hat und sich sein Wert im Gegensatz zu Static Text von Dokument zu Dokument ändert. Wir nannten das Element FathersName und legten seine Eigenschaften im Abschnitt Relations fest. Anschließend erstellten wir im FlexiLayout einen Block mit demselben Namen und gaben an, dass seine Region mit der Region des Elements FathersName übereinstimmt (wir wählten den Namen des Elements FathersName im Feld Source element aus).
Versuchen wir nun, das FlexiLayout mit denselben Bildern abzugleichen, aber den Wert des Elements NameOfFatherHeader als durch Leerzeichen getrennte Wörter einzugeben.
Dazu haben wir das Projekt Spaces.fsp erstellt (im Ordner Spaces in StaticText\Project2). Der Wert für das Element NameOfFatherHeader sieht folgendermaßen aus: Please indicate your father’s name here:. Alle anderen Einstellungen bleiben unverändert (sie sind identisch mit denen des Projekts Spaces.fsp im Ordner Spaces in StaticText\Project1).
Sobald Sie das FlexiLayout-Matching durch Auswählen des Befehls Match ausgeführt haben, sehen Sie, dass der Feldname auf beiden Seiten erfolgreich erkannt wurde. Die Chain quality für die Hypothese des Elements NameOfFatherHeader auf Seite 2 beträgt jetzt jedoch nur noch etwa 0.987, da die Hypothese wegen eines Erkennungsfehlers infolge der geringen Qualität des ursprünglichen Bildes abgewertet wurde.
Bitte beachten Sie, dass bei Leerzeichen im Wert von Static Text, den Sie in das Feld Search text eingeben, jedes Wort einzeln analysiert wird und die maximale Anzahl bzw. der maximale Prozentsatz an Fehlern auf jedes einzelne Wort angewendet wird. Die endgültige Qualität der Hypothese für Static Text hängt dann von den Qualitäten dieser einzelnen Wörter ab.