Extract And Process Information Directly From Pdf Using Claude And Gemini

1 Tools

Explore Tool Categories

Find Agencies for This Project

Know a Better Recipe?

Help the community by sharing your proven tool combinations.

Submit a Recipe

About this recipe

A recipe for Extract And Process Information Directly From Pdf Using Claude And Gemini

Recipe Template

{
    "meta": {
        "instanceId": "f4f5d195bb2162a0972f737368404b18be694648d365d6c6771d7b4909d28167"
    },
    "nodes": [
        {
            "id": "b6cd232e-e82e-457b-9f03-c010b3eba148",
            "name": "When clicking 'Test workflow'",
            "type": "n8n-nodes-base.manualTrigger",
            "position": [
                -40,
                0
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "2b734806-e3c0-4552-a491-54ca846ed3ac",
            "name": "Extract from File",
            "type": "n8n-nodes-base.extractFromFile",
            "position": [
                620,
                0
            ],
            "parameters": {
                "options": [],
                "operation": "binaryToPropery"
            },
            "typeVersion": 1
        },
        {
            "id": "2c199499-cc4f-405c-8560-765500b7acba",
            "name": "Google Drive",
            "type": "n8n-nodes-base.googleDrive",
            "position": [
                420,
                0
            ],
            "parameters": {
                "fileId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "18Ac2xorxirIBm9FNFDDB5aVUSPBCCg1U",
                    "cachedResultUrl": "https:\/\/drive.google.com\/file\/d\/18Ac2xorxirIBm9FNFDDB5aVUSPBCCg1U\/view?usp=drivesdk",
                    "cachedResultName": "Invoice-798FE2FA-0004.pdf"
                },
                "options": [],
                "operation": "download"
            },
            "credentials": {
                "googleDriveOAuth2Api": {
                    "id": "AUEpxwlqBJghNMtb",
                    "name": "Google Drive account"
                }
            },
            "typeVersion": 3
        },
        {
            "id": "e3031c0c-f059-4f30-9684-10014a277d55",
            "name": "Call Gemini 2.0 Flash with PDF Capabilities",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                880,
                220
            ],
            "parameters": {
                "url": "https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/gemini-2.0-flash-exp:generateContent",
                "method": "POST",
                "options": [],
                "jsonBody": "={\n \"contents\": [\n {\n \"parts\": [\n {\n \"inline_data\": {\n \"mime_type\": \"application\/pdf\",\n \"data\": \"{{ $json.data }}\"\n }\n },\n {\n \"text\": \"{{ $('Define Prompt').item.json.prompt }}\"\n }\n ]\n }\n ]\n}",
                "sendBody": true,
                "specifyBody": "json",
                "authentication": "predefinedCredentialType",
                "nodeCredentialType": "googlePalmApi"
            },
            "credentials": {
                "anthropicApi": {
                    "id": "eOt6Ois0jSizRFMJ",
                    "name": "Anthropic Mira Account"
                },
                "googlePalmApi": {
                    "id": "IQrjvfoUd5LUft3b",
                    "name": "Google Gemini(PaLM) Api account"
                }
            },
            "typeVersion": 4.2
        },
        {
            "id": "135df716-32a1-47e8-9ed8-30c830b803d6",
            "name": "Call Claude 3.5 Sonnet with PDF Capabilities",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                880,
                -140
            ],
            "parameters": {
                "url": "https:\/\/api.anthropic.com\/v1\/messages",
                "method": "POST",
                "options": [],
                "jsonBody": "={\n \"model\": \"claude-3-5-sonnet-20241022\",\n \"max_tokens\": 1024,\n \"messages\": [{\n \"role\": \"user\",\n \"content\": [{\n \"type\": \"document\",\n \"source\": {\n \"type\": \"base64\",\n \"media_type\": \"application\/pdf\",\n \"data\": \"{{$json.data}}\"\n }\n },\n {\n \"type\": \"text\",\n \"text\": \"{{ $('Define Prompt').item.json.prompt }}\"\n }]\n }]\n}",
                "sendBody": true,
                "sendHeaders": true,
                "specifyBody": "json",
                "authentication": "predefinedCredentialType",
                "headerParameters": {
                    "parameters": [
                        {
                            "name": "anthropic-version",
                            "value": "2023-06-01"
                        },
                        {
                            "name": "content-type",
                            "value": "application\/json"
                        }
                    ]
                },
                "nodeCredentialType": "anthropicApi"
            },
            "credentials": {
                "anthropicApi": {
                    "id": "eOt6Ois0jSizRFMJ",
                    "name": "Anthropic Mira Account"
                }
            },
            "typeVersion": 4.2
        },
        {
            "id": "5b8994d1-4bfd-4776-84ac-b3141aca6378",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -700,
                -280
            ],
            "parameters": {
                "color": 7,
                "width": 601,
                "height": 585,
                "content": "## Workflow: Extract data from PDF with Claude 3.5 Sonnet or Gemini 2.0 Flash\n\n**Overview**\n- This workflow helps you compare Claude 3.5 Sonnet and Gemini 2.0 Flash when extracting data from a PDF\n- This workflow extracts and processes the data within a PDF in **one single step**, **instead of calling an OCR and then an LLM\u201d**\n\n\n**How it works**\n- The initial 2 steps download the PDF and convert it to base64.\n- This base64 string is then sent to both Claude 3.5 Sonnet and Gemini 2.0 Flash to extract information.\n- This workflow is made to let you compare results, latency, and cost (in their dedicated dashboard).\n\n\n**How to use it**\n- Set up your Google Drive if not already done\n- Select a document on your Google Drive\n- Modify the prompt in \"Define Prompt\" to extract the information you need and transform it as wanted.\n- Get a [Claude API key](https:\/\/console.anthropic.com\/settings\/keys) and\/or [Gemini API key](https:\/\/aistudio.google.com\/app\/apikey)\n- Note that you can deactivate one of the 2 API calls if you don't want to try both\n- Test the Workflow\n"
            },
            "typeVersion": 1
        },
        {
            "id": "616241a9-6199-406b-88dc-0afc7d974250",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                820,
                60
            ],
            "parameters": {
                "color": 5,
                "width": 320,
                "height": 360,
                "content": "You can output the result as JSON by adding the following:\n```\n\"generationConfig\": {\n \"responseMimeType\": \"application\/json\"\n```\nor even use a structured output.\n[Check the documentation](https:\/\/ai.google.dev\/gemini-api\/docs\/structured-output?lang=rest)"
            },
            "typeVersion": 1
        },
        {
            "id": "bbac8d3d-d68f-4aa2-a41a-b06f7de2317b",
            "name": "Define Prompt",
            "type": "n8n-nodes-base.set",
            "position": [
                180,
                0
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "dba23ef5-95df-496a-8e24-c7c1544533d2",
                            "name": "prompt",
                            "type": "string",
                            "value": "Extract the VAT numbers for each country"
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        },
        {
            "id": "3c2e7265-76e5-4911-a950-7e6b0c89ec5a",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                820,
                -200
            ],
            "parameters": {
                "color": 5,
                "width": 320,
                "height": 240,
                "content": "You can force Claude to output JSON with [Prefill response format](https:\/\/docs.anthropic.com\/en\/docs\/test-and-evaluate\/strengthen-guardrails\/increase-consistency#prefill-claudes-response)"
            },
            "typeVersion": 1
        },
        {
            "id": "f2b46305-5200-486e-ad4d-ecc0d2a14314",
            "name": "Sticky Note3",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                380,
                -120
            ],
            "parameters": {
                "color": 5,
                "width": 380,
                "height": 280,
                "content": "These 2 steps first download the PDF file, and then convert it to base64.\nThis is required by both APIs to process the file."
            },
            "typeVersion": 1
        },
        {
            "id": "e5dff70f-b55a-4c23-9025-765a7cf19c4a",
            "name": "Sticky Note4",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                120,
                -120
            ],
            "parameters": {
                "color": 5,
                "width": 220,
                "height": 280,
                "content": "This prompt is used in both Gemini\u2019s and Claude\u2019s calls to define what information should be extracted and processed."
            },
            "typeVersion": 1
        }
    ],
    "pinData": [],
    "connections": {
        "Google Drive": {
            "main": [
                [
                    {
                        "node": "Extract from File",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Define Prompt": {
            "main": [
                [
                    {
                        "node": "Google Drive",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Extract from File": {
            "main": [
                [
                    {
                        "node": "Call Claude 3.5 Sonnet with PDF Capabilities",
                        "type": "main",
                        "index": 0
                    },
                    {
                        "node": "Call Gemini 2.0 Flash with PDF Capabilities",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "When clicking 'Test workflow'": {
            "main": [
                [
                    {
                        "node": "Define Prompt",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}

How to Use an n8n Template

1

Create a New Workflow

Click "New Workflow" in your n8n dashboard to get started.

2

Copy & Paste Template

First, copy this template: Click here to copy the JSON .
Then, in n8n, click the three dots (···) → "Import from file" and paste the JSON code.

3

Customize the Nodes

Go through each node in the workflow to update inputs like spreadsheet IDs, email addresses, or message content. Adjust field mappings to match your data.

4

Grant Access

For nodes that connect to external apps (like Google Sheets or Slack), you'll need to grant access. Connect your accounts using OAuth or an API key and save the credentials in the node.

5

Test It

Run the workflow by clicking "Execute Node" for each step or "Run Once" for the whole thing. Check the right sidebar to inspect data and debug any errors (they'll show up in red).

6

Activate Workflow

Once everything works as expected, click the "Activate" toggle to turn your workflow on. You're all set!