OCR automatique des photos → Résumé par IA → Google Sheets et notification Gmail
Ceci est unDocument Extraction, AI Summarizationworkflow d'automatisation du domainecontenant 15 nœuds.Utilise principalement des nœuds comme Code, Gmail, GoogleDrive, HttpRequest, GoogleSheets. Extraire du texte des images Google Drive avec OCR.space, générer un résumé via OpenRouter AI, et l'envoyer dans un tableau et une notification Gmail
- •Compte Google et informations d'identification Gmail API
- •Informations d'identification Google Drive API
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Nœuds utilisés (15)
Catégorie
{
"id": "4neKxxXCjvUq8XV7",
"meta": {
"instanceId": "15d6057a37b8367f33882dd60593ee5f6cc0c59310ff1dc66b626d726083b48d",
"templateCredsSetupCompleted": true
},
"name": "Auto OCR from Photo → AI Summary → 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": {
"id": "fMR5QJezr3tD108w",
"name": "簡易デモ"
}
},
"typeVersion": 1
},
{
"id": "b8538a4f-9319-46b6-be09-5e343850d1dc",
"name": "Ajouter une ligne dans sheet1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1312,
160
],
"parameters": {
"columns": {
"value": {
"処理日": "={{ $now.toISO().split('T')[0] }}",
"要約結果": "={{ $('Generate Summary with OpenRouter AI1').first().json.output }}",
"ファイル名": "={{ $('Format OCR Result & Check for Empty1').first().json.fileName }}"
},
"schema": [
{
"id": "ファイル名",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ファイル名",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "要約結果",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "要約結果",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "処理日",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "処理日",
"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": "要約"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "11BmQnKfY4MmCD4iwlvOFUZPAM6kGMWdny8MefHzE2_0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/11BmQnKfY4MmCD4iwlvOFUZPAM6kGMWdny8MefHzE2_0/edit?usp=drivesdk",
"cachedResultName": "画像要約記録"
}
},
"typeVersion": 4.7
},
{
"id": "11238230-9772-4fce-a3b9-b1c3a3cfffd1",
"name": "Google Déclencheur Nouveau Fichier Drive1",
"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": "イメージファイル"
}
},
"typeVersion": 1
},
{
"id": "b31e181b-5ee1-4008-b3c9-541f3b3e65b8",
"name": "Télécharger le fichier image1",
"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": "Extraire le texte avec 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": "Formater le résultat OCR & vérifier si vide1",
"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": "Générer un résumé avec OpenRouter AI1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
960,
160
],
"parameters": {
"text": "=以下の文章を簡潔に要約してください:\n{{ \n $if(\n $('Format OCR Result & Check for Empty1').first()?.json?.extractedText, \n $('Format OCR Result & Check for Empty1').first().json.extractedText, \n \"(テキストが見つかりませんでした)\"\n ) \n}}",
"options": {},
"promptType": "define"
},
"typeVersion": 3
},
{
"id": "bba8e569-d625-476f-869d-e3c5c39f166b",
"name": "Envoyer une notification d'achèvement via Gmail1",
"type": "n8n-nodes-base.gmail",
"position": [
1584,
160
],
"webhookId": "66c7ac47-8411-437c-8132-f89b024f7e09",
"parameters": {
"sendTo": " shukuwa@yubipass.tokyo",
"message": "=画像ファイル「{{ $('Format OCR Result & Check for Empty1').first().json.fileName }}」のOCR処理が完了しました。\n\n【要約】\n{{ $('Generate Summary with OpenRouter AI1').first().json.message.content }}\n\n【Google Docs】\n新規ドキュメントを作成しました。\nドキュメントID: {{ $('Google Docs へ要約を追記').first().json.documentId }}",
"options": {},
"subject": "=OCR処理完了: {{ $('Format OCR Result & Check for Empty1').first().json.fileName }}"
},
"typeVersion": 2.1
},
{
"id": "d0cacb65-5059-4def-bb53-9f0026938075",
"name": "Traitement terminé1",
"type": "n8n-nodes-base.noOp",
"position": [
1872,
160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7c8f33d6-080b-4a16-b7df-d389c1b65b37",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
-496
],
"parameters": {
"width": 480,
"height": 640,
"content": "## Overview: Auto OCR → AI Summary → 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. "
},
"typeVersion": 1
},
{
"id": "6a7a6bfa-3a55-4348-b87c-303ef20a91ee",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-160
],
"parameters": {
"color": 7,
"height": 304,
"content": "### Section 1 ? Detect & Download Image\n\n Google Drive Trigger → 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": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-160
],
"parameters": {
"color": 7,
"height": 304,
"content": "### Section 2 ? Extract & Clean Text\n\n OCR.space API → 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": "Note adhésive3",
"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": "Note adhésive4",
"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": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-160
],
"parameters": {
"color": 7,
"height": 304,
"content": "### Section 5 ? Notify via Gmail\n\n?? Send Completion Notification → Process Completed\n\nEmails the user with the OCR summary and Google Docs/Sheets information. (?25 words)"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "cbc1e6fc-2b5e-47f2-8026-909093af9325",
"connections": {
"b8538a4f-9319-46b6-be09-5e343850d1dc": {
"main": [
[
{
"node": "bba8e569-d625-476f-869d-e3c5c39f166b",
"type": "main",
"index": 0
}
]
]
},
"b31e181b-5ee1-4008-b3c9-541f3b3e65b8": {
"main": [
[
{
"node": "dd60b9e0-1bfc-4ce3-9e2a-86a5582b1dac",
"type": "main",
"index": 0
}
]
]
},
"14484c3d-1f78-45b1-a778-48b9d7ac1eee": {
"ai_languageModel": [
[
{
"node": "82e9b60c-eaba-434e-ba0d-3f41ed0bbcf8",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"dd60b9e0-1bfc-4ce3-9e2a-86a5582b1dac": {
"main": [
[
{
"node": "74bc17b2-2556-4a8e-b331-fe5fee94a711",
"type": "main",
"index": 0
}
]
]
},
"11238230-9772-4fce-a3b9-b1c3a3cfffd1": {
"main": [
[
{
"node": "b31e181b-5ee1-4008-b3c9-541f3b3e65b8",
"type": "main",
"index": 0
}
]
]
},
"74bc17b2-2556-4a8e-b331-fe5fee94a711": {
"main": [
[
{
"node": "82e9b60c-eaba-434e-ba0d-3f41ed0bbcf8",
"type": "main",
"index": 0
}
]
]
},
"82e9b60c-eaba-434e-ba0d-3f41ed0bbcf8": {
"main": [
[
{
"node": "b8538a4f-9319-46b6-be09-5e343850d1dc",
"type": "main",
"index": 0
}
]
]
},
"bba8e569-d625-476f-869d-e3c5c39f166b": {
"main": [
[
{
"node": "d0cacb65-5059-4def-bb53-9f0026938075",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Extraction de documents, Résumé IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Tsubasa Shukuwa
@tsubasa-shukuwaPartager ce workflow