- à 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
- Dans l’élément InvoiceHeader, créez un élément de type Group et nommez-le grAddress.
- 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, Reference boundary = Right.
- À droite de la limite gauche de l’élément kwDeliveryAddress, Offset = -50, Reference boundary = Left.
- En dessous de la limite supérieure de l’élément kwDeliveryAddress, Offset = -20, Reference boundary = Top.
Afficher...
Afficher...
- Dans l’élément InvoiceHeader.grAddress, créez un élément de type White Gap et nommez-le wgAddressAbove.
- Cliquez sur l’onglet White Gap.
- Sous Orientation, sélectionnez Horizontal. Définissez Min height sur 55. Remarque. Lors du choix des valeurs de hauteur/largeur des White Gap, il peut être utile de tenir compte de la géométrie (c’est-à-dire des limites et des tailles) des objets d’image adjacents en mode des résultats de pré-reconnaissance.
- Nous allons rechercher un White Gap à l’intérieur d’un paragraphe ; sous Search among objects of type, sélectionnez donc uniquement Text.
- Sous Rubbish, spécifiez les valeurs suivantes :
- Lower threshold limit – 20;
- Upper threshold limit – 80;
- Threshold coefficient (%) – 10.
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. Nous vous recommandons de commencer par les valeurs par défaut. Si celles-ci ne fonctionnent pas, modifiez-les jusqu’à ce que le White Gap soit détecté sur toutes les images de test.
- Ne spécifiez aucune contrainte de recherche supplémentaire et conservez les valeurs par défaut pour les autres options.
- Cliquez sur l’onglet Relations.
- Comme le White Gap ne peut se trouver qu’en dessous des mots-clés du nom kwDeliveryAddress, spécifiez les contraintes de recherche suivantes :
- En dessous de l’élément kwDeliveryAddress, Offset = 20 Offset est nécessaire afin d’empêcher le programme de trouver des White Gap dans d’autres zones de l’image, par exemple entre le nom du champ et le texte. Cliquez sur l’onglet Advanced.
- 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 Relations avancées avant recherche :Rechercher 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;
- Associez le FlexiLayout pour vérifier si l’élément wgAddressAbove est détecté sur toutes les images.
- Comme le programme trouve parfois plusieurs White Gap dans la zone de recherche spécifiée et ne peut pas toujours sélectionner le bon, nous devons imposer des contraintes de recherche supplémentaires. Si vous examinez les images, vous remarquerez que le White Gap qui nous intéresse est l’espace le plus haut dans la zone de recherche donnée. Par conséquent, dans le champ Relations avancées avant recherche, spécifiez la condition supplémentaire suivante :Rechercher 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;
- Excluez temporairement l’élément InvoiceFooter et associez le FlexiLayout.
- Dans l’élément InvoiceHeader.grAddress, créez un élément de type Paragraph et nommez-le DeliveryAddress.
- Cliquez sur l’onglet Relations.
- 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.
- 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 spécifier à nouveau ici.
- Cliquez sur l’onglet Advanced.
- Comme le nom du champ DeliveryAddress se trouve lui aussi dans la zone de recherche, il faut l’exclure pour n’obtenir que la valeur de DeliveryAddress. De plus, la zone de recherche contient également des Separator et du bruit, qu’il est préférable d’exclure eux aussi. Pour les raisons ci-dessus, nous ne pouvons 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 afin 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 avant recherche : If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind; Else // Dessine un rectangle autour du nom du champ (avec un certain décalage par rapport aux 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); }
- Excluez temporairement l’élément InvoiceFooter et associez le FlexiLayout.
- Spécifiez l’emplacement du bloc DeliveryAddress comme la région rectangulaire de l’élément DeliveryAddress détecté, simplifiée pour une meilleure lisibilité et étendue de 5 points à la verticale et à l’horizontale. 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);
