- Création d’une base de données de classification
- Classification des documents
Mise en œuvre du scénario
Les exemples de code fournis dans cette rubrique sont spécifiques à Windows.
Étape 1. Chargement d’ABBYY FineReader Engine
Étape 1. Chargement d’ABBYY FineReader Engine
Pour commencer à utiliser ABBYY FineReader Engine, vous devez créer l’objet Engine. L’objet Engine est l’objet de plus haut niveau dans la hiérarchie des objets d’ABBYY FineReader Engine et fournit différents paramètres globaux, certaines méthodes de traitement, ainsi que des méthodes permettant de créer les autres objets.Pour créer l’objet Engine, vous pouvez utiliser la fonction InitializeEngine. Voir également d’autres façons de charger l’objet Engine (Win).
C#
Étape 2. Création de ClassificationEngine
Étape 2. Création de ClassificationEngine
Créez un objet ClassificationEngine, qui sert à créer les autres objets de l’API de classification. Utilisez la méthode CreateClassificationEngine de l’objet Engine.
C#
Étape 3. Préparation des objets de classification
Étape 3. Préparation des objets de classification
Les méthodes d’entraînement et de classification utilisent un type spécial d’objet créé à partir d’un document ou d’une page : ClassificationObject, qui contient toutes les informations utiles à la classification.Pour préparer un document en vue d’un scénario de classification, procédez comme suit :
- Chargez les images à traiter. Il existe plusieurs façons de procéder : par exemple, vous pouvez créer l’objet FRDocument à l’aide de la méthode CreateFRDocument de l’objet Engine, puis ajouter des images à l’objet FRDocument créé à partir d’un fichier à l’aide de la méthode AddImageFile.
- Si vous allez entraîner ou utiliser un classificateur du type qui prend en compte les caractéristiques textuelles (CT_Combined, CT_Text), commencez par reconnaître le document à l’aide de la méthode de votre choix. Nous utiliserons les méthodes Analyze et Recognize de l’objet FRDocument. La synthèse du document n’est pas nécessaire pour la classification.
Bien que le traitement parallèle ne soit pas pris en charge pour la classification elle-même, vous pouvez en avoir besoin pour la reconnaissance préparatoire des documents sous Windows et Linux. Si le nombre de documents que vous allez classer est important, nous vous recommandons d’utiliser Batch Processor ou d’autres méthodes de traitement parallèle décrites dans Parallel Processing with ABBYY FineReader Engine.
- Utilisez la méthode CreateObjectFromDocument de l’objet ClassificationEngine pour créer un ClassificationObject contenant les informations de la première page du document. Si vous devez utiliser une autre page du document, appelez la méthode CreateObjectFromPage.
- La propriété Description du ClassificationObject est vide par défaut. Renseignez cette propriété si vous avez besoin d’une description appropriée.
Il peut parfois arriver que le document ou la page, une fois reconnu, ne contienne néanmoins aucun texte reconnu (par exemple, si une page vide a été utilisée par erreur). Dans ce cas, le ClassificationObject ne peut pas être utilisé avec les classificateurs qui nécessitent des caractéristiques textuelles. Vous pouvez utiliser sa propriété SuitableClassifiers pour effectuer une vérification supplémentaire.
C#
Étape 4. Création d’un jeu de données d’entraînement
Étape 4. Création d’un jeu de données d’entraînement
Pour entraîner un classificateur à distinguer plusieurs types de documents, vous avez besoin d’un jeu de données catégorisé contenant des échantillons de chaque type. Utilisez l’objet TrainingData pour constituer et gérer ce jeu de données :
- Créez un objet vide à l’aide de la méthode CreateTrainingData de l’objet ClassificationEngine.
- Accédez à la collection de catégories via sa propriété Categories.
- Utilisez plusieurs fois la méthode AddNew de l’objet Categories pour ajouter une catégorie pour chacun des types de documents que vous souhaitez classer. La méthode attend une string contenant le libellé de la catégorie en paramètre d’entrée. Ce libellé sera renvoyé par les méthodes de classification ; il doit donc être unique dans l’ensemble des catégories.
- Pour chaque objet Category nouvellement ajouté, ouvrez la collection d’objets de classification à l’aide de la propriété Objects. À l’aide de la méthode IClassificationObjects::Add, ajoutez les objets de classification correspondant à cette catégorie.
Aucune catégorie ne peut rester vide. Pour des raisons évidentes, au moins deux catégories sont nécessaires pour l’entraînement. - Une fois le jeu de données d’entraînement configuré, vous pouvez l’enregistrer dans un fichier sur disque pour une utilisation ultérieure : par exemple, si la précision du modèle entraîné s’avère insuffisante et que vous souhaitez ajouter ou corriger certaines données afin d’en améliorer la qualité. L’objet TrainingData fournit la méthode SaveToFile.
C#
Étape 5. Entraînement du modèle de classification
Étape 5. Entraînement du modèle de classification
Les fonctionnalités d’entraînement de modèle sont fournies par l’objet Trainer. Utilisez la méthode CreateTrainer de l’objet ClassificationEngine pour le créer.Il contient tous les paramètres relatifs au type de classifieur et à la procédure d’entraînement, répartis dans deux sous-objets : TrainingParams et ValidationParams. Identifiez les paramètres dont vous avez besoin et modifiez les propriétés correspondantes :La propriété ITrainingResult::Model donne accès au modèle de classification entraîné. Vous pouvez l’enregistrer dans un fichier à l’aide de la méthode SaveToFile ou l’utiliser directement pour classer des documents (passez à l’étape 6).
- Le type de classificateur (ITrainingParams::ClassifierType). Ce paramètre détermine quelles caractéristiques du document sont prises en compte lors de l’attribution d’une catégorie : les caractéristiques de l’image, le contenu du texte reconnu ou les deux. Pour sélectionner un type qui utilise le contenu du texte, vous devez vous assurer que tous les objets de classification du jeu de données d’entraînement ont été créés à partir de documents préalablement reconnus.
- Le mode d’entraînement (ITrainingParams::TrainingMode). Ce paramètre détermine si le processus d’entraînement doit privilégier une précision élevée (combien d’éléments sélectionnés sont corrects), un rappel élevé (combien d’éléments corrects sont sélectionnés) ou un équilibre entre les deux.
- Indique si la validation croisée k-fold doit être utilisée (IValidationParams::ShouldPerformValidation). Nous recommandons d’utiliser la validation croisée lorsque votre échantillon d’entraînement est de taille limitée, car elle permet d’entraîner plusieurs modèles sur différentes partitions d’un même échantillon et de sélectionner le meilleur. Si vous disposez d’un grand volume de données catégorisées, il peut être préférable de désactiver la validation, d’entraîner le modèle sur l’ensemble de l’échantillon d’entraînement, puis d’utiliser les méthodes de classification (étape 6) pour tester le modèle sur un autre échantillon, en calculant vous-même les scores de performance.
- Les paramètres de la validation croisée k-fold : le nombre de sous-ensembles dans lesquels l’échantillon d’entraînement est divisé (IValidationParams::FoldsCount) et le nombre d’itérations (IValidationParams::RepeatCount). Notez que le nombre d’objets requis dans l’ensemble d’entraînement à chaque itération doit être d’au moins 4 pour le classificateur de texte et d’au moins 8 pour le classificateur combiné. Assurez-vous que votre échantillon d’entraînement contient suffisamment d’objets.
L’entraînement et la classification du modèle seront effectués en mode séquentiel sous Linux et Windows, quelle que soit la valeur de IMultiProcessingParams::MultiProcessingMode.
C#
Étape 6. Classification des documents
Étape 6. Classification des documents
Pour utiliser le modèle entraîné pour la classification :
- Si le modèle n’est pas actuellement chargé, appelez la méthode CreateModelFromFile de l’objet ClassificationEngine pour le charger à partir d’un fichier sur le disque.
- Préparez les objets de classification à partir des documents à classifier, comme décrit à l’étape 3.
- Pour chaque objet de classification, appelez la méthode Classify de l’objet Model en passant le ClassificationObject comme paramètre d’entrée. La méthode renvoie une collection d’objets ClassificationResult, chacun contenant le libellé de la catégorie et la probabilité correspondante. Les résultats sont triés par probabilité, du meilleur au moins bon. Récupérez le résultat et vérifiez que le niveau de probabilité vous convient.
Si le classificateur n’a pas pu attribuer de catégorie,nullest renvoyé à la place de la collection de résultats.
L’entraînement du modèle et la classification sont exécutés en mode séquentiel sous Linux et Windows, quelle que soit la valeur de IMultiProcessingParams::MultiProcessingMode.
C#
Étape 7. Déchargement d’ABBYY FineReader Engine
Étape 7. Déchargement d’ABBYY FineReader Engine
Après avoir terminé votre travail avec ABBYY FineReader Engine, vous devez décharger l’objet Engine. Pour ce faire, utilisez la fonction exportée DeinitializeEngine.
C#
Ressources requises
Optimisation supplémentaire
- Chargement du moteur - Windows uniquement
- Différentes façons de charger l’objet Engine
Décrit en détail les différentes façons de charger l’objet Engine. - Utilisation d’ABBYY FineReader Engine dans des applications serveur multithreadées
Présente les spécificités de l’utilisation de FineReader Engine dans des applications serveur.
- Différentes façons de charger l’objet Engine
- Reconnaissance - sous Linux et Windows
- Traitement parallèle avec ABBYY FineReader Engine
Pour préparer rapidement les documents ou les pages reconnus pour un classificateur utilisant des caractéristiques textuelles, utilisez le traitement parallèle pour la reconnaissance, puis désactivez le multitraitement pour la classification.
- Traitement parallèle avec ABBYY FineReader Engine
