Tutoriel : créer un pipeline de traitement de documents avec Document AI¶
Introduction¶
Avec Document AI, vous pouvez traiter des documents de différents formats et extraire des informations à la fois des paragraphes à forte teneur en texte et des images contenant du texte, telles que des logos, du texte manuscrit (signatures) ou des marques de contrôle. Ce tutoriel vous présente Document AI en configurant les objets et privilèges requis, et en créant une version intermédiaire du modèle Document AI à utiliser dans un pipeline de traitement.
Ce tutoriel utilise l’interface Web de Snowsight. Pour les étapes nécessitant l’utilisation de SQL, vous pouvez utiliser n’importe quel client Snowflake capable d’exécuter SQL.
Ce que vous apprendrez¶
Dans ce tutoriel, vous apprendrez à :
Configurez les objets et les privilèges nécessaires pour travailler avec Document AI.
Préparez une version intermédiaire du modèle Document AI en utilisant l’interface utilisateur de Document AI dans Snowsight pour extraire des données à partir de documents non structurés.
Créez un pipeline pour le traitement continu de nouveaux documents en zone de préparation, à l’aide d’une version intermédiaire du modèle Document AI, de flux et de tâches.
Conditions préalables¶
Les prérequis suivants sont nécessaires à la réalisation de ce tutoriel :
Vous devez vous connecter en tant qu’utilisateur ayant le rôle ACCOUNTADMIN qui est utilisé pour créer un rôle personnalisé utilisé dans ce tutoriel et accorder au nouveau rôle les privilèges requis.
Vous devez disposer d’un compte Snowflake dans l’une des régions commerciales prises en charge pour Document AI. Pour plus d’informations sur les régions prises en charge, voir Disponibilité de Document AI.
Vous devez disposer d’un entrepôt prêt à être utilisé avec Document AI. Pour plus d’informations sur la sélection d’un entrepôt, voir Détermination de la taille optimale d’un entrepôt pour Document AI.
Configurer les objets et privilèges requis¶
Dans cette section, vous allez :
Créer une base de données et un schéma pour contenir la version intermédiaire du modèle Document AI.
Créer un rôle personnalisé pour préparer la version intermédiaire du modèle Document AI et d’un pipeline de traitement des documents.
Accorder les privilèges requis au rôle personnalisé.
Créer une base de données, un schéma et un rôle personnalisé¶
Pour créer une base de données, un schéma et un rôle pour travailler avec Document AI, procédez comme suit :
Créez une base de données et un schéma dans lequel créer une version intermédiaire du modèle Document AI :
CREATE DATABASE doc_ai_db; CREATE SCHEMA doc_ai_db.doc_ai_schema;
Créez le rôle personnalisé
doc_ai_role
pour préparer la version intermédiaire du modèle Document AI et pour créer des pipelines de traitement :USE ROLE ACCOUNTADMIN; CREATE ROLE doc_ai_role;
Accorder les privilèges requis¶
Pour accorder les privilèges requis pour travailler avec Document AI, procédez comme suit :
Accordez le rôle de base de données SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR au rôle
doc_ai_role
:GRANT DATABASE ROLE SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR TO ROLE doc_ai_role;
Accordez des privilèges d’utilisation et d’exploitation de l’entrepôt au rôle
doc_ai_role
:GRANT USAGE, OPERATE ON WAREHOUSE <your_warehouse> TO ROLE doc_ai_role;
Accordez les privilèges d’utilisation de la base de données et du schéma que vous avez créés dans
doc_ai_role
:GRANT USAGE ON DATABASE doc_ai_db TO ROLE doc_ai_role; GRANT USAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
Accordez le privilège de création de zone de préparation sur le schéma au rôle
doc_ai_role
pour stocker les documents en vue de leur extraction :GRANT CREATE STAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
Accordez au rôle le privilège de créer des versions intermédiaires de modèles (instances de la classe DOCUMENT_INTELLIGENCE) au rôle
doc_ai_role
:GRANT CREATE SNOWFLAKE.ML.DOCUMENT_INTELLIGENCE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
Accordez au rôle
doc_ai_role
les privilèges nécessaires à la création d’un pipeline de traitement utilisant des flux et des tâches :GRANT CREATE STREAM, CREATE TABLE, CREATE TASK, CREATE VIEW ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role; GRANT EXECUTE TASK ON ACCOUNT TO ROLE doc_ai_role;
Accordez le rôle
doc_ai_role
à l’utilisateur du tutoriel pour qu’il l’utilise dans les prochaines étapes du tutoriel :GRANT ROLE doc_ai_role TO USER <your_user_name>;
Ce que vous avez appris dans cette section¶
Dans cette section, vous avez appris à :
Créer la base de données et le schéma qui contiendront une version intermédiaire du modèle Document AI.
Créer le rôle personnalisé
doc_ai_role
.Accorder les privilèges nécessaires au rôle
doc_ai_role
et à attribuer ce rôle à l’utilisateur du tutoriel.
Préparer une version intermédiaire du modèle Document AI¶
Dans cette section, vous préparerez une version intermédiaire du modèle Document AI en créant la version intermédiaire du modèle et en chargeant des documents pour tester le modèle.
La version intermédiaire du modèle Document AI représente un seul type de document. Pour ce tutoriel, vous allez créer une version intermédiaire du modèle pour extraire des informations à partir d’examens d’inspection. La version intermédiaire du modèle Document AI comprend le modèle, les valeurs de données à extraire et les documents chargés pour tester le modèle.
Créer une version intermédiaire du modèle Document AI¶
Pour créer une version intermédiaire du modèle Document AI, procédez comme suit :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez AI & ML » Document AI.
Sélectionnez un entrepôt.
Sélectionnez + Build.
Dans la boîte de dialogue qui s’affiche, saisissez
inspection_reviews
comme nom pour la version intermédiaire de votre modèle et sélectionnez l’emplacement (base de donnéesdoc_ai_db
et schémadoc_ai_schema
).Sélectionnez Create.
Charger des documents dans la version intermédiaire du modèle Document AI¶
Pour charger des documents dans la version intermédiaire du nouveau modèle Document AI, procédez comme suit :
Pour obtenir les documents nécessaires au tutoriel pour tester la version intermédiaire du modèle, téléchargez le fichier zip sur votre système de fichiers local.
Décompressez le contenu, qui comprend les documents PDF.
Dans la version intermédiaire du modèle
inspection_reviews
, sélectionnez l’onglet Build Details.Sélectionnez Upload documents.
Sélectionnez Browse ou faites glisser les documents que vous avez téléchargés.
Sélectionnez Upload.
Ce que vous avez appris dans cette section¶
Dans cette section, vous avez appris à :
Créez une version intermédiaire du modèle Document AI.
Chargez des documents pour tester la version intermédiaire du modèle Document AI.
Définir les valeurs des données et examiner les résultats¶
Dans cette section, vous définirez les valeurs des données en posant des questions en langage naturel au modèle Document AI. Vous examinerez ensuite les réponses fournies par le modèle.
Les valeurs des données sont les informations que vous souhaitez extraire des documents. Une valeur se compose d’un nom de valeur et d’une question posée en langage naturel.
Pour définir les valeurs de la version intermédiaire du modèle Document AI :
Dans la version intermédiaire du modèle
inspection_reviews
, sélectionnez l’onglet Build Details.Sélectionnez Define values.
Dans la vue Documents review, sélectionnez + Value.
Pour chaque document, saisissez les paires suivantes de noms de valeurs et de questions :
inspection_date
: quelle est la date de l’inspection ?inspection_grade
: quelle est la note ?inspector
: qui a effectué l’inspection ?list_of_units
: quelles sont les unités ?
Pour chaque document et chaque valeur de données, passez en revue les réponses fournies par le modèle :
Si la réponse est correcte, cochez la case.
Si la réponse est incorrecte, saisissez manuellement la valeur correcte.
Ce que vous avez appris dans cette section¶
Dans cette section, vous avez appris à :
Définissez les valeurs de données à extraire en posant au modèle des questions en langage naturel.
Examinez les résultats en confirmant ou en corrigeant les réponses fournies par le modèle.
Publier une version intermédiaire du modèle Document AI¶
Dans cette section, vous publierez la version intermédiaire du modèle Document AI afin de l’utiliser pour l’extraction dans les pipelines de traitement. La publication de la version intermédiaire du modèle permet d’utiliser la dernière version de la version intermédiaire du modèle dans la production.
Pour publier la version intermédiaire du modèle, procédez comme suit :
Dans la version intermédiaire du modèle
inspection_reviews
, sélectionnez l’onglet Build Details.Sous Model accuracy, sélectionnez Publish version.
Dans la boîte de dialogue qui apparaît, sélectionnez Publish pour confirmer.
Note
Si la précision du modèle et les résultats ne sont pas satisfaisants, vous pouvez éventuellement affiner le modèle pour l’améliorer. La mise au point ne fait pas partie de ce tutoriel. Pour plus d’informations sur l’évaluation et l’entraînement du modèle, voir Évaluer un modèle Document AI.
Ce que vous avez appris dans cette section¶
Dans cette section, vous avez publié la version intermédiaire du modèle Document AI afin de l’utiliser pour l’extraction dans les pipelines de traitement.
Créer un pipeline de traitement des documents¶
Dans cette section, vous allez créer un pipeline de traitement en utilisant la version intermédiaire du modèle Document AI déjà préparée, les flux et les tâches. Le pipeline extraira les informations des nouveaux documents d’inspection stockés dans une zone de préparation interne.
Pour créer un pipeline de traitement :
Configurez le pipeline à l’aide de flux et de tâches.
Chargez de nouveaux documents dans une zone de préparation interne.
Affichez les informations extraites.
Configurer le pipeline de traitement¶
Créez une zone de préparation
my_pdf_stage
interne pour stocker les documents :CREATE OR REPLACE STAGE my_pdf_stage DIRECTORY = (ENABLE = TRUE) ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Créez un flux
my_pdf_stream
sur une zone de préparationmy_pdf_stage
:CREATE STREAM my_pdf_stream ON STAGE my_pdf_stage;
Actualisez les métadonnées de la table du répertoire qui stockera les fichiers de documents en zone de préparation :
ALTER STAGE my_pdf_stage REFRESH;
Spécifiez la base de données et le schéma :
USE DATABASE doc_ai_db; USE SCHEMA doc_ai_schema;
Créez une table
pdf_reviews
pour stocker les informations relatives aux documents (telles quefile_name
) et les données à extraire des documents PDF :CREATE OR REPLACE TABLE pdf_reviews ( file_name VARCHAR, file_size VARIANT, last_modified VARCHAR, snowflake_file_url VARCHAR, json_content VARCHAR );
La colonne
json_content
comprendra les informations extraites au format JSON.Créez une tâche
load_new_file_data
pour traiter les nouveaux documents dans la zone de préparation :CREATE OR REPLACE TASK load_new_file_data WAREHOUSE = <your_warehouse> SCHEDULE = '1 minute' COMMENT = 'Process new files in the stage and insert data into the pdf_reviews table.' WHEN SYSTEM$STREAM_HAS_DATA('my_pdf_stream') AS INSERT INTO pdf_reviews ( SELECT RELATIVE_PATH AS file_name, size AS file_size, last_modified, file_url AS snowflake_file_url, inspection_reviews!PREDICT(GET_PRESIGNED_URL('@my_pdf_stage', RELATIVE_PATH), 1) AS json_content FROM my_pdf_stream WHERE METADATA$ACTION = 'INSERT' );
Notez que les tâches nouvellement créées sont automatiquement suspendues.
Lancez la tâche nouvellement créée :
ALTER TASK load_new_file_data RESUME;
Note
Document AI ne prend pas en charge les tâches sans serveur.
Chargement de nouveaux documents dans une zone de préparation interne¶
Pour obtenir les documents nécessaires au tutoriel, téléchargez le fichier zip sur votre système de fichiers local.
Décompressez le contenu, qui comprend les fichiers PDF.
Dans Snowsight, sélectionnez Data » Databases.
Sélectionnez la base de données
doc_ai_db
, le schémadoc_ai_schema
et la zone de préparationmy_pdf_stage
.Sélectionnez + Files.
Dans la boîte de dialogue Upload Your Files qui apparaît, sélectionnez les fichiers que vous venez de télécharger.
Sélectionnez Upload.
Afficher les informations extraites¶
Après avoir mis en zone de préparation les documents, voyez les informations extraites des nouveaux documents :
SELECT * FROM pdf_reviews;
Créez une table
pdf_reviews_2
pour analyser les informations extraites dans des colonnes distinctes :CREATE OR REPLACE TABLE doc_ai_db.doc_ai_schema.pdf_reviews_2 AS ( WITH temp AS ( SELECT RELATIVE_PATH AS file_name, size AS file_size, last_modified, file_url AS snowflake_file_url, inspection_reviews!PREDICT(get_presigned_url('@my_pdf_stage', RELATIVE_PATH), 1) AS json_content FROM directory(@my_pdf_stage) ) SELECT file_name, file_size, last_modified, snowflake_file_url, json_content:__documentMetadata.ocrScore::FLOAT AS ocrScore, f.value:score::FLOAT AS inspection_date_score, f.value:value::STRING AS inspection_date_value, g.value:score::FLOAT AS inspection_grade_score, g.value:value::STRING AS inspection_grade_value, i.value:score::FLOAT AS inspector_score, i.value:value::STRING AS inspector_value, ARRAY_TO_STRING(ARRAY_AGG(j.value:value::STRING), ', ') AS list_of_units FROM temp, LATERAL FLATTEN(INPUT => json_content:inspection_date) f, LATERAL FLATTEN(INPUT => json_content:inspection_grade) g, LATERAL FLATTEN(INPUT => json_content:inspector) i, LATERAL FLATTEN(INPUT => json_content:list_of_units) j GROUP BY ALL );
Affichez la sortie :
SELECT * FROM pdf_reviews_2;
La table utilise la fonction FLATTEN pour analyser le fichier json_content
JSON en colonnes distinctes afin d’en faciliter la vue.
La table contient les valeurs des données (telles que inspection_grade_value
, inspection_date_value
) qui ont été définies lorsque la version intermédiaire du modèle a été préparée pour les documents d’inspection, ainsi que les scores de confiance correspondants (inspection_grade_score
, inspection_date_score
).
Ce que vous avez appris dans cette section¶
Dans cette section, vous avez appris à :
Créez une zone de préparation interne pour stocker les nouveaux documents.
Créez un flux et une tâche nécessaires à la préparation d’un pipeline de traitement.
Chargez de documents dans une zone de préparation interne.
Visualisez les informations extraites dans une table.
En savoir plus¶
Félicitations ! Vous avez terminé ce tutoriel. Vous êtes maintenant prêt à travailler avec Document AI sur vos propres cas d’utilisation.
En cours de route, vous avez appris à :
Configurer les objets et privilèges requis pour travailler avec Document AI.
Créez une version intermédiaire du modèle Document AI.
Charger des documents sur la version intermédiaire du modèle Document AI pour tester le modèle.
Définir les valeurs de données à extraire en posant au modèle des questions en langage naturel.
Examiner les résultats en confirmant ou en corrigeant les réponses fournies par le modèle.
Publier la version intermédiaire du modèle Document AI afin de l’utiliser pour l’extraction dans les pipelines de traitement.
Préparer un pipeline de traitement de documents en créant un flux et une tâche et en utilisant la version intermédiaire du modèle Document AI conçu pour extraire les informations des nouveaux documents.
Ressources supplémentaires¶
Poursuivez l’entraînement en utilisant les ressources suivantes :