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.
- Reconnaissance optique des caractères (ROC) avec Document AI et Python
- Analyse de formulaire avec Document AI et Python
- Outils de traitement spécialisés avec Document AI et Python
- Gérer les processeurs Document AI avec Python
- Document AI : human-in-the-loop (avec intervention humaine)
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
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.
- Dans la console, accédez à la page Présentation de Document AI.
- 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.
- 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.
- Cliquez sur Créer pour créer le processeur. Vous devriez alors voir la page de présentation du processeur.
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.
- 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"
- Accédez à l'onglet Ensemble de données et cliquez sur Créer un ensemble de données.
- Collez le nom du bucket que vous avez créé à l'étape une dans le champ Chemin de destination. (Ne contiennent pas
gs://
)
- Attendez que l'ensemble de données soit créé. Vous serez ensuite redirigé vers la page de gestion des ensembles de données.
5. Importer un document de test
Importons maintenant un exemple de facture PDF dans notre ensemble de données.
- Cliquez sur Importer des documents
- 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
- Attendez que le document soit importé. Cette opération a nécessité moins d'une minute pendant mes tests.
- 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.
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.
- Vous devriez à présent vous trouver dans la console d'étiquetage, qui ressemble à ceci :
- 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.
- Mettez en surbrillance le texte "14368 Pipeline Ave Chino, CA 91710". et attribuez-lui l'étiquette
supplier_address
.
- Mettez en surbrillance le texte "10001" et attribuez-lui l'étiquette
invoice_id
.
- Mettez en surbrillance le texte "2020-01-02". et attribuez-lui l'étiquette
due_date
.
- Passez au "cadre de délimitation" . Mettez en surbrillance le texte "Knuckle Couplers". et attribuez-lui l'étiquette
line_item/description
.
- Mettez le texte "9" en surbrillance et attribuez-lui l'étiquette
line_item/quantity
.
- Mettez en surbrillance le texte "74,43" et attribuez-lui l'étiquette
line_item/unit_price
.
- Mettez en surbrillance le texte "669.87" et attribuez-lui l'étiquette
line_item/amount
.
- 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.
- Mettez en surbrillance le texte "1,419.57" (à côté de "Sous-total") et attribuez-lui l'étiquette
net_amount
.
- Mettez en surbrillance le texte "113.57" (à côté de "Taxe") et attribuez l'étiquette
total_tax_amount
.
- Mettez en surbrillance le texte "1,533.14" (à côté de "Total") et attribuez-lui le libellé
total_amount
.
- Mettez en surbrillance l'un des "$" et lui attribuer l'étiquette
currency
.
- 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.
- Voici la liste complète des étiquettes et des valeurs
Nom de l'étiquette | Texte |
| McWilliam Piping International Piping Company |
| 14368 Pipeline Ave Chino, CA 91710 |
| 10001 |
| 2020-01-02 |
| Knuckle Couplers |
| 9 |
| 74.43 |
| 669.87 |
| PVC Pipe 12 Inch |
| 7 |
| 15.90 |
| 111.30 |
| Copper Pipe |
| 7 |
| 91.20 |
| 638.40 |
| 1,419.57 |
| 113.57 |
| 1,533.14 |
| € |
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.
- Nous devons attribuer ce document à l'ensemble "Entraînement" ou "Test". Cliquez sur le document.
- Cliquez sur Attribuer pour définir, puis sur Entraînement.
- Notez que les nombres dans la zone "Répartitions des données" ont changé.
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).
- Cliquez sur Importer des documents.
- 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
- 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
- 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.
- Une fois l'opération terminée, vous devriez voir les documents dans la page de gestion des ensembles de données.
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.
- Cliquez sur Gérer les étiquettes en bas à gauche.
- Vous devriez à présent vous trouver dans la console de gestion des étiquettes.
- 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
- Une fois l'opération terminée, la console doit ressembler à ceci. Lorsque vous avez terminé, cliquez sur Enregistrer.
- 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.
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.
- Sur la page Entraînement, cliquez sur Importer des documents.
- 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
- Dans la section Étiquetage automatique, cochez la case Importer avec l'étiquetage automatique.
- Sélectionnez une version existante du processeur pour étiqueter les documents.
- Par exemple :
pretrained-invoice-v1.3-2022-07-15
- 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.
- 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.
- Sélectionnez le premier document pour accéder à la console d'étiquetage.
- Vérifiez que les étiquettes, les cadres de délimitation et les valeurs sont corrects. Attribuez une étiquette aux valeurs omises.
- Lorsque vous avez terminé, sélectionnez Marquer comme étiqueté.
- 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.
- Cliquez sur Entraîner une nouvelle version.
- 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.
- (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.
- 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.
- 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.
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.
- Accédez à la page Gérer les versions. Vous pouvez voir l'état actuel et le score F1.
- 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.
- 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.
- 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.
- 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.
- 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.
- Cliquez sur Importer un document de test et sélectionnez le fichier PDF.
- Les entités extraites devraient ressembler à ceci.
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
- Documentation sur Document AI Workbench
- The Future of Documents - YouTube Playlist
- Documentation Document AI
- Bibliothèque cliente Python Document AI
- Exemples Document AI
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.