Erkennung chinesischer, japanischer und koreanischer Sprachen
Chinesische, japanische und koreanische Sprachen werden häufig unter der Abkürzung „CJK“ zusammengefasst. Sie haben mehrere gemeinsame Merkmale, etwa die Verwendung chinesischer Schriftzeichen sowie eine vertikale und eine horizontale Schreibrichtung.In diesem Abschnitt werden einige Besonderheiten bei der Erkennung und beim Exportieren von Texten in CJK-Sprachen mit ABBYY FineReader Engine 12 behandelt.Um CJK-Sprachen erkennen zu können, benötigen Sie eine ABBYY FineReader Engine-Lizenz, die die Sprachmodule Chinesisch, Japanisch und Koreanisch unterstützt. Weitere Informationen zu Lizenzen und Modulen finden Sie im Abschnitt Lizenzierung.
Die Erkennungssprache Japanese (Modern) ist eine zusammengesetzte Sprache, die aus Japanisch, Englisch und vier Buchstaben des griechischen Alphabets besteht. Diese Sprache ist für die Erkennung moderner japanischer Texte vorgesehen, die einige Kanji-Zeichen, Kana-Symbole (Katakana oder Hiragana) sowie einige lateinische und/oder griechische Buchstaben enthalten können (z. B. Berichte, wissenschaftliche Arbeiten usw.). Um bei allen Dokumenten, die überwiegend auf Japanisch verfasst sind, die besten Erkennungsergebnisse zu erzielen, empfehlen wir dringend, die Erkennungssprache Japanese (Modern) als eigenständige Sprache zu verwenden und nicht in Kombination mit Englisch.
ABBYY FineReader Engine unterstützt auch Kombinationen von Erkennungssprachen, die aus mehreren dieser Sprachen oder aus Kombinationen von CJK- und anderen Sprachen bestehen.
Um eine fehlerhafte Darstellung asiatischer Zeichen zu vermeiden, müssen Sie für die Dokumentsynthese eine Schriftart angeben, die den erforderlichen Zeichensatz enthält, z. B. Arial Unicode MS, SimSun. Sie können die Schriftart über die Eigenschaft ISynthesisParamsForDocument::FontSet festlegen. Die Eigenschaft SystemFontSet des FontSet-Objekts ist standardmäßig so eingestellt, dass die Systemschriftarten ausgewählt werden, die den Erkennungssprachen des Dokuments entsprechen.
Sie können CJK-Sprachen im Modus „Text unter dem Bild“ (IPDFExportParams::TextExportMode = PEM_ImageOnText) als PDF/A exportieren, damit das Dokument genauso aussieht.
Übergeben Sie das konfigurierte DocumentProcessingParams-Objekt an die Process-Methode des FRDocument-Objekts. Wenn Sie Methoden des Engine-Objekts verwenden, sollten Sie vor dem Export eine der Synthesemethoden des Engine-Objekts mit dem konfigurierten SynthesisParamsForDocument-Objekt als Parameter aufrufen.
Exportieren Sie den erkannten Text mithilfe der Export-Methode des FRDocument-Objekts. Wenn Sie in das PDF- oder PDF/A-Format exportieren, geben Sie den erforderlichen Exportmodus an.
Verwenden Sie für Texte in CJK-Sprachen weder das Word-Objekt und seine Eigenschaften noch die Eigenschaften IsWordFirst und IsWordLeftmost des CharParams-Objekts. Die Verarbeitungstechnologie unterteilt die Textzeilen nur für interne Zwecke in „Wörter“, und diese Symbolgruppen stimmen nicht mit den tatsächlichen Wörtern überein.
C++-Code
// Wir gehen davon aus, dass Engine bereits erstellt wurde// und das Dokument geladen wurdeIEngine* Engine;IFRDocument* frDocument;HRESULT res; // verwenden Sie diese Variable, um zu prüfen, ob der Aufruf der Methode erfolgreich war...// Ein DocumentProcessingParams-Objekt erstellenIDocumentProcessingParams* params = 0;IPageProcessingParams* pageParams = 0;IRecognizerParams* recParams = 0;res = Engine->CreateDocumentProcessingParams( ¶ms );res = params->get_PageProcessingParams( &pageParams );res = pageParams->get_RecognizerParams( &recParams );// Die Erkennungssprache angebenres = recParams->SetPredefinedTextLanguage( L"Japanese" );ISynthesisParamsForDocument* synthesisParams = 0;IFontSet* set = 0;ISystemFontSet* systemSet = 0;res = params->get_SynthesisParamsForDocument( &synthesisParams );res = synthesisParams->get_FontSet( &set );res = set->get_SystemFontSet( &systemSet );// Schriftensatz auswählenres = systemSet->put_FontNamesFilter( FNF_Japanese );// Das Dokument erkennen und exportierenfrDocument->Process( params );frDocument->Export( L"/opt/Demo.rtf", FEF_RTF, 0 );...
C++-Code (COM)
FREngine::IEnginePtr Engine;FREngine::IFRDocumentPtr frDocument;...// Ein DocumentProcessingParams-Objekt erstellenFREngine::IDocumentProcessingParamsPtr pDocumentProcessingParams = Engine->CreateDocumentProcessingParams();// Die Erkennungssprache angebenpDocumentProcessingParams->PageProcessingParams->RecognizerParams->SetPredefinedTextLanguage( "Japanese" );// Schriftensatz auswählenpDocumentProcessingParams->SynthesisParamsForDocument->FontSet->SystemFontSet->FontNamesFilter = FREngine::FNF_Japanese;// Das Dokument erkennen und exportierenfrDocument->Process( pDocumentProcessingParams );frDocument->Export( L"D:\\Demo.rtf", FREngine::FEF_RTF, 0 );...
C#-Code
FREngine.IEngine engine;FREngine.IFRDocument frdoc;...// Ein DocumentProcessingParams-Objekt erstellenFREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();// Die Erkennungssprache angebendpp.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage( "Japanese" );// Schriftensatz auswählendpp.SynthesisParamsForDocument.FontSet.SystemFontSet.FontNamesFilter = (int)FREngine.FontNamesFiltersEnum.FNF_Japanese;// Das Dokument erkennen und exportierenfrdoc.Process( dpp );frdoc.Export( "D:\\Demo.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );...