사진 자동 OCR → AI 요약 → Google 스프레드시트와 Gmail 알림
중급
이것은Document Extraction, AI Summarization분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Code, Gmail, GoogleDrive, HttpRequest, GoogleSheets 등의 노드를 사용하며. OCR.space를 사용하여 Google Drive 이미지에서 텍스트를 추출하고 OpenRouter AI를 통해 요약을 테이블과 Gmail 알림으로 생성
사전 요구사항
- •Google 계정 및 Gmail API 인증 정보
- •Google Drive API 인증 정보
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
사용된 노드 (15)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"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": "스프레드시트에 행 추가1",
"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 Drive 새 파일 트리거1",
"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": "이미지 파일 다운로드1",
"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": "OCR.space로 텍스트 추출1",
"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": "OCR 결과 포맷팅 및 공백 확인1",
"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": "OpenRouter AI로 요약 생성1",
"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": "Gmail을 통한 완료 알림 전송1",
"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": "처리 완료1",
"type": "n8n-nodes-base.noOp",
"position": [
1872,
160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7c8f33d6-080b-4a16-b7df-d389c1b65b37",
"name": "스티커 메모",
"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": "스티커 메모1",
"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": "스티커 메모2",
"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": "스티커 메모3",
"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": "스티커 메모4",
"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": "스티커 메모5",
"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
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 문서 추출, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
AI 의료 보고서 생성기
Gemini AI와 Google Workspace를 사용하여 이메일에서 의료 보고서 생성
Set
Code
Gmail
+
Set
Code
Gmail
21 노드Abdullah Alshiekh
문서 추출
고객에게 인보이스 자동 발송
OCR.Space, GPT-4 및 Google Drive에서 Gmail로 인보이스 처리 자동화
If
Set
Code
+
If
Set
Code
29 노드Michael Taleb
AI 요약
폼 제출만_이중 소스 오디오 전사 --> AI 요약 및 감정 분석 --> Gmail 전달
오디오를 실행 브리핑으로: AssemblyAI 및 GPT-4를 사용한 트랜스크립션 및 분석
If
Code
Wait
+
If
Code
Wait
22 노드Sridevi Edupuganti
문서 추출
지능형 문서 흐름
Foxit과 Diffbot을 사용하여 기관 정보를 추출하고 문서를 요약합니다
If
Code
Wait
+
If
Code
Wait
16 노드Raymond Camden
문서 추출
PDF 템플릿 추출
Google Sheets 추적을 위한 Llama AI 모델
Set
Code
Html
+
Set
Code
Html
24 노드Cristian Baño Belchí
문서 추출
AI-Deepseek-R1t 회사 출장 승인 및 경비 승인 요청
Deepseek AI, Gmail, Google Sheets를 통한 회의 출장 승인 자동화
If
Set
Code
+
If
Set
Code
24 노드Cheng Siong Chin
문서 추출