{
  "nodes": [
    {
      "id": "0663af99-4977-4723-828d-d5e5725d036a",
      "name": "Trigger \u2022 Upload image for OCR",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        576,
        288
      ],
      "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": "Prepare \u2022 Normalize inputs",
      "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 \u2022 Parse image",
      "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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3e1fe87f-e776-469d-bae4-f76de5032ec3",
      "name": "Display \u2022 Show OCR text",
      "type": "n8n-nodes-base.form",
      "position": [
        1344,
        288
      ],
      "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": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        96
      ],
      "parameters": {
        "height": 176,
        "content": "### \ud83d\udccc What this flow does  \nUpload a receipt image \u2192 select if it\u2019s a table \u2192 OCR.space parses it \u2192 result displayed in a styled card."
      },
      "typeVersion": 1
    },
    {
      "id": "4c2f78c5-f0f1-40b8-a776-8fd846ec6922",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        96
      ],
      "parameters": {
        "height": 400,
        "content": "### \ud83d\udd39 Trigger \u2022 Upload image for OCR  \nPublic form that collects the image (\u22641 MB) and asks if the content is a table."
      },
      "typeVersion": 1
    },
    {
      "id": "f9d0e10c-466b-4456-9f89-2d50e4a1cf46",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        96
      ],
      "parameters": {
        "width": 256,
        "height": 400,
        "content": "### \ud83d\udd39 Prepare \u2022 Normalize inputs  \nConverts the radio field (\u201cYes/No\u201d) into a true/false `isTable` flag. Keeps the uploaded file attached."
      },
      "typeVersion": 1
    },
    {
      "id": "36621099-7926-463a-a36d-f185cbfb8b82",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        96
      ],
      "parameters": {
        "width": 256,
        "height": 400,
        "content": "### \ud83d\udd39 OCR.space \u2022 Parse image  \nSends file + options to OCR.space API.  \nLanguage = `pol`, Engine = `2`, passes `isTable`.  \n\u26a0\ufe0f Needs API key (header auth)."
      },
      "typeVersion": 1
    },
    {
      "id": "70f2a795-2c1c-4265-b5d2-af8af703814c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        96
      ],
      "parameters": {
        "height": 400,
        "content": "### \ud83d\udd39 Display \u2022 Show OCR text  \nShows parsed text from `ParsedResults[0].ParsedText` inside a clean, monospace card for easy copy-paste."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "OCR.space \u2022 Parse image": {
      "main": [
        [
          {
            "node": "Display \u2022 Show OCR text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare \u2022 Normalize inputs": {
      "main": [
        [
          {
            "node": "OCR.space \u2022 Parse image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger \u2022 Upload image for OCR": {
      "main": [
        [
          {
            "node": "Prepare \u2022 Normalize inputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}