Reconnaissance du chinois, du japonais et du coréen
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.
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.
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.
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.
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.
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.
Code C++
// 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 DocumentProcessingParamsIDocumentProcessingParams* 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 reconnaissanceres = 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 policesres = systemSet->put_FontNamesFilter( FNF_Japanese );// Reconnaître et exporter le documentfrDocument->Process( params );frDocument->Export( L"/opt/Demo.rtf", FEF_RTF, 0 );...
Code C++ (COM)
FREngine::IEnginePtr Engine;FREngine::IFRDocumentPtr frDocument;...// Créer un objet DocumentProcessingParamsFREngine::IDocumentProcessingParamsPtr pDocumentProcessingParams = Engine->CreateDocumentProcessingParams();// Spécifier la langue de reconnaissancepDocumentProcessingParams->PageProcessingParams->RecognizerParams->SetPredefinedTextLanguage( "Japanese" );// Sélectionner le jeu de policespDocumentProcessingParams->SynthesisParamsForDocument->FontSet->SystemFontSet->FontNamesFilter = FREngine::FNF_Japanese;// Reconnaître et exporter le documentfrDocument->Process( pDocumentProcessingParams );frDocument->Export( L"D:\\Demo.rtf", FREngine::FEF_RTF, 0 );...
Code C#
FREngine.IEngine engine;FREngine.IFRDocument frdoc;...// Créer un objet DocumentProcessingParamsFREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();// Spécifier la langue de reconnaissancedpp.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage( "Japanese" );// Sélectionner le jeu de policesdpp.SynthesisParamsForDocument.FontSet.SystemFontSet.FontNamesFilter = (int)FREngine.FontNamesFiltersEnum.FNF_Japanese;// Reconnaître et exporter le documentfrdoc.Process( dpp );frdoc.Export( "D:\\Demo.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );...