> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Arbeiten mit Wörterbüchern

> Weisen Sie einer ABBYY FineReader Engine Erkennungssprache Standard-, Benutzer-, Regulärausdrucks- oder Sammelwörterbücher zu, um die OCR-Genauigkeit bei domänenspezifischen Texten zu verbessern.

<Note>
  C#-Beispiele gelten nur für FRE unter Windows.
</Note>

Mit ABBYY FineReader Engine können Sie einer Erkennungssprache Wörterbücher verschiedener Typen zuweisen, was die Erkennungsqualität erheblich verbessert.

<div id="dictionary-types">
  ## Wörterbuchtypen
</div>

Wörterbücher können mehrere Typen haben:

<Accordion title="Standardwörterbuch">
  Dieser Wörterbuchtyp ist bereits für die vordefinierten Sprachen verfügbar, die integrierte Wörterbuchunterstützung bieten (siehe die Kommentare in der [Liste der vordefinierten Sprachen](/de/fine-reader/engine/specifications/predefined-languages)). Darüber hinaus gibt es für einige Sprachen Wörterbücher mit Fachbegriffen (z. B. für Medizin und Recht), die im .zmd-Archiv enthalten sind. Standardwörterbücher bestehen aus drei oder vier Dateien. Ihre Namen entsprechen in der Regel dem vollständigen oder dem Kurznamen der Sprache und haben die Erweiterung .amd, .amm, .amt oder .ame. Dateien mit den Erweiterungen .amd, .amm und .amt sind immer vorhanden. Sie werden in den folgenden Ordnern gespeichert und können nicht geändert werden: [Data/ExtendedDictionaries](/de/fine-reader/engine/distribution/distribution-windows/distribution-kit#dictionaries) (Linux), [Resources/ExtendedDictionaries](/de/fine-reader/engine/distribution/distribution-windows/distribution-kit#dictionaries) (macOS), [Data\ExtendedDictionaries](/de/fine-reader/engine/distribution/distribution-windows/distribution-kit#dictionaries) (Windows).

  Mit ABBYY FineReader Engine werden keine .ame-Dateien bereitgestellt: Dieses Format dient zum Speichern einer Wörterbucherweiterung, also von Wörtern, die der Benutzer dem Wörterbuch hinzugefügt hat. Sie können in ABBYY FineReader eine Wörterbucherweiterung erstellen, wo sie als Benutzerwörterbuch bezeichnet wird, und die erstellte Datei dann in den oben genannten Ordner im ABBYY FineReader Engine-Ordner kopieren (alternativ können Sie den vollständigen Pfad dazu in der Eigenschaft [ILanguageDatabase::DictionaryExtensionsPath](/de/fine-reader/engine/api-reference/language-related-objects/languagedatabase#dictionaryextensionspath) angeben). ABBYY FineReader speichert die Erweiterungen von Standardwörterbüchern in %appdata%\ABBYY\FineReader\15\FineReaderShell\UserDictionaries. Wörterbucherweiterungen können in ABBYY FineReader Engine mit der Methode [ILanguageDatabase::OpenDictionaryExtension](/de/fine-reader/engine/api-reference/language-related-objects/languagedatabase/opendictionaryextension-method) bearbeitet werden.

  Dieser Wörterbuchtyp wird durch das Objekt [StandardDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/standarddictionarydescription) beschrieben.
</Accordion>

<Accordion title="Benutzerwörterbuch">
  Kann mit dem Objekt [Dictionary](/de/fine-reader/engine/api-reference/language-related-objects/dictionary) erstellt werden. Mit dem Objekt Dictionary können Sie über seine Methoden Wörter hinzufügen und entfernen.

  Unter Windows können Sie mit dem Objekt Dictionary das Wörterbuch außerdem mithilfe des [Dialogfelds „Dictionary“](/de/fine-reader/engine/api-reference/language-related-objects/dictionary/edit-method/dictionary-dialog-box) bearbeiten. In diesem Dialogfeld können Sie beliebige Textdateien in Windows-ANSI- und Unicode-Codierung importieren (die einzige Voraussetzung ist, dass Wörter durch Leerzeichen oder andere nicht alphabetische Zeichen getrennt sind).

  Dieser Wörterbuchtyp wird durch das Objekt [UserDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/userdictionarydescription) beschrieben.

  <Note>
    Das Benutzerwörterbuch in FineReader Engine hat das Dateiformat .amd und kann für jede Sprache erstellt werden. Es kann anstelle des Standardwörterbuchs für Sprachen verwendet werden, die keine Wörterbuchunterstützung haben. Das Benutzerwörterbuch von ABBYY FineReader wird in FineReader Engine als Wörterbucherweiterung bezeichnet; es ist eine .ame-Datei und kann nur für Sprachen mit Wörterbuchunterstützung als Erweiterung des Standardwörterbuchs für diese Sprache erstellt werden.
  </Note>
</Accordion>

<Accordion title="Auf regulären Ausdrücken basierendes Wörterbuch">
  Legt die Regeln fest, die definieren, welche Wörter in einer Sprache zulässig sind und welche nicht.

  Dieser Wörterbuchtyp wird durch das Objekt [RegExpDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/regexpdictionarydescription) beschrieben.
</Accordion>

<Accordion title="Externes Wörterbuch">
  Ermöglicht es Ihnen, einen eigenen Wörterbuchtyp zu implementieren. Dieses Wörterbuch wird durch die clientseitig implementierte Schnittstelle [IExternalDictionary](/de/fine-reader/engine/api-reference/language-related-objects/iexternaldictionary-interface) dargestellt. Hinweise zum Erstellen externer Wörterbücher finden Sie in der Beschreibung dieser Schnittstelle.

  Dieser Wörterbuchtyp wird durch das Objekt [ExternalDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/externaldictionarydescription) beschrieben.
</Accordion>

ABBYY FineReader Engine stellt das Objekt [DictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescription) zur Beschreibung aller Wörterbuchtypen bereit. Dies ist das Basisobjekt, von dem die Beschreibungen der verschiedenen Wörterbuchtypen abgeleitet sind.

Alle diese Wörterbuchbeschreibungen sind Elemente der Sammlung [DictionaryDescriptions](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions).

<div id="creating-a-dictionary-description">
  ## Erstellen einer Wörterbuchbeschreibung
</div>

Zum Erstellen von Wörterbuchbeschreibungen wird die Methode [AddNew](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions/addnew-method) des Objekts DictionaryDescriptions verwendet. Diese Methode gibt einen Verweis auf das Objekt DictionaryDescription zurück. Um einen Verweis auf das Objekt zu erhalten, das den entsprechenden Wörterbuchtyp beschreibt, verwenden Sie die Methoden [GetAsStandardDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescription/getasstandarddictionarydescription-method), [GetAsUserDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescription/getasuserdictionarydescription-method), [GetAsRegExpDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescription/getasregexpdictionarydescription-method) und [GetAsExternalDictionaryDescription](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescription/getasexternaldictionarydescription-method) des Objekts DictionaryDescription.

<div id="dictionary-properties">
  ## Wörterbucheigenschaften
</div>

Für jedes Wörterbuch muss die entsprechende Identifikationseigenschaft angegeben werden:

* Für ein Standardwörterbuch (StandardDictionaryDescription) geben Sie die Eigenschaft `LanguageId` an, die die ID der Sprache festlegt.
* Für ein Benutzerwörterbuch (UserDictionaryDescription) geben Sie die Eigenschaft `FileName` an, die den Pfad zum Benutzerwörterbuch angibt.
* Für ein auf regulären Ausdrücken basierendes Wörterbuch (RegExpDictionaryDescription) verwenden Sie die Methode [SetText](/de/fine-reader/engine/api-reference/language-related-objects/regexpdictionarydescription/settext-method), um den regulären Ausdruck anzugeben. Siehe [Arbeiten mit regulären Ausdrücken in ABBYY FineReader Engine](/de/fine-reader/engine/guided-tour/advanced-techniques/working-with-regular-expressions).
* Für ein externes Wörterbuch (ExternalDictionaryDescription) verwenden Sie die Methode [SetDictionary](/de/fine-reader/engine/api-reference/language-related-objects/externaldictionarydescription/setdictionary-method), um das Wörterbuch anzugeben.

Allen Wörterbuchtypen wird eine Gewichtung zugewiesen. Die Gewichtung eines Wörterbuchs beeinflusst die Gewichtung von Wörtern aus dem jeweiligen Wörterbuch, wenn diese bei der Erkennung gefunden werden. Der Gewichtungsparameter ist ein Prozentsatz und darf nicht negativ sein. Eine Gewichtung von 0 bedeutet nicht automatisch, dass ein solches Wörterbuch nicht vorhanden ist. Gewichtungen von mehr als 100 Prozent sind zulässig, der Benutzer muss bei der Verwendung solcher Parameter jedoch sehr vorsichtig sein. Die Gewichtung wird in der Eigenschaft [IDictionaryDescription::Weight](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescription#weight) angegeben und ist standardmäßig auf 100 gesetzt.

Standardwörterbücher verfügen außerdem über die Option [CanUseTrigrams](/de/fine-reader/engine/api-reference/language-related-objects/standarddictionarydescription#canusetrigrams), die dem Programm erlaubt oder verbietet, Trigramme zu verwenden, die auf Grundlage des ausgewählten Wörterbuchs gebildet werden. Trigramme sind Kombinationen aus drei Buchstaben. Nicht alle dieser Kombinationen kommen in realen Wörtern vor. Ein Wort mit einem nicht im Wörterbuch enthaltenen Trigramm ist mit hoher Wahrscheinlichkeit nicht aussprechbar. Trigramme werden verwendet, um unzuverlässige Wörter auszusortieren. Wir empfehlen, Trigramme für „allgemeine“ Standardwörterbücher zu aktivieren und für Fachwörterbücher zu deaktivieren.

<div id="dictionaries-of-a-recognition-language">
  ## Wörterbücher einer Erkennungssprache
</div>

Eine Texterkennungssprache (das Objekt [TextLanguage](/de/fine-reader/engine/api-reference/language-related-objects/textlanguage)) kann sowohl Wörterbücher mit Wörtern der jeweiligen Sprache als auch Wörterbücher mit verbotenen Wörtern haben. Erstere werden für jede [Basiserkennungssprache](/de/fine-reader/engine/api-reference/language-related-objects/baselanguage) der Texterkennungssprache festgelegt und sind über die Eigenschaft [IBaseLanguage::DictionaryDescriptions](/de/fine-reader/engine/api-reference/language-related-objects/baselanguage#dictionarydescriptions) verfügbar. Einer Basissprache kann auch kein Wörterbuch zugeordnet sein. Die Wörterbücher mit verbotenen Wörtern werden über die Eigenschaft [ITextLanguage::ProhibitingDictionaries](/de/fine-reader/engine/api-reference/language-related-objects/textlanguage#prohibitingdictionaries) direkt an die Texterkennungssprache angehängt.

Wenn Sie möchten, dass bei der Erkennung nur Wörter aus dem Wörterbuch zugelassen werden, setzen Sie die Eigenschaft [IBaseLanguage::AllowWordsFromDictionaryOnly](/de/fine-reader/engine/api-reference/language-related-objects/baselanguage#allowwordsfromdictionaryonly) auf TRUE. In diesem Fall kann ein Wort, das nicht im Wörterbuch der Basissprache gefunden wird, nur dann im erkannten Text erscheinen, wenn ABBYY FineReader Engine keine Wörterbuchvarianten gefunden hat.

<div id="how-to-attach-a-dictionary-to-a-recognition-language">
  ## So fügen Sie einer Erkennungssprache ein Wörterbuch hinzu
</div>

1. Erstellen Sie ein [TextLanguage](/de/fine-reader/engine/api-reference/language-related-objects/textlanguage)-Objekt mit einer der verfügbaren Methoden (z. B. mit der Methode [CreateTextLanguage](/de/fine-reader/engine/api-reference/language-related-objects/languagedatabase/createtextlanguage-method) des [LanguageDatabase](/de/fine-reader/engine/api-reference/language-related-objects/languagedatabase)-Objekts).
2. Rufen Sie die Sammlung der Basissprachen der neuen Textsprache ab (verwenden Sie dazu die Eigenschaft [BaseLanguages](/de/fine-reader/engine/api-reference/language-related-objects/textlanguage#baselanguages)).
3. Erstellen Sie ein neues [BaseLanguage](/de/fine-reader/engine/api-reference/language-related-objects/baselanguage)-Objekt und fügen Sie es der Sammlung der Basissprachen hinzu.
4. Rufen Sie die Sammlung der Wörterbuchbeschreibungen der neuen Basissprache ab (die Eigenschaft [DictionaryDescriptions](/de/fine-reader/engine/api-reference/language-related-objects/baselanguage#dictionarydescriptions)).
5. Erstellen Sie eine Wörterbuchbeschreibung und fügen Sie sie der Sammlung der Wörterbuchbeschreibungen der Basissprache hinzu. Verwenden Sie dazu die Methode [AddNew](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions/addnew-method) der Sammlung [DictionaryDescriptions](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions).

<Note>
  Sie können mehrere Wörterbücher unterschiedlicher Typen erstellen und sie der Sammlung [DictionaryDescriptions](/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions) einer Basiserkennungssprache hinzufügen.
</Note>

6. \[Optional] Geben Sie die Gewichtung des erstellten Wörterbuchs an.
7. Geben Sie die Eigenschaft an, über die das Wörterbuch identifiziert wird: die Eigenschaft LanguageId für ein Standardwörterbuch, die Eigenschaft FileName für ein Benutzerwörterbuch, die Methode IRegExpDictionaryDescription::SetText für ein auf regulären Ausdrücken basierendes Wörterbuch oder die Methode IExternalDictionaryDescription::SetDictionary für ein externes Wörterbuch.
8. \[Optional] Geben Sie weitere Eigenschaften des [BaseLanguage](/de/fine-reader/engine/api-reference/language-related-objects/baselanguage)-Objekts an.
9. \[Optional] Legen Sie die Ausschlusswörterbücher mithilfe der Eigenschaft ProhibitingDictionaries des [TextLanguage](/de/fine-reader/engine/api-reference/language-related-objects/textlanguage)-Objekts fest.
10. Weisen Sie das erstellte [TextLanguage](/de/fine-reader/engine/api-reference/language-related-objects/textlanguage)-Objekt der Eigenschaft TextLanguage des [RecognizerParams](/de/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/recognizerparams)-Objekts zu.

Die folgenden Codebeispiele zeigen, wie Sie diese Schritte unter Windows umsetzen.

<Accordion title="C++ (COM)-Code">
  ```cpp theme={null}
  // Globales ABBYY FineReader Engine-Objekt
  FREngine::IEnginePtr Engine;
  // Ein LanguageDatabase-Objekt
  FREngine::ILanguageDatabasePtr languageDatabase;
  ...
  // Ein TextLanguage-Objekt erstellen und die Sammlung seiner Basissprachen abrufen
  FREngine::ITextLanguagePtr pTextLang = languageDatabase->CreateTextLanguage();
  FREngine::IBaseLanguagesPtr pBaseLangCollection = pTextLang->BaseLanguages;
  // Ein BaseLanguage-Objekt erstellen und die Sammlung seiner Wörterbuchbeschreibungen abrufen
  FREngine::IBaseLanguagePtr pBaseLang = pBaseLangCollection->AddNew();
  pBaseLang->InternalName = L"SampleBaseLanguage";
  pBaseLang->PutLetterSet( FREngine::BLLS_Alphabet, L"abc123" );
  FREngine::IDictionaryDescriptionsPtr pDictDescCollection = pBaseLang->DictionaryDescriptions;
  // Eine Standardwörterbuchbeschreibung erstellen und der Sammlung hinzufügen
  FREngine::IDictionaryDescriptionPtr pDicDescription =
   pDictDescCollection->AddNew( FREngine::DT_SystemDictionary);
  // [optional] Die Gewichtung des erstellten Wörterbuchs angeben
  pDicDescription->Weight = 100;
  // Die Eigenschaft angeben, über die das Wörterbuch identifiziert wird
  FREngine::IStandardDictionaryDescriptionPtr pStandardDic = pDicDescription->GetAsStandardDictionaryDescription();
  pStandardDic->LanguageId = FREngine::LI_EnglishUnitedStates;
  // [optional] Weitere Eigenschaften der Basissprache angeben
  pBaseLang->AllowWordsFromDictionaryOnly = VARIANT_TRUE;
  // Ein RecognizerParams-Objekt erstellen
  FREngine::IRecognizerParamsPtr pParams = Engine->CreateRecognizerParams();
  // Das erstellte TextLanguage-Objekt der Eigenschaft TextLanguage zuweisen
  pParams->TextLanguage = pTextLang;
  ...
  ```
</Accordion>

<Accordion title="C#-Code">
  ```csharp theme={null}
  // Globales ABBYY FineReader Engine-Objekt
  FREngine.IEngine engine;
  // Ein LanguageDatabase-Objekt
  FREngine.ILanguageDatabase languageDatabase;
  ...
  // Ein TextLanguage-Objekt erstellen und die Sammlung der Basissprachen abrufen
  FREngine.ITextLanguage TextLang = languageDatabase.CreateTextLanguage();
  FREngine.IBaseLanguages BaseLangCollection = TextLang.BaseLanguages;
  // Ein BaseLanguage-Objekt erstellen und die Sammlung der Wörterbuchbeschreibungen abrufen
  FREngine.IBaseLanguage BaseLang = BaseLangCollection.AddNew();
  BaseLang.InternalName = "SampleBaseLanguage";
  BaseLang.set_LetterSet( FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "abc123" );
  FREngine.IDictionaryDescriptions DictDescCollection = BaseLang.DictionaryDescriptions;
  // Eine Standard-Wörterbuchbeschreibung erstellen und der Sammlung hinzufügen
  FREngine.IDictionaryDescription DicDescription = DictDescCollection.AddNew( FREngine.DictionaryTypeEnum.DT_SystemDictionary );
  // [optional] Die Gewichtung des erstellten Wörterbuchs festlegen
  DicDescription.Weight = 100;
  // Die Identifikationseigenschaft des Wörterbuchs festlegen
  FREngine.IStandardDictionaryDescription StandardDic = DicDescription.GetAsStandardDictionaryDescription();
  StandardDic.LanguageId = FREngine.LanguageIdEnum.LI_EnglishUnitedStates;
  // [optional] Weitere Eigenschaften der Basissprache festlegen
  BaseLang.AllowWordsFromDictionaryOnly = true;
  // Ein RecognizerParams-Objekt erstellen
  FREngine.IRecognizerParams recParams = engine.CreateRecognizerParams();
  // Das erstellte TextLanguage-Objekt der Eigenschaft TextLanguage zuweisen
  recParams.TextLanguage = TextLang;
  ...
  ```
</Accordion>

<div id="cache-dictionary">
  ## Cache-Wörterbuch
</div>

Ein Cache-Wörterbuch ist ein kleines Wörterbuch (etwa hundert Wörter), das sich während der Verarbeitung leicht ändern lässt. Cache-Wörterbücher können verwendet werden, wenn sich ein Wörterbuch genauer auswählen lässt, z. B. wenn Sie während der Verarbeitung neue Informationen über das Dokument erhalten. Solche Wörterbücher eignen sich für die Erkennung auf Feldebene.

Angenommen, ein Formular enthält zwei Felder, die Sie erkennen müssen: den Namen einer Stadt und den Namen einer Straße. Sie haben den Namen der Stadt bereits erkannt und verfügen über eine Liste der Straßen in dieser Stadt. In diesem Fall können Sie das passende Cache-Wörterbuch mit den Straßennamen laden und so den Straßennamen schneller und genauer erkennen.

ABBYY FineReader Engine stellt für die Arbeit mit Cache-Wörterbüchern die Methoden [AddWordsToCacheDictionary](/de/fine-reader/engine/api-reference/document-related-objects/frpage/addwordstocachedictionary-method), [AddWordToCacheDictionary](/de/fine-reader/engine/api-reference/document-related-objects/frpage/addwordtocachedictionary-method) und [CleanCacheDictionary](/de/fine-reader/engine/api-reference/document-related-objects/frpage/cleancachedictionary-method) des [FRPage](/de/fine-reader/engine/api-reference/document-related-objects/frpage)-Objekts bereit.

<Warning>
  Um das Cache-Wörterbuch zu verwenden, sollten Sie die Eigenschaft [IEngine::AutoCleanRecognizerSession](/de/fine-reader/engine/api-reference/engine-object-iengine-interface/properties#autocleanrecognizersession) auf FALSE setzen. Die Eigenschaft AutoCleanRecognizerSession ist standardmäßig auf TRUE gesetzt. Das bedeutet, dass FineReader Engine die Erkennungssitzung nach der Erkennung jeder Seite bereinigt; in diesem Fall wird auch das Cache-Wörterbuch bereinigt. Um eine versehentliche Zerstörung von Benutzerdaten zu verhindern, verbietet FineReader Engine die Verwendung von Cache-Wörterbüchern in diesem Modus. Wenn Sie das Cache-Wörterbuch verwenden, müssen Sie die Erkennungssitzung bei Bedarf selbst manuell bereinigen, indem Sie die Methode [IEngine::CleanRecognizerSession](/de/fine-reader/engine/api-reference/engine-object-iengine-interface/supplementary-methods/cleanrecognizersession-method) aufrufen. In der Beschreibung dieser Methode erfahren Sie, wann die Erkennungssitzung bereinigt werden muss.
</Warning>

<div id="see-also">
  ## Siehe auch
</div>

[Arbeiten mit Sprachen](/de/fine-reader/engine/guided-tour/advanced-techniques/working-with-languages)

[Erkennen von Wörtern mit Leerzeichen](/de/fine-reader/engine/guided-tour/advanced-techniques/recognizing-words-with-spaces)
