レシートからのテキスト抽出(OCR.spaceテーブル認識使用)

中級

これはInvoice Processing, Multimodal AI分野の自動化ワークフローで、9個のノードを含みます。主にSet, Form, FormTrigger, HttpRequestなどのノードを使用。 領収書からテキストを抽出するOCR.spaceテーブル認識の使用

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "51c6a64ef13fda2e6aa96576c25d72519ca4bc44cea9da20af60a642b594d835"
  },
  "nodes": [
    {
      "id": "0663af99-4977-4723-828d-d5e5725d036a",
      "name": "トリガー • OCR用画像アップロード",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        576,
        288
      ],
      "webhookId": "64016fb2-7c40-4bd4-bf2a-7dacc23d3a7a",
      "parameters": {
        "options": {},
        "formTitle": "Receipt OCR",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "File (Max 1MB)",
              "multipleFiles": false,
              "requiredField": true
            },
            {
              "fieldType": "radio",
              "fieldLabel": "Is it a table",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Yes"
                  },
                  {
                    "option": "No"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        },
        "formDescription": "Upload an image to extract text via OCR.\nMax file size: 1 MB"
      },
      "typeVersion": 2.3,
      "alwaysOutputData": false
    },
    {
      "id": "815fc903-a65e-46a5-8177-a0cf8d40aa01",
      "name": "準備 • 入力の正規化",
      "type": "n8n-nodes-base.set",
      "position": [
        832,
        288
      ],
      "parameters": {
        "options": {
          "stripBinary": false
        },
        "assignments": {
          "assignments": [
            {
              "id": "c454bde2-a211-448e-ac21-e044044915f6",
              "name": "isTable",
              "type": "string",
              "value": "={{ ($json[\"Is it a table\"] ?? $json.Is_it_a_table) === \"Yes\" }}"
            },
            {
              "id": "07545925-b27a-4471-a5d0-93abc740acf6",
              "name": "File (Max 1MB)",
              "type": "object",
              "value": "={{ $json['File (Max 1MB)'] ?? $json.File__Max_1MB_ }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "baf07380-1179-4077-9c7f-07c92e65bee5",
      "name": "OCR.space • 画像解析",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1088,
        288
      ],
      "parameters": {
        "url": "https://api.ocr.space/parse/image",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "language",
              "value": "pol"
            },
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "File__Max_1MB_"
            },
            {
              "name": "OCREngine",
              "value": "2"
            },
            {
              "name": "isTable",
              "value": "={{ $json.isTable }}"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "lqCRwWbcuW6VTaIz",
          "name": "ocr.space"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3e1fe87f-e776-469d-bae4-f76de5032ec3",
      "name": "表示 • OCRテキスト表示",
      "type": "n8n-nodes-base.form",
      "position": [
        1344,
        288
      ],
      "webhookId": "f85368ca-28f1-4c49-bc12-1801c5f8a6b7",
      "parameters": {
        "options": {
          "customCss": ".card {\n\tposition: relative;\n\tmax-width: 500px;\n\tmargin: 20px auto;\n\tpadding: 20px;\n\tbackground: #fefefe !important;\n\tborder-radius: 12px;\n\tbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n\tfont-family: 'Courier New', monospace;\n\tcolor: #1f2937;\n\tfont-size: 16px;\n\tline-height: 1.6;\n\twhite-space: pre-wrap;\n}\n\n.header p { text-align: left; }\n\n@media (max-width: 768px) {\n\t.card { margin: 10px !important; padding: 15px !important; font-size: 14px; }\n}\n",
          "formTitle": "OCR Result"
        },
        "operation": "completion",
        "completionTitle": "OCR Result",
        "completionMessage": "={{ $json.ParsedResults[0].ParsedText }}"
      },
      "typeVersion": 2.3
    },
    {
      "id": "ba102eff-44a3-48f3-bf37-2c4db27fa1a0",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        96
      ],
      "parameters": {
        "height": 176,
        "content": "### 📌 What this flow does  \nUpload a receipt image → select if it’s a table → OCR.space parses it → result displayed in a styled card."
      },
      "typeVersion": 1
    },
    {
      "id": "4c2f78c5-f0f1-40b8-a776-8fd846ec6922",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        96
      ],
      "parameters": {
        "height": 400,
        "content": "### 🔹 Trigger • Upload image for OCR  \nPublic form that collects the image (≤1 MB) and asks if the content is a table."
      },
      "typeVersion": 1
    },
    {
      "id": "f9d0e10c-466b-4456-9f89-2d50e4a1cf46",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        96
      ],
      "parameters": {
        "width": 256,
        "height": 400,
        "content": "### 🔹 Prepare • Normalize inputs  \nConverts the radio field (“Yes/No”) into a true/false `isTable` flag. Keeps the uploaded file attached."
      },
      "typeVersion": 1
    },
    {
      "id": "36621099-7926-463a-a36d-f185cbfb8b82",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        96
      ],
      "parameters": {
        "width": 256,
        "height": 400,
        "content": "### 🔹 OCR.space • Parse image  \nSends file + options to OCR.space API.  \nLanguage = `pol`, Engine = `2`, passes `isTable`.  \n⚠️ Needs API key (header auth)."
      },
      "typeVersion": 1
    },
    {
      "id": "70f2a795-2c1c-4265-b5d2-af8af703814c",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        96
      ],
      "parameters": {
        "height": 400,
        "content": "### 🔹 Display • Show OCR text  \nShows parsed text from `ParsedResults[0].ParsedText` inside a clean, monospace card for easy copy-paste."
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "baf07380-1179-4077-9c7f-07c92e65bee5": {
      "main": [
        [
          {
            "node": "3e1fe87f-e776-469d-bae4-f76de5032ec3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "815fc903-a65e-46a5-8177-a0cf8d40aa01": {
      "main": [
        [
          {
            "node": "baf07380-1179-4077-9c7f-07c92e65bee5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0663af99-4977-4723-828d-d5e5725d036a": {
      "main": [
        [
          {
            "node": "815fc903-a65e-46a5-8177-a0cf8d40aa01",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

中級 - 請求書処理, マルチモーダルAI

有料ですか?

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

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

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

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34