Einer der wichtigsten Erkennungsparameter ist die Sprache, die bei der Erkennung verwendet wird. Es ist wichtig, vor der Analyse und Erkennung die richtige Sprache festzulegen. Die Erkennungssprache lässt sich einfach mit der Methode IRecognizerParams::SetPredefinedTextLanguage festlegen. Diese Methode wirkt sich auf die Eigenschaft IRecognizerParams::TextLanguage aus. Standardmäßig ist dieser Parameter auf die englische Erkennungssprache gesetzt. Sie können auch die automatische Spracherkennung verwenden (Einzelheiten finden Sie in der Eigenschaft IRecognizerParams::LanguageDetectionMode).
Im Folgenden finden Sie nützliche Informationen zu den von ABBYY FineReader Engine standardmäßig unterstützten Sprachen sowie zu Objekten, die erweiterte Funktionen für die Arbeit mit Erkennungssprachen bereitstellen.
ABBYY FineReader Engine stellt standardmäßig eine Reihe unterstützter Sprachen bereit. Diese Sprachen werden als „vordefinierte Sprachen“ bezeichnet. Auf die Sammlung der verfügbaren vordefinierten Sprachen, die durch das Objekt PredefinedLanguages repräsentiert wird, kann über die Eigenschaft PredefinedLanguages des Objekts Engine zugegriffen werden. Dabei handelt es sich um eine Sammlung von Objekten vom Typ PredefinedLanguage.
Die vordefinierten Sprachen werden über ihre internen Namen identifiziert. Sie können eine Erkennungssprache direkt anhand des Namens der entsprechenden vordefinierten Sprache mithilfe der Methode IRecognizerParams::SetPredefinedTextLanguage angeben. Eine Liste der internen Namen der vordefinierten Sprachen finden Sie unter Predefined Languages in ABBYY FineReader Engine.
Erkennungssprache für einen Text
Die Sprache, die während der Erkennung verwendet wird, wird durch das Objekt TextLanguage dargestellt. Das Objekt RecognizerParams, das die Erkennungsparameter festlegt, speichert einen Verweis auf das Objekt TextLanguage. Die Erkennungsfunktionen beziehen dieses Objekt entweder als Unterobjekt des Objekts PageProcessingParams, das ihnen als Eingabeparameter übergeben wird, oder aus einem Block in einem Layout-Objekt.
Das Objekt TextLanguage stellt die folgenden wichtigsten Eigenschaften bereit:
- Interner Name. Wir empfehlen, für die interne Sprache einen eindeutigen Namen zu wählen; für die im Lieferumfang von ABBYY FineReader Engine enthaltenen Sprachen ist dieser bereits eindeutig. Achten Sie darauf, dass die Namen neuer Sprachen eindeutig sind.
- Zeichensätze. Das Objekt TextLanguage enthält die folgenden Zeichensätze: Satzzeichen, die zwischen Wörtern auftreten können, unzulässige Zeichen und zusätzliche Satzzeichen, die unmittelbar vor oder nach Wörtern stehen.
- Ausschlusswörterbücher. Sie können mithilfe der Eigenschaft ProhibitingDictionaries des Objekts TextLanguage eine Sammlung von Ausschlusswörterbüchern erstellen. Die Wörter aus diesen Wörterbüchern können nicht als Varianten eines erkannten Wortes verwendet werden. Wenn jedoch keine Varianten mehr übrig sind und die Verwendung eines ausgeschlossenen Wortes die einzige Möglichkeit ist, können Wörter aus diesen Wörterbüchern dennoch im erkannten Text erscheinen. Siehe Arbeiten mit Wörterbüchern.
Erkennungssprache für Zeichen
Während der Erkennung wird der Text in Wörter unterteilt, wobei jedem Wort eine oder mehrere Erkennungssprachen entsprechen. Jedem Zeichen in einem Wort wird eine Erkennungssprache zugewiesen. Diese Erkennungssprache wird durch das Objekt BaseLanguage repräsentiert und ist über die Eigenschaft ITextLanguage::BaseLanguages zugänglich.
Das BaseLanguage-Objekt hat die folgenden Eigenschaften:
- Interner Name. Wir empfehlen, für die interne Sprache einen eindeutigen Namen zu wählen; bei den mit dem ABBYY FineReader Engine-Distributionspaket gelieferten Sprachen ist dieser bereits eindeutig. Achten Sie darauf, dass die Namen neuer Sprachen eindeutig sind.
Wenn einem erkannten Wort genau eine Basis-Erkennungssprache entspricht, wird die Eigenschaft ICharParams::LanguageName für jedes Zeichen in diesem Wort nach der Erkennung auf den internen Namen der Basissprache gesetzt. Wenn einem Wort mehrere Basis-Erkennungssprachen entsprechen (z. B. bei zweisprachigen zusammengesetzten Wörtern), ist die Eigenschaft ICharParams::LanguageName für die Zeichen in diesem Wort leer. Die Eigenschaft ICharParams::LanguageId enthält unabhängig davon, welches Wort erkannt wurde, den Bezeichner der Basissprache.
- Zeichensätze. Ein Zeichensatz umfasst Buchstaben, die das Alphabet der Sprache bilden, Buchstaben, die ihr erweitertes Alphabet bilden (verwendet in Lehnwörtern), Satzzeichen, die unmittelbar vor und nach Wörtern stehen, Zeichen, die innerhalb von Wörtern zulässig sind, aber vom internen Rechtschreibprüfungssystem ignoriert werden, sowie Symbole, die in Tief- und Hochstellung zulässig sind.
- Wörterbuch. Einer Erkennungssprache für ein Wort kann ein Wörterbuch zugeordnet sein. Siehe Arbeiten mit Wörterbüchern.
Erstellen einer zusammengesetzten Erkennungssprache
ABBYY FineReader Engine bietet eine einfache Möglichkeit, zusammengesetzte Erkennungssprachen zu erstellen, die aus mehreren vordefinierten Erkennungssprachen bestehen. Dies geschieht über das Objekt LanguageDatabase. Sie können beispielsweise eine Erkennungssprache erstellen, die sowohl englische als auch deutsche Wörter umfasst:
- Erstellen Sie ein LanguageDatabase-Objekt, indem Sie die Methode IEngine::CreateLanguageDatabase aufrufen.
- Rufen Sie die Methode ILanguageDatabase::CreateCompoundTextLanguage mit dem Parameter “English,German” auf.
- Verwenden Sie das zurückgegebene Objekt TextLanguage für die Texterkennung.
Visual Components werden derzeit nur unter Windows unterstützt.
Mit dem LanguageDatabase-Objekt können Sie auch benutzerdefinierte Sprachen importieren, die in ABBYY FineReader Engine für Windows mit Visual Components erstellt wurden. Visual Components ermöglichen das Erstellen benutzerdefinierter Erkennungssprachen mit vom Benutzer festgelegten Zeichensätzen, Wörterbüchern und anderen Parametern. Die auf diese Weise erstellten Erkennungssprachen werden in mehreren Dateien gespeichert und können über das LanguageDatabase-Objekt abgerufen werden. Wenn Sie die in Visual Components erstellten Sprachen verwenden möchten, gehen Sie wie folgt vor:
- Erstellen Sie ein LanguageDatabase-Objekt, indem Sie die Methode IEngine::CreateLanguageDatabase aufrufen.
- Laden Sie die Sprachen mit der Methode ILanguageDatabase::LoadFrom in das LanguageDatabase-Objekt.
- Rufen Sie die gewünschte Sprache anhand ihres Namens als Objekt TextLanguage aus dem LanguageDatabase-Objekt ab.
- Verwenden Sie das zurückgegebene TextLanguage-Objekt für die Texterkennung.
Arbeiten mit Wörterbüchern
Erkennen von Wörtern mit Leerzeichen
Erkennen chinesischer, japanischer und koreanischer Sprachen