Document AI Workbench : surentraînement

1. Introduction

Document AI est une solution de reconnaissance de documents qui exploite des données non structurées, telles que des documents et des e-mails, et en facilite la compréhension, l'analyse et l'utilisation.

En utilisant le surentraînement via Document AI Workbench, vous pouvez améliorer la précision du traitement des documents en fournissant des exemples étiquetés supplémentaires pour les types de documents spécialisés et en créant une nouvelle version du modèle.

Dans cet atelier, vous allez créer un processeur d'analyse de factures, le configurer pour le surentraînement, étiqueter des exemples de documents et surentraîner le processeur.

L'ensemble de données de documents utilisé dans cet atelier est constitué de factures générées aléatoirement pour une entreprise de distribution fictive.

Prérequis

Cet atelier s'appuie sur le contenu présenté dans d'autres ateliers de programmation Document AI.

Nous vous recommandons d'effectuer les ateliers de programmation suivants avant de continuer.

Points abordés

  • Configurez le surentraînement pour un processeur d'analyse de factures.
  • Étiqueter les données d'entraînement Document AI à l'aide d'un outil d'annotation
  • Entraîner une nouvelle version du modèle
  • Évaluer la justesse de la nouvelle version du modèle

Ce dont vous aurez besoin

  • Un projet Google Cloud
  • Un navigateur tel que Chrome ou Firefox

2. Préparation

Cet atelier de programmation suppose que vous avez effectué les étapes de configuration de Document AI présentées dans l'atelier de programmation d'introduction.

Veuillez effectuer les étapes suivantes avant de continuer :

3. Créer un processeur

Vous devez d'abord créer le processeur d'analyse de factures que vous utiliserez dans cet atelier.

  1. Dans la console, accédez à la page Présentation de Document AI.

docai-uptraining-codelab-01

  1. Cliquez sur Créer un processeur, faites défiler la page jusqu'à Spécialisé (ou saisissez Analyseur de factures dans la barre de recherche), puis sélectionnez Analyseur de factures.

docai-uptraining-codelab-02

  1. Donnez-lui le nom codelab-invoice-uptraining (ou un autre nom facile à mémoriser), puis sélectionnez la région la plus proche sur la liste.

docai-uptraining-codelab-03

  1. Cliquez sur Créer pour créer le processeur. Vous devriez alors voir la page de présentation du processeur.

docai-uptraining-codelab-04

4. Créer un ensemble de donnée

Pour entraîner notre processeur, nous devons créer un ensemble de données avec des données d'entraînement et de test pour que le processeur puisse identifier les entités que nous voulons extraire.

Vous devez créer un nouveau bucket dans Cloud Storage pour stocker l'ensemble de données. Remarque : N'utilisez pas le bucket où sont stockés vos documents.

  1. Pour créer un bucket, ouvrez Cloud Shell et exécutez les commandes suivantes. Vous pouvez également créer un nouveau bucket dans la console Cloud. Copiez le nom de ce bucket, vous en aurez besoin ultérieurement.
export PROJECT_ID=$(gcloud config get-value project)

gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
  1. Accédez à l'onglet Ensemble de données et cliquez sur Créer un ensemble de données.

docai-uptraining-codelab-05

  1. Collez le nom du bucket que vous avez créé à l'étape une dans le champ Chemin de destination. (Ne contiennent pas gs://)

docai-uptraining-codelab-06

  1. Attendez que l'ensemble de données soit créé. Vous serez ensuite redirigé vers la page de gestion des ensembles de données.

docai-uptraining-codelab-07

5. Importer un document de test

Importons maintenant un exemple de facture PDF dans notre ensemble de données.

  1. Cliquez sur Importer des documents

docai-uptraining-codelab-08

  1. Vous avez la possibilité d'utiliser un exemple de PDF que nous avons mis à votre disposition pour cet atelier. Copiez et collez le lien suivant dans la zone Chemin source. Conservez "Non attribué" dans la zone "Répartition des données" pour le moment. Cliquez sur Importer.
cloud-samples-data/documentai/codelabs/uptraining/pdfs

docai-uptraining-codelab-09

  1. Attendez que le document soit importé. Cette opération a nécessité moins d'une minute pendant mes tests.

docai-uptraining-codelab-10

  1. Une fois l'importation terminée, le document doit s'afficher dans l'interface utilisateur de gestion des ensembles de données. Cliquez dessus pour accéder à la console d'étiquetage.

docai-uptraining-codelab-11

6. Étiqueter le document de test

Nous allons ensuite identifier les étiquettes et les éléments de texte pour les entités que nous souhaitons extraire. Ces étiquettes seront utilisées pour entraîner notre modèle à analyser cette structure de document spécifique et identifier les types corrects.

  1. Vous devriez à présent vous trouver dans la console d'étiquetage, qui ressemble à ceci :

docai-uptraining-codelab-12

  1. Cliquez sur "Sélectionner du texte" Outil, puis mettez en surbrillance le texte "McWilliam Piping International Piping Company" et attribuez-lui l'étiquette supplier_name. Vous pouvez utiliser le filtre "Texte" pour rechercher des noms d'étiquettes.

docai-uptraining-codelab-13

  1. Mettez en surbrillance le texte "14368 Pipeline Ave Chino, CA 91710". et attribuez-lui l'étiquette supplier_address.

docai-uptraining-codelab-14

  1. Mettez en surbrillance le texte "10001" et attribuez-lui l'étiquette invoice_id.

docai-uptraining-codelab-15

  1. Mettez en surbrillance le texte "2020-01-02". et attribuez-lui l'étiquette due_date.

docai-uptraining-codelab-16

  1. Passez au "cadre de délimitation" . Mettez en surbrillance le texte "Knuckle Couplers". et attribuez-lui l'étiquette line_item/description.

docai-uptraining-codelab-17

  1. Mettez le texte "9" en surbrillance et attribuez-lui l'étiquette line_item/quantity.

docai-uptraining-codelab-18

  1. Mettez en surbrillance le texte "74,43" et attribuez-lui l'étiquette line_item/unit_price.

docai-uptraining-codelab-19

  1. Mettez en surbrillance le texte "669.87" et attribuez-lui l'étiquette line_item/amount.

docai-uptraining-codelab-20

  1. Répétez les quatre étapes précédentes pour les deux éléments de campagne suivants. Une fois l'opération terminée, le résultat devrait ressembler à ceci.

docai-uptraining-codelab-21

  1. Mettez en surbrillance le texte "1,419.57" (à côté de "Sous-total") et attribuez-lui l'étiquette net_amount.

docai-uptraining-codelab-22

  1. Mettez en surbrillance le texte "113.57" (à côté de "Taxe") et attribuez l'étiquette total_tax_amount.

docai-uptraining-codelab-23

  1. Mettez en surbrillance le texte "1,533.14" (à côté de "Total") et attribuez-lui le libellé total_amount.

docai-uptraining-codelab-24

  1. Mettez en surbrillance l'un des "$" et lui attribuer l'étiquette currency.

docai-uptraining-codelab-25

  1. Une fois l'opération terminée, le document étiqueté devrait ressembler à ceci. Vous pouvez ajuster ces étiquettes en cliquant sur le cadre de délimitation dans le document ou sur la valeur/le nom de l'étiquette dans le menu de gauche. Une fois l'étiquetage terminé, cliquez sur Enregistrer.

docai-uptraining-codelab-26

  1. Voici la liste complète des étiquettes et des valeurs

Nom de l'étiquette

Texte

supplier_name

McWilliam Piping International Piping Company

supplier_address

14368 Pipeline Ave Chino, CA 91710

invoice_id

10001

due_date

2020-01-02

line_item/description

Knuckle Couplers

line_item/quantity

9

line_item/unit_price

74.43

line_item/amount

669.87

line_item/description

PVC Pipe 12 Inch

line_item/quantity

7

line_item/unit_price

15.90

line_item/amount

111.30

line_item/description

Copper Pipe

line_item/quantity

7

line_item/unit_price

91.20

line_item/amount

638.40

net_amount

1,419.57

total_tax_amount

113.57

total_amount

1,533.14

currency

7. Attribuer le document à un ensemble d'entraînement

Vous devriez maintenant être de retour dans la console de gestion des ensemble données. Notez que le nombre de documents étiquetés et non étiquetés a changé, de même que le nombre d'étiquettes actives.

docai-uptraining-codelab-27

  1. Nous devons attribuer ce document à l'ensemble "Entraînement" ou "Test". Cliquez sur le document.

docai-uptraining-codelab-28

  1. Cliquez sur Attribuer pour définir, puis sur Entraînement.

docai-uptraining-codelab-29

  1. Notez que les nombres dans la zone "Répartitions des données" ont changé.

docai-uptraining-codelab-30

8. Importer des données préalablement étiquetées

Le surentraînement de Document AI nécessite au moins 10 documents dans les ensembles d'entraînement et de test, ainsi que 10 instances de chaque étiquette dans chaque ensemble.

Pour des performances optimales, nous vous recommandons d'avoir au moins 50 documents dans chaque ensemble, avec 50 instances de chaque étiquette. Généralement, plus la quantité de données d'entraînement est élevée, plus la précision est élevée.

L'étiquetage manuel de 100 documents prend beaucoup de temps. Nous disposons donc de documents préalablement étiquetés que vous pouvez importer pour cet atelier.

Vous pouvez importer les fichiers des documents préalablement étiquetés au format Document.json. Ils peuvent résulter de l'appel d'un processeur et de la vérification de la justesse à l'aide de human-in-the-loop (avec intervention humaine, HITL).

  1. Cliquez sur Importer des documents.

docai-uptraining-codelab-30

  1. Copiez et collez le chemin d'accès Cloud Storage suivant et attribuez-le à l'ensemble Entraînement.
cloud-samples-data/documentai/codelabs/uptraining/training
  1. Cliquez sur Ajouter un bucket. Copiez et collez ensuite le chemin d'accès Cloud Storage suivant et attribuez-le à l'ensemble Test.
cloud-samples-data/documentai/codelabs/uptraining/test

docai-uptraining-codelab-31

  1. Cliquez sur Importer et attendez que les documents soient importés. L'importation nécessitera plus de temps que précédemment, car il y a davantage de documents à traiter. Pendant mes tests, cette opération a pris 6 minutes. Vous pouvez quitter cette page et y revenir plus tard.

docai-uptraining-codelab-32

  1. Une fois l'opération terminée, vous devriez voir les documents dans la page de gestion des ensembles de données.

docai-uptraining-codelab-33

9. Modifier les étiquettes

Les documents utilisés dans cet exemple ne contiennent pas toutes les étiquettes acceptées par l'analyseur de factures. Avant l'entraînement, nous devons marquer les étiquettes que nous n'utilisons pas comme inactives. Vous pouvez également suivre des étapes similaires pour ajouter une étiquette personnalisée avant le surentraînement.

  1. Cliquez sur Gérer les étiquettes en bas à gauche.

docai-uptraining-codelab-33

  1. Vous devriez à présent vous trouver dans la console de gestion des étiquettes.

docai-uptraining-codelab-34

  1. Utilisez les cases à cocher et les boutons Désactiver/Activer pour marquer UNIQUEMENT les libellés suivants comme Activés.
    • currency
    • due_date
    • invoice_id
    • line_item/amount
    • line_item/description
    • line_item/quantity
    • line_item/unit_price
    • net_amount
    • supplier_address
    • supplier_name
    • total_amount
    • total_tax_amount
  2. Une fois l'opération terminée, la console doit ressembler à ceci. Lorsque vous avez terminé, cliquez sur Enregistrer.

docai-uptraining-codelab-35

  1. Pour revenir à la console de gestion des ensembles de données, cliquez sur la flèche de retour. Notez que les étiquettes comportant 0 instance ont été marquées comme inactives.

docai-uptraining-codelab-36

10. Facultatif : Étiqueter automatiquement les nouveaux documents importés

Lorsque vous importez des documents sans étiquette pour un outil de traitement qui dispose déjà d'une version déployée, vous pouvez utiliser l'étiquetage automatique pour gagner du temps.

  1. Sur la page Entraînement, cliquez sur Importer des documents.
  2. Copiez et collez le chemin d'accès suivant. Ce répertoire contient cinq factures PDF sans étiquette. Dans la liste déroulante Répartition des données, sélectionnez Entraînement.
    cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled
    
  3. Dans la section Étiquetage automatique, cochez la case Importer avec l'étiquetage automatique.
  4. Sélectionnez une version existante du processeur pour étiqueter les documents.
  • Par exemple : pretrained-invoice-v1.3-2022-07-15
  1. Cliquez sur Importer et attendez que les documents soient importés. Vous pouvez quitter cette page et y revenir plus tard.
  • Une fois l'opération terminée, les documents s'affichent sur la page Entraînement de la section Étiquette automatique.
  1. Vous ne pouvez pas utiliser de documents étiquetés automatiquement pour l'entraînement ou les tests sans les marquer comme étiquetés. Accédez à la section Étiquette automatique pour afficher les documents étiquetés automatiquement.
  2. Sélectionnez le premier document pour accéder à la console d'étiquetage.
  3. Vérifiez que les étiquettes, les cadres de délimitation et les valeurs sont corrects. Attribuez une étiquette aux valeurs omises.
  4. Lorsque vous avez terminé, sélectionnez Marquer comme étiqueté.
  5. Répétez la validation des étiquettes pour chaque document étiqueté automatiquement, puis revenez à la page Entraînement pour utiliser les données pour l'entraînement.

11. Surentraîner le modèle

Nous sommes maintenant prêts à entraîner notre analyseur de factures.

  1. Cliquez sur Entraîner une nouvelle version.

docai-uptraining-codelab-36

  1. Attribuez un nom à votre version, tel que codelab-uptraining-test-1. La version de base est la version du modèle à partir de laquelle cette nouvelle version sera construite. Si vous utilisez un nouveau processeur, la seule option devrait être Google Pretrained Next avec surentraînement.

docai-uptraining-codelab-37

  1. (Facultatif) Vous pouvez également sélectionner Afficher les métriques relatives aux étiquettes pour afficher les métriques sur les étiquettes de votre ensemble de données.

docai-uptraining-codelab-38

  1. Cliquez sur Démarrer l'entraînement pour lancer le processus de surentraînement. Vous devriez être redirigé vers la page de gestion des ensembles de données. Vous pouvez consulter l'état de l'entraînement sur la droite. L'entraînement prendra quelques heures. Vous pouvez quitter cette page et y revenir plus tard.

docai-uptraining-codelab-39

  1. Si vous cliquez sur le nom de la version, vous serez redirigé vers la page Gérer les versions, qui indique l'ID de version et l'état actuel du job d'entraînement.

docai-uptraining-codelab-40

12. Tester la nouvelle version du modèle

Une fois le job d'entraînement terminé (au bout d'une heure environ pendant mes tests), vous pouvez tester la nouvelle version du modèle et commencer à l'utiliser pour obtenir des prédictions.

  1. Accédez à la page Gérer les versions. Vous pouvez voir l'état actuel et le score F1.

docai-uptraining-codelab-41

  1. Vous devrez déployer cette version du modèle avant de pouvoir l'utiliser. Cliquez sur les trois points verticaux à droite et sélectionnez Déployer la version.

docai-uptraining-codelab-42

  1. Sélectionnez Déployer dans la fenêtre pop-up, puis attendez que la version soit déployée. Cette opération prend quelques minutes. Une fois le déploiement terminé, vous pouvez également définir cette version comme celle par défaut.

docai-uptraining-codelab-43

  1. Après le déploiement, accédez à l'onglet Évaluation. Cliquez ensuite sur la liste déroulante Version et sélectionnez la version que vous venez de créer.

docai-uptraining-codelab-44

  1. Sur cette page, vous pouvez consulter les métriques d'évaluation, y compris le score F1, la précision et le rappel du document complet, ainsi que des étiquettes individuelles. Pour en savoir plus sur ces métriques, consultez la documentation AutoML.
  2. Téléchargez le fichier PDF en lien ci-dessous. Il s'agit d'un exemple de document qui n'était pas inclus dans l'ensemble d'entraînement ou de test.

  1. Cliquez sur Importer un document de test et sélectionnez le fichier PDF.

docai-uptraining-codelab-45

  1. Les entités extraites devraient ressembler à ceci.

docai-uptraining-codelab-46

13. Conclusion

Félicitations, vous avez utilisé Document AI pour surentraîner un analyseur de factures. Vous pouvez désormais utiliser ce processeur pour analyser les factures, comme vous le feriez avec tout processeur spécialisé.

Vous pouvez consulter l'atelier de programmation sur les processeurs spécialisés pour découvrir comment gérer la réponse de traitement.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, procédez comme suit :

  • Dans la console Cloud, accédez à la page Gérer les ressources.
  • Dans la liste des projets, sélectionnez votre projet, puis cliquez sur "Supprimer".
  • Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur "Arrêter" pour supprimer le projet.

Ressources

Licence

Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.