GPT4oを使用して名刺から連絡先をテーブルに自動抽出

上級

これはLead Generation, Multimodal AI分野の自動化ワークフローで、16個のノードを含みます。主にCode, Filter, FormTrigger, GoogleDrive, GoogleSheetsなどのノードを使用。 名刺から連絡先をGPT-4oでGoogleスプレッドシートに抽出する

前提条件
  • Google Drive API認証情報
  • Google Sheets API認証情報
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "d7F1dEqCRoIUVdYj",
  "meta": {
    "instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
    "templateId": "5453",
    "templateCredsSetupCompleted": true
  },
  "name": "Auto Extract Contacts from Business Cards to Sheet With GPT4o",
  "tags": [
    {
      "id": "pg2i0mqcvGPoanrU",
      "name": "Sales Workflow",
      "createdAt": "2025-08-02T06:00:12.615Z",
      "updatedAt": "2025-08-02T06:00:12.615Z"
    }
  ],
  "nodes": [
    {
      "id": "20d8f543-4115-4190-b5f9-ff9ff374a7e9",
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2864,
        1216
      ],
      "parameters": {
        "width": 1312,
        "height": 1568,
        "content": "# 📄 Auto Extract Contacts from Business Cards to Sheet With GPT4o\n\nThis smart workflow extracts names, phone numbers, emails, and more from uploaded name card photos using AI, then logs them neatly into your Google Sheet. No typing. No mess. Just upload and go.\n\n## 👤 Who’s it for\n\n- Sales & Business Development Teams  \n- Recruiters & Talent Acquisition Specialists  \n- Event Teams collecting business cards  \n- Admins who manage contact databases manually  \n\n## ⚙️ How it works / What it does\n\nThis workflow automates the extraction of contact details from uploaded name card (business card) images and stores them in a structured Google Sheet for easy tracking and follow-up.\n\n### Workflow Steps:\n1. User uploads one or more name card images through a web form.\n2. The uploaded files are saved to a Google Drive folder for archiving.\n3. A smart AI agent (with OCR and GPT capabilities) scans each image and extracts relevant contact data into structured JSON format.\n4. Data is transformed, cleaned (e.g., removing `+` from phone numbers), and filtered.\n5. Valid contacts are appended to a Google Sheet for central tracking and future use.\n\n## 🛠 How to set up\n\n1. **Create a Form**  \n   - Allow file upload (JPG/PNG format).\n   - Label it as “Name Card Uploader” with a clear description.\n\n2. **Upload to Google Drive**  \n   - Use the Google Drive node to store uploaded images.\n\n3. **Configure Smart Agent**  \n   - Use GPT-4o or similar model with OCR capability.\n   - Apply a structured output parser to extract contact fields like name, phone, email, company, etc.\n\n4. **Transform Data**  \n   - Use the Code node to clean and structure contact info.\n   - Strip out unwanted characters from phone numbers (e.g., `+`).\n\n5. **Filter Invalid Records**  \n   - Remove entries with no meaningful contact data.\n\n6. **Append to Google Sheets**  \n   - Use the Google Sheets node with \"Append Sheet Row\".\n   - Map fields to columns like Name, Phone, Email, etc.\n\n## ✅ Requirements\n\n- n8n workflow environment  \n- Google Drive integration (for file storage)  \n- Google Sheets integration (for storing contacts)  \n- GPT-4o or any image-capable LLM  \n- Clear name card images (PNG/JPG, readable text)  \n- (Optional) Slack/email integration for notifications\n\n## 🧩 How to customize the workflow\n\n- **CRM Sync**: Connect to platforms like HubSpot, Salesforce, or Zoho.  \n- **Validation Logic**: Ensure records contain key fields like name or email before writing.  \n- **Uploader Info**: Attach submitter metadata to each contact record.  \n- **Language Adaptation**: Adjust extracted field labels/output to target your preferred language.  \n- **Batch Upload**: Handle multiple cards in a single image or multiple uploads in one go."
      },
      "typeVersion": 1
    },
    {
      "id": "72a04c4f-59f9-4556-98fc-1c9116be6cc1",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1536,
        1216
      ],
      "parameters": {
        "width": 540,
        "height": 932,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/namecard.jpg \"Optional title text\")\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f036f0ca-7b80-4573-bdc1-266eb97a8bd5",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        1616
      ],
      "parameters": {
        "width": 636,
        "height": 496,
        "content": "## 1.1. Smart agent extract contact from name card picture \n- Sales person upload picture (png/jpg) with multiple name cards (no limit, make sure it clear).\n- Smart agent with OCR capability scan the image and extract all contact and relevant information then transform to well-structure JSON "
      },
      "typeVersion": 1
    },
    {
      "id": "1dd2dc2f-488d-4dce-8c03-e2d508e07ffd",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        1648
      ],
      "parameters": {
        "width": 556,
        "height": 304,
        "content": "## 3. Add record to google sheet\n- Client contact has been extracted from name card pictures and save to google drive sheet"
      },
      "typeVersion": 1
    },
    {
      "id": "513be31a-68e9-418c-a328-9ca65cf91df2",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1504,
        1616
      ],
      "parameters": {
        "width": 1020,
        "height": 356,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/Screenshot+2025-08-02+at+1.28.06%E2%80%AFPM.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "156a2e1e-81ab-4650-b6d1-5a289fd4e8dd",
      "name": "フォーム送信時",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -464,
        1600
      ],
      "webhookId": "916fbea3-2f7f-47fe-9580-fd1eda1936ca",
      "parameters": {
        "options": {},
        "formTitle": "Name Card Uploader Form",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "Name Card Picture",
              "multipleFiles": false,
              "acceptFileTypes": ".jpg,.jpge,.png"
            }
          ]
        },
        "formDescription": "Upload a photo of one or more business cards. Our system will automatically extract contact details, such as name, company, phone number, and email, and save them to your team’s Google Sheet for easy access and follow-up."
      },
      "typeVersion": 2.2
    },
    {
      "id": "da4c7125-eb33-4770-a6c0-a797a20117e5",
      "name": "連絡先を追跡シートに追加",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1088,
        1760
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "JobTitle",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "JobTitle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "LinkedIn",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "LinkedIn",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1cQtyFzPqq7h9sUsfKj1miAK5gA3de7MKya8HRLD_Pzw/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1cQtyFzPqq7h9sUsfKj1miAK5gA3de7MKya8HRLD_Pzw",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1cQtyFzPqq7h9sUsfKj1miAK5gA3de7MKya8HRLD_Pzw/edit?usp=drivesdk",
          "cachedResultName": "Contacts"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "L670Nly6gZGo71br",
          "name": "Google Sheets account 2"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "d489224d-5b58-4e43-aa70-11a2d8f1ec76",
      "name": "出力を変換",
      "type": "n8n-nodes-base.code",
      "position": [
        480,
        1760
      ],
      "parameters": {
        "jsCode": "const allItems = $input.all();\nlet output = [];\n\nfor (const item of allItems) {\n  const contacts = item.json.output;\n\n  for (const contact of contacts) {\n    const cleanedPhone = contact.phone ? contact.phone.replace(/\\+/g, '') : '';\n    output.push({\n      json: {\n        Name: contact.name || '',\n        JobTitle: contact.job_title || '',\n        Company: contact.company || '',\n        Phone: cleanedPhone || '',\n        Email: contact.email.toLowerCase() || '',\n        Website: contact.website || '',\n        Address: contact.address || '',\n        LinkedIn: contact.linkedin || ''\n      }\n    });\n  }\n}\n\nreturn output;"
      },
      "typeVersion": 2
    },
    {
      "id": "abd70432-b13a-4e20-8ef2-eaa70f59db1d",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        80,
        2064
      ],
      "parameters": {
        "jsonSchemaExample": "[{\n    \"name\": \"John Doe\",\n    \"job_title\": \"Sales Manager\",\n    \"company\": \"TechCorp Inc.\",\n    \"phone\": \"+1 234 567 890\",\n    \"email\": \"john.doe@techcorp.com\",\n    \"website\": \"https://www.techcorp.com\",\n    \"address\": \"123 Market Street, San Francisco, CA\",\n    \"linkedin\": \"https://linkedin.com/in/johndoe\"\n  }]"
      },
      "typeVersion": 1.3
    },
    {
      "id": "4cf62a29-c529-401d-a675-ccda319620d9",
      "name": "GPT4o",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -64,
        2064
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "gpt-4o"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "PPSwAKeLQYgAPobT",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "2470ecbd-18a6-4c82-864c-781410922d75",
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -992,
        1424
      ],
      "parameters": {
        "width": 540,
        "height": 468,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/Screenshot+2025-08-02+at+1.25.32%E2%80%AFPM.png \"Optional title text\")\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8eaed946-7f53-4f93-82c1-7a709639e62c",
      "name": "連絡先抽出用ニューラルアシスタント",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -96,
        1808
      ],
      "parameters": {
        "text": "=Extract all business contact details from this image of multiple name cards. Return full names, job titles, company names, phone numbers, email addresses, websites, office addresses, and any relevant information such as QR code content or social media links. Do not include decorative elements or branding.",
        "options": {
          "systemMessage": "You are a smart assistant that helps sales and business development teams extract business contact information from images containing multiple business cards. Your role is to analyze the image, detect all individual cards, and extract relevant details such as full name, job title, company name, phone number, email address, website, office address, social media links, and any QR code content. You should skip any decorative or branding elements and focus only on useful business information. Maintain a logical reading order from top to bottom, left to right. Your output will be used by a downstream parser, so return clean, readable text without additional formatting or structure."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "ab5f4a90-be5f-478e-b471-de0f24cae931",
      "name": "不良データをフィルタリング",
      "type": "n8n-nodes-base.filter",
      "position": [
        704,
        1760
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "841d0d69-4413-43dd-a48b-034d0f6af183",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Name }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e163856a-b1ee-4d38-af8d-b272b772cddd",
      "name": "ファイルをアップロード",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -16,
        1424
      ],
      "parameters": {
        "name": "={{ $now.toFormat(\"yyyyLLdd-HHmmss\") }}-{{$binary.data.fileName}}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI",
          "cachedResultName": "SmartSales"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d3624f8d-148b-433a-9b84-b613a080f016",
      "name": "付箋9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        1376
      ],
      "parameters": {
        "width": 636,
        "height": 208,
        "content": "## 1.2. Upload to Google Drive folder for later process"
      },
      "typeVersion": 1
    },
    {
      "id": "71d1d6e2-e107-4b55-8321-d7aac1930adb",
      "name": "付箋10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        1712
      ],
      "parameters": {
        "width": 492,
        "height": 208,
        "content": "## 2. Transform & clean data"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b71fa024-0e46-4615-86b4-8afcc5dddc68",
  "connections": {
    "4cf62a29-c529-401d-a675-ccda319620d9": {
      "ai_languageModel": [
        [
          {
            "node": "8eaed946-7f53-4f93-82c1-7a709639e62c",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "ab5f4a90-be5f-478e-b471-de0f24cae931": {
      "main": [
        [
          {
            "node": "da4c7125-eb33-4770-a6c0-a797a20117e5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d489224d-5b58-4e43-aa70-11a2d8f1ec76": {
      "main": [
        [
          {
            "node": "ab5f4a90-be5f-478e-b471-de0f24cae931",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "156a2e1e-81ab-4650-b6d1-5a289fd4e8dd": {
      "main": [
        [
          {
            "node": "8eaed946-7f53-4f93-82c1-7a709639e62c",
            "type": "main",
            "index": 0
          },
          {
            "node": "e163856a-b1ee-4d38-af8d-b272b772cddd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "abd70432-b13a-4e20-8ef2-eaa70f59db1d": {
      "ai_outputParser": [
        [
          {
            "node": "8eaed946-7f53-4f93-82c1-7a709639e62c",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "8eaed946-7f53-4f93-82c1-7a709639e62c": {
      "main": [
        [
          {
            "node": "d489224d-5b58-4e43-aa70-11a2d8f1ec76",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - リード獲得, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

よりスマートな BRD(ビジネスタ需求文書)作成のためのマルチエージェント RAG システム
マルチエージェント GPT と Google Workspace を使ってビジネス要件書を生成
Set
Code
Merge
+
Set
Code
Merge
37 ノードTrung Tran
AI RAG検索拡張
スマートインタビューアシスタント:履歴書、職位要項、ラウンドに基づくカスタム質問
応募・職位情報・ラウンドに基づいてGPT-4でカスタム面接問題を生成
Set
Code
Merge
+
Set
Code
Merge
26 ノードTrung Tran
人事
TalentFlow AI - バッチ履歴書スクリーニングと職位説明とのマッチング
GPT-4を活用したHRチーム向けの大量リソーシェスクリーニングと職位説明書マッチング
If
Code
Merge
+
If
Code
Merge
30 ノードTrung Tran
人事
Slack候補者評価のためのAI駆動チャットボット構築
AI履歴書分析と候補者評価:SlackとGoogleスプレッドシートの統合
If
Code
Slack
+
If
Code
Slack
29 ノードTrung Tran
AIチャットボット
HireMind – AI駆動の履歴書インテリジェント処理フロー
HR AI履歴書スクリーニングと評価:GPT-4とGoogle Workspace
If
Code
Slack
+
If
Code
Slack
26 ノードTrung Tran
人事
スマートレジュメ抽出ツール:Google Driveからスプレッドシート + 採用担当者向けSlack更新
AI駆動のレジュメ抽出ツール:GPT-4がGoogle Driveからスプレッドシートを処理し、採用担当者にSlack通知
Code
Slack
Filter
+
Code
Slack
Filter
19 ノードTrung Tran
人事
ワークフロー情報
難易度
上級
ノード数16
カテゴリー2
ノードタイプ9
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Trung Tran

Trung Tran

@trungtran

Helps small and medium businesses grow with intelligent automation and practical AI tools, no heavy tech team needed.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34