Saltar al contenido principal
ABBYY FineReader Engine no admite actualmente el ICR árabe. Sin embargo, sí es posible reconocer específicamente dígitos arábigos, y en este artículo se describen los pasos necesarios. Además del procedimiento descrito en Reconocimiento de texto manuscrito, para reconocer dígitos arábigos debe crear un idioma personalizado con un alfabeto compuesto únicamente por 10 símbolos numéricos y establecerlo como idioma de reconocimiento para cada bloque con dígitos. Por lo tanto, para reconocer dígitos arábigos manuscritos, haga lo siguiente:
  1. Cree un nuevo idioma de texto mediante el método CreateTextLanguage del objeto LanguageDatabase.
  2. Mediante la propiedad LetterSet del objeto BaseLanguage dentro del objeto TextLanguage, establezca un alfabeto de idioma que contenga los siguientes caracteres: ٠١٢٣٤٥٦٧٨٩.
  3. Para cada bloque que contenga dígitos arábigos manuscritos, especifique los parámetros de reconocimiento mediante la propiedad ITextBlock::RecognizerParams:
    • Establezca la propiedad TextLanguage del objeto RecognizerParams con el idioma que creó en el paso anterior.
    • Establezca la propiedad TextTypes del objeto RecognizerParams en TT_Handwritten.
    • Si los dígitos están encerrados en un marco, recuadro, etc., configure el tipo de marca alrededor de los caracteres en la propiedad FieldMarkingType del objeto RecognizerParams. Si cada dígito está escrito en una celda independiente, use también la propiedad CellsCount para configurar el número de celdas de caracteres del bloque.

Ejemplos de Windows

// Objeto global de ABBYY FineReader Engine
FREngine::IEnginePtr Engine;
...
// Abrir un archivo de imagen
...
// Crear un idioma personalizado
FREngine::ILanguageDatabasePtr pLanguageDatabase = Engine->CreateLanguageDatabase();
FREngine::ITextLanguagePtr pTextLanguage = pLanguageDatabase->CreateTextLanguage();
FREngine::IBaseLanguagesPtr pBaseLanguages = pTextLanguage->BaseLanguages;
FREngine::IBaseLanguagePtr pBaseLanguage = pBaseLanguages->AddNew();
// Establecer el alfabeto
pBaseLanguage->put_LetterSet( FREngine::BLLS_Alphabet, L"٠١٢٣٤٥٦٧٨٩" );
// Obtener el objeto Layout de la página
FREngine::ILayoutPtr layout = frPage->get_Layout();
// Establecer la región del bloque
FREngine::IRegionPtr pRegion = Engine->CreateRegion();
pRegion->AddRect( 491, 314, 2268, 404 );
// Crear un bloque
FREngine::IBlockPtr newBlock = layout->Blocks->AddNew( FREngine::BT_Text, pRegion, 0 );
FREngine::ITextBlockPtr textBlock = newBlock->GetAsTextBlock();
// Establecer el idioma personalizado
textBlock->RecognizerParams->TextLanguage = pTextLanguage;
// Especificar el tipo de texto
textBlock->RecognizerParams->TextTypes = FREngine::TT_Handwritten;
// Especificar el tipo de marcado alrededor de las letras
textBlock->RecognizerParams->FieldMarkingType = FREngine::FMT_SimpleText;
// Reconocimiento y exportación
...
// Objeto global de ABBYY FineReader Engine
FREngine.IEngine engine;
...
// Abrir un archivo de imagen
...
// Crear un idioma personalizado
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
FREngine.ITextLanguage textLanguage = languageDatabase.CreateTextLanguage();
FREngine.IBaseLanguages baseLanguages = textLanguage.BaseLanguages;
FREngine.IBaseLanguage baseLanguage = baseLanguages.AddNew();
// Establecer el alfabeto
baseLanguage.set_LetterSet( FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "٠١٢٣٤٥٦٧٨٩" );
// Obtener el objeto Layout de la página
FREngine.ILayout layout = frPage.Layout;
// Establecer la región del bloque
FREngine.IRegion region = engine.CreateRegion();
region.AddRect( 491, 314, 2268, 404 );
// Crear un bloque
FREngine.IBlock newBlock = layout.Blocks.AddNew( FREngine.BlockTypeEnum.BT_Text, region, 0 );
FREngine.ITextBlock textBlock = newBlock.GetAsTextBlock();
// Establecer el idioma personalizado
textBlock.RecognizerParams.TextLanguage = textLanguage;
// Especificar el tipo de texto
textBlock.RecognizerParams.TextTypes = (int)FREngine.TextTypeEnum.TT_Handwritten;
// Especificar el tipo de marcado alrededor de las letras
textBlock.RecognizerParams.FieldMarkingType = FREngine.FieldMarkingTypeEnum.FMT_SimpleText;
// Reconocimiento y exportación
...

Consulte también

RecognizerParams Reconocimiento de texto manuscrito Uso de idiomas