Fonctionnalités spéciales d'ABBYY FlexiLayout Studio pour la création de FlexiLayouts supplémentaires
ABBYY FlexiLayout Studio comporte plusieurs fonctionnalités spéciales pour développer des FlexiLayouts supplémentaires pour les projets de facture :
- Vous pouvez spécifier les emplacements des éléments relatifs aux régions de champs qui ont été détectés lorsque le FlexiLayout principal du projet de facture a été appliqué.
- Les identificateurs de fournisseurs et d'entités commerciales peuvent être utilisés dans les requêtes au jeu de données de la Définition de document.
- Les listes de mots clés et d'autres paramètres d'un FlexiLayout peuvent être exportées dans un fichier XML, vous permettant de les éditer sans modifier le FlexiLayout ou la Définition de document.
Comment créer un FlexiLayout supplémentaire
- Ouvrez un lot de factures reconnues dans ABBYY FlexiCapture.
- Créez un nouveau projet dans ABBYY FlexiLayout Studio.Dans le menu principal, choisissez Outils → Exporter le lot vers FlexiLayout Studio → Créer un nouveau projet FLS....
Remarque : Cette commande n'est disponible que pour les projets ABBYY FlexiCapture stockés sur votre ordinateur. Si vous utilisez la version distribuée de ABBYY FlexiCapture et que le projet est stocké sur le serveur, il vous faudra d'abord le télécharger sur votre ordinateur en cliquant sur Exporter le projet... dans le menu Projet.
Remarque : Le suffixe du projet ABBYY FlexiLayout studio indique la version de la Définition de document au moment de la création du projet.
Le projet ABBYY FlexiLayout Studio que vous venez de créer contient tous les documents du lot ABBYY FlexiCapture et les régions des champs détectés pendant la reconnaissance dans ABBYY FlexiCapture sous la forme d'une présentation de référence.
L'arborescence | Nœud | Description |
SearchElements | CommonBlockRegions | Ce nœud contient les éléments qui correspondent à tous les champs de la Définition de document. Les coordonnées de toutes les régions de blocs qui ont été détectées lorsque les FlexiLayouts ont été appliqués à chaque document dans ABBYY FlexiCapture sont enregistrées dans le projet ABBYY FlexiLayout Studio. Par défaut, les régions de ces coordonnées seront affectées aux éléments qui ont le même nom que les champs de la Définition de document. Ceci permet de les utiliser pour spécifier des emplacements relatifs d'éléments et pour créer de nouveaux éléments. |
CustomSearchElements |
Ce nœud contient des éléments d'exemple. Ils sont désactivés par défaut afin d'éviter les interférences lorsque le FlexiLayout est appliqué.
Un exemple d'une requête au Jeu de données des fournisseurs et des entités commerciales qui sont stockés dans la Définition de document. Ce Jeu de données inclut des identificateurs de fournisseurs et d'entités commerciales.
Un exemple de la manière d'obtenir une liste de mots clés à partir de KeywordsCustom.xml. Ce fichier peut être trouvé dans le sous-dossier Paramètres du dossier du projet ABBYY FlexiLayout Studio.. |
Comment ajouter un champ à un FlexiLayout supplémentaire
Pour ajouter un champ à un FlexiLayout supplémentaire, il vous faudra créer un bloc pour ce champ et spécifier son élément de recherche.
Les champs de la Définition de document doivent avoir des noms uniques. Cela signifie que :
- Pour décrire la logique de recherche d'un champ, vous devez créer un bloc avec un nom unique.
- Pour modifier la logique de recherche d'un champ qui existe déjà dans la Définition de document, vous devez créer un bloc avec le même nom.
Comment ajouter des pages à un FlexiLayout supplémentaire
Si vous voulez tester les modifications apportées à un FlexiLayout supplémentaire sur de nouvelles images, vous pouvez exporter vos lots dans un projet de facture existant dans ABBYY FlexiLayout Studio. Pour exporter vos lots, cliquez sur Outils → Exporter le lot vers FlexiLayout Studio → Ajouter au projet FLS existant....
- Vous pouvez exporter ABBYY FlexiCapture des lots uniquement dans les projets ABBYY FlexiLayout Studio créés à partir de Outils → Exporter le lot vers FlexiLayout Studio → Créer un nouveau projet FLS....
- Quand vous exportez un ABBYY FlexiCapture lot vers ABBYY FlexiLayout Studio, un nouveau lot sera créé dans ABBYY FlexiLayout Studio pour ce lot.
- Si la définition du nouveau document possède plus de champs que la définition du document utilisé pour le projet ABBYY FlexiLayout Studio, un avertissement sera ajouté au journal d'exportation pour chaque champ supplémentaire.
- Pour que le programme exporte les champs supplémentaires, ajoutez un bloc avec un nom identique pour chacun d'eux dans le nœud CommonBlockRegions de l'arborescence SearchElements.
Comment effectuer des requêtes aux jeux de données depuis une Définition de document
Vous trouverez un exemple de requête dans l'élément DataSetRequestSample. Cet élément est désactivé par défaut.
Type | Description |
---|---|
NamedValue | Une valeur nommée |
Constructeur | |
NamedValue( String, String ) | |
Méthodes | |
String Name() | Retourne le nom d'une valeur nommée |
String Value() | Retourne la valeur d'une valeur nommée. |
NamedValueArray | Un tableau de valeurs nommées |
Constructeurs | |
NamedValueArray() | |
NamedValueArray( NamedValue namedValue ) | |
Méthodes | |
Int Count() | Retourne le nombre total d'éléments du tableau. |
NamedValue GetAt( Int index ) | Retourne l'élément avec le numéro d'indice spécifié. |
Void Add( NamedValue namedValue ) | Ajoute une valeur nommée au tableau. |
Void Add( NamedValueArray namedValueArray ) | Ajoute un tableau de valeurs nommées à un tableau de valeurs nommées.. |
Void InsertAt( Int index, NamedValue namedValue ) | Insère namedValue à la position index. |
Void DeleteAll() | Supprime tous les éléments d'un tableau. |
Void DeleteAt( Int index ) | Supprime un élément à la position index.. |
Int FindByName( String name ) | Retourne la position de la valeur nommée name. |
Fonctions
Syntaxe :
- Le chemin vers la Définition de document et le nom du jeu de données seront utilisés pour accéder au Jeu de données lors de l'utilisation d'un FlexiLayout dans ABBYY FlexiLayout studio.
- Une fois qu'un FlexiLayout compilé a été ajouté à une Définition de document dans ABBYY FlexiCapture, seul son nom sera utilisé lors de l'accès au jeu de données.
- Format de connectionString :
"dbtype=FCDataset;fcTemplate=chemin_vers_Document_Definition;datasetName=nom_jeu_de_données;"
Remarque : Des parties du chemin doivent être séparées par des doubles barres obliques inversées « \\ »)
- searchFields
Tableau de noms des colonnes depuis lequel les valeurs doivent être récupérées. - searchCriteria
Tableau de paires Colonne-Entrée, retourne toutes les valeurs si vide. - Si une requête contient plusieurs valeurs pour un champ, utilisez l'opérateur OR
- Si une requête contient plusieurs valeurs, chacune d'entre elles correspondant uniquement à un champ, utilisez l'opérateur AND
- Si une requête contient plusieurs valeurs pour un champ et des valeurs pour plusieurs champs, utilisez l'opérateur OR pour dissocier plusieurs valeurs pour un champ et l'opérateur AND pour associer les valeurs de différents champs.
Définition | Description |
---|---|
Logic TestAccessToFCDataSet( String connectionString ) | Teste la connexion sur le Jeu de données |
Logic TestFCDataSetSearchCriteria( String connectionString, StringArray searchFields, NamedValueArray searchCriteria ) | Teste les conditions de recherche pour le jeu Jeu de données |
StringArray FieldNamesOfFCDataset( String connectionString ) | Retourne une liste de tous les champs du Jeu de données triés dans l'ordre croissant de leurs numéros d'indice. |
StringArray FieldNamesOfFCDataset( String connectionString, StringArray searchFields ) | Retourne une liste des champs du Jeu de données du Jeu de données spécifié dans l'ordre croissant de leurs numéros d'indice. Doit être utilisé en conjonction avec la fonction RecordOfFCDataset lorsqu'il y a des colonnes complexes. |
Int RecordCountOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria ) | Retourne la quantité d'entrées du Jeu de données spécifié dans les conditions de recherche. Utilisé pour savoir combien d'entrées peuvent être retournées à l'aide de la fonction RecordOfFCDataset. |
Void PrepareRecordsetOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Prépare les données pour une requête sur le Jeu de données. Il faut l'effectuer pour chaque nouveau jeu de conditions de recherche avant d'appeler la fonction RecordOfFCDataset. |
StringArray RecordOfFCDataset( String connectionString, StringArray searchFields, NamedValueArray searchCriteria, Int rowIndex ) | Retourne un tableau de valeurs depuis une entrée avec le numéro rowIndex à partir des résultats retournés par une requête au Jeu de données. Le nombre de valeurs est égal au nombre de champs passés dans searchFields (cela inclut le cas des colonnes complexes). |
Quality ValidateByFCDataSet( String word, String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxErrors, Rational maxErrorsPart, Logic ignoreSpaces = true, Int maxRecordsCount = DefaultMaxRecordsCount ); | Retourne la qualité de la chaîne word. Accepte les numéros d'indice des champs. Vous pouvez obtenir les numéros d'indice en indexant la sortie de la fonction FieldNamesOfFCDataset. |
Void SearchTextFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Cette fonction est utilisée pour spécifier les conditions de recherche pour les mots Texte statique. Lorsque cette fonction est appelée, les conditions de recherche existantes sont remplacées par de nouvelles. Accepte les numéros d'indice de champ. Vous pouvez obtenir les numéros d'indice en indexant la sortie de la fonction FieldNamesOfFCDataset. |
Void RegularExpressionFromFCDataSet( String connectionString, Int fieldIndex, NamedValueArray searchCriteria, Int maxRecordsCount = DefaultMaxRecordsCount ) | Cette fonction est utilisée pour spécifier les conditions de recherche à l'aide d'expressions régulières pour la fonction CharString. Lorsque cette fonction est appelée, les conditions de recherche existantes sont remplacées par de nouvelles. Accepte les numéros d'indice de champ. Vous pouvez obtenir les numéros d'indice en indexant la sortie de la fonction FieldNamesOfFCDataset. |
Comment rechercher des lignes dans une colonne depuis une base de données sur une image
- Utilisez FieldNamesOfFCDataset pour obtenir une liste de colonnes triées par ordre croissant de leurs numéros d'index.
- Déterminez le numéro d'index de la colonne depuis laquelle vous devez trouver des données.
- Créez un tableau de conditions pour le filtrage des données depuis le Jeu de données.
- Passez les numéros d'indice de la colonne et les conditions de filtrage à SearchTextFromFCDataSet (ou RegularExpressionFromFCDataSet, si vous devez utiliser des expressions normales).
Ce code sera généré automatiquement lorsqu'un lot reconnu est exporté de ABBYY FlexiCapture
Comment rechercher une image pour les entrées de colonnes multiples d'une base de données externe
Étant donné que les paramètres de recherche sont remplacés chaque fois que vous appelez la fonction SearchTextFromFCDataSet, appeler cette fonction plusieurs fois est sans intérêt. Vous pouvez contourner ce problème ainsi : vous pouvez obtenir des chaînes depuis une base de données externe et les passer à la fonction SearchText. Appeler cette fonction ajoute la chaîne aux paramètres de recherche existants au lieu de les remplacer.
Pour ce faire, complétez les étapes suivantes :
- Créez un tableau de noms de colonnes desquelles vous devez trouver des données.
- Créez un tableau de conditions de filtre pour le filtrage des données depuis le Jeu de données.
- Déterminez la quantité d'entrées qui sera retournée à l'aide de la fonction RecordCountOfFCDataset.
- Préparez les données de requête à l'aide de la fonction PrepareRecordsetOfFCDataset.
- Parcourez tous les enregistrements et obtenez le tableau de chacun d'entre eux à l'aide de la méthode RecordOfFCDataset.
- Passez la valeur de chaque élément dans le tableau de la fonction SearchText.
Considérations supplémentaires lorsque vous êtes confrontés à des colonnes complexes
- La fonction FieldNamesOfFCDataset retourne un tableau qui contiendra plusieurs occurrences du nom de la colonne complexe. Le nombre d'occurrences sera le même que le nombre d'instances de colonnes dans une base de données externe codée..
Exemple : {VendorId, VATID, Name, Name, Name, City}. Dans ce cas, la base de données externe contient 3 colonnes pour la seule colonne complexe Nom dans le jeu de données.. - Si SearchCriteria contient une condition pour un champ qui correspond à une colonne complexe (comme dans l'exemple ci-dessus), la condition sera utilisée pour vérifier toutes les instances de colonnes.
- Si SearchFields contient une condition pour un champ qui correspond à une colonne complexe (comme dans l'exemple ci-dessus), le résultat contiendra le tableau de valeur pour chaque instance de colonne.
Par exemple, si pour {VendorId, VATID, Name, Name, Name, City}, vous demandez
searchFields = { VATID, Name, City}, vous recevrez
{VATID_value, Name_valueInColumn1, Name_valueInColumn2, Name_valueInColumn3, City_value}
- Vous pouvez obtenir une liste de colonnes qui sera retournée en passant le tableau searchFields à la fonction FieldNamesOfFCDataset.
Comment effectuer une requête à un fichier XML qui contient les paramètres du FlexiLayout
Vous pouvez effectuer des requêtes à un fichier XML avec des paramètres de FlexiLayout à l'aide de deux fonctions standard qui sont décrites dans la documentation d'ABBYY FlexiLayout studio :
StringArray ReadFromXML(String filename, String xPathQuery)
String ReadSingleStringFromXML(String filename, String xPathQuery)
Ce fichier doit se trouver dans les sous-dossiers du dossier du projet ABBYY FlexiLayout Studio si vous voulez l'utiliser lorsque vous travaillez sur un FlexiLayout dans ABBYY FlexiLayout studio. Le chemin vers ce fichier est relatif au fichier du projet ABBYY FlexiLayout Studio.
Si vous chargez un FlexiLayout compilé dans une Définition de document de ABBYY FlexiCapture, et que vous l'utilisez en tant que FlexiLayout supplémentaire, le fichier XML sera placé dans le dossier Modèles et vous pourrez l'éditer. Lorsque le FlexiLayout est appliqué, le programme gérera l'accès à ce fichier automatiquement.
18.06.2023 17:47:23