Les exemples C# s’appliquent uniquement à FRE for Windows.
Détection des coches sur l’image
Code C#
Code C#
- Reconnaissance d’un groupe de coches
- Reconnaissance d’une seule coche
- Apprentissage de la reconnaissance de coches d’un type personnalisé
Reconnaissance d’un groupe de coches
- définir correctement le type de coche, car les coches de type CMT_Circle et CMT_Square ont un contour noir, dont il faut tenir compte lors du calcul du pourcentage ;
- spécifier avec précision la région de la coche, car le pourcentage de noir est calculé sur l’ensemble de la région, et si celle-ci inclut des zones non pertinentes, l’estimation peut être moins fiable.
- Créez un objet FRDocument à partir d’une image contenant un groupe de coches. Par exemple, vous pouvez utiliser la méthode CreateFRDocumentFromImage de l’objet Engine.
- Récupérez la page contenant l’image des coches dans la collection de pages du document (IFRDocument::Pages) — utilisez les propriétés et les méthodes de la collection FRPages.
- Récupérez l’objet Layout correspondant à cette page via la propriété IFRPage::Layout.
- Pour chaque groupe de coches :
- Créez un objet Region à l’aide de la méthode IEngine::CreateRegion, puis ajoutez-y des rectangles à l’aide de la méthode IRegion::AddRect.
- Créez un objet Block de type groupe de coches et ajoutez-le à la collection des blocs de mise en page (ILayout::Blocks) à l’aide de la méthode ILayoutBlocks::AddNew (utilisez la constante BT_CheckmarkGroup et l’objet Region créé comme paramètres d’entrée. La méthode exige également l’index du bloc dans la mise en page comme troisième paramètre d’entrée).
- Récupérez l’objet CheckmarkGroup (utilisez la méthode IBlock::GetAsCheckmarkGroup).
- Pour chaque coche du groupe :
- Créez l’objet Region à l’aide de la méthode IEngine::CreateRegion et ajoutez-y des rectangles à l’aide de la méthode IRegion::AddRect.
- Créez un nouveau bloc de coche dans le groupe à l’aide de la méthode ICheckmarkGroup::AddNew (utilisez l’objet Region créé comme paramètre d’entrée).
- Récupérez l’objet CheckmarkBlock (à l’aide de la méthode IBlock::GetAsCheckmarkBlock) et définissez les paramètres requis (CheckmarkType, IsCorrectionEnabled).
- Définissez les paramètres nécessaires du groupe de coches (MinimumCheckedInGroup, MaximumCheckedInGroup).
- Pour reconnaître les coches, utilisez l’une des méthodes de reconnaissance disponibles, par exemple IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages, etc.
Code C#
Code C#
Reconnaissance d’une seule coche
- Créez un objet FRDocument à partir d’une image contenant une coche. Par exemple, vous pouvez utiliser la méthode CreateFRDocumentFromImage de l’objet Engine.
- Récupérez la page contenant l’image des coches dans la collection de pages du document (IFRDocument::Pages) — utilisez les propriétés et méthodes de la collection FRPages.
- Récupérez l’objet Layout correspondant à cette page via la propriété IFRPage::Layout.
- Créez l’objet Region à l’aide de la méthode IEngine::CreateRegion, puis ajoutez-y des rectangles à l’aide de la méthode IRegion::AddRect.
- Créez un objet Block de type coche et ajoutez-le à la collection de blocs de mise en page (ILayout::Blocks) à l’aide de la méthode ILayoutBlocks::AddNew (utilisez la constante BT_Checkmark et l’objet Region créé comme paramètres d’entrée).
- Récupérez l’objet CheckmarkBlock (à l’aide de la méthode IBlock::GetAsCheckmarkBlock) et définissez les paramètres requis (CheckmarkType, IsCorrectionEnabled).
- Pour reconnaître la coche, utilisez l’une des méthodes de reconnaissance disponibles, telles que IFRPage::Recognize, IFRPage::RecognizeBlocks, IFRDocument::Recognize, IFRDocument::RecognizePages, etc.
Code C#
Code C#
Apprendre à reconnaître des coches de type personnalisé
- Recherchez une image contenant des coches non marquées du type que vous souhaitez reconnaître. Il peut s’agir de l’image d’un formulaire vierge contenant ces coches.
- Créez un objet FRDocument à partir de cette image. Par exemple, vous pouvez utiliser la méthode CreateFRDocumentFromImage de l’objet Engine.
- Récupérez la page contenant l’image des coches à partir de la collection de pages du document (IFRDocument::Pages) à l’aide des propriétés et méthodes de la collection FRPages.
- Récupérez l’objet Layout correspondant à cette page via la propriété IFRPage::Layout.
- Spécifiez la région et le type de chaque bloc de coche sur la page :
- Créez l’objet Region à l’aide de la méthode IEngine::CreateRegion, puis ajoutez-y les rectangles correspondant à la région de la coche à l’aide de la méthode IRegion::AddRect.
- Créez un objet Block de type coche et ajoutez-le à la collection de blocs de mise en page (ILayout::Blocks) à l’aide de la méthode ILayoutBlocks::AddNew (utilisez la constante BT_Checkmark et l’objet Region créé comme paramètres d’entrée).
- Récupérez l’objet CheckmarkBlock (à l’aide de la méthode IBlock::GetAsCheckmarkBlock) et définissez sa propriété CheckmarkType sur CMT_Custom.
- Entraînez FineReader Engine à reconnaître ce type de coches : appelez la méthode LearnCheckmarks de l’objet FRPage.
- Ainsi, la propriété TrainingData de l’objet CheckmarkBlock que vous avez créé avant l’entraînement contiendra des informations sur le type de coche personnalisé. Ces informations pourront alors être utilisées pour reconnaître d’autres coches du même type. Vous pouvez les enregistrer dans un fichier ou en mémoire à l’aide de la méthode SaveToMemory (Windows uniquement) ou de la méthode SaveToFile de l’objet CheckmarkTrainingData.
- Créez des objets FRDocument à partir des images contenant des coches de ce type, spécifiez des blocs de coches sur les pages et définissez le type de coche sur CMT_Custom. La procédure est décrite aux étapes 2 à 5.
- Initialisez la propriété TrainingData de chaque objet CheckmarkBlock avec l’objet CheckmarkTrainingData obtenu lors de l’entraînement. Par exemple, vous pouvez copier l’objet à l’aide de la méthode CopyFrom ou le charger à partir d’un fichier ou depuis la mémoire à l’aide de la méthode LoadFromMemory (Windows uniquement) ou de la méthode LoadFromFile de l’objet CheckmarkTrainingData.
- Appelez l’une des méthodes de reconnaissance de l’objet FRDocument ou FRPage, par exemple la méthode IFRDocument::Recognize.
- Les propriétés BlackThreshold et SuspiciousDistance de l’objet CheckmarkBlock vous permettent d’affiner davantage les paramètres si vous n’êtes pas satisfait des résultats de reconnaissance. Après l’entraînement, les valeurs par défaut de ces propriétés sont remplacées par des valeurs qui devraient fonctionner dans la plupart des cas. Lorsque vous chargez l’objet CheckmarkTrainingData pour un bloc de coches, les valeurs de ces propriétés sont également chargées. Vous pouvez modifier les valeurs de ces propriétés et relancer la reconnaissance des coches (en répétant l’étape 10), puis, lorsque vous avez trouvé la meilleure configuration, enregistrer de nouveau l’objet CheckmarkTrainingData et utiliser le nouvel objet pour reconnaître les coches de votre type personnalisé.
