Passer au contenu principal
Jusqu’à présent, nous avons décrit les champs Numéro de facture, Date de la facture et DeliveryAddress. Voyons maintenant dans quel ordre les autres éléments doivent être détectés. L’analyse de la disposition des champs sur les images de test montre que, pour détecter le champ pays, nous pouvons utiliser le nom de ce champ et un élément de type Character String. En revanche, pour détecter les champs quantité totale et montant total, nous devrons utiliser non seulement le nom, commun aux deux champs, mais aussi des éléments supplémentaires. À cette fin, nous pouvons utiliser les noms des colonnes correspondantes du tableau. Nous devons également préparer la recherche du champ tableau de facture, qui doit être détecté au moyen d’un élément de type Tableau.
  1. Nous décrivons l’en-tête du tableau. Il existe deux façons de détecter les noms de colonnes.
    • La première consiste à spécifier un ou plusieurs mots-clés dans la boîte de dialogue Propriétés de la colonne (la boîte de dialogue Propriétés de l’onglet Élément de tableau → Colonnes). Cette méthode est rapide, mais peu flexible.
    • La seconde consiste à utiliser un élément détecté précédemment comme élément de référence afin de trouver l’emplacement du nom de la colonne. Cette méthode permet de tirer pleinement parti des paramètres supplémentaires disponibles pour les éléments. L’analyse des résultats de pré-reconnaissance montre que la qualité de reconnaissance est suffisamment bonne pour utiliser la première méthode (la seule difficulté serait le nom très court de la colonne quantité — 20 % d’erreurs sur un mot-clé de trois lettres comme « Qty » signifie en pratique qu’aucune erreur n’est permise). Nous utiliserons la première méthode pour détecter les deux premières colonnes, Reference et Designation, et nous pourrons utiliser les éléments déjà décrits pour détecter les noms des autres colonnes : quantité, prix unitaire et Total (puisque nous devons de toute façon créer ces éléments pour détecter les champs TotalQuantity et TotalAmount).
  2. Nous décrivons le pied du tableau. Lui aussi peut être décrit soit à l’aide de mots-clés, soit à l’aide d’un élément auxiliaire. L’analyse des mots-clés dans le pied de tableau montre que, sur certaines images, ces mots-clés apparaissent également dans la première ligne du tableau. Nous devons donc utiliser un élément auxiliaire afin de pouvoir restreindre la zone de recherche.
  3. Nous décrivons la zone de recherche du tableau. Après avoir décrit l’en-tête et le pied de tableau, nous devons décrire la limite droite du tableau (il n’est pas nécessaire de décrire la limite gauche, puisqu’il n’y a pas d’autres données dans cette partie de l’image). Comme nous ne pouvons pas utiliser le contexte pour distinguer les chiffres de la colonne Total de ceux de la colonne Sales, nous devrons adopter une autre approche. Nous pouvons utiliser le nom de la dernière colonne, Sales, pour restreindre la zone de recherche du tableau sur la droite.
Les éléments et l’ordre dans lequel ils doivent être détectés sont choisis par tâtonnements et peuvent être modifiés lors de l’ajustement du FlexiLayout.
Avant de décrire les champs restants, nous allons décrire les éléments auxiliaires.
  1. L’analyse des interdépendances entre les éléments montre que nous devons d’abord détecter les noms des colonnes Quantité, Prix unitaire, Total et Ventes.
  2. L’en-tête du tableau commence par un séparateur horizontal entre les noms des colonnes et les champs Numéro de facture, Date de la facture et Adresse de livraison. Ce séparateur nous aidera à restreindre les zones de recherche des noms de colonnes.
    • À cette fin, créez un élément de type Separator et nommez-le hsTableHeaderTop (pour des instructions détaillées, voir Step 14). Nous rechercherons les noms des colonnes dans leur ordre naturel.
    • Créez un élément de type Group et nommez-le TableHeader (pour des instructions détaillées, voir Step 15). Cet élément doit inclure :
      • L’élément kwQuantity de type Static Text, qui correspondra au nom de la colonne Quantité du tableau InvoiceTable (pour des instructions détaillées, voir Step 16) ;
      • L’élément kwUnitPrice de type Static Text, qui correspondra au nom de la colonne Prix unitaire du tableau InvoiceTable (pour des instructions détaillées, voir Step 17) ;
      • L’élément kwTotal de type Static Text, qui correspondra au nom de la colonne Total du tableau InvoiceTable (pour des instructions détaillées, voir Step 18) ;
      • L’élément kwSales de type Static Text, qui correspondra au nom de la colonne Ventes du tableau InvoiceTable (pour des instructions détaillées, voir Step 19).
  3. Poursuivons avec la description de la partie inférieure du document. Les champs qui nous intéressent sont les intitulés des champs Quantité totale et Montant total (ce dernier servant de limite inférieure du tableau), ainsi que toute autre légende pouvant aider à localiser la limite inférieure du tableau. Nous décrirons également l’élément de nom et l’élément source du champ Pays dans ce groupe logique.
  4. Créez un élément Group et nommez-le Footer. Cet élément doit inclure :
    • L’élément kwFooter de type Static Text, qui correspondra au pied du tableau tableau de facture (pour des instructions détaillées, voir Step 21) ;
    • L’élément kwTotal de type Static Text, qui correspondra au nom des champs Quantité totale et Montant total (pour des instructions détaillées, voir Step 22) ;
    • L’élément kwOrigin de type Static Text, qui correspondra au nom du champ Pays (pour des instructions détaillées, voir Step 23) ;
    • L’élément Country de type Character String, qui correspondra au champ Pays (pour des instructions détaillées, voir Step 24).
Maintenant que tous les préparatifs ont été effectués et que l’ordre de création des éléments supplémentaires a été décrit, nous pouvons commencer à rechercher les champs restants. En nous appuyant sur les noms des colonnes et sur le Footer détectés précédemment, nous décrirons les champs restants de Quantité totale, de Montant total et du tableau de facture.
  1. À cet effet, créez deux éléments de type Character String et nommez-les TotalQuantity et TotalAmount. Ces éléments correspondront respectivement aux champs Quantité totale et Montant total (pour des instructions détaillées, voir Étape 25).
  2. Créez un élément de type Tableau et nommez-le InvoiceTable. Cet élément décrit le champ Table de facture (pour des instructions détaillées, voir Étape 26).