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

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.

Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds14
Catégorie-
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34