Passer au contenu principal
ABBYY FineReader Engine ne prend actuellement pas en charge l’ICR arabe. Il est toutefois possible de reconnaître spécifiquement les chiffres arabes, et cet article décrit les étapes nécessaires. En plus de la procédure décrite dans Reconnaissance de textes manuscrits, pour reconnaître des chiffres arabes, vous devez créer une langue personnalisée dont l’alphabet se compose uniquement des 10 chiffres, puis la définir comme langue de reconnaissance pour chaque bloc contenant des chiffres. Pour reconnaître des chiffres arabes écrits à la main, procédez comme suit :
  1. Créez une nouvelle langue de texte à l’aide de la méthode CreateTextLanguage de l’objet LanguageDatabase.
  2. À l’aide de la propriété LetterSet de l’objet BaseLanguage au sein de l’objet TextLanguage, définissez l’alphabet de la langue pour qu’il contienne les caractères suivants : ٠١٢٣٤٥٦٧٨٩.
  3. Pour chaque bloc contenant des chiffres arabes écrits à la main, spécifiez les paramètres de reconnaissance via la propriété ITextBlock::RecognizerParams :
    • Définissez la propriété TextLanguage de l’objet RecognizerParams sur la langue créée à l’étape précédente.
    • Définissez la propriété TextTypes de l’objet RecognizerParams sur TT_Handwritten.
    • Si les chiffres sont entourés d’un cadre, d’une case, etc., configurez le type de marquage autour des caractères dans la propriété FieldMarkingType de l’objet RecognizerParams. Si chaque chiffre est écrit dans une cellule distincte, utilisez également la propriété CellsCount pour définir le nombre de cellules de caractères du bloc.

Exemples pour Windows

// Objet global ABBYY FineReader Engine
FREngine::IEnginePtr Engine;
...
// Ouvrir un fichier image
...
// Créer une langue personnalisée
FREngine::ILanguageDatabasePtr pLanguageDatabase = Engine->CreateLanguageDatabase();
FREngine::ITextLanguagePtr pTextLanguage = pLanguageDatabase->CreateTextLanguage();
FREngine::IBaseLanguagesPtr pBaseLanguages = pTextLanguage->BaseLanguages;
FREngine::IBaseLanguagePtr pBaseLanguage = pBaseLanguages->AddNew();
// Définir l'alphabet
pBaseLanguage->put_LetterSet( FREngine::BLLS_Alphabet, L"٠١٢٣٤٥٦٧٨٩" );
// Obtenir l'objet Layout de la page
FREngine::ILayoutPtr layout = frPage->get_Layout();
// Définir la région du bloc
FREngine::IRegionPtr pRegion = Engine->CreateRegion();
pRegion->AddRect( 491, 314, 2268, 404 );
// Créer un bloc
FREngine::IBlockPtr newBlock = layout->Blocks->AddNew( FREngine::BT_Text, pRegion, 0 );
FREngine::ITextBlockPtr textBlock = newBlock->GetAsTextBlock();
// Définir la langue personnalisée
textBlock->RecognizerParams->TextLanguage = pTextLanguage;
// Indiquer le type de texte
textBlock->RecognizerParams->TextTypes = FREngine::TT_Handwritten;
// Indiquer le type de marquage autour des lettres
textBlock->RecognizerParams->FieldMarkingType = FREngine::FMT_SimpleText;
// Reconnaissance et exportation
...
// Objet global ABBYY FineReader Engine
FREngine.IEngine engine;
...
// Ouvrir un fichier image
...
// Créer une langue personnalisée
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
FREngine.ITextLanguage textLanguage = languageDatabase.CreateTextLanguage();
FREngine.IBaseLanguages baseLanguages = textLanguage.BaseLanguages;
FREngine.IBaseLanguage baseLanguage = baseLanguages.AddNew();
// Définir l'alphabet
baseLanguage.set_LetterSet( FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "٠١٢٣٤٥٦٧٨٩" );
// Obtenir l'objet Layout de la page
FREngine.ILayout layout = frPage.Layout;
// Définir la région du bloc
FREngine.IRegion region = engine.CreateRegion();
region.AddRect( 491, 314, 2268, 404 );
// Créer un bloc
FREngine.IBlock newBlock = layout.Blocks.AddNew( FREngine.BlockTypeEnum.BT_Text, region, 0 );
FREngine.ITextBlock textBlock = newBlock.GetAsTextBlock();
// Définir la langue personnalisée
textBlock.RecognizerParams.TextLanguage = textLanguage;
// Indiquer le type de texte
textBlock.RecognizerParams.TextTypes = (int)FREngine.TextTypeEnum.TT_Handwritten;
// Indiquer le type de marquage autour des lettres
textBlock.RecognizerParams.FieldMarkingType = FREngine.FieldMarkingTypeEnum.FMT_SimpleText;
// Reconnaissance et exportation
...

Voir aussi

RecognizerParams Reconnaissance de textes manuscrits Utilisation des langues