Zum Hauptinhalt springen
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.

Erkennungssprachen

ABBYY FineReader Engine unterstützt die folgenden vordefinierten Erkennungssprachen für CJK-Texte:
  • “ChinesePRC”
  • “ChineseTaiwan”
  • “Japanese”
  • “JapaneseModern”
  • “Korean”
  • “KoreanHangul”
Um eine dieser vordefinierten Sprachen auszuwählen, können Sie die Methode SetPredefinedTextLanguage des Objekts RecognizerParams verwenden.
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.

Schriftarten

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.

Export

Sie können CJK-Sprachen im Modus „Text unter dem Bild“ (IPDFExportParams::TextExportMode = PEM_ImageOnText) als PDF/A exportieren, damit das Dokument genauso aussieht.

Die Vorgehensweise bei Erkennung und Export

Gehen Sie zum Verarbeiten von Dokumenten in CJK-Sprachen wie folgt vor:
  1. Erstellen Sie mithilfe der CreateDocumentProcessingParams-Methode des Engine-Objekts ein DocumentProcessingParams-Objekt.
  2. Geben Sie die Erkennungssprache an. Verwenden Sie dazu die SetPredefinedTextLanguage-Methode des RecognizerParams-Unterobjekts im PageProcessingParams-Unterobjekt.
  3. Wählen Sie den für CJK-Sprachen geeigneten Schriftensatz aus. Verwenden Sie dazu die ISynthesisParamsForDocument::FontSet-Eigenschaft des SynthesisParamsForDocument-Unterobjekts.
  4. Ü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.
  5. 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.
// Wir gehen davon aus, dass Engine bereits erstellt wurde
// und das Dokument geladen wurde
IEngine* Engine;
IFRDocument* frDocument;
HRESULT res; // verwenden Sie diese Variable, um zu prüfen, ob der Aufruf der Methode erfolgreich war
...
// Ein DocumentProcessingParams-Objekt erstellen
IDocumentProcessingParams* params = 0;
IPageProcessingParams* pageParams = 0;
IRecognizerParams* recParams = 0;
res = Engine->CreateDocumentProcessingParams( ¶ms );
res = params->get_PageProcessingParams( &pageParams );
res = pageParams->get_RecognizerParams( &recParams );
 
// Die Erkennungssprache angeben
res = 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ählen
res = systemSet->put_FontNamesFilter( FNF_Japanese );
// Das Dokument erkennen und exportieren
frDocument->Process( params );
frDocument->Export( L"/opt/Demo.rtf", FEF_RTF, 0 );
...
FREngine::IEnginePtr Engine;
FREngine::IFRDocumentPtr frDocument;
...
// Ein DocumentProcessingParams-Objekt erstellen
FREngine::IDocumentProcessingParamsPtr pDocumentProcessingParams = Engine->CreateDocumentProcessingParams();
// Die Erkennungssprache angeben
pDocumentProcessingParams->PageProcessingParams->RecognizerParams->SetPredefinedTextLanguage( "Japanese" );
// Schriftensatz auswählen
pDocumentProcessingParams->SynthesisParamsForDocument->FontSet->SystemFontSet->FontNamesFilter = FREngine::FNF_Japanese;
// Das Dokument erkennen und exportieren
frDocument->Process( pDocumentProcessingParams );
frDocument->Export( L"D:\\Demo.rtf", FREngine::FEF_RTF, 0 );
...
FREngine.IEngine engine;
FREngine.IFRDocument frdoc;
...
// Ein DocumentProcessingParams-Objekt erstellen
FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
// Die Erkennungssprache angeben
dpp.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage( "Japanese" );
// Schriftensatz auswählen
dpp.SynthesisParamsForDocument.FontSet.SystemFontSet.FontNamesFilter = (int)FREngine.FontNamesFiltersEnum.FNF_Japanese;
// Das Dokument erkennen und exportieren
frdoc.Process( dpp );
frdoc.Export( "D:\\Demo.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );
...

Siehe auch

Arbeiten mit Sprachen