-
À propos d'ABBYY FlexiCapture
- Nouveautés d'ABBYY FlexiCapture 12
- Types de documents traités à l'aide d'ABBYY FlexiCapture
- Brève description du traitement de document à l'aide d'ABBYY FlexiCapture
- Installation et exécution du programme
- Architecture d'ABBYY FlexiCapture
-
Configuration du programme
- Configuration d'ABBYY FlexiCapture
- Multi-tenant
-
Création d'un projet
- Propriétés de projets
- Variables d'environnement
- Importation d'image
- Types de lots
- Configuration des workflows
- Outils
- Priorité du lot par défaut
- Paramètres du SLA
- Rôles personnalisés de l'opérateur
- Paramètres d'enregistrement
- Téléchargement d'un projet vers le serveur d'application
- Tester un projet
- Paramètres des skins
- Qualité des images affichées
-
Définitions de document
- Création de définitions de document fixes
- Création d'une définition de document pour traiter des documents flexibles et non structurés
- Création d'une définition de document pour les documents ne nécessitant pas une extraction de données automatique
- Ensembles de documents
-
Les champs de définitions de documents
- Champ de saisie de texte
- Coches
- Groupes de coches
- Code barre
- Images
- Tableaux
- Groupe de champs
- Champ de service
- Champs d'index
- Lien vers un champ existant
- Champs sans région
- Création d'un champ comportant une région non rectangulaire
- Champs avec plusieurs instances
- Champ contenant plusieurs régions
- Modification du nom d'un champ
- Copie, déplacement et suppression de champs
- Exclusion d'une région de la reconnaissance
- Assistant de définition de document
- Modification et publication d'une Définition de Document
- Assemblage de documents multipages
- Propriétés de définitions de documents
- Propriétés d'une section de définition de document
- Validation par règle
- Configuration de l’exportation
- Configuration de la présentation des données dans la fenêtre de document
- Test de définitions de documents
- Localiser une Définition de document
-
Classification
- Scénarios de classification
- Profils de classification
- Équilibre précision/rappel
-
Création d'un classificateur
- Configuration du classificateur
- Configuration de votre classificateur et chargement des images
- Apprentissage des classificateurs
- Analyse des résultats de classification
- Improving your classifier
- Classification à partir de la base de données des entreprises
- Exportation et importation de classificateurs
- Mappage des catégories vers les sections de la définition de document
- Apprentissage d'extraction de champs
- Utilisation d'un projet configuré
-
ABBYY FlexiCapture pour factures
- Fonctionnalités de la reconnaissance et de l'extraction de données d'ABBYY FlexiCapture for Invoices
- Comment capturer des factures
-
Comment configurer un projet de capture de factures
- Paramètres de pays et de langues
- Connexion des bases de données d'entités commerciales et de fournisseurs
- Paramètres d'exportation de données
- Statut des documents des projets de ABBYY FlexiCapture for Invoices
- Formation d'ABBYY FlexiCapture for Invoices
- Règles
- Capturer des champs de facture supplémentaires
- Analogie des bons de commande
- Activer des fonctionnalités de programme supplémentaires pour les opérateurs
- Utiliser plusieurs Définitions de document
- Modifier les paramètres de facture des fichiers XML
- Mise à jour de la Définition de document pour les factures
- Systèmes fiscaux
- Caractéristiques techniques
- Capturing receipts
- Capturing purchase orders
- Using NLP to process unstructured documents
- Interface d'ABBYY FlexiCapture
-
Annexe
-
Utilisation de scripts sous ABBYY FlexiCapture
- Règles spécifiques aux scripts écrits en langages .Net
- Assemblages externes
- Modèle d'objet
-
Scripts permettant de personnaliser les étapes de traitement
-
Types de scripts
- Règle de script
- Script d'autocorrection
- Script d'exportation
- Script utilisateur (action personnalisée)
- Script d'assemblage de document
- Script de reconnaissance personnalisée
- Règle d'étape
- Scripts de traitement
- Script de mise à jour de jeu de données
- Script de validation de jeu de données
- Script de classification de documents
-
Gestionnaires d'événements
- Lot créé
- Lot supprimé
- Modification des paramètres du lot
- Modification de la structure d'un lot (page ajoutée/page supprimée/document ajouté/document supprimé)
- Pages déplacées
- Lot ouvert/fermé
- Vérification de l’intégrité du lot
- Modification de paramètres du document
- Modification de l'état du document
- Exportation terminée
- Scripté exécuté après la vérification des règles
- Avant l'association
- Requête de vérification de champs
-
Objets
- IActionResult
- IAssemblingError
- IAssemblingErrors
- IBatch
- IBatchCheckResults
- IBatchItem
- IBatchItems
- IBatchTypeClassifier
- IBatchTypeClassifierResult
- IBinarizationParams
- IBoxedBoolean
- ICharacterParams
- ICharactersParams
- ICheckmarkGroupValue
- ICheckmarkValue
- IDataSet
- IDataSetQuery
- IDataSetRecord
- IDocument
- IDocuments
- IDocumentExportResults
- IDocumentsExportResults
- IDocumentDefinitionInfo
- IDocumentDefinitionInfoArray
- IEditablePictureObject
- IExportFieldsToRedact
- IExportImageSavingOptions
- IField
- IFieldRegion
- IFieldRegions
- IFields
- IFlexiCaptureTools
- ILocalContrastParams
- IMatchedSectionInfo
- IMatchingInfo
- IPage
- IPageClassificationResult
- IPages
- IPictureObject
- IPictureObjectsInfo
- IPrincipal
- IPrincipals
- IProcessingCallback
- IProject
- IProperties
- IProperty
- IPropertyModificationInfo
- IRecordCheckResult
- IRecordset
- IRect
- IRects
- IRoutingRuleResult
- IRuleContext
- IRuleError
- IRuleErrors
- IRuleTag
- IRuleTags
- IScriptBinaryAttributes
- IScriptDefinitionContext
- ISectionDefinitionInfo
- ISectionDefinitionInfoArray
- IShadowsHighlightsParams
- IStageInfo
- IUserAttachment
- IUserAttachments
- IUserSessionInfo
- IValue
- IVARIANTArray
- TAssemlingErrorType
- TBatchItemType
- TColorToFilter
- TExportFieldType
- TExportType
- TImageCompressionType
- TPageClassificationType
- TPdfAVersion
- TPdfDocumentInfoType
- TPdfTextSearchAreaType
- TPrincipalType
- TProcessingPriority
- TPropertyType
- TRuleErrorType
- TStateType
- Exemples de scripts
- Noms internes des langues de reconnaissance
-
Types de scripts
-
Scripts de traitement des évènements de l'interface
-
Gestionnaires d'événements
- À la fermeture du document
- À la fermeture du projet
- À l'activation du document
- À l'activation du contrôle de champ
- Au retour de la tâche
- En cas de commande utilisateur
- À la désactivation du contrôle de champ
- À la fermeture du document
- À la fermeture de la tâche
- À la fermeture du projet
- À la modification de région
- À la modification du mode de la fenêtre Tâche
- À l'ouverture du document
- À la création de la fenêtre Tâche
- Au rejet de la tâche
- À la conception du contrôle de région
- À l'étape Envoyer vers
- À la validation du champ de texte
-
Objets
- IBoolean
- IBoxedFieldControl
- IDocumentEditor
- IDocumentItem
- IDocumentItems
- IDocumentsCollection
- IDocumentsWindow
- IDrawContext
- IErrorControl
- IErrorControls
- IErrorsWindow
- IFieldControl
- IFieldRegionControl
- IFieldRegionControls
- IFormWindow
- IImageWindow
- IMainMenu
- IMainWindow
- IMenu
- IMenuItem
- IPageControl
- IPageItem
- IPageItems
- IPagesCollection
- IPoint
- ISelection
- IShellRational
- IShellRect
- IShellRects
- ITaskWindow
- ITextEditor
- IToolbar
- IToolbarButton
- IToolbars
- TCommandBarType
- TCommandID
- TDockingType
- TDocumentState
- TErrorType
- TSelectionType
- TTaskWindowMode
- TTextSize
- TUserRole
- TWorkWindowType
-
Gestionnaires d'événements
- Script utilisateur pour le poste de vérification Web
-
Création d'un formulaire lisible par machine
- Formulaires lisibles par machine
- Éléments de formulaires lisibles par machine
- Méthodes de remplissage de formulaire
- Types de formulaires lisibles par machine
- Choix du type de formulaire adéquat
- Exigences générales pour les formulaires lisibles par machine
- Couleurs recommandées pour les formulaires simili détourés
-
Raccourcis clavier
- Raccourcis clavier de la station de configuration de projets
- Raccourcis clavier de la station de vérification
- Raccourcis clavier de la station de vérification des données
- Raccourcis clavier de l'éditeur de définition de document
- Raccourcis clavier de la fenêtre de vérification groupée
- Raccourcis clavier dans la fenêtre de vérification de champ
- Raccourcis
- Autres options
- Description des commandes du serveur de traitement
- Exemples de projets ABBYY FlexiCapture
- Langues de reconnaissance prises en charge
- Supported classifier languages
- Polices requises pour un rendu correct des caractères
- Types de textes pris en charge
- Types de codes barres pris en charge
- Formats d'entrée pris en charge
- Traiter des fichiers PDF
- Formats de fichiers d'exportation
- Formats de la date
- Caractères alphabétiques utilisés dans les expressions régulières
- Brevets
- Technologies tierces
- Glossaire
- Support technique
- Comment acheter ABBYY FlexiCapture
- Contrat de licence utilisateur final (CLUF)
-
Utilisation de scripts sous ABBYY FlexiCapture
Exemples de scripts permettant de créer des règles personnalisées
Règle d'automatisation
Cet exemple montre comment vérifier les données d'un tableau. Cette règle vérifie si les données du tableau correspondent à la valeur du champ obtenu. Le tableau contient des colonnes comportant des prix et des quantités pour certains produits. La règle a été écrite au niveau d'une section contenant le tableau et le champ qui en résulte.
[VBScript] dim autoRule set autoRule = CreateObject( "AutomationRule.CheckDoc" ) autoRule.CheckResult me.FIELD("cost"), me.FIELD("number"), _ me.FIELD("Result"), me [JScript] var autoRule = new ActiveXObject( "AutomationRule.CheckDoc" ); autoRule.CheckResult( Field("cost"), Field("number"), Field("Result"), this );
Code d'un composant ActiveX
Le code fourni ici est un code de classe CheckDoc issu du projet AutomationRule, qui est utilisé dans les scripts mentionnés ci-dessus.
Option Explicit
' Vérifie si les données du tableau correspondent au résultat
' column1 - colonne de prix
' column2 - colonne de quantités
' resultField - champs obtenus (<Total> ou équivalent )
' docObj - nœud de document en cours de vérification
Public Sub CheckResult(ByRef column1 As Object, ByRef column2 As Object, _
ByRef resultField As Object, ByRef docObj As Object)
On Error GoTo err_h
Dim costItems AsObject, numItems AsObject
Dim curCost AsDouble, curNum AsLong, sum AsDouble
Dim result AsDouble
Dim i AsLong
Set costItems = column1.Items
Set numItems = column2.Items
' récapitulatif des données du tableau
sum = 0
For i = 0 To costItems.Count - 1
curCost = costItems.Item(i).Value
curNum = numItems.Item(i).Value
sum = sum + curNum * curCost
Next
' Précision de la comparaison – résultat arrondi au 2ème chiffre après la virgule
result = resultField.Value
If (Round(result, 2) = Round(sum, 2)) Then
docObj.CheckSucceeded = True
Else
docObj.CheckSucceeded = False
docObj.ErrorMessage = "Les données du tableau ne correspondent pas à la valeur du résultat"
resultField.Suggest sum
End If
Exit Sub
err_h:
docObj.ErrorMessage = Err.Description
docObj.CheckSucceeded = False
End Sub
Recherche dans la liste de variantes
Le code de la règle ci-dessous vérifie si la valeur du champ correspond à l'une des valeurs de la liste. S'il aucune correspondance n'est détectée, un indicateur d'erreur apparaît et le champ reçoit une liste de valeurs suggérées. Le champ est marqué comme reconnu avec ou sans certitude en fonction du résultat de la vérification.
[VBScript] 'mémoriser la valeur du champ Dim fieldValue fieldValue = me.Field("Field6").Value ' Crée la liste des valeurs à vérifier Dim list(5) dim i for i = 0 to 4 list(i) = "2" & i next dim success success = false 'Vérifier si la valeur d'un champ correspond aux valeurs de la liste for i = 0 to 4 if list(i) = fieldValue Then success = true exit for end if next 'Définir le niveau de certitude correspondant pour le champ en fonction du résultat de la vérification me.Field("Field6").IsVerified = success 'remplir la liste de suggestions pour le champ – la suggestion peut être l'une des 'valeurs appropriées if success = false then for i = 0 to 4 me.Field("Field6").Suggest( list(i) ) next end if 'placer un indicateur d'erreur me.CheckSucceeded = success [JScript] // mémoriser la valeur du champ var fieldValue = Field("Field6").Value; // créer la liste des valeurs à vérifier var list = new Array(5); for( i = 0; i < 5; i++ ) { list[i] = "2" + i } var success = false; // faire correspondre la valeur du champ aux valeurs de la liste for( i = 0; i < 5; i++ ) { if( list[i] == fieldValue ) { success = true; break; } } // Définir le niveau de certitude correspondant pour le champ en fonction du résultat de la vérification Field("Field6").IsVerified = success; // remplir la liste de suggestions pour le champ – la suggestion peut être l'une des // valeurs appropriées if( !success ) { for( i = 0; i < 5; i++ ) { Field("Field6").Suggest( list[i] ); } } // placer un indicateur d'erreur CheckSucceeded = success;
Vérification de l'association de champs
Le code de la règle ci-dessous contrôle si le champ vérifié est associé.
[VBScript] if me.Field("InvoiceNumber").IsMatched then me.CheckSucceeded = true else me.CheckSucceeded = false me.ErrorMessage = "Le champ InvoiceNumber ne correspond pas" end if [JScript] if( Field("InvoiceNumber ").IsMatched ) { CheckSucceeded = true; } else { CheckSucceeded = false; ErrorMessage = "Le champ InvoiceNumber ne correspond pas"; }
Vérification d'une coche
Le code de la règle ci-dessous vérifie si la coche a été sélectionnée ou non
[VBScript] if me.Field("Page status").Value then me.CheckSucceeded = true else me.CheckSucceeded = false me.ErrorMessage = "Le statut de la page n'est pas vérifié" me.FocusedField = me.Field(Page status) "" end if [JScript] if( Field("Page status").Value ) { CheckSucceeded = true; } else { CheckSucceeded = false; ErrorMessage = "Le statut de la page n'est pas vérifié"; FocusedField = Field("Page status"); }
Vérification d'un groupe de coches
Le code de la règle ci-dessous utilise une itération sur l'ensemble des coches du groupe et, si aucune des coches n'est sélectionnée, la première coche est sélectionnée. La règle est écrite pour intervenir au niveau du groupe de coches. Toutes les coches du groupe ont été ajoutées à la liste des champs inclus dans la règle. Le groupe en lui-même a été exclu de la la liste. Pour la coche par défaut (la première), l'indicateur ReadOnly a été désactivé. S'il n'y a aucune coche dans le groupe, un indicateur d'erreur est activé.
Cet exemple de code utilise une itération sur tous les champs inclus dans la règle. Étant donné que les noms de champs ne sont pas spécifiés dans le code, ce code ne peut pas être utilisé pour un groupe de coches.
[VBScript] if me.Fields.Count = 0 then me.CheckSucceeded = false me.ErrorMessage = "Aucune coche dans le groupe" else dim isChosen, i isChosen = false for i = 0 to me.Fields.Count - 1 if me.Fields.Item( i ).Value then isChosen = true exit for end if next if Not isChosen then me.Fields.Item(0).Value = true end if me.CheckSucceeded = true end if [JScript] if( Fields.Count == 0 ) { CheckSucceeded = false; ErrorMessage = "Aucune coche dans le groupe"; } else { var isChosen = false; var i; for( i = 0; i < Fields.Count; i++ ) { if( Fields.Item( i ).Value ) { isChosen = true; break; } } if( !isChosen ) { Fields.Item(0).Value = true; } CheckSucceeded = true; }
Contrôle de la fiabilité du champ
Le code de règle fourni ci-dessous contrôle le nombre de caractères incertains d'un champ et efface le champ si le nombre de caractères incertains est supérieur ou égal à trois. Ceci est un script de correction automatique.
[VBScript] Dim totQty, suspQty Dim i totQty = me.Symbols.Count suspQty = 0 for i = 0 to totQty - 1 if me.Symbols.Item(i).IsSuspicious = true then suspQty = suspQty + 1 end if next if suspQty >= 3 then me.Text = "" end if [JScript] var susp, qty, strpos, i, SC, strposPrev strposPrev = 1 qty = 0 SC = "1" susp = SuspiciousSymbols for ( i = 0; i < susp.length; i++) { strpos = susp.indexOf (SC,i) if ((strpos != strposPrev) && (strpos != -1)) { qty = qty + 1 strposPrev = strpos } } if (qty >= 3) { text = "" }
Remplacement de caractères sans perte des indicateurs de vérification et des régions gs
Le script remplace + par & sans perdre d'informations sur les régions et indicateurs de vérification. Ceci est un script de correction automatique.
[VBScript] Dim totQty Dim i totQty = me.Symbols.Count for i = 0 to totQty - 1 if me.Symbols(i).Symbol = "+" then me.Symbols(i).Symbol = "&" end if next
Vérification de l’intégrité du lot
Vérifie si le nombre de documents spécifié sur la page de contrôle coïncide avec l'inventaire du lot et avec le nombre de documents réellement traités. Si les nombres ne correspondent pas, une erreur est retournée.
[VBScript] dim DQty dim i for i = 0 to me.Batch.Documents.Count - 1 if me.Batch.Documents.Item(i).DefinitionName = "Inv" then DQty = me.Batch.Documents.Item(i).IndexedItemValue("DocQty") exit for end if next dim AcQty AcQty = me.Batch.Documents.Count if acqty <> DQty then me.CheckSucceeded = false me.ErrorMessage = "Nombre incorrect de documents dans le lot :" & " " & AcQty& ". " & "Nombre attendu :" & " " & DQty & "!" end if [JScript] for ( i = 0; i < [Batch.Documents.Count - 1]; i++ ) { var TemplName = Batch.Documents.Item(0).DefinitionName; if (TemplName = "Inv") { var DQty = Batch.Documents.Item(i).IndexedItemValue("DocQty"); break ; } } var AcQty = Batch.Documents.Count -1 if (AcQty != DQty) { CheckSucceeded = false; ErrorMessage = "Nombre incorrect de documents dans le lot :" + " " + AcQty + "." + "Nombre attendu :" + " " + DQty +"!" ; }
Compte du nombre de documents et de pages dans un ensemble de documents
Ce script compte le nombre de pages dans une section d'un ensemble de documents et génère une erreur si l'ensemble contient un élément de type inconnu.
int subDocumentsCount = 0; int pagesCount = 0; IBatchItem asBatchItem = Context.Document.AsBatchItem; IBatchItems items = asBatchItem.ChildItems; foreach (IBatchItem item in items) { if ( item.Type == TBatchItemType.BIT_Page ) { pagesCount ++; } else if( item.Type == TBatchItemType.BIT_Document ) { subDocumentsCount ++; } else { Context.CheckSucceeded = false; Context.ErrorMessage = "Type d'éléments inconnus dans l'ensemble"; } } Context.Field("Field").Text = subDocumentsCount.ToString() + " " + pagesCount.ToString();
1/14/2021 2:17:20 PM