AutomationFlowsAI & RAG › Extract Text From Google Drive Images with Ocr.space, Openrouter AI Summary…

Extract Text From Google Drive Images with Ocr.space, Openrouter AI Summary…

Original n8n title: Extract Text From Google Drive Images with Ocr.space, Openrouter AI Summary to Sheets & Gmail

ByTsubasa Shukuwa @tsubasa-shukuwa on n8n.io

This workflow automatically detects new image files uploaded to a Google Drive folder, extracts Japanese text using OCR, summarizes it with AI, and records the result in Google Sheets. Finally, it sends a completion email notification with the file name and summary.

Event trigger★★★★☆ complexityAI-powered15 nodesOpenRouter ChatGoogle SheetsGoogle Drive TriggerGoogle DriveHTTP RequestAgentGmail
AI & RAG Trigger: Event Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #10541 — we link there as the canonical source.

This workflow follows the Agent → Gmail recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "4neKxxXCjvUq8XV7",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Auto OCR from Photo \u2192 AI Summary \u2192 Google Sheets & Gmail Notification",
  "tags": [],
  "nodes": [
    {
      "id": "14484c3d-1f78-45b1-a778-48b9d7ac1eee",
      "name": "OpenRouter Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        880,
        336
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b8538a4f-9319-46b6-be09-5e343850d1dc",
      "name": "Append row in sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1312,
        160
      ],
      "parameters": {
        "columns": {
          "value": {
            "\u51e6\u7406\u65e5": "={{ $now.toISO().split('T')[0] }}",
            "\u8981\u7d04\u7d50\u679c": "={{ $('Generate Summary with OpenRouter AI1').first().json.output }}",
            "\u30d5\u30a1\u30a4\u30eb\u540d": "={{ $('Format OCR Result & Check for Empty1').first().json.fileName }}"
          },
          "schema": [
            {
              "id": "\u30d5\u30a1\u30a4\u30eb\u540d",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "\u30d5\u30a1\u30a4\u30eb\u540d",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u8981\u7d04\u7d50\u679c",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "\u8981\u7d04\u7d50\u679c",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u51e6\u7406\u65e5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "\u51e6\u7406\u65e5",
              "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/11BmQnKfY4MmCD4iwlvOFUZPAM6kGMWdny8MefHzE2_0/edit#gid=0",
          "cachedResultName": "\u8981\u7d04"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "11BmQnKfY4MmCD4iwlvOFUZPAM6kGMWdny8MefHzE2_0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/11BmQnKfY4MmCD4iwlvOFUZPAM6kGMWdny8MefHzE2_0/edit?usp=drivesdk",
          "cachedResultName": "\u753b\u50cf\u8981\u7d04\u8a18\u9332"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "11238230-9772-4fce-a3b9-b1c3a3cfffd1",
      "name": "Google Drive New File Trigger1",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "position": [
        -48,
        160
      ],
      "parameters": {
        "event": "fileCreated",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "mode": "list",
          "value": "1jTs0NNXMFTcChRq0C1KEoARVdIOOjQ1r",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1jTs0NNXMFTcChRq0C1KEoARVdIOOjQ1r",
          "cachedResultName": "\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b31e181b-5ee1-4008-b3c9-541f3b3e65b8",
      "name": "Download Image File1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        224,
        160
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {
          "binaryPropertyName": "data"
        },
        "operation": "download"
      },
      "typeVersion": 3
    },
    {
      "id": "dd60b9e0-1bfc-4ce3-9e2a-86a5582b1dac",
      "name": "Extract Text with OCR.space1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        496,
        160
      ],
      "parameters": {
        "url": "https://api.ocr.space/parse/image",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "apikey",
              "value": "*****APIKEY*****"
            },
            {
              "name": "language",
              "value": "jpn"
            },
            {
              "name": "isOverlayRequired",
              "value": "false"
            },
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "74bc17b2-2556-4a8e-b331-fe5fee94a711",
      "name": "Format OCR Result & Check for Empty1",
      "type": "n8n-nodes-base.code",
      "position": [
        752,
        160
      ],
      "parameters": {
        "jsCode": "const raw = $input.first()?.json?.ParsedResults?.[0]?.ParsedText || '';\nconst text = String(raw).replace(/\\r/g, ' ').replace(/\\n+/g, ' ').replace(/\\s{2,}/g, ' ').trim();\nconst fileName = $('Download Image File1').first()?.json?.name || 'unknown';\nreturn [{ json: { extractedText: text, fileName: fileName, hasText: text.length > 0 } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "82e9b60c-eaba-434e-ba0d-3f41ed0bbcf8",
      "name": "Generate Summary with OpenRouter AI1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        960,
        160
      ],
      "parameters": {
        "text": "=\u4ee5\u4e0b\u306e\u6587\u7ae0\u3092\u7c21\u6f54\u306b\u8981\u7d04\u3057\u3066\u304f\u3060\u3055\u3044\uff1a\n{{ \n  $if(\n    $('Format OCR Result & Check for Empty1').first()?.json?.extractedText, \n    $('Format OCR Result & Check for Empty1').first().json.extractedText, \n    \"\uff08\u30c6\u30ad\u30b9\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff09\"\n  ) \n}}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 3
    },
    {
      "id": "bba8e569-d625-476f-869d-e3c5c39f166b",
      "name": "Send Completion Notification via Gmail1",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1584,
        160
      ],
      "parameters": {
        "sendTo": " user@example.com",
        "message": "=\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u300c{{ $('Format OCR Result & Check for Empty1').first().json.fileName }}\u300d\u306eOCR\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\n\n\u3010\u8981\u7d04\u3011\n{{ $('Generate Summary with OpenRouter AI1').first().json.message.content }}\n\n\u3010Google Docs\u3011\n\u65b0\u898f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002\n\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8ID: {{ $('Google Docs \u3078\u8981\u7d04\u3092\u8ffd\u8a18').first().json.documentId }}",
        "options": {},
        "subject": "=OCR\u51e6\u7406\u5b8c\u4e86: {{ $('Format OCR Result & Check for Empty1').first().json.fileName }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "d0cacb65-5059-4def-bb53-9f0026938075",
      "name": "Process Completed1",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1872,
        160
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7c8f33d6-080b-4a16-b7df-d389c1b65b37",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -608,
        -496
      ],
      "parameters": {
        "width": 480,
        "height": 640,
        "content": "## Overview: Auto OCR \u2192 AI Summary \u2192 Google Sheets & Gmail\n\n## How it works\n\nThis workflow automatically processes any new image uploaded to a specific Google Drive folder.\nIt extracts text using OCR.space, summarizes the content with OpenRouter AI, and logs the result to Google Sheets.\nFinally, it sends a completion email via Gmail including the file name, summary, and document link.\nThis automation is ideal for digitizing book pages, lecture notes, or printed reports with minimal manual effort.\n\n## Setup steps\n\nConnect your Google Drive, OpenRouter, Google Sheets, and Gmail credentials.\n\nSet the target folder in Google Drive Trigger (where new images are uploaded).\n\nInsert your OCR.space API key in the HTTP Request node.\n\nUpdate the destination Google Sheets document and sheet name.\n\nAdjust the recipient email address in the Gmail notification node.\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000"
      },
      "typeVersion": 1
    },
    {
      "id": "6a7a6bfa-3a55-4348-b87c-303ef20a91ee",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        -160
      ],
      "parameters": {
        "color": 7,
        "height": 304,
        "content": "### Section 1 ? Detect & Download Image\n\n  Google Drive Trigger \u2192 Download Image File\n\nMonitors a Drive folder and downloads new image files for OCR processing. (?40 words)"
      },
      "typeVersion": 1
    },
    {
      "id": "e8596db6-7332-4257-9863-1d4099879c61",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        -160
      ],
      "parameters": {
        "color": 7,
        "height": 304,
        "content": "### Section 2 ? Extract & Clean Text\n\n  OCR.space API \u2192 Format OCR Result\n\nExtracts Japanese text from the image and removes unnecessary line breaks or spaces. (?35 words)"
      },
      "typeVersion": 1
    },
    {
      "id": "58a38290-9e3a-41c2-9a1b-b3c026eb9c00",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -160
      ],
      "parameters": {
        "color": 7,
        "height": 304,
        "content": "### Section 3 ? Summarize with AI\n\n  Generate Summary (OpenRouter AI)\n\nUses AI to summarize extracted text in concise Japanese for efficient reading. (?30 words)"
      },
      "typeVersion": 1
    },
    {
      "id": "696b9c8a-05e3-44bf-aff0-693d969178de",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -160
      ],
      "parameters": {
        "color": 7,
        "height": 304,
        "content": "### Section 4 ? Save to Google Sheets\n\n  Append row in sheet\n\nLogs the filename, AI-generated summary, and current date into a Google Sheet. (?25 words)"
      },
      "typeVersion": 1
    },
    {
      "id": "6b0c9994-a22f-41aa-968e-36a9adca53bd",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -160
      ],
      "parameters": {
        "color": 7,
        "height": 304,
        "content": "### Section 5 ? Notify via Gmail\n\n?? Send Completion Notification \u2192 Process Completed\n\nEmails the user with the OCR summary and Google Docs/Sheets information. (?25 words)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "cbc1e6fc-2b5e-47f2-8026-909093af9325",
  "connections": {
    "Append row in sheet1": {
      "main": [
        [
          {
            "node": "Send Completion Notification via Gmail1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Image File1": {
      "main": [
        [
          {
            "node": "Extract Text with OCR.space1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Summary with OpenRouter AI1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Extract Text with OCR.space1": {
      "main": [
        [
          {
            "node": "Format OCR Result & Check for Empty1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive New File Trigger1": {
      "main": [
        [
          {
            "node": "Download Image File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format OCR Result & Check for Empty1": {
      "main": [
        [
          {
            "node": "Generate Summary with OpenRouter AI1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Summary with OpenRouter AI1": {
      "main": [
        [
          {
            "node": "Append row in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Completion Notification via Gmail1": {
      "main": [
        [
          {
            "node": "Process Completed1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow automatically detects new image files uploaded to a Google Drive folder, extracts Japanese text using OCR, summarizes it with AI, and records the result in Google Sheets. Finally, it sends a completion email notification with the file name and summary.

Source: https://n8n.io/workflows/10541/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.

Tool Think, Tool Calculator, Agent Tool +18
AI & RAG

This workflow automates the extraction and processing of invoice data from PDFs stored in a Google Drive folder. It leverages Google Drive, Google Sheets, and Gemini AI to streamline invoice managemen

Google Gemini Chat, Google Sheets, HTTP Request +5
AI & RAG

Génération de fatures Auto. Uses gmail, agent, lmChatOpenRouter, httpRequest. Event-driven trigger; 18 nodes.

Gmail, Agent, OpenRouter Chat +3
AI & RAG

This comprehensive workflow automates the complete financial document processing pipeline using AI. Upload invoices via chat, drop expense receipts into a folder, or add bank statements - the system a

Chat Trigger, HTTP Request, Google Sheets +8
AI & RAG

This comprehensive n8n workflow automates the entire Meta (Facebook/Instagram) advertising process, from asset analysis to ad creation. It combines AI-powered content analysis with automated ad deploy

Facebook Graph Api, HTTP Request, Google Drive +5