Passer au contenu principal
Les langues chinoise, japonaise et coréenne sont souvent regroupées sous l’abréviation « CJK ». Elles présentent plusieurs caractéristiques communes, comme l’utilisation de caractères chinois et d’une écriture aussi bien verticale qu’horizontale. Cette section présente certaines particularités de la reconnaissance et de l’exportation de textes en langues CJK avec ABBYY FineReader Engine 12. Tout d’abord, pour reconnaître les langues CJK, vous devez disposer d’une licence ABBYY FineReader Engine prenant en charge les modules linguistiques chinois, japonais et coréen. Pour plus d’informations sur les licences et les modules, consultez la section Licence.

Langues de reconnaissance

ABBYY FineReader Engine prend en charge les langues de reconnaissance prédéfinies suivantes pour les textes CJK :
  • “ChinesePRC”
  • “ChineseTaiwan”
  • “Japanese”
  • “JapaneseModern”
  • “Korean”
  • “KoreanHangul”
Pour sélectionner l’une de ces langues prédéfinies, vous pouvez utiliser la méthode SetPredefinedTextLanguage de l’objet RecognizerParams.
La langue de reconnaissance Japanese (Modern) est une langue composite qui comprend le japonais, l’anglais et quatre lettres de l’alphabet grec. Cette langue est destinée à la reconnaissance de textes japonais contemporains, qui peuvent inclure certains caractères kanji, des signes kana (katakana ou hiragana), ainsi que certaines lettres latines et/ou grecques (dans des rapports, des articles de recherche, etc.). Pour obtenir les meilleurs résultats de reconnaissance pour tous les documents rédigés principalement en japonais, nous recommandons vivement d’utiliser la langue de reconnaissance Japanese (Modern) seule, sans la combiner avec la langue anglaise.
ABBYY FineReader Engine prend en charge des combinaisons de langues de reconnaissance composées de plusieurs de ces langues, ainsi que des combinaisons de langues CJK et d’autres langues.

Polices

Pour éviter que les caractères asiatiques ne soient altérés, vous devez spécifier, pour la synthèse du document, une police contenant le jeu de caractères requis, par exemple Arial Unicode MS ou SimSun. Vous pouvez définir la police à l’aide de la propriété ISynthesisParamsForDocument::FontSet. Par défaut, la propriété SystemFontSet de l’objet FontSet est configurée pour sélectionner, parmi les polices système, celles qui correspondent aux langues de reconnaissance du document.

Export

Vous pouvez exporter les langues CJK au format PDF/A en mode « texte sous l’image » (IPDFExportParams::TextExportMode = PEM_ImageOnText) afin de garantir que le document conserve la même apparence.

Procédure de reconnaissance et d’exportation

Pour traiter des documents rédigés dans des langues CJK, procédez comme suit :
  1. Créez un objet DocumentProcessingParams à l’aide de la méthode CreateDocumentProcessingParams de l’objet Engine.
  2. Spécifiez la langue de reconnaissance. Utilisez la méthode SetPredefinedTextLanguage du sous-objet RecognizerParams du sous-objet PageProcessingParams.
  3. Sélectionnez le jeu de polices adapté aux langues CJK. Utilisez la propriété ISynthesisParamsForDocument::FontSet du sous-objet SynthesisParamsForDocument.
  4. Passez l’objet DocumentProcessingParams configuré à la méthode Process de l’objet FRDocument. Si vous utilisez des méthodes de l’objet Engine, vous devez appeler l’une des méthodes de synthèse de l’objet Engine avec l’objet SynthesisParamsForDocument configuré comme paramètre avant l’exportation.
  5. Exportez le texte reconnu à l’aide de la méthode Export de l’objet FRDocument. Si vous exportez au format PDF ou PDF/A, spécifiez le mode d’exportation requis.
N’utilisez pas l’objet Word ni ses propriétés, ni les propriétés IsWordFirst, IsWordLeftmost de l’objet CharParams pour les textes rédigés dans des langues CJK. La technologie de traitement divise les lignes de texte en « mots » uniquement à des fins internes, et ces groupes de symboles ne correspondent pas aux véritables mots.
// Nous supposons que Engine a déjà été créé
// et que le document est chargé
IEngine* Engine;
IFRDocument* frDocument;
HRESULT res; // utilisez cette variable pour vérifier si l'appel de la méthode a réussi
...
// Créer un objet DocumentProcessingParams
IDocumentProcessingParams* params = 0;
IPageProcessingParams* pageParams = 0;
IRecognizerParams* recParams = 0;
res = Engine->CreateDocumentProcessingParams( ¶ms );
res = params->get_PageProcessingParams( &pageParams );
res = pageParams->get_RecognizerParams( &recParams );
 
// Spécifier la langue de reconnaissance
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 );
 
// Sélectionner le jeu de polices
res = systemSet->put_FontNamesFilter( FNF_Japanese );
// Reconnaître et exporter le document
frDocument->Process( params );
frDocument->Export( L"/opt/Demo.rtf", FEF_RTF, 0 );
...
FREngine::IEnginePtr Engine;
FREngine::IFRDocumentPtr frDocument;
...
// Créer un objet DocumentProcessingParams
FREngine::IDocumentProcessingParamsPtr pDocumentProcessingParams = Engine->CreateDocumentProcessingParams();
// Spécifier la langue de reconnaissance
pDocumentProcessingParams->PageProcessingParams->RecognizerParams->SetPredefinedTextLanguage( "Japanese" );
// Sélectionner le jeu de polices
pDocumentProcessingParams->SynthesisParamsForDocument->FontSet->SystemFontSet->FontNamesFilter = FREngine::FNF_Japanese;
// Reconnaître et exporter le document
frDocument->Process( pDocumentProcessingParams );
frDocument->Export( L"D:\\Demo.rtf", FREngine::FEF_RTF, 0 );
...
FREngine.IEngine engine;
FREngine.IFRDocument frdoc;
...
// Créer un objet DocumentProcessingParams
FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
// Spécifier la langue de reconnaissance
dpp.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage( "Japanese" );
// Sélectionner le jeu de polices
dpp.SynthesisParamsForDocument.FontSet.SystemFontSet.FontNamesFilter = (int)FREngine.FontNamesFiltersEnum.FNF_Japanese;
// Reconnaître et exporter le document
frdoc.Process( dpp );
frdoc.Export( "D:\\Demo.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );
...

Voir aussi

Utilisation des langues