ホームページ >ウェブフロントエンド >jsチュートリアル >非構造化メールを実用的なデータに変える

非構造化メールを実用的なデータに変える

DDD
DDDオリジナル
2024-12-07 10:47:141031ブラウズ

Turn Unstructured Emails to Actionable Data

このビルドでは、物流業界向けに設計されたツールを構築しています。このツールは、電子メールの PDF 添付ファイル (見積依頼や配送情報シートなど) からの構造化データの抽出を自動化し、このデータをワークフローの他の場所で使用できるようにします。

理解を容易にするために、さまざまな都市間で壊れやすい電子機器を輸送することを専門とする架空の会社である Nova Logistics を例として使用してみましょう。

Nova Logistics では、顧客は電子メールで都市間での商品の配送の見積もりを依頼します。通常、必要な配送の詳細がすべて含まれた PDF が添付されます。現在、このプロセスは手動です。Nova の担当者は各メールを開き、添付の PDF をダウンロードして読み、商品名や数量などの重要な情報を抽出してから送料を計算する必要があります。

特に 1 日に複数の電子メールが送信され、それぞれに長い PDF ドキュメントが含まれている場合、これには数時間かかることがあります。

この記事では、メールの取得と PDF データの抽出から、抽出された情報の Google スプレッドシートへの送信まで、このプロセス全体を自動化するツールの構築について説明します。

仕組み

  1. メールのポーリング: まず、受信箱から新しいメールを定期的にチェックするシステムをセットアップします。メールが見つかると、PDF 添付ファイルがダウンロードされ、メールにラベルが適用され、今後再度ポーリングされないようになります。
  2. Documind でデータを抽出: PDF を URL として Documind に渡します。これは、AI を使用してドキュメントから構造化データを抽出するオープンソース パッケージです。これにより、商品名、数量、配送詳細、重量などの情報が得られます。
  3. データの保存と使用: 最後に、抽出したデータを Google スプレッドシート に送信します。これにより、簡単に表示、追跡し、さらなる計算に使用できるようになります。

必要なもの

このツールを構築するには、次のパッケージが必要です:

  • Gmail API: 受信トレイからメールを取得します。
  • Supabase: PDF をアップロードして保存します。
  • Documind: PDF から構造化データを抽出します。
  • Google Sheets API: 抽出されたデータを保存し、見積もりを計算します。
  • Nango: ユーザー認証を管理するため

ステップ 1: 初期セットアップ

コードを書き始める前に、いくつかのことを設定する必要があります。心配しないで;各ステップについてご案内します。

1.1 Node.js をインストールする

コードを実行するには Node.js を使用します。 Node.js がインストールされていない場合は、Node.js Web サイトにアクセスして最新バージョンをダウンロードしてください。

1.2 必要なライブラリをインストールする

Node.js がインストールされたら、Gmail、Google Sheets、Supabase、Documind とのやり取りに役立つパッケージをインストールする必要があります。

  1. ターミナル または コマンド プロンプト を開きます。
  2. 次のコマンドを実行して、プロジェクト用の新しいフォルダーを作成します。

    mkdir nova
    cd nova
    
  3. プロジェクトを初期化します:

    npm init -y
    
  4. 必要なパッケージをインストールします:

    npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
    

1.3 API 認証情報を取得する

コードの記述を開始する前に、Google API (Gmail と Google Sheets)、Supabase、および Documind を使用するためのすべての認証情報を設定して取得する必要があります。それぞれのクイックガイドは次のとおりです:

Google API

  1. Google Cloud コンソールに移動します。
  2. プロジェクト リストからプロジェクトを選択するか、新しいプロジェクトを作成します
  3. プロジェクトで Gmail API と Google Sheets API を有効にします。
    • Cloud Console の API ライブラリに移動し、「Gmail API」と「Google Sheets API」を検索します。それぞれをクリックして有効にします。
  4. 同意画面を設定します:
    • 「API とサービス」に移動 > OAuth 同意画面
    • アプリに名前を付けます。
    • 対象ユーザーのタイプとして「外部」を選択します。
    • その他の必須フィールドに入力します。
  5. OAuth 2.0 認証情報を作成します。
    • 「API とサービス」に移動 >資格情報。
    • [認証情報の作成] をクリックし、OAuth クライアント ID を選択します。
    • アプリケーションの種類として「Web アプリケーション」を選択します。
    • クライアント ID とシークレットをコピーします。
  6. 複数のプラットフォームにわたるユーザーの OAuth を簡単に管理するために、Nango を使用しています。開始方法については、次のドキュメントを参照してください。
    • Nango にログインし、[新しい統合の構成] をクリックします。
    • 統合のリストで Google Mail を検索します。
    • コピーしたクライアント ID とシークレットを追加します。
    • スコープのフィールドに、 https://www.googleapis.com/auth/gmail.readonly 、 https://www.googleapis.com/auth/gmail.modify 、および https://www.googleapis を追加します。 com/auth/gmail.labels
    • 統合のコールバック URL をコピーして保存します。
    • Google コンソールの [認証情報] に戻り、コールバック URL を承認されたリダイレクト URI として追加します。

Google Sheets API も使用しているため、ステップ 6 を実行するだけで Nango で別の統合を作成できます。 Google スプレッドシート統合を検索し、コピーしたものと同じクライアント ID とシークレットを使用します。スコープのスペースに、https://www.googleapis.com/auth/spreadsheets

を追加します。

アプリを公開するには、Google コンソールの OAuth 同意画面に移動し、[公開] ボタンをクリックします。

スーパーベース

  1. Supabase で無料アカウントにサインアップしてください。
  2. PDF を保存するための新しい プロジェクトバケット を作成します。
  3. プロジェクト設定から API URLAPI キー を取得します。

ステップ 2: コードを書く

次に、コードを少しずつ書いてみましょう。

2.1 環境変数を追加する

コード全体で使用されるすべての重要な変数を保存する .env ファイルを作成します。以下に例を示します:

mkdir nova
cd nova

コード内でこれらの変数を取得して使用する方法を詳しく説明します。

2.2 Gmail API を設定してメールを取得する

まず、Gmail API を使用して、「処理済み」ラベルのない添付ファイルを含むメールを取得します。

必要なアクセス トークンを取得するには、Nango を使用します。トークンの有効期限が切れた場合、トークンの更新が自動的に処理されるため、トークンのライフサイクルを自分で管理することを心配する必要はありません。

必要なのは次のとおりです:

  1. Nango の Gmail セットアップの 統合 ID
  2. アクセス トークンが必要なユーザーの 接続 ID
  3. あなたの Nango 秘密鍵

自分の Gmail アカウントを使用して、Nango UI から直接新しい接続を簡単に追加できます。秘密キーは、Nango ダッシュボードの環境設定セクションにあります。

npm init -y

わかりやすくするために、一度に結果を 5 件のメールに制限し、PDF が添付されたメールのみを取得するように具体的にフィルタリングします。これらから、処理のために最初の添付ファイルだけを取得します。添付ファイルをダウンロードした後、ラベルを適用してメールに処理済みのマークを付け、今後のポーリング サイクルで再度取得されないようにします。

2.2 Supabase へのアップロード

次に、ダウンロードした PDF を Supabase にアップロードする必要があります。コード内のバケット名を必ず自分のものに置き換えてください。

npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node

2.3 Documind を使用してデータを抽出する

PDF が Supabase に保存されたら、Documind を使用して関連データを抽出します。処理に OpenAI を利用するため、API キーが .env ファイルに追加されていることを確認してください。

Documind は、定義したスキーマを使用して、必要な構造化データを抽出します。スキーマ定義についてはすぐに説明しますが、詳細についてはドキュメントを参照してください。

SUPABASE_API_KEY=<Supabase API Key>
SUPABASE_URL=<Supabase URL>
OPENAI_API_KEY=<Open AI API Key>
NANGO_KEY=<Nango secret key>

2.4 抽出したデータを Google スプレッドシートに送信します

PDF からデータを抽出した後、Google スプレッドシートに送信します。

続行する前に、Google スプレッドシートが設定されていること、および Nango を介してアカウントとの接続が作成されていることを確認してください。まだお持ちでない場合は、こちらのテンプレートを使って始めてください。

mkdir nova
cd nova

ステップ 3: すべてをまとめる

個別の関数を記述したので、次はすべてをまとめる必要があります。

このステップでは、Documind が必要なデータを抽出するために使用するスキーマを定義します。このスキーマは、AI が PDF から関連情報を特定して構造化するのに役立ちます。

npm init -y

コードをテストする

完全なソース コードは、テスト用のサンプル PDF とともに GitHub で入手できます。ただし、独自のドキュメントを作成して使用することもできます。リポジトリのクローンを作成し、要件に合わせてコードを変更し、独自のユースケースで試してみるだけです。

以上が非構造化メールを実用的なデータに変えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。