Die Autodetektion erkennt den Typ eines erkannten Textfragments. Sie wird gestartet, wenn die Eigenschaft TextTypes des Objekts RecognizerParams auf mehrere Konstanten festgelegt ist. Dieser Modus wurde in erster Linie für die Erkennung von Formularen entwickelt. Für die gewöhnliche Optical Character Recognition (OCR) empfehlen wir, ihn nur dann zu verwenden, wenn es unbedingt erforderlich ist.
Wenn die Autodetektion aktiviert ist, versucht ABBYY FineReader Engine zunächst, den Texttyp im angegebenen Block oder in der angegebenen Blockgruppe zu erkennen (für diese Blöcke ist die Eigenschaft TextTypes des Objekts RecognizerParams auf mehrere Konstanten festgelegt). ABBYY FineReader Engine wählt dabei aus den in der Eigenschaft TextTypes angegebenen Konstanten aus. Diese Eigenschaft enthält eine ODER-Verknüpfung der Konstanten der Enumeration TextTypeEnum, die die möglichen für die Erkennung verwendeten Texttypen angeben. Ist sie beispielsweise auf TT_Normal | TT_Index festgelegt, geht ABBYY FineReader Engine davon aus, dass der Text nur gewöhnlichen typografischen Text und im Postleitzahlenformat geschriebene Ziffern enthält, und ignoriert alle anderen Varianten. Während der Autodetektion führt ABBYY FineReader Engine die Erkennung für alle in der Eigenschaft TextTypes angegebenen Texttypen durch. Anschließend werden die OCR-Ergebnisse verglichen, und ABBYY FineReader Engine wählt das beste Ergebnis als Endergebnis aus.
Verwenden der Autodetektion
Die Autodetektion sollte für eine Gruppe von Blöcken verwendet werden, die alle Text desselben Typs enthalten. Wenn für jeden Block ein eigener Texttyp ausgewählt werden muss, müssen Sie für jeden Block die Methode RecognizeBlocks aufrufen, und das RecognizerParams-Objekt muss die möglichen Texttypen aufführen.
Wenn ein einzelner Block Text unterschiedlicher Typen enthält, wird die Erkennung für alle Texttypen ausgeführt, es wird jedoch nur ein Ergebnis ausgewählt. Der gesamte Text innerhalb des Blocks wird also so erkannt, als wäre er vom selben Typ. Deshalb können die Erkennungsergebnisse für einen Block, der Text mehrerer Typen enthält, von den Ergebnissen für einen Block abweichen, der nur Text eines Typs enthält. Für bessere OCR-Ergebnisse zeichnen Sie für jeden Texttyp einen separaten Block.
Die Geschwindigkeit und Genauigkeit der Autodetektion hängen von der in der Eigenschaft TextTypes angegebenen Texttypmenge ab. Am schnellsten arbeitet die Autodetektion bei Kombinationen der Typen TT_Normal, TT_Matrix, TT_Typewriter, TT_OCR_A und TT_OCR_B (diese Kombination kann als „schnelle Autodetektionsmenge“ bezeichnet werden). In diesem Fall wird der Recognizer nur einmal gestartet, die Autodetektion erfolgt während der Optical Character Recognition (OCR), und zur Erkennung des Texttyps werden einzelne Wörter statt Blöcke verwendet. Wenn nur ein Texttyp angegeben ist, wird die Autodetektion nicht gestartet — die Engine startet den Recognizer, der dem angegebenen Texttyp entspricht.
Wenn die Eigenschaft TextTypes einer beliebigen Kombination aus TT_Matrix, TT_Typewriter, TT_OCR_A und TT_OCR_B entspricht, werden kursive Schrift und Hoch-/Tiefstellungen unabhängig von den Werten der Eigenschaften ProhibitItalic, ProhibitSubscript und ProhibitSuperscript des RecognizerParams-Objekts nicht erkannt.
Bei Texten, die nicht von der „schnellen Autodetektionsmenge“ abgedeckt werden, werden Texttypen blockweise und nicht anhand einzelner Wörter erkannt. Das bedeutet, dass die Autodetektion langsamer ist, wenn die Menge der möglichen Texttypen andere Texttypen als TT_Normal, TT_Matrix, TT_Typewriter, TT_OCR_A und TT_OCR_B umfasst. In diesem Fall muss die Engine die vorläufige OCR mehrfach durchführen — einmal für die Typen aus der „schnellen Autodetektionsmenge“ und jeweils eine vorläufige Erkennungssitzung für jeden zusätzlichen Texttyp. Anschließend werden die Ergebnisse verglichen und der am besten passende Texttyp ausgewählt.
- Achten Sie darauf, die Anzahl der Texttypen in der Eigenschaft TextTypes auf ein Minimum zu beschränken.
- Wenn die Eigenschaft TextTypes einer beliebigen Kombination aus TT_Handwritten und TT_Index entspricht, kann die Eigenschaft TrainUserPatterns des RecognizerParams-Objekts nicht auf TRUE gesetzt werden.
RecognizerParams
TextTypeEnum