Snowflake Document AIで契約書・請求書PDFからデータを抽出する手順

Snowflake Document AIで契約書・請求書PDFからデータを抽出する手順のサムネイル Snowflake
この記事をシェアする𝕏B!FacebookLINEPocket

はじめに:PDFのデータ入力、まだ手作業ですか?

こんにちは!請求書や契約書のPDFを開いて、金額や日付を1つずつExcelに転記する作業…正直、しんどいですよね。Snowflake Document AI を使えば、PDFファイルから必要な項目をAIが自動で読み取り、SQLで扱えるテーブルとして取り出せます。

この記事では、Document AIとは何か、どんな手順でPDFからデータを抽出するのかを、初心者の方にも分かりやすく解説していきます。読み終わるころには「これ、うちの会社でも使えそう!」と思えるはずです。

Snowflake Document AIってなに?

Document AI は、PDFや画像などの非構造化ドキュメントから、AI(大規模言語モデルベースの「Arctic-TILT」というモデル)を使ってテキストや値を抽出するSnowflakeの機能です。特徴を3つあげると…

  • 質問形式で抽出指示:「請求金額はいくら?」と日本語で聞く感覚で項目を定義できます
  • 少量データでファインチューニング可能:数件のサンプルをレビューするだけで精度が上がります
  • SQLから呼び出せる:抽出ロジックを関数化して、通常のテーブル操作と同じように使えます

同じCortex系の機能である Snowflake Cortex EXTRACT_ANSWERで文書から自動で答えを抽出しよう はテキストデータが対象ですが、Document AIは PDFや画像そのもの を扱える点が大きな違いです。

抽出までの全体フロー

Document AIの使い方は、ざっくり次の4ステップです。

  1. Snowsightビルド(モデル) を作成
  2. サンプルPDFをアップロードして 抽出したい項目を質問形式で定義
  3. 数件レビュー&公開して モデルをパブリッシュ
  4. SQLから PREDICT関数 を呼び出して本番PDFに適用

ステップ1:Snowsightでビルドを作成

Snowsightの左メニューから「AI & ML」→「Document AI」を開き、「+ Build」をクリックします。名前(例: invoice_extractor)とデータベース・スキーマを指定して作成しましょう。

ステップ2:質問を定義してサンプルをアップロード

ビルドの編集画面で、抽出したい項目を 質問の形 で登録します。たとえば請求書なら…

  • invoice_number: 請求書番号は何ですか?
  • total_amount: 合計金額(税込)はいくらですか?
  • issue_date: 発行日はいつですか?
  • vendor_name: 請求元の会社名は?

その後、サンプルPDFを20〜50件アップロードし、AIの回答を画面で確認しながら間違いを訂正します。これがいわゆる「ファインチューニング」の役割を果たします。

ステップ3:モデルをパブリッシュ

レビューが終わったら「Publish version」をクリック。これでSQLから呼び出せる関数 your_build_name!PREDICT が使えるようになります。

ステップ4:SQLでPDFを推論

本番のPDFはステージ(内部ステージ)に置いておきます。GET_PRESIGNED_URL でURL化し、PREDICT関数に渡すのが基本パターンです。

-- ステージにPDFを置いた後の例
SELECT
  relative_path,
  invoice_extractor!PREDICT(
    GET_PRESIGNED_URL(@my_pdf_stage, relative_path), 1
  ) AS extracted
FROM DIRECTORY(@my_pdf_stage);

結果はJSON(VARIANT型)で返ってくるので、必要な項目をフラット化して取り出します。

SELECT
  relative_path,
  extracted:invoice_number[0].value::STRING  AS invoice_no,
  extracted:total_amount[0].value::NUMBER    AS total,
  extracted:issue_date[0].value::DATE        AS issued_at,
  extracted:invoice_number[0].score::FLOAT   AS confidence
FROM (
  SELECT relative_path,
         invoice_extractor!PREDICT(
           GET_PRESIGNED_URL(@my_pdf_stage, relative_path), 1) AS extracted
  FROM DIRECTORY(@my_pdf_stage)
);

score(信頼度)も一緒に返るので、「0.8未満は人間が再確認する」といった運用ルールも作りやすいですね。

こんなユースケースで活躍します

  • 請求書の自動仕訳:経理部門の入力作業を削減できます
  • 契約書のメタデータ管理:契約期間・更新日を一覧化してアラート通知につなげられます
  • 納品書の照合:発注データとの差分チェックを自動化できます
  • 申込書のデータ化:紙ベースのフォームをDB登録する流れに乗せられます

使うときの注意点

  • Document AIは特定リージョンでのみ利用可能なので、利用前に対応リージョンを確認しましょう
  • PDFサイズや1ファイルあたりのページ数に上限があります(数十ページ程度が目安です)
  • 料金はクレジット消費型で、ページ数とモデル種別に応じて課金されます。コストは ACCOUNT_USAGE ビューで確認できます
  • 機密書類を扱う場合は、ステージへのアクセス権限(RBAC)を必ず絞り込みましょう

まとめ

Snowflake Document AIは、これまで人手に頼っていたPDFのデータ入力作業を、SQLベースでサクッと自動化できる強力な機能です。Snowsightで質問を定義してPublish、あとはPREDICT関数を呼ぶだけ…という驚くほどシンプルな手順でスタートできます。

まずは社内に転がっている請求書や申込書を10件ほど集めて、試しにビルドを作ってみるのがおすすめです。「ここまで自動化できるんだ!」という感動をぜひ味わってみてください。

参考リンク

関連記事

この記事をシェアする𝕏B!FacebookLINEPocket