Passer au contenu principal
Recherchez le champ Delivery Address :
  • à droite et en dessous du nom du champ
  • à l’aide de l’élément White Gap pour limiter la zone de recherche par le bas
  • à l’aide d’un élément Paragraph

Créer l’élément de groupe grAddress

Pour définir les propriétés communes à tous ces éléments, créez un élément Group.
  1. Dans l’élément InvoiceHeader, créez un élément de type Group et nommez-le grAddress.
  2. Cliquez sur l’onglet Relations et spécifiez les contraintes de recherche suivantes pour les éléments du groupe :
    • Au-dessus de l’élément kwDeliveryAddress, Offset = -400.
    • À gauche de la limite droite de l’élément kwDeliveryAddress, Offset = -800, limite de référence = Right.
    • À droite de la limite gauche de l’élément kwDeliveryAddress, Offset = -50, limite de référence = Left.
    • En dessous de la limite supérieure de l’élément kwDeliveryAddress, Offset = -20, limite de référence = Top.
Capture d’écran de l’onglet Relations des propriétés de l’élément Group grAddress dans ABBYY FlexiLayout Studio, montrant les contraintes d’Offset et de limite de référence qui positionnent le groupe par rapport à l’élément kwDeliveryAddress.

Créez l’élément White Gap wgAddressAbove

Pour limiter par le bas la zone de recherche de l’élément DeliveryAddress, spécifiez un White Gap horizontal.
  1. Dans l’élément InvoiceHeader.grAddress, créez un élément de type White Gap et nommez-le wgAddressAbove.
  2. Cliquez sur l’onglet White Gap.
  3. Sous Orientation, sélectionnez Horizontal. Définissez Min height sur 55.
    Lors du choix des valeurs de hauteur et de largeur des espaces blancs, tenez compte de la géométrie (c’est-à-dire des limites et des dimensions) des objets d’image adjacents en mode Résultats de pré-reconnaissance.
  4. Comme vous recherchez un espace blanc à l’intérieur d’un paragraphe, sous Search among objects of type, sélectionnez uniquement Text.
  5. Sous Rubbish, spécifiez les valeurs suivantes :
    • Lower threshold limit – 20.
    • Upper threshold limit – 80.
    • Threshold coefficient (%) – 10.
    Capture d’écran de l’onglet White Gap des propriétés de l’élément wgAddressAbove dans ABBYY FlexiLayout Studio, montrant l’orientation horizontale, la hauteur minimale et les valeurs de seuil Rubbish pour l’espace blanc.
    Les valeurs des propriétés Lower threshold limit, Upper threshold limit et Threshold coefficient (%) ne peuvent être déterminées que par tâtonnements. Commencez par les valeurs par défaut. Si elles ne fonctionnent pas, modifiez-les jusqu’à ce que l’espace blanc soit détecté sur toutes les images de test.
  6. Ne spécifiez aucune contrainte de recherche supplémentaire et conservez les valeurs par défaut pour les autres options.
  7. Cliquez sur l’onglet Relations.
  8. Puisque l’espace blanc ne peut se trouver qu’au-dessous des mots-clés de kwDeliveryAddress, spécifiez les contraintes de recherche suivantes :
    • Sous l’élément kwDeliveryAddress, Offset = 20 Offset est nécessaire pour éviter que le programme trouve des espaces blancs dans d’autres zones de l’image, par exemple entre le nom du champ et le texte. Cliquez sur l’onglet Advanced.
  9. Comme le champ Delivery Address n’est pas présent sur toutes les images, mais que lorsqu’il apparaît, il est toujours accompagné de son nom, spécifiez la condition supplémentaire suivante dans le champ Advanced pre-search relations : recherchez l’objet d’image uniquement si l’élément kwDeliveryAddress est détecté. Dans le langage FlexiLayout, cette condition peut s’écrire comme suit :
    If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind;
    
  10. Associez le FlexiLayout pour vérifier si l’élément wgAddressAbove est détecté sur toutes les images.
  11. Puisque le programme trouve parfois plusieurs espaces blancs dans la zone de recherche spécifiée et ne sélectionne pas toujours le bon, imposez des contraintes de recherche supplémentaires. Si vous examinez les images, vous remarquerez que l’espace blanc recherché est celui qui se situe le plus haut dans la zone de recherche donnée. Par conséquent, dans le champ Advanced pre-search relations, spécifiez la condition supplémentaire suivante : recherchez l’objet d’image le plus proche de la limite supérieure de la première page. Dans le langage FlexiLayout, cette condition peut s’écrire comme suit :
    NearestY: Page(1).RectGlobal.Top;
    
  12. Excluez temporairement l’élément InvoiceFooter et associez le FlexiLayout.

Créez l’élément Paragraph DeliveryAddress

  1. Dans l’élément InvoiceHeader.grAddress, créez un élément de type Paragraph et nommez-le DeliveryAddress.
  2. Cliquez sur l’onglet Relations.
  3. Comme DeliveryAddress ne peut se trouver qu’au-dessus du White Gap wgAddressAbove, spécifiez la contrainte de recherche suivante :
    • au-dessus de l’élément wgAddressAbove, Offset = 0.
  4. Comme la zone de recherche de l’élément DeliveryAddress a déjà été définie au niveau du groupe InvoiceHeader.grAddress, il n’est pas nécessaire de la redéfinir ici.
  5. Cliquez sur l’onglet Advanced.
  6. Comme le nom du champ DeliveryAddress se trouve également dans la zone de recherche, excluez-le afin de n’obtenir que la valeur de DeliveryAddress. En outre, la zone de recherche contient aussi des Separator et du bruit, qu’il est préférable d’exclure également. Pour cette raison, vous ne pouvez pas simplement exclure la région de l’élément kwDeliveryAddress. Il est plus approprié de prendre la région de l’élément kwDeliveryAddress, de l’agrandir pour qu’elle englobe tout le bruit, puis d’exclure le rectangle obtenu. Pour ce faire, spécifiez les contraintes de recherche suivantes dans le champ relations avancées de pré-recherche :
    If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind;
    Else
    // Dessine un rectangle autour du nom du champ (avec un certain décalage pour les limites)
    { Let Left = InvoiceHeader.kwDeliveryAddress.Rect.Left - 100dt;
    Let Top = InvoiceHeader.kwDeliveryAddress.Rect.Top - 100dt;
    Let Right = InvoiceHeader.kwDeliveryAddress.Rect.Right + 20dt;
    Let Bottom = InvoiceHeader.kwDeliveryAddress.Rect.Bottom;
    // Exclut le rectangle obtenu de la zone de recherche du champ
    ExcludeRect (Left, Top, Right, Bottom);
    }
    
  7. Excluez temporairement l’élément InvoiceFooter et faites correspondre le FlexiLayout.
  8. Définissez l’emplacement du bloc DeliveryAddress comme la région rectangulaire de l’élément DeliveryAddress détecté, simplifiée pour un affichage plus clair et étendue de 5 points verticalement et horizontalement. Pour ce faire, sélectionnez l’option Expression et saisissez l’expression suivante :
    Rect outputRect;
    OutputRegion = InvoiceHeader.grAddress.DeliveryAddress.SimplifiedRegion;
    IsNull = InvoiceHeader.grAddress.DeliveryAddress.IsNull;
    OutputRegion.Inflate (5dt, 5dt);