In this categoryAutomation · 38
- How to Self-Host n8n with Docker for AI WorkflowsStart
- How to Extract Structured Data from PDFs with n8n
- How to Add OpenAI Credentials to n8n
- How to Connect Anthropic Claude as the Model in n8n Workflows
- How to Build an AI Messaging / Chatbot Automation (No Code)
- How to Build an AI Agent with Tools in n8n
- How to Build an n8n Workflow That Summarizes New Emails with AI
- How to Build a RAG Chatbot Over Your Docs in n8n
- How to Auto-Classify and Route Support Tickets with AI in n8n
- How to Schedule Daily AI Content Generation in n8n
- How to Extract Structured Data from PDFs with AI in n8n
- How to Add Error Handling and Retries to n8n AI Workflows
- How to Transcribe and Summarize Audio with AI in n8n
- How to Summarize Incoming Emails with AI in Make.com
- How to Auto-Classify Support Tickets with AI in Make.com
- How to Turn RSS Headlines into AI Blog Drafts in Make.com
- How to Build an AI Telegram Chatbot in Make.com
- How to Answer Questions from Your Docs with AI in Make.com
- How to Auto-Transcribe Audio Files with Whisper in Make.com
- How to Extract Invoice Data from PDFs with AI Vision in Make.com
- How to Generate Images from a Spreadsheet with AI in Make.com
- How to Run AI Sentiment Analysis on New Reviews in Make.com
- How to Auto-Translate Content into Multiple Languages in Make.com
- How to Handle AI Errors and Rate Limits in Make.com Scenarios
- How to Build Your First Zap with an AI Step
- How to Use Your Own OpenAI API Key in Zapier
- How to Auto-Summarize Form Submissions and Post Them to Slack
- How to Auto-Generate Social Media Captions From New Blog Posts
- How to Extract Structured Data From Emails Using a Zapier AI Step
- How to Call the Claude API From Zapier Using Webhooks
- How to Build a Simple AI Chatbot with Zapier Interfaces and Tables
- How to Build a Multi-Step AI Research Agent in Zapier
- How to Auto-Categorize and Route Support Tickets with AI and Paths
- How to Cut AI Task Usage in Zapier With Filters and Formatter
- How to Debug AI Steps in Zapier Using Zap History
How to Extract Structured Data from PDFs with n8n
Read a PDF in n8n, send the text to an LLM with a fixed schema, and write clean JSON rows to Google Sheets or a database.
Copying fields out of PDFs by hand does not scale. This guide builds an n8n workflow that pulls the text from a PDF, hands it to a language model with a fixed schema, and writes the result as structured JSON into Google Sheets or a database. The whole thing is four nodes plus a chat model, and it runs unattended once it is on.
- An n8n instance (cloud or self-hosted)
- A source for the PDF, such as a Google Drive folder, an email inbox, or an HTTP URL
- An OpenAI or Anthropic API key for the chat model
- A destination: a Google Sheet, Postgres, or any database node
Step 1: Get the PDF into the workflow as binary
The text extraction node needs the actual file data, not a link. Start with a trigger, then add a node that returns the PDF as binary: a Google Drive node with the Download File operation, an HTTP Request node pointed at a file URL, or the Gmail node reading an attachment. Run it once so the PDF arrives on a binary property (n8n names it data by default).
Step 2: Pull the raw text with Extract From File
Add the Extract From File node and set Operation to Extract From PDF. Point Input Binary Field at the property that holds your file (data, unless you renamed it). On run, the node converts the PDF into JSON and puts the document text on an output field named text, which you will feed to the model in the next step.
Step 3: Extract structured fields with an LLM
Add the Information Extractor node from the Advanced AI section. It needs a chat model attached as a sub-node, so connect an OpenAI Chat Model or Anthropic Chat Model underneath it and add your API credential. In the Text field, map the extracted text with an expression such as {{ $json.text }}. Then choose how you describe the output shape.
| Schema Type option | What you provide | Best for |
|---|---|---|
| From Attribute Descriptions | A list of field names plus a short description each | Quick setups, a handful of flat fields |
| Generate From JSON Example | One sample JSON object; n8n infers the schema | When you already have an example record |
| Define using JSON Schema | A full JSON Schema you paste in | Strict control, nested objects, arrays |
{
"vendor": "Vellum Co",
"invoice_number": "INV-2041",
"date": "2026-06-12",
"total": 1240.00,
"currency": "USD",
"line_items": [
{ "description": "Design retainer", "amount": 1240.00 }
]
}Step 4: Write the JSON to Sheets or a database
The Information Extractor outputs your fields under an output object, ready to map directly. Add a Google Sheets node with the Append Row operation, or a Postgres / MySQL Insert node, and map each field (for example {{ $json.output.vendor }} and {{ $json.output.total }}) to a column. No separate JSON parse step is needed because the node already returns structured data.
Result: any PDF that lands in your source now becomes a clean, schema-checked row in seconds. Test with a few real documents and compare the values against the originals, then activate the workflow so it runs on every new file.
Related guides
How to Build an AI Messaging / Chatbot Automation (No Code)
Wire a chat trigger to an AI model and reply automatically, using n8n or Make, with no code and one short prompt.
How to Summarize Incoming Emails with AI in Make.com
Build a Make scenario that watches a Gmail inbox and posts a short AI summary of each new email to Slack.
Watch related tutorials
32:08
21:45
34:10
26:40
32:15
40:20New guides in your inbox
Fresh step-by-step how-to guides as we publish them. One email a week, no more.