チュートリアル: Document AI でドキュメント処理パイプラインを作成する¶
概要¶
Document AI を使用すると、さまざまな形式のドキュメントを処理し、テキストの多い段落や、ロゴ、手書きテキスト(署名)、チェックマークなどのテキストを含む画像の両方から情報を抽出できます。このチュートリアルでは、必要なオブジェクトと権限を設定し、処理パイプラインで使用する Document AI モデルビルドを作成することで、 Document AI を紹介します。
このチュートリアルでは Snowsight ウェブインターフェイスを使用します。SQLを使用する必要がある手順については、SQLの実行をサポートする任意のSnowflakeクライアントを使用できます。
学習内容¶
このチュートリアルでは、次の方法を学習します。
Document AI で作業するために必要なオブジェクトと権限を設定します。
構造化されていないドキュメントからデータを抽出するために、 Snowsight の Document AI ユーザーインターフェイスを使用して、 Document AI モデルビルドを準備します。
Document AI モデルの構築、ストリームとタスクを使用して、ステージで新しいドキュメントを継続的に処理するパイプラインを作成します。
前提条件¶
このチュートリアルを完了するには、以下の前提条件が必要です。
このチュートリアルで使用するカスタムロールを作成し、新しいロールに必要な権限を付与するために使用されるACCOUNTADMINロールを持つユーザーとして接続する必要があります。
Document AI でサポートされているコマーシャルリージョンのいずれかの Snowflake アカウントが必要です。サポートされている地域の詳細については、 Document AI 可用性 をご参照ください。
Document AI を使ってウェアハウスを準備する必要があります。ウェアハウスの選択については、 Document AI に対して最適なウェアハウスサイズを決定する をご参照ください。
必要なオブジェクトと権限の設定¶
このセクションでは、以下を実行します。
Document AI モデルビルドを格納するデータベースとスキーマを作成します。
Document AI モデルビルドとドキュメント処理パイプラインを準備するカスタムロールを作成します。
カスタムロールに必要な権限を付与します。
データベース、スキーマ、カスタムロールを作成する¶
データベース、スキーマ、および Document AI を操作するロールを作成するには、以下を実行します。
Document AI モデルビルドを作成するためのデータベースとスキーマを作成します。
CREATE DATABASE doc_ai_db; CREATE SCHEMA doc_ai_db.doc_ai_schema;
Document AI モデルビルドを準備し、処理パイプラインを作成するために、カスタムロール
doc_ai_role
を作成します。USE ROLE ACCOUNTADMIN; CREATE ROLE doc_ai_role;
必要な権限の付与¶
Document AI で作業するために必要な権限を付与するには、イカを実行します。
SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR データベースロールを
doc_ai_role
ロールに付与します。GRANT DATABASE ROLE SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR TO ROLE doc_ai_role;
doc_ai_role
ロールにウェアハウスの使用権限と操作権限を付与します。GRANT USAGE, OPERATE ON WAREHOUSE <your_warehouse> TO ROLE doc_ai_role;
作成したデータベースとスキーマを使用する権限を
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;
doc_ai_role
ロールにスキーマの作成ステージ権限を付与し、抽出用のドキュメントを保存します。GRANT CREATE STAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
doc_ai_role
ロールにモデルビルド( DOCUMENT_INTELLIGENCE クラスのインスタンス)を作成する権限を与えます。GRANT CREATE SNOWFLAKE.ML.DOCUMENT_INTELLIGENCE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
doc_ai_role
ロールに、ストリームとタスクを使用して処理パイプラインを作成するために必要な権限を付与します。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;
チュートリアルの次のステップで使用するために、
doc_ai_role
をチュートリアルユーザーに付与します。GRANT ROLE doc_ai_role TO USER <your_user_name>;
このセクションで学んだこと¶
このセクションでは、次の方法を学びました:
Document AI モデルビルドを含むデータベースとスキーマを作成する。
doc_ai_role
カスタムロールを作成する。doc_ai_role
ロールに必要な権限を付与し、そのロールをチュートリアルユーザーに付与する。
Document AI モデルビルドを準備する¶
このセクションでは、 Document AI モデルビルドを作成し、モデルをテストするためのドキュメントをアップロードすることで、モデルビルドを準備します。
Document AI モデルビルドは、ドキュメントの単一の型を表します。このチュートリアルでは、検査レビューから情報を抽出するためのモデルビルドを作成します。 Document AI モデルビルドには、モデル、抽出されるデータ値、モデルをテストするためにアップロードされるドキュメントが含まれます。
Document AI モデルビルドを作成する¶
Document AI モデルビルドを作成するには、以下を実行します。
Snowsight にサインインします。
ナビゲーションメニューで AI & ML » Document AI を選択します。
ウェアハウスを選択します。
+ Build を選択します。
表示されるダイアログで、モデルビルドの名前として
inspection_reviews
を入力し、場所 (doc_ai_db
データベースとdoc_ai_schema
スキーマ)を選択します。Create を選択します。
Document AI モデルビルドへドキュメントをアップロードする¶
新しく作成された Document AI モデルビルドにドキュメントをアップロードするには、次のようにします。
モデルビルドをテストするためのチュートリアルに必要なドキュメントを入手するには、 zipファイル をローカルファイルシステムにダウンロードしてください。
PDFドキュメントを含むコンテンツを解凍します。
inspection_reviews
モデルビルドで、 Build Details タブを選択します。Upload documents を選択します。
Browse を選択するか、ダウンロードしたドキュメントをドラッグします。
Upload を選択します。
このセクションで学んだこと¶
このセクションでは、次の方法を学びました:
Document AI モデルビルドを作成します。
Document AI モデルビルドをテストするためのドキュメントをアップロードします。
データ値を定義して結果をレビューする¶
このセクションでは、 Document AI モデルに自然言語で質問して、データ値を定義します。その後、モデルが提供する回答を確認します。
データ値は、ドキュメントから抽出したい情報です。値は、値の名前と自然言語で尋ねられた質問で構成されます。
Document AI モデルビルドの値を定義するには:
inspection_reviews
モデルビルドで、 Build Details タブを選択します。Define values を選択します。
Documents review ビューで、 + Value を選択します。
各ドキュメントについて、以下の値名と質問のペアを入力します。
inspection_date
:検査日を教えてください。inspection_grade
:グレードは何ですか?inspector
:誰が検査を行ったのですか?list_of_units
:すべてのユニットは何ですか?
各ドキュメントとデータ値について、モデルが提供する回答を確認してください:
回答が正しければ、チェックマークを選択してください。
回答が正しくない場合は、正しい値を手入力してください。
このセクションで学んだこと¶
このセクションでは、次の方法を学びました:
自然言語でモデルに質問して、抽出するデータ値を定義します。
モデルが提供した答えを確認または訂正して、結果を確認します。
Document AI モデルビルドを公開する¶
このセクションでは、 Document AI モデルビルドを公開し、処理パイプラインでの抽出に使用します。モデルビルドを公開することで、プロダクションで最新バージョンのモデルビルドを使用することができます。
モデルビルドを公開するには、以下を実行します。
inspection_reviews
モデルビルドで、 Build Details タブを選択します。Model accuracy の下で、 Publish version を選択します。
表示されるダイアログで、 Publish を選択して確定します。
注釈
モデルの精度と結果が満足のいくものでない場合は、オプションでモデルを微調整して改善することができます。微調整はこのチュートリアルでは行いません。モデルの評価とトレーニングの詳細については、 Document AI モデルの評価 をご参照ください。
このセクションで学んだこと¶
このセクションでは、 Document AI モデルビルドを公開し、処理パイプラインでの抽出にモデルビルドを使用します。
ドキュメント処理パイプラインを作成する¶
このセクションでは、すでに用意されている Document AI モデルビルド、ストリーム、タスクを使用して、処理パイプラインを作成します。パイプラインは、内部ステージングに保存された新しい検査ドキュメントから情報を抽出します。
処理パイプラインを作成するには
ストリームとタスクを使用してパイプラインを設定します。
新しいドキュメントを内部ステージにアップロードします。
抽出された情報を表示します。
処理パイプラインを設定する¶
内部
my_pdf_stage
ステージを作成し、ドキュメントを保存します。CREATE OR REPLACE STAGE my_pdf_stage DIRECTORY = (ENABLE = TRUE) ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
my_pdf_stage
ステージにmy_pdf_stream
ストリームを作成する:CREATE STREAM my_pdf_stream ON STAGE my_pdf_stage;
ステージングされたドキュメントファイルを格納するディレクトリテーブルのメタデータをリフレッシュします。
ALTER STAGE my_pdf_stage REFRESH;
データベースおよびスキーマを指定する:
USE DATABASE doc_ai_db; USE SCHEMA doc_ai_schema;
pdf_reviews
テーブルを作成し、ドキュメントに関する情報(file_name
など)と、 PDF ドキュメントから抽出するデータを格納します。CREATE OR REPLACE TABLE pdf_reviews ( file_name VARCHAR, file_size VARIANT, last_modified VARCHAR, snowflake_file_url VARCHAR, json_content VARCHAR );
json_content
列には、抽出された情報が JSON 形式で表示されます。ステージで新しいドキュメントを処理するために、
load_new_file_data
タスクを作成します。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' );
新しく作成されたタスクは自動的に中断されることに注意してください。
新しく作成したタスクを開始します。
ALTER TASK load_new_file_data RESUME;
注釈
ドキュメント AI は サーバーレスタスク をサポートしていません。
内部ステージングへ新規ドキュメントをアップロードする¶
チュートリアルに必要なドキュメントを入手するには、 zipファイル をローカルファイルシステムにダウンロードしてください。
PDFファイルを含むコンテンツを解凍します。
Snowsightで、 Data » Databases を選択します。
doc_ai_db
データベース、doc_ai_schema
、my_pdf_stage
ステージを選択します。+ Files を選択します。
表示される Upload Your Files ダイアログで、先ほどダウンロードしたファイルを選択します。
Upload を選択します。
抽出された情報を表示する¶
ステージにドキュメントをアップロードした後、新しいドキュメントから抽出された情報を表示します。
SELECT * FROM pdf_reviews;
pdf_reviews_2
テーブルを作成し、抽出された情報を個別の列で分析します。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 );
出力を表示します。
SELECT * FROM pdf_reviews_2;
このテーブルでは、 FLATTEN 関数を使用して、 json_content
JSON を表示しやすいように列ごとに解析しています。
このテーブルには、検査ドキュメント用にモデルビルドを作成した際に定義されたデータ値( inspection_grade_value
、 inspection_date_value
など)と、それに対応する信頼度スコア(inspection_grade_score
、 inspection_date_score
)が含まれています。
このセクションで学んだこと¶
このセクションでは、次の方法を学びました:
新しいドキュメントを保存する内部ステージを作成します。
処理パイプラインの準備に必要なストリームとタスクを作成します。
内部ステージにドキュメントをアップロードします。
抽出された情報をテーブルに表示します。
詳細¶
おめでとうございます。このチュートリアルを修了しました。これで、 Document AI を使って独自のユースケースに取り組み始める準備が整いました。
その過程で、次の方法を学習しました:
Document AI で作業するために必要なオブジェクトと権限を設定します。
Document AI モデルビルドを作成します。
Document AI モデルビルドにドキュメントをアップロードしてモデルをテストします。
自然言語でモデルに質問することで、抽出するデータ値を定義します。
モデルが提供する答えを確認したり修正したりして、結果を再検討します。
Document AI モデルビルドを公開して、処理パイプラインでの抽出にモデルビルドを使用します。
ストリームとタスクを作成してドキュメント処理パイプラインを準備し、 Document AI モデルビルドを使用して新しいドキュメントから情報を抽出します。
追加のリソース¶
以下のリソースを使って学習を続行します。