Extraction de données de cartes de visite de Telegram vers Google Sheets via vision IA
Ceci est unDocument Extraction, AI Summarizationworkflow d'automatisation du domainecontenant 12 nœuds.Utilise principalement des nœuds comme If, GoogleSheets, Agent, TelegramTrigger, LmChatOpenRouter. Extraire les données de cartes de visite de Telegram vers Google Sheets avec OpenRouter AI vision
- •Informations d'identification Google Sheets API
- •Token Bot Telegram
Nœuds utilisés (12)
Catégorie
{
"id": "wYda99sf09SAlzu4",
"meta": {
"instanceId": "15d6057a37b8367f33882dd60593ee5f6cc0c59310ff1dc66b626d726083b48d"
},
"name": "Extract Business Card Data using AI Vision from Telegram to Google Sheets using AI Vision",
"tags": [],
"nodes": [
{
"id": "beaba1cd-076a-4223-b481-4d0dd7474590",
"name": "Ajouter à la feuille Google",
"type": "n8n-nodes-base.googleSheets",
"position": [
448,
-64
],
"parameters": {
"columns": {
"value": {
"date": "={{ $today }}",
"email": "={{ $json.output['Email Address'] }}",
"address": "={{ $json.output.Address }}",
"full_name": "={{ $('AI Vision Agent').item.json.output['Full Name'] }}",
"job_title": "={{ $('AI Vision Agent').item.json.output['Job Title'] }}",
"department": "={{ $('AI Vision Agent').item.json.output.Department }}",
"fax_number": "={{ $json.output['Fax Number'] }}",
"postal_code": "={{ $json.output['Postal Code'] }}",
"website_url": "={{ $json.output['Website URL'] }}",
"company_name": "={{ $('AI Vision Agent').item.json.output['Company Name'] }}",
"phone_number": "={{ $json.output['Phone Number'] }}",
"mobile_phone_number": "={{ $json.output['Mobile Phone Number'] }}"
},
"schema": [
{
"id": "date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "company_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "company_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "department",
"type": "string",
"display": true,
"required": false,
"displayName": "department",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "job_title",
"type": "string",
"display": true,
"required": false,
"displayName": "job_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "full_name",
"type": "string",
"display": true,
"required": false,
"displayName": "full_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "postal_code",
"type": "string",
"display": true,
"required": false,
"displayName": "postal_code",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "address",
"type": "string",
"display": true,
"required": false,
"displayName": "address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "mobile_phone_number",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "mobile_phone_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone_number",
"type": "string",
"display": true,
"required": false,
"displayName": "phone_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "fax_number",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "fax_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "website_url",
"type": "string",
"display": true,
"required": false,
"displayName": "website_url",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"company_name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1rYf2kqfmMRUtpFAb5YdhOcsvGg8Gr1CTbO-lvrd48m4/edit#gid=0",
"cachedResultName": "シート1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1rYf2kqfmMRUtpFAb5YdhOcsvGg8Gr1CTbO-lvrd48m4",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1rYf2kqfmMRUtpFAb5YdhOcsvGg8Gr1CTbO-lvrd48m4/edit?usp=drivesdk",
"cachedResultName": "Demo"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "lA1jkxcWiHRlZ5Un",
"name": "md83h"
}
},
"typeVersion": 4.5
},
{
"id": "e804b404-71ad-4a9b-a554-48e2515e7bc8",
"name": "Vérifier le type d'entrée",
"type": "n8n-nodes-base.if",
"position": [
-80,
-48
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition_001",
"operator": {
"type": "string",
"operation": "notExists",
"singleValue": true
},
"leftValue": "={{ $json.message.text }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "7758173c-f34e-45d9-9230-499aacefd109",
"name": "Agent de vision IA",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
128,
-64
],
"parameters": {
"text": "=Analyze the provided business card image or text and accurately identify all of the following information.List them clearly.\n\nImage URL: {{ $('Telegram Trigger').item.json.message.photo[0].file_id }}",
"options": {
"systemMessage": "=System Prompt (for AI Vision Agent)\nYou are a business card data extraction expert. Analyze the provided business card image or text and accurately identify all of the following information. Return the results as a structured list.\n\nImportant Rules:\nAlways prioritize Japanese text when it is available.\nOnly use romanized or English text if no Japanese text exists for that field.\nIf both Japanese and romanized text are present, return only the Japanese version.\n\nFields to extract:\n-Company Name\n-Department\n-Job Title\n-Full Name\n-Postal Code\n-Address\n-Phone Number\n-Fax Number\n-Email Address\n-Website URL\n-Mobile Phone Number\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "d274cf40-53c1-4c2a-a3cd-b51737c79a11",
"name": "Modèle de vision OpenAI",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
112,
112
],
"parameters": {
"options": {
"temperature": 0.3
}
},
"credentials": {
"openRouterApi": {
"id": "D1q69WNrqGh2Tmie",
"name": "OpenRouter 使える"
}
},
"typeVersion": 1
},
{
"id": "ea82ce74-d4fe-406a-a60f-c870818fcec4",
"name": "Analyseur d'ingrédients",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
288,
112
],
"parameters": {
"autoFix": "={{ false }}",
"schemaType": "manual",
"inputSchema": "{\n \"company_name\": \"Example Company Ltd.\",\n \"department\": \"Sales\",\n \"job_title\": \"Sales Manager\",\n \"full_name\": \"Taro Yamada\",\n \"postal_code\": \"100-0001\",\n \"address\": \"1-1-1 Marunouchi, Chiyoda-ku, Tokyo\",\n \"phone_number\": \"+81-3-0000-0000\",\n \"mobile_phone_number\": \"+81-90-0000-0000\",\n \"fax_number\": \"+81-3-1111-1111\",\n \"email\": \"example@company.com\",\n \"website_url\": \"https://example.com\"\n}\n"
},
"typeVersion": 1.2
},
{
"id": "84e37cd2-6ffa-4b35-a8d4-fae8cb1f4d65",
"name": "Déclencheur Telegram",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-336,
-48
],
"webhookId": "76cdce48-d78e-40cd-b034-a0cf3ed053be",
"parameters": {
"updates": [
"message"
],
"additionalFields": {
"download": true
}
},
"credentials": {
"telegramApi": {
"id": "G5qcQjXQQnQYJNzo",
"name": "Telegram account_AQOS"
}
},
"typeVersion": 1.2
},
{
"id": "b5c11a80-b969-4af8-9473-e2da7850bb84",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
-272
],
"parameters": {
"color": 2,
"height": 384,
"content": "## ①Send business card image\nSend a business card image to your Telegram bot"
},
"typeVersion": 1
},
{
"id": "c48693cf-60b6-4617-8ea6-0a56fd2fe6b6",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
-272
],
"parameters": {
"color": 4,
"height": 384,
"content": "## ②Business Card Image Input Filter\nChecks if the incoming Telegram message contains an image or text"
},
"typeVersion": 1
},
{
"id": "b96a98b1-2fb9-4290-8aa1-f526f9d9f809",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
112,
-272
],
"parameters": {
"color": 3,
"width": 256,
"height": 384,
"content": "## ③Analyze business card image\nThe structured output is cleaned and standardized by the parser"
},
"typeVersion": 1
},
{
"id": "a4aad8f8-fa84-4c5c-8e16-52d3cfc2d010",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
-272
],
"parameters": {
"color": 5,
"height": 384,
"content": "## ④Log the parsed business card details into Google Sheets\nGoogle Sheets node appends or updates the contact data automatically"
},
"typeVersion": 1
},
{
"id": "b02297b2-0cd1-4eee-86e0-e1a0d4c3de52",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
-432
],
"parameters": {
"width": 480,
"height": 544,
"content": "## Business Card OCR Auto-Logging (Telegram → AI → Google Sheets) \n\n**Description:**\nThis workflow automatically extracts structured contact information from business card images sent via Telegram and logs the results into Google Sheets.\nAn AI Vision Agent analyzes the image, identifies key fields such as company name, person’s name, department, job title, and contact details, and formats the data into a structured JSON format for direct entry.\n\n**Key Features:**\n\n📤 Send a business card image via Telegram\n\n🤖 AI Vision Agent (powered by OpenRouter) detects company, \nname, department, job title, address, phone, email, and more\n\n🧩 The “Output Parser” ensures consistent JSON formatting for clean Google Sheets integration\n\n📊 Automatically saves or updates each contact in Google \nSheets (appendOrUpdate mode)\n\n🧠 Optimized for Japanese business cards with high OCR precision"
},
"typeVersion": 1
},
{
"id": "29c0d3aa-06b4-429a-bd5a-8d1b96c04356",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
112
],
"parameters": {
"width": 480,
"height": 272,
"content": "**Use Cases:**\n\n**💼Sales & CRM**:Automatically build and update your client database from received business cards\n\n**🏢Back Office & Admin**: Digitize incoming cards for unified company records\n\n**📧Marketing Teams**: Collect and manage leads efficiently\n\n**📚 AI / OCR Research**: Build structured datasets for training AI models or internal automation"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8672707b-9789-482b-a6ee-b5a88928dc8d",
"connections": {
"7758173c-f34e-45d9-9230-499aacefd109": {
"main": [
[
{
"node": "beaba1cd-076a-4223-b481-4d0dd7474590",
"type": "main",
"index": 0
}
]
]
},
"e804b404-71ad-4a9b-a554-48e2515e7bc8": {
"main": [
[
{
"node": "7758173c-f34e-45d9-9230-499aacefd109",
"type": "main",
"index": 0
}
]
]
},
"84e37cd2-6ffa-4b35-a8d4-fae8cb1f4d65": {
"main": [
[
{
"node": "e804b404-71ad-4a9b-a554-48e2515e7bc8",
"type": "main",
"index": 0
}
]
]
},
"ea82ce74-d4fe-406a-a60f-c870818fcec4": {
"ai_outputParser": [
[
{
"node": "7758173c-f34e-45d9-9230-499aacefd109",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"d274cf40-53c1-4c2a-a3cd-b51737c79a11": {
"ai_languageModel": [
[
{
"node": "7758173c-f34e-45d9-9230-499aacefd109",
"type": "ai_languageModel",
"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
Partager ce workflow