- En-tête du tableau. Comme nous l’avons décidé précédemment, nous spécifierons les noms de colonnes à l’aide d’éléments auxiliaires déjà détectés.
- Pied de page du tableau. Pour spécifier le pied de page, nous avons décidé d’utiliser l’élément Paragraph obligatoire déjà détecté du groupe InvoiceFooter, qui identifie le début de la partie finale. Nous avons défini cet élément comme étant le plus proche du bas du tableau.
- Zone de recherche du tableau. Nous pouvons limiter la zone de recherche à droite en utilisant le nom de la dernière colonne Sales, dont nous n’avons pas besoin à d’autres fins.
- Dans l’arborescence SearchElements, créez un élément de type Table et nommez-le InvoiceTable.
- Cliquez sur l’onglet Columns
- Cliquez sur Select pour sélectionner le bloc InvoiceTable créé précédemment (voir Étape 3) comme bloc à rechercher
- Spécifiez les paramètres de recherche des colonnes du tableau :
- Dans la liste des colonnes, sélectionnez Reference et cliquez sur le bouton Properties…
Pour le nom de cette colonne, nous utiliserons l’élément TableHeader.kwReference détecté précédemment. Pour l’utiliser, sélectionnez Use found element as column name, puis cliquez sur
et sélectionnez TableHeader.kwReference. - Dans la liste des colonnes, sélectionnez Designation et cliquez sur le bouton Properties… Pour le nom de cette colonne, nous utiliserons l’élément TableHeader.kwDesignation détecté précédemment.
- Dans la liste des colonnes, sélectionnez Unit et cliquez sur le bouton Properties… Pour le nom de cette colonne, nous utiliserons l’élément TableHeader.kwUnit détecté précédemment.
- Dans la liste des colonnes, sélectionnez Quantity et cliquez sur le bouton Properties… Pour le nom de cette colonne, nous utiliserons l’élément TableHeader.kwQuantity détecté précédemment.
- Dans la liste des colonnes, sélectionnez UnitPrice et cliquez sur le bouton Properties… Pour le nom de cette colonne, nous utiliserons l’élément TableHeader.kwUnitPrice détecté précédemment.
- Dans la liste des colonnes, sélectionnez Total et cliquez sur le bouton Properties… Pour le nom de cette colonne, nous utiliserons l’élément TableHeader.kwTotal détecté précédemment.
- Dans la liste des colonnes, sélectionnez Reference et cliquez sur le bouton Properties…
Pour le nom de cette colonne, nous utiliserons l’élément TableHeader.kwReference détecté précédemment. Pour l’utiliser, sélectionnez Use found element as column name, puis cliquez sur
- Cliquez sur l’onglet Order.
- Étant donné que les colonnes recherchées peuvent être séparées par d’autres colonnes (par ex. ExtraQtyTag), mais que leur ordre reste fixe (d’abord Designation, puis Unit Price, puis Total), sélectionnez Rules for column order, cliquez sur Add…, puis ajoutez les colonnes dans l’ordre suivant : Designation << Unit Price << Total.
- Cliquez sur l’onglet en-tête. Nous avons besoin de l’en-tête du tableau, mais il n’est pas nécessaire d’imposer des contraintes supplémentaires ; conservez donc les valeurs par défaut.
- Cliquez sur l’onglet pied de page. Nous utiliserons l’élément InvoiceFooter.Paragraph détecté précédemment pour la partie finale du tableau. Sélectionnez l’option Use found element as pied de page, cliquez sur
puis sélectionnez l’élément InvoiceFooter.Paragraph.
- Cliquez sur l’onglet Rows.
- Comme les cellules de certaines colonnes peuvent contenir plusieurs lignes, nous devons spécifier des colonnes principales pour séparer les lignes. Sélectionnez Use master columns to detect rows.
Spécifiez d’abord la colonne Total, car cette colonne contient toujours des données et, pour chaque enregistrement du tableau, elle comporte une seule ligne de données. Si cette colonne n’est pas détectée dans l’image, spécifiez les colonnes Unit Price et Quantity comme option suivante pour la séparation des lignes. Utilisez le bouton
pour sélectionner ces colonnes.
- Sélectionnez l’onglet Relations. Comme les colonnes du tableau qui nous intéressent se trouvent à gauche du nom de la colonne Sales, ajoutez les contraintes de recherche suivantes :
- Left of l’élément TableHeader.kwSales, Offset = 0;
Remarque. Pour les images de mauvaise qualité (par ex. s’il y a du bruit entre le corps et le pied de page du tableau, ou s’il n’y a ni en-tête ni pied de page), vous pouvez spécifier les limites supérieure et inférieure du tableau. Dans ce cas, nous pouvons utiliser l’élément kwDesignation comme limite supérieure et l’élément Paragraph comme limite inférieure. Dans l’onglet Relations, ajoutez les contraintes de recherche suivantes :
- En dessous de la limite supérieure de l’élément kwDesignation, Offset = -50, Reference boundary = Top;
- Au-dessus de l’élément Paragraph, Offset = -50; Reference boundary = Bottom.
- Associez le FlexiLayout aux images de test. Vous remarquerez que le programme détecte correctement l’élément de tableau sur toutes les images, mais que, sur certaines d’entre elles, la colonne Quantity inclut du texte superflu provenant de la colonne précédente. Pour distinguer les données correctes de la colonne Quantity des données non pertinentes, nous allons spécifier le type de contenu de cette colonne.
- Ouvrez la boîte de dialogue Properties de l’élément Table InvoiceTable. Cliquez sur l’onglet Columns, ouvrez la boîte de dialogue Properties… de la colonne Quantity, puis sélectionnez l’option Check content type. Dans Type of column content, sélectionnez Number.
- Maintenant, si vous associez le FlexiLayout aux images, vous verrez que Quantity ne contient que des chiffres, ce qui correspond à ce dont nous avons besoin.
- De même, spécifiez un contenu de type Devise pour les colonnes UnitPrice et Total.
- Pour spécifier l’emplacement du bloc InvoiceTable, sélectionnez l’option élément source. Cliquez sur
et spécifiez InvoiceTable comme élément source.
