AI駆動のPDF請求書解析ツール - Google Drive、Google Sheets、OpenAI

中級

これはFinance, AI分野の自動化ワークフローで、10個のノードを含みます。主にGoogleDrive, GoogleSheets, Agent, ExtractFromFile, GoogleDriveTriggerなどのノードを使用、AI技術を活用したスマート自動化を実現。 Google Drive、Google Sheets、OpenAIを活用したAI駆動のPDF請求書解析ツール

前提条件
  • Google Drive API認証情報
  • Google Sheets API認証情報
  • OpenAI API Key

カテゴリー

ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "d1786ab0d745a7498abf13a9c2cdabb1374c006e889b79eef64ce0386b8f8a41",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "5c1a182c-3485-48db-91b2-d46f0f1d3fd5",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        560,
        200
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "MGwGMKEkdcjzlYCw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "45f94af9-147a-434c-aef5-fc3f7e60a140",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        780,
        200
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"invoice_number\": \"\",\n  \"invoice_date\": \"\",\n  \"due_date\": \"\",\n  \"vendor_name\": \"\",\n  \"total_amount\": \"\",\n  \"currency\": \"\",\n  \"items\": [\n    {\n      \"description\": \"\",\n      \"amount\": \"\"\n    }\n  ],\n  \"tax\": \"\",\n  \"category\": \"\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "01c8daa7-81e1-46cd-b927-f264e90391b4",
      "name": "請求書フォルダモニター",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "event": "fileCreated",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "mode": "id",
          "value": "1KJ4fvXcKVMGJunsKvPYf8PkX5K9SVwFk"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "SEUhrgz30NMJS3cH",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "af299424-233a-4ac0-a92b-7f456d11e15a",
      "name": "請求書PDFダウンロード",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        200,
        0
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "SEUhrgz30NMJS3cH",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e896d679-a064-459a-8e4f-603436879cda",
      "name": "PDFテキスト抽出",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        400,
        0
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "f43fe296-b04b-41fd-ad4d-a845d009e80f",
      "name": "請求書解析AIエージェント",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        580,
        0
      ],
      "parameters": {
        "text": "=You are an intelligent invoice parser. I will give you raw text extracted from a PDF invoice. \n\n========================\nSTART OF RAW INVOICE TEXT\n\n{{ $json.text }}\n\nEND OF RAW INVOICE TEXT\n========================\n\nYour job is to:\n\n1. Extract key information from the invoice such as:\n   - invoice_number\n   - invoice_date\n   - due_date (if available)\n   - vendor_name\n   - total_amount\n   - currency (e.g., USD, IDR, etc.)\n   - items (as a list of item descriptions and their amounts)\n   - tax (if available)\n\n2. Detect the invoice **category**, such as:\n   - Utilities\n   - Office Supplies\n   - Travel\n   - Software\n   - Food & Beverage\n   - Others (if unknown)\n\n3. Return the result in this exact JSON format:\n\n```json\n{\n  \"invoice_number\": \"\",\n  \"invoice_date\": \"\",\n  \"due_date\": \"\",\n  \"vendor_name\": \"\",\n  \"total_amount\": \"\",\n  \"currency\": \"\",\n  \"items\": [\n    {\n      \"description\": \"\",\n      \"amount\": \"\"\n    }\n  ],\n  \"tax\": \"\",\n  \"category\": \"\"\n}\n",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "00eec735-03c4-4a78-829c-54354613812a",
      "name": "請求書データ挿入",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        920,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "Tax": "={{ $json.output.tax }}",
            "Items": "={{ $json.output.items }}",
            "Category": "={{ $json.output.category }}",
            "Currency": "={{ $json.output.currency }}",
            "Due Date": "={{ $json.output.due_date }}",
            "Vendor Name": "={{ $json.output.vendor_name }}",
            "Invoice Date": "={{ $json.output.invoice_date }}",
            "Total Amount": "={{ $json.output.total_amount }}",
            "Invoice Number": "={{ $json.output.invoice_number }}"
          },
          "schema": [
            {
              "id": "Invoice Number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Invoice Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Invoice Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Invoice Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Due Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Due Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Vendor Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Amount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Total Amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Currency",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Currency",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Items",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Items",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tax",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Tax",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u5dHeytao9y3L0Mgv8cSomPVLS3CMrn_eOwXW3oQ3c8/edit#gid=0",
          "cachedResultName": "Invoices"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u5dHeytao9y3L0Mgv8cSomPVLS3CMrn_eOwXW3oQ3c8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u5dHeytao9y3L0Mgv8cSomPVLS3CMrn_eOwXW3oQ3c8/edit?usp=drivesdk",
          "cachedResultName": "PDF Invoice Parser - n8n template"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "ypmzFxQFfAacuVVC",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "78ead6a4-7ae7-4182-a7f1-eebb7f38d776",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -100
      ],
      "parameters": {
        "color": 4,
        "width": 280,
        "height": 400,
        "content": "## SETUP REQUIRED\n\nGoogle Sheets Structure:\nSheet: \"Invoices\"\n• Column A: Invoice Number  \n• Column B: Invoice Date  \n• Column C: Due Date  \n• Column D: Vendor Name  \n• Column E: Total Amount  \n• Column F: Currency  \n• Column G: Items  \n• Column H: Tax  \n• Column I: Category  \n\nRequired Credentials:\n• Google Drive Credential  \n• Google Sheets Credential  \n• OpenAI API Key (GPT-4)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "45fc8d0a-c76a-4c2a-871e-19ad144993f0",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        340
      ],
      "parameters": {
        "color": 5,
        "width": 460,
        "height": 400,
        "content": "## 🧾 AI-Powered PDF Invoice Parser for Google Drive & Sheets\n\nWhat This Template Does:\n\n- Monitors a designated Google Drive folder for new incoming PDF invoices  \n- Automatically downloads and extracts text content from the PDFs  \n- Uses GPT-4 to intelligently parse and structure invoice data (amount, vendor, items, date, etc.)  \n- Categorizes invoices by type (Office Supplies, Food & Beverage, etc.)  \n- Saves all parsed invoice data into a Google Sheets document  \n- Fully automates invoice processing and bookkeeping for businesses  "
      },
      "typeVersion": 1
    },
    {
      "id": "d85f3e8e-38cc-4a12-9592-ce32373ddcf9",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        340
      ],
      "parameters": {
        "color": 5,
        "width": 400,
        "height": 340,
        "content": "## 📋 WORKFLOW PROCESS OVERVIEW\n\nStep 1: 📂 Invoice Folder Monitor watches a specific Google Drive folder for new PDF invoices  \nStep 2: ⬇️ Download Invoice PDF downloads the new invoice as binary data  \nStep 3: 🔍 PDF Text Extractor converts the PDF binary into readable text using OCR and extraction tools  \nStep 4: 🤖 Invoice Parser AI Agent (GPT-4) analyzes the text and extracts structured invoice data in JSON format  \nStep 5: 📝 Insert Invoice Data appends the structured invoice data to the Google Sheets \"Invoices\""
      },
      "typeVersion": 1
    }
  ],
  "pinData": {
    "Invoice Folder Monitor": [
      {
        "id": "168eK7xkg9bhZRC9Nn3aoVbeU--Cy_4ie",
        "kind": "drive#file",
        "name": "invoice123123.pdf",
        "size": "43627",
        "owners": [
          {
            "me": true,
            "kind": "drive#user",
            "photoLink": "https://lh3.googleusercontent.com/a/ACg8ocKYEvqVbfrYpVM3Esbt8CDt_Fije42MxkdcBFDBR1qni7Tgw5j7=s64",
            "displayName": "Billy Christi Hartanto",
            "emailAddress": "billychartanto@gmail.com",
            "permissionId": "06783842879122931240"
          }
        ],
        "shared": false,
        "spaces": [
          "drive"
        ],
        "parents": [
          "1KJ4fvXcKVMGJunsKvPYf8PkX5K9SVwFk"
        ],
        "starred": false,
        "trashed": false,
        "version": "3",
        "iconLink": "https://drive-thirdparty.googleusercontent.com/16/type/application/pdf",
        "mimeType": "application/pdf",
        "ownedByMe": true,
        "viewedByMe": true,
        "createdTime": "2025-05-27T08:17:54.309Z",
        "md5Checksum": "c1bda6d4249306eeb6b30da641eb2ad8",
        "permissions": [
          {
            "id": "06783842879122931240",
            "kind": "drive#permission",
            "role": "owner",
            "type": "user",
            "deleted": false,
            "photoLink": "https://lh3.googleusercontent.com/a/ACg8ocKYEvqVbfrYpVM3Esbt8CDt_Fije42MxkdcBFDBR1qni7Tgw5j7=s64",
            "displayName": "Billy Christi Hartanto",
            "emailAddress": "billychartanto@gmail.com",
            "pendingOwner": false
          }
        ],
        "webViewLink": "https://drive.google.com/file/d/168eK7xkg9bhZRC9Nn3aoVbeU--Cy_4ie/view?usp=drivesdk",
        "capabilities": {
          "canCopy": true,
          "canEdit": true,
          "canShare": true,
          "canTrash": true,
          "canDelete": true,
          "canRename": true,
          "canComment": true,
          "canUntrash": true,
          "canDownload": true,
          "canReadLabels": false,
          "canAddChildren": false,
          "canListChildren": false,
          "canModifyLabels": false,
          "canModifyContent": true,
          "canReadRevisions": true,
          "canRemoveChildren": false,
          "canAcceptOwnership": false,
          "canAddMyDriveParent": false,
          "canMoveItemOutOfDrive": true,
          "canMoveItemWithinDrive": true,
          "canRemoveMyDriveParent": true,
          "canMoveItemIntoTeamDrive": true,
          "canMoveChildrenWithinDrive": false,
          "canModifyContentRestriction": true,
          "canRemoveContentRestriction": false,
          "canEnableInheritedPermissions": true,
          "canChangeSecurityUpdateEnabled": false,
          "canChangeViewersCanCopyContent": true,
          "canDisableInheritedPermissions": false,
          "canModifyOwnerContentRestriction": true,
          "canModifyEditorContentRestriction": true,
          "canChangeCopyRequiresWriterPermission": true
        },
        "hasThumbnail": true,
        "modifiedByMe": true,
        "modifiedTime": "2025-05-27T08:17:38.000Z",
        "sha1Checksum": "54243509f843e8ec9f2913715d9ae0f6df14cdde",
        "fileExtension": "pdf",
        "permissionIds": [
          "06783842879122931240"
        ],
        "thumbnailLink": "https://lh3.googleusercontent.com/drive-storage/AJQWtBNR_JHmbwFJT9hZOqNB1DU8CkWed-A0mH2ukYEDpQt7OdutXoLStFjhGHdTvgpzX3ORUOqOVaAeNqt9vuUJt0KUQ_0L0nxkCqXPZ68ybuhugn0=s220",
        "headRevisionId": "0B3oBzhOa0rqUUCtZU3E5TDBGaUkrTEhETWNKQ1h0L2djcFRZPQ",
        "quotaBytesUsed": "43627",
        "sha256Checksum": "c2de358a0974f9b047aed8e457def7d4b1b39170f44819ec3152b42db787d72e",
        "viewedByMeTime": "2025-05-27T08:17:54.309Z",
        "webContentLink": "https://drive.google.com/uc?id=168eK7xkg9bhZRC9Nn3aoVbeU--Cy_4ie&export=download",
        "isAppAuthorized": false,
        "writersCanShare": true,
        "modifiedByMeTime": "2025-05-27T08:17:38.000Z",
        "originalFilename": "invoice123123.pdf",
        "thumbnailVersion": "1",
        "explicitlyTrashed": false,
        "fullFileExtension": "pdf",
        "lastModifyingUser": {
          "me": true,
          "kind": "drive#user",
          "photoLink": "https://lh3.googleusercontent.com/a/ACg8ocKYEvqVbfrYpVM3Esbt8CDt_Fije42MxkdcBFDBR1qni7Tgw5j7=s64",
          "displayName": "Billy Christi Hartanto",
          "emailAddress": "billychartanto@gmail.com",
          "permissionId": "06783842879122931240"
        },
        "linkShareMetadata": {
          "securityUpdateEnabled": true,
          "securityUpdateEligible": false
        },
        "viewersCanCopyContent": true,
        "copyRequiresWriterPermission": false,
        "inheritedPermissionsDisabled": false
      }
    ]
  },
  "connections": {
    "5c1a182c-3485-48db-91b2-d46f0f1d3fd5": {
      "ai_languageModel": [
        [
          {
            "node": "f43fe296-b04b-41fd-ad4d-a845d009e80f",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "e896d679-a064-459a-8e4f-603436879cda": {
      "main": [
        [
          {
            "node": "f43fe296-b04b-41fd-ad4d-a845d009e80f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "af299424-233a-4ac0-a92b-7f456d11e15a": {
      "main": [
        [
          {
            "node": "e896d679-a064-459a-8e4f-603436879cda",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "01c8daa7-81e1-46cd-b927-f264e90391b4": {
      "main": [
        [
          {
            "node": "af299424-233a-4ac0-a92b-7f456d11e15a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f43fe296-b04b-41fd-ad4d-a845d009e80f": {
      "main": [
        [
          {
            "node": "00eec735-03c4-4a78-829c-54354613812a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "45f94af9-147a-434c-aef5-fc3f7e60a140": {
      "ai_outputParser": [
        [
          {
            "node": "f43fe296-b04b-41fd-ad4d-a845d009e80f",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

中級 - 財務, 人工知能

有料ですか?

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

ワークフロー情報
難易度
中級
ノード数10
カテゴリー2
ノードタイプ8
難易度説明

経験者向け、6-15ノードの中程度の複雑さのワークフロー

作成者
Billy Christi

Billy Christi

@billy

I'm a professional software engineer and n8n expert with a passion for building scalable, no-code and low-code automation workflows. I specialize in creating seamless integrations between APIs, CRMs, and everyday tools to help businesses save time, reduce manual work, and operate smarter. Whether it's automating marketing pipelines, backend systems, or approval processes, I turn complex logic into simple, powerful workflows with n8n.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34