Saltar al contenido principal
Los idiomas chino, japonés y coreano suelen agruparse bajo la abreviatura “CJK”. Comparten varias características, como el uso de caracteres chinos y la escritura tanto vertical como horizontal. En esta sección se abordan algunas peculiaridades del reconocimiento y la exportación de textos en idiomas CJK con ABBYY FineReader Engine 12. En primer lugar, para reconocer idiomas CJK, debe disponer de una licencia de ABBYY FineReader Engine compatible con los módulos de idioma chino, japonés y coreano. Para obtener más información sobre las licencias y los módulos, consulte la sección Licencias.

Idiomas de reconocimiento

ABBYY FineReader Engine admite los siguientes idiomas de reconocimiento predefinidos para textos CJK:
  • “ChinesePRC”
  • “ChineseTaiwan”
  • “Japanese”
  • “JapaneseModern”
  • “Korean”
  • “KoreanHangul”
Para seleccionar uno de estos idiomas predefinidos, puede usar el método SetPredefinedTextLanguage del objeto RecognizerParams.
El idioma de reconocimiento Japanese (Modern) es un idioma compuesto por japonés, inglés y cuatro letras del alfabeto griego. Este idioma está pensado para reconocer textos japoneses contemporáneos, que pueden incluir algunos caracteres kanji, símbolos kana (katakana o hiragana) y algunas letras latinas y/o griegas (como informes, artículos de investigación, etc.). Para obtener los mejores resultados de reconocimiento en todos los documentos redactados principalmente en japonés, recomendamos encarecidamente usar el idioma de reconocimiento Japanese (Modern) como idioma independiente, sin combinarlo con el idioma inglés.
ABBYY FineReader Engine admite combinaciones de idiomas de reconocimiento formadas por varios de estos idiomas, o por combinaciones de idiomas CJK y otros idiomas.

Fuentes

Para evitar que los caracteres asiáticos aparezcan corruptos, debe especificar para la síntesis del documento una fuente que incluya el conjunto de caracteres necesario, por ejemplo, Arial Unicode MS o SimSun. Puede configurar la fuente mediante la propiedad ISynthesisParamsForDocument::FontSet. De forma predeterminada, la propiedad SystemFontSet del objeto FontSet está configurada para seleccionar las fuentes del sistema que correspondan a los idiomas de reconocimiento del documento.

Exportación

Puede exportar idiomas CJK a PDF/A en el modo «texto bajo la imagen» (IPDFExportParams::TextExportMode = PEM_ImageOnText) para garantizar que el documento se vea igual.

Procedimiento de reconocimiento y exportación

Para procesar documentos escritos en idiomas CJK, haga lo siguiente:
  1. Cree un objeto DocumentProcessingParams mediante el método CreateDocumentProcessingParams del objeto Engine.
  2. Especifique el idioma de reconocimiento. Use el método SetPredefinedTextLanguage del subobjeto RecognizerParams del subobjeto PageProcessingParams.
  3. Seleccione el conjunto de fuentes adecuado para los idiomas CJK. Use la propiedad ISynthesisParamsForDocument::FontSet del subobjeto SynthesisParamsForDocument.
  4. Pase el objeto DocumentProcessingParams configurado al método Process del objeto FRDocument. Si usa métodos del objeto Engine, antes de exportar debe llamar a uno de los métodos de síntesis del objeto Engine con el objeto SynthesisParamsForDocument configurado como parámetro.
  5. Exporte el texto reconocido con ayuda del método Export del objeto FRDocument. Si exporta al formato PDF o PDF/A, especifique el modo de exportación requerido.
No utilice el objeto Word ni sus propiedades, ni las propiedades IsWordFirst, IsWordLeftmost del objeto CharParams para textos escritos en idiomas CJK. La tecnología de procesamiento divide las líneas de texto en “palabras” solo con fines internos, y esos grupos de símbolos no coinciden con las palabras reales.
// Suponemos que Engine ya se creó
// y que el documento se cargó
IEngine* Engine;
IFRDocument* frDocument;
HRESULT res; // use esta variable para comprobar si la llamada al método se realizó correctamente
...
// Cree un objeto DocumentProcessingParams
IDocumentProcessingParams* params = 0;
IPageProcessingParams* pageParams = 0;
IRecognizerParams* recParams = 0;
res = Engine->CreateDocumentProcessingParams( ¶ms );
res = params->get_PageProcessingParams( &pageParams );
res = pageParams->get_RecognizerParams( &recParams );
 
// Especifique el idioma de reconocimiento
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 );
 
// Seleccione el conjunto de fuentes
res = systemSet->put_FontNamesFilter( FNF_Japanese );
// Reconozca y exporte el documento
frDocument->Process( params );
frDocument->Export( L"/opt/Demo.rtf", FEF_RTF, 0 );
...
FREngine::IEnginePtr Engine;
FREngine::IFRDocumentPtr frDocument;
...
// Crear un objeto de DocumentProcessingParams
FREngine::IDocumentProcessingParamsPtr pDocumentProcessingParams = Engine->CreateDocumentProcessingParams();
// Especificar el idioma de reconocimiento
pDocumentProcessingParams->PageProcessingParams->RecognizerParams->SetPredefinedTextLanguage( "Japanese" );
// Seleccionar el conjunto de fuentes
pDocumentProcessingParams->SynthesisParamsForDocument->FontSet->SystemFontSet->FontNamesFilter = FREngine::FNF_Japanese;
// Reconocer y exportar el documento
frDocument->Process( pDocumentProcessingParams );
frDocument->Export( L"D:\\Demo.rtf", FREngine::FEF_RTF, 0 );
...
FREngine.IEngine engine;
FREngine.IFRDocument frdoc;
...
// Crear un objeto de DocumentProcessingParams
FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
// Especificar el idioma de reconocimiento
dpp.PageProcessingParams.RecognizerParams.SetPredefinedTextLanguage( "Japanese" );
// Seleccionar el conjunto de fuentes
dpp.SynthesisParamsForDocument.FontSet.SystemFontSet.FontNamesFilter = (int)FREngine.FontNamesFiltersEnum.FNF_Japanese;
// Reconocer y exportar el documento
frdoc.Process( dpp );
frdoc.Export( "D:\\Demo.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );
...

Consulte también

Trabajar con idiomas