Carte de visite scanner
Intermédiaire
Ceci est uncontenant 14 nœuds.Utilise principalement des nœuds comme DataTable, FormTrigger, HttpRequest, Agent, ExtractFromFile. Extraire les informations de contact à partir de cartes de visite avec Mistral OCR et GPT-4o-mini
Prérequis
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
Nœuds utilisés (14)
Catégorie
-
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"id": "96Ab7Pgv1EJuTmxK",
"meta": {
"instanceId": "c8b95e29c17127b212f04efc4af0e88eb8ed7f9fbac9f0513cac20f47e8e86db",
"templateCredsSetupCompleted": true
},
"name": "Business card scanner",
"tags": [
{
"id": "fhnwm2x2nil3wCDz",
"name": "n8n database",
"createdAt": "2025-10-03T02:19:57.035Z",
"updatedAt": "2025-10-03T02:19:57.035Z"
},
{
"id": "z50kYN6ZCBwCtje9",
"name": "Mistral OCR",
"createdAt": "2025-10-03T02:25:59.717Z",
"updatedAt": "2025-10-03T02:25:59.717Z"
},
{
"id": "IawKguNngWRq4lUe",
"name": "OpenAI",
"createdAt": "2025-10-06T02:33:58.972Z",
"updatedAt": "2025-10-06T02:33:58.972Z"
}
],
"nodes": [
{
"id": "c333cb6d-8366-419c-bfee-c939485d9122",
"name": "Mistral OCR API",
"type": "n8n-nodes-base.httpRequest",
"position": [
576,
592
],
"parameters": {
"url": "https://api.mistral.ai/v1/ocr",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "ocr_output.json"
}
}
},
"jsonBody": "={\n \"model\": \"mistral-ocr-latest\",\n \"document\": {\n \"type\": \"document_url\",\n \"document_url\": \"data:application/pdf;base64,{{ $json.data }}\"\n },\n \"include_image_base64\": true\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "FXRzJOFSFbJ69oyG",
"name": "Mistral OCR - Bearer Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "7249608d-fe26-44c7-b33a-6ca1f6342bcf",
"name": "Agent IA",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1088,
592
],
"parameters": {
"text": "=Business Card: {{ $json.data.pages[0].markdown }}",
"options": {
"systemMessage": "You are a business card reader that reads the data from the card."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "ae9c9a46-f3e4-410b-8ea6-a64121a15f03",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1008,
816
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "pZ0XcQlml2P1EaUh",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "577cb6d1-2950-4c6a-b967-4e048b766663",
"name": "Analyseur de sortie structurée",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1328,
816
],
"parameters": {
"jsonSchemaExample": "{\n\t\"firstname\": \"\",\n\t\"name\": \"\",\n \"company\": \"\",\n \"web\": \"\",\n \"email\": \"\",\n \"street\": \"\",\n \"postcode\": \"\",\n \"place\": \"\",\n \"phone\": \"\",\n \"mobile\": \"\",\n \"jobdescription\": \"\"\n}"
},
"typeVersion": 1.3
},
{
"id": "43396e25-a83a-4c6c-87ba-dfedbf932858",
"name": "Mémoire simple",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1136,
816
],
"parameters": {
"sessionKey": "={{ $('Data to base64').item.json.submittedAt }}",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "c5364bc2-8e0a-4f34-a964-77630cf82d0a",
"name": "Insérer/mettre à jour des lignes",
"type": "n8n-nodes-base.dataTable",
"position": [
1488,
592
],
"parameters": {
"columns": {
"value": {
"name": "={{ $json.output.name }}",
"email": "={{ $json.output.email }}",
"phone": "={{ $json.output.phone }}",
"place": "={{ $json.output.place }}",
"mobile": "={{ $json.output.mobile }}",
"street": "={{ $json.output.street }}",
"company": "={{ $json.output.company }}",
"postcode": "={{ $json.output.postcode }}",
"firstname": "={{ $json.output.firstname }}",
"jobdescription": "={{ $json.output.jobdescrition }}"
},
"schema": [
{
"id": "firstname",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "firstname",
"defaultMatch": false
},
{
"id": "name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "name",
"defaultMatch": false
},
{
"id": "company",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "company",
"defaultMatch": false
},
{
"id": "jobdescription",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "jobdescription",
"defaultMatch": false
},
{
"id": "email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "email",
"defaultMatch": false
},
{
"id": "phone",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "phone",
"defaultMatch": false
},
{
"id": "mobile",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "mobile",
"defaultMatch": false
},
{
"id": "street",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "street",
"defaultMatch": false
},
{
"id": "postcode",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "postcode",
"defaultMatch": false
},
{
"id": "place",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "place",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyName": "email",
"keyValue": "={{ $json.output.email }}"
}
]
},
"operation": "upsert",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "WTKp1ogUGN0k0pD6",
"cachedResultUrl": "/projects/xuL3yDGtM7UrPnER/datatables/WTKp1ogUGN0k0pD6",
"cachedResultName": "business cards"
}
},
"typeVersion": 1
},
{
"id": "0b69909c-545f-4c4a-a8f9-84053017e3ee",
"name": "À la soumission du formulaire",
"type": "n8n-nodes-base.formTrigger",
"position": [
128,
592
],
"webhookId": "aaffb314-e319-48c3-8aa0-153af5dc288c",
"parameters": {
"options": {},
"formTitle": "Business card scanner",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "business card",
"multipleFiles": false,
"requiredField": true
}
]
},
"formDescription": "Upload a business card (PDF or image)"
},
"typeVersion": 2.3
},
{
"id": "dc7fd4f7-00c7-4443-9f8d-76215a52e1e9",
"name": "Données en base64",
"type": "n8n-nodes-base.extractFromFile",
"position": [
352,
592
],
"parameters": {
"options": {
"keepSource": "both"
},
"operation": "binaryToPropery",
"binaryPropertyName": "Business_card"
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "80815e01-803d-4315-a608-8edf4eb33dc1",
"name": "JSON Parser",
"type": "n8n-nodes-base.extractFromFile",
"position": [
816,
592
],
"parameters": {
"options": {},
"operation": "fromJson",
"binaryPropertyName": "ocr_output.json"
},
"typeVersion": 1
},
{
"id": "de28fe50-b376-4b1a-96dc-0bbe856134ce",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
384
],
"parameters": {
"color": 7,
"height": 400,
"content": "# upload via a web form\npdf, jpg, ...."
},
"typeVersion": 1
},
{
"id": "50f8ae36-5dda-4f6a-86f4-2ea5df1c9fa5",
"name": "Note adhésive 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
288,
384
],
"parameters": {
"color": 7,
"width": 656,
"height": 400,
"content": "# OCR via Mistral OCR API\n## [Docs](https://mistral.ai/news/mistral-ocr)"
},
"typeVersion": 1
},
{
"id": "6e66a1c4-cfd0-4dcb-852f-7da5018e43dd",
"name": "Note adhésive 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
384
],
"parameters": {
"color": 7,
"width": 496,
"height": 576,
"content": "# Extract the defined content\n## [Setup an openAI API key](hhttps://platform.openai.com/api-keys)"
},
"typeVersion": 1
},
{
"id": "b3f5282d-bab5-4262-a611-5d16a23603db",
"name": "Note adhésive 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1472,
384
],
"parameters": {
"color": 7,
"height": 400,
"content": "# upsert the database\nusing the email address as key criteria\n"
},
"typeVersion": 1
},
{
"id": "8e524da5-74de-4baa-9c77-9e1f16aca300",
"name": "Note adhésive 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
384
],
"parameters": {
"color": 5,
"width": 608,
"height": 400,
"content": "## 🧠 Business Card Scanner\n\nThis workflow automatically extracts contact details from uploaded business card images or PDFs using Mistral OCR and OpenAI GPT-4o-mini, then saves the structured data into an n8n Data Table.\n\nSetup:\n\t1.\tAdd your Mistral API key (HTTP Bearer Auth).\n\t2.\tAdd your OpenAI API key (OpenAI Credentials).\n\t3.\tCreate a Data Table named business_cards with fields for name, company, email, phone, etc.\n\t4.\tEnable the Form Trigger to upload business cards and test the workflow.\n\n✅ Result: business cards are instantly digitized into searchable contact data."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8500aaf2-93b2-422e-b574-834b3127b137",
"connections": {
"7249608d-fe26-44c7-b33a-6ca1f6342bcf": {
"main": [
[
{
"node": "c5364bc2-8e0a-4f34-a964-77630cf82d0a",
"type": "main",
"index": 0
}
]
]
},
"80815e01-803d-4315-a608-8edf4eb33dc1": {
"main": [
[
{
"node": "7249608d-fe26-44c7-b33a-6ca1f6342bcf",
"type": "main",
"index": 0
}
]
]
},
"43396e25-a83a-4c6c-87ba-dfedbf932858": {
"ai_memory": [
[
{
"node": "7249608d-fe26-44c7-b33a-6ca1f6342bcf",
"type": "ai_memory",
"index": 0
}
]
]
},
"dc7fd4f7-00c7-4443-9f8d-76215a52e1e9": {
"main": [
[
{
"node": "c333cb6d-8366-419c-bfee-c939485d9122",
"type": "main",
"index": 0
}
]
]
},
"c333cb6d-8366-419c-bfee-c939485d9122": {
"main": [
[
{
"node": "80815e01-803d-4315-a608-8edf4eb33dc1",
"type": "main",
"index": 0
}
]
]
},
"ae9c9a46-f3e4-410b-8ea6-a64121a15f03": {
"ai_languageModel": [
[
{
"node": "7249608d-fe26-44c7-b33a-6ca1f6342bcf",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"0b69909c-545f-4c4a-a8f9-84053017e3ee": {
"main": [
[
{
"node": "dc7fd4f7-00c7-4443-9f8d-76215a52e1e9",
"type": "main",
"index": 0
}
]
]
},
"577cb6d1-2950-4c6a-b967-4e048b766663": {
"ai_outputParser": [
[
{
"node": "7249608d-fe26-44c7-b33a-6ca1f6342bcf",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}Foire aux questions
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
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
Explorer les nœuds n8n dans la bibliothèque de références visuelles
Explorer les nœuds n8n dans la base de références visuelles
If
Ftp
Set
+
If
Ftp
Set
113 NœudsI versus AI
Autres
Robot de support WhatsApp par IA basé sur Google Sheets (création de tickets)
Robot de support WhatsApp basé sur l'IA (création de tickets Google Sheets)
Set
Xml
Code
+
Set
Xml
Code
35 NœudsZain Khan
Chatbot de support
Rapport automatisé d'analyse d'actions basé sur la technologie GPT-4o et l'analyse des sentiments des actualités
Rapport automatisé d'analyse d'actions utilisant GPT-4o et l'analyse des sentiments des actualités
Set
Code
Html
+
Set
Code
Html
45 NœudsElay Guez
Finance
1. Configuration du robot pour les détails de la playlist
Créer des playlists de musique YouTube générées par l'IA avec Suno, GPT-4, Runway et Creatomate
If
Set
Code
+
If
Set
Code
203 NœudsJoseph
Création de contenu
Créer un carrousel LinkedIn de marque avec GPT-4o-mini, des modèles Figma et Templated
Créer des carrousels LinkedIn sur-mesure avec GPT-4o-mini, modèles Figma et Templated
Set
Wait
Switch
+
Set
Wait
Switch
31 NœudsRonalds Palacis
Aarna verse - IA influenceur
Générer des publications pour influenceurs avec GPT-4, Google Sheets et l'API des médias
Merge
Filter
Split Out
+
Merge
Filter
Split Out
25 NœudsPalak Rathor
Création de contenu
Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds14
Catégorie-
Types de nœuds9
Description de la difficulté
Auteur
Wolfgang Renner
@naviqoLiens externes
Voir sur n8n.io →
Partager ce workflow