TECH BLOG

エルカミーの技術ブログです

【Difyで作るシリーズ 7】 名刺から抽出した情報をNotionのデータベースに格納する

はじめに

Difyというサービスを聞いたことがあるけれど、「何ができるかわからない」、「どう使うのかわからない」などの理由で使ったことがない方は多いのではないでしょうか。

そのような方のために、「Dify で何ができるのか?や Dify を使った活用事例」を紹介する記事をシリーズ化していきます。

今回は第7回目で、前回のワークフローをより実用的なものにします。

具体的には、取得した会社名や氏名の情報を、Notionのデータベースに格納するワークフローを作成する方法について紹介します。

🙂
この記事の対象者
  • Dify という言葉を聞いたことがあるが、何ができるのかがわからない方
  • Dify を業務に取り入れたいと検討している方
事前準備
  • Dify へのサインアップ
  • OpenAI APIまたはGemini APIのAPIキーの取得
    • Gemini APIの場合
      1. ここにアクセスし、「APIキーを作成」を選択します。
      2. 「新しいプロジェクトでAPIキーを作成」を押します。
      3. APIキーをコピーします。
    • Open AI APIの場合
      • サインアップした後、こちらからAPIキーを作成し、保存します。
  • APIキーのセットアップ
環境
  • Chrome
  • Dify v0.11.2(2024年11月20日時点)

概要

完成イメージ
📌
イメージ
前提

サンプルの名刺として、以下を使用しました。

image block
  1. 左の「ローカルアップロード」から名刺の画像をアップロードし、「実行」を選択します。
  2. 右側に動画の要約が返ってきます。
    image block
  3. Notionのデータベースに、抽出した情報が格納されます。
    image block

上記のアプリを構築するためにワークフローを作る説明をします。

💡
ワークフローとは

一つ一つの処理を小さなブロック(ノード)としてつなぎ合わせて、一連のプロレスを自動化する機能です。

今回作成するワークフローのDifyの画面です。

image block

このワークフローは、以下のブロックで構成されます。

flowchart LR
	A[開始] --> B[パラメータ抽出<br>gpt-4o-mini]
	B --> C[HTTPリクエスト]
	C --> D[終了]
  1. 開始:名刺の画像を受け取ります。
  2. パラメータ抽出:OCR機能を利用して会社名、氏名、メールアドレス、親ドメインを抽出し、変数に格納します。
  3. HTTPリクエスト:抽出した情報をNotionのデータベースに格納します。
  4. 終了:ワークフローを終了します。

作業手順

ここからは、ワークフロー構築の手順について説明します。

手順
  1. Notionデータベースの準備
  2. ワークフローの新規作成
  3. 環境変数の設定
  4. ワークフロー作成画面上での作業
  5. ワークフローの動作確認
1. Notionデータベースの準備

インテグレーションを作成し、APIのシークレットキーを取得する

  1. Notionのインテグレーションにアクセスし、「新しいインテグレーション」を押します。
    image block
  2. インテグレーションの名前を入力し、「関連ワークスペース」を設定後、「保存」を選択します。

    インテグレーションの名前を名刺情報DBとしています。

    image block
  3. 「インテグレーション設定」を選択します。
    image block
  4. 「内部インテグレーションシークレット」の「表示」を押します。
    image block

    APIのシークレットキーが表示されます。後述の「環境変数の設定」で使用しますので、控えておきます。

  5. Notionでページを作成し、「テーブル」を選択し、テーブルを追加します。
    image block
  6. 「ビューのリンクをコピー」を選択します。

    下記の用のURLがコピーされます。<DATABESE_ID>を後述の「環境変数の設定」で使用しますので、控えておきます。

    https://www.notion.so/<DATABASE_ID>?v=XXX&pvs=4

    image block

  7. 右上の三点リーダーを選択し、「接続先」を選択します。

    先程作成した「名刺情報DB」を選択します。

    image block
  8. データベースのプロパティを設定します。下記の表のようにプロパティを追加します。
    プロパティ名 プロパティの種類 取得したい情報
    Name タイトル フルネーム
    company_name テキスト 会社名または所属
    last_name テキスト 苗字
    first_name テキスト 名前
    mail メール メールアドレス
    parent_domain URL 親ドメイン
    phone_number 電話 電話番号
    department テキスト 部署
    post テキスト 役職

    追加後は画像のようになります。

    image block

これでNotionの準備は完成です。

2. ワークフローの新規作成
  1. 最初の画面の「最初から作成」を選択します。
    image block
  2. 「ワークフロー」を選択し、「アプリのアイコンと名前」を入力してから「作成する」を選択します。
    image block

3. 環境変数の設定
  1. Dify ワークフローの右上の「ENV」ボタンをクリックし、「環境変数を追加」を選択します。
  2. 「名前」に「NOTION_INTEGRATION_SECRET_KEY」と入力し、先程取得したAPIのシークレットキーを入力し、「保存」を選択します。
    image block
  3. 同様に、「NOTION_DATABASE_ID」に先程取得したDATABESE_IDを入力します。
    image block
4. ワークフロー作成画面上での作業
  1. 「開始」ノードを選択します。

    「入力フィールド」の「+」ボタンを押します。

    image block

    下記の表のように各項目を選択または入力した後、「保存」を選択します。

    項目 備考
    フィールドタイプ 単一ファイル 複数のファイルをアップロードすることもできます。
    変数名 image 任意の値を入力します。
    ラベル名 image 任意の値を入力します。
    サポートされたファイルタイプ 画像 アップロードするファイルの種類を指定します。
    アップロードされたファイルのタイプ ローカルアップロード 画像をローカルからアップロードするか、画像のURLを入力するか、その両方を選べます。
    image block
  2. 「パラメータ抽出」ノードを追加します。
    image block

    「モデル」を「gpt-4o-mini」に設定し、「入力変数」に「開始」の「image」を選択します。

    image block

    「ビジョン」を有効にし、変数に「開始」の「image」を設定します。

    image block

    名刺から取得したい情報をパラメータとして追加します。

    「パラメータを抽出」の「+」ボタンを押します。

    「名前」に「full_name」、「説明」に「氏名」と入力し、「追加」を選択します。

    image block

    同様に、下記の表のを参考にパラメータを追加します。

    右の画像のように追加されているか確認します。

    名前(パラメータ名) 説明
    full_name 氏名
    company_name 会社名または所属
    mail メールアドレス
    parent_domain 親ドメイン
    last_name 苗字
    first_name 名前
    post 役職
    telephone_number 電話番号
    department 部署
    image block

    「指示」の欄に下記のようなプロンプトを入力します。

    次の情報をテキストから抽出してください。各項目は、括弧内のラベルで出力してください:
    1. 会社名または所属(日本語の場合は日本語で記載、company_name)
    2. 氏名(苗字、名前を分けて抽出、full_name)
    3. メールアドレス(mail)
    4. メールアドレスから抽出した親ドメイン(parent_domain)
    5. 役職( 「社長」、「部長」、「リーダー」、「マネージャー」など、post)
    6. 電話番号(telephone_number)
    7. 部署(department)

    すべての項目がテキストに含まれていない場合は、取得可能な情報のみを抽出してください。

    image block
  3. 「HTTPリクエスト」ノードを追加し、「API」で「POST」を選択します。

    URLに下記のURLを設定します。

    https://api.notion.com/v1/pages

    image block

    「API」の「認証なし」を選択します。

    「認証タイプ」に「APIキー」と「Bearer」、「APIキー」に環境変数の「NOTION_INTEGRATION_SECRET_KEY」を選択し、「保存」を選択します。

    image block

    「ヘッダー」を下記の表のように入力します。

    キー
    Notion-Version 2022-06-28
    Content-Type application/json
    image block

    「ボディ」の「JSON」を選択し、下記のJSONコードをコピーしペーストします。

    image block
    JSONコード
    {
        "parent": {
            "database_id": ""
        },
        "properties": {
            "company_name": {
                "rich_text": [
                    {
                        "text": {
                            "content": ""
                        }
                    }
                ]
            },
            "department": {
                "rich_text": [
                    {
                        "text": {
                            "content": ""
                        }
                    }
                ]
            },
            "first_name": {
                "rich_text": [
                    {
                        "text": {
                            "content": ""
                        }
                    }
                ]
            },
            "last_name": {
                "rich_text": [
                    {
                        "text": {
                            "content": ""
                        }
                    }
                ]
            },
            "mail": {
                "email": ""
            },
            "Name": {
                "title": [
                    {
                        "text": {
                            "content": ""
                        }
                    }
                ]
            },
            "parent_domain": {
                "url": ""
            },
            "phone_number": {
                "phone_number": ""
            },
            "post": {
                "rich_text": [
                    {
                        "text": {
                            "content": ""
                        }
                    }
                ]
            }
        }
    }

    「database_id」の「””」の間に「/」を入力し、「NOTION_DATABASE_ID」を選択します。

    image block

    同様に残りの各項目も、下記の表を参考に設定します。

    プロパティ名 指定するパラメータ
    company_name {x}company_name
    department {x}department
    first_name {x}first_name
    last_name {x}last_name
    email {x}mail
    Name {x}full_name
    parent_domain {x}parent_domain
    phone_number {x}telephone_number
    post {x}post
  4. 「終了」ノードを追加します。
    image block

以上でワークフローが作成できました。

5. ワークフローの動作確認
  1. 「公開する」を選択し、「アプリを実行」を選択します。
    image block

    アプリを実行します。

  2. Notionのデータベースに抽出した情報が格納できました。
    image block

応用

今回は名刺の情報をOCRで抽出し、Notionのデータベースに格納しましたが、データベースやHTTPリクエストのJSONを変更することで、領収書の情報をデータベースに格納することも可能です。

おわりに

今回は取得した会社名や氏名の情報を、Notionのデータベースに格納するワークフローを作成しました。今後もDifyを利用したアプリの作成手順を紹介していきます。ぜひ引き続きご覧下さい。