
Need to extract text from a PDF in Power Automate? You’re not alone. It’s one of the most searched automation tasks, and for good reason. Whether you’re processing invoices, parsing resumes, or pulling data from contracts, getting text out of PDFs is the backbone of document automation.
In this guide, we’ll cover everything from the built-in Power Automate actions to handling the tricky cases (scanned PDFs, images, messy layouts) where native tools fall short. We’ll also show you how to plug in AI-powered extraction using ParserBee’s API to get clean, structured JSON data โ all without writing a single line of code.
We’ve also put together a complete guide to Zapier PDF data extraction if you use Zapier instead of Power Automate, or visit the ParserBee blog for other guides.
What Does “Extract Text from PDF” Mean in Power Automate?
When people say they want to extract text from a PDF in Power Automate, they usually mean one of these things:
- Get all the raw text from a digital PDF (text you can select and copy)
- Read text from a scanned PDF or image-based document using OCR
- Extract specific data fields like names, dates, amounts, or addresses from a document
- Pull structured data (like table rows or form fields) into a usable format
Power Automate offers different tools for each of these scenarios. The right approach depends on what kind of PDF you’re working with and what you want to do with the extracted data.
Method 1: Using the Built-in “Extract Text from PDF” Action
Power Automate Desktop includes a native “Extract text from PDF” action. Here’s how to use it:
Steps:
- Open Power Automate Desktop and create a new flow
- Add the “Extract text from PDF” action
- Set the PDF file path (from a local folder, SharePoint, OneDrive, etc.)
- Choose the page range (all pages or specific pages)
- Run the flow – the extracted text is stored in a variable

What It Does Well:
- โ Works great for digitally created PDFs (from Word, Excel, Google Docs, etc.)
- โ Fast and free. No premium connectors needed
- โ Simple to set up for basic text extraction
What It Doesn’t Do:
- โ Cannot read scanned PDFs or image-based documents
- โ Returns raw unstructured text. No field-level data extraction
- โ No support for extracting data from images (PNG, JPEG, WebP)
- โ Struggles with complex layouts, multi-column PDFs, and tables
Bottom line: If your PDFs are digitally generated and you just need the raw text, this built-in action works fine. But if you need structured data or have scanned documents, keep reading.
Method 2: Using AI Builder for Scanned PDFs and Images
For scanned PDFs and image-based documents, Power Automate offers AI Builder โ Microsoft’s AI add-on that includes OCR (Optical Character Recognition).
Steps:
- In your cloud flow, add the “Recognize text in an image or PDF document” action (AI Builder)
- Provide the file content from your trigger (e.g., “When a file is created in SharePoint”)
- AI Builder uses OCR to read the text
- Access the extracted text in subsequent actions

What It Does Well:
- โ Can read text from scanned PDFs and images
- โ Integrates directly into cloud flows
What It Doesn’t Do:
- โ Requires a premium license (AI Builder credits)
- โ Returns raw OCR text. Still no structured data extraction
- โ Accuracy varies significantly based on document quality
- โ Slow processing. Large PDFs can take minutes or even hours
- โ Has file size and page count limits
- โ Different OCR engines produce inconsistent results
- โ Cannot extract data from forms or extract specific fields
The Problem: Why Native PDF Extraction Often Falls Short
Here’s the reality that most Power Automate users run into – and it’s the reason you’re probably reading this article:
1. Raw Text โ Usable Data
The built-in actions give you a giant block of text. If you’re extracting an invoice, you get something like:
Invoice #12345
Date: March 10, 2026
Bill To: Acme Corp
123 Main Street
Item: Consulting Services
Amount: $5,000.00
Tax: $500.00
Total: $5,500.00
Now you need to write complex regex patterns or use multiple string functions to pull out the invoice number, date, amount, etc. This is fragile, breaks when layouts change, and is not scalable.
2. Scanned Documents Are a Nightmare
Roughly 30โ40% of business documents are scanned PDFs or images. The native “Extract text from PDF” action simply returns nothing for these documents. AI Builder helps, but adds cost, complexity, and inconsistent accuracy.
3. No Support for Images
Need to extract text from an image (PNG, JPEG) in Power Automate? The built-in PDF action doesn’t work at all. You need AI Builder or a third-party connector, which means premium costs.
4. Complex Layouts Break Everything
Multi-column PDFs, tables, forms with checkboxes, documents with headers and footers – these common formats produce garbled output with native extraction.
5. No Template-Based Extraction
What if you process the same type of document every day (invoices, purchase orders, applications)? You’d want to define once what fields to extract and have it work automatically. Native Power Automate has no built-in way to do this.
This is exactly the gap that ParserBee fills – and it works right inside your Power Automate flows.
Method 3: Using ParserBee API in Power Automate (Recommended)
ParserBee is an AI-powered document parsing platform that extracts structured data from any document – PDFs, scanned documents, images and phone photos (PNG, JPEG, WebP, HEIC), Word, PowerPoint, Excel, CSV, text, HTML and email files (.eml) – and returns clean JSON output.
The best part? You can call ParserBee’s API directly from Power Automate using the HTTP connector. No coding required.
How It Works:
- Create a template on ParserBee – define the exact fields you want to extract (e.g., invoice_number, date, total_amount, line_items)
- Copy your API key (created automatically when you sign up) from Settings, API Keys
- Add an HTTP action in Power Automate to call ParserBee’s extraction API
- Get structured JSON back – ready to use in your flow
Not sure you need an automated flow at all? If your documents arrive in batches rather than one by one in real time, you can skip Power Automate entirely. ParserBee’s Data Lab lets you drag up to 100 documents into the dashboard, extracts them all with your template, and exports the results to Excel, CSV or Google Sheets. No flow, no HTTP action, and no Power Automate Premium licence needed.
What Makes ParserBee Different:
| Feature | Native Power Automate | AI Builder | ParserBee API |
|---|---|---|---|
| Digital PDFs | โ | โ | โ |
| Scanned PDFs | โ | โ (with limits) | โ |
| Images (PNG, JPEG, WebP) | โ | โ (with limits) | โ |
| Word, Excel, CSV and email files | โ | โ | โ |
| Structured JSON output | โ | โ | โ |
| Custom extraction templates | โ | Limited | โ |
| Multi-record extraction | โ | โ | โ |
| Nested/complex fields | โ | โ | โ |
| Works in Power Automate | โ Native | โ Native | โ Via HTTP connector |
| No-code setup | โ | โ | โ |
| Pricing | Free | Premium (AI Builder credits) | Free tier available |
Get started with ParserBee for free โ
Step-by-Step: Set Up ParserBee in Power Automate
Here’s exactly how to set up AI-powered document extraction in your Power Automate flow using ParserBee. No coding required.
Step 1: Create Your ParserBee Account and Template
You do not have to build the template from scratch. The Template Library in the dashboard sidebar includes 83 ready-made templates, including an Invoice template: open it, click Customize & Create, and the fields arrive pre-filled for you to review, adjust and save. The steps below show the manual route, and the field descriptions apply either way.

- Go to app.parserbee.com and create a free account
- Navigate to Dashboard โ Create Template
- Give your template a name (e.g., “Invoice Extraction”)
- Add the fields you want to extract. For an invoice, you might add:
invoice_number(string)date(string)vendor_name(string)total_amount(number)line_items: set the Field Type to List (Repeating Rows). An invoice usually contains several rows of products or services; a List field tells ParserBee to extract every row as its own entry, one per line item, instead of only the first one. Inside the List, add three fields:description(Text),quantity(Number),unit_price(Number).
- Click Create Template and note down the Template ID




The most important part: write a clear description for every field
ParserBee’s AI decides what to extract by reading your field descriptions. A vague or empty description is the single most common reason for poor extraction results. Write each description as if you were explaining to a new assistant where to find the value on the document.
Here are ready-to-use descriptions for the invoice template above. Copy them into the Field Description box as you create each field:
| Field | Description to paste |
|---|---|
| invoice_number | The unique invoice number printed near the top of the invoice, usually labelled Invoice No, Invoice # or Reference. Example: INV-2026-0342 |
| date | The date the invoice was issued, usually printed near the invoice number. Return it in YYYY-MM-DD format. |
| vendor_name | The name of the company that issued the invoice, usually shown in the header or logo area at the top. |
| total_amount | The final total payable including tax, usually the last and largest amount at the bottom of the invoice. A number only, without currency symbols. |
| line_items | The table of products or services on the invoice. Each row of the table is one item. |
| line_items: description | The name or description of the product or service in this row of the invoice table. |
| line_items: quantity | The quantity in this row of the invoice table. A number only. |
| line_items: unit_price | The price per unit in this row of the invoice table. A number only, without currency symbols. |
Adapt the wording to your own documents: mention the label the value appears under, where it sits on the page, and the format you want back. The clearer the description, the more accurate the extraction.
Test before you build the flow: open your saved template and use the built-in test panel to upload one sample invoice. You will see the extracted results in seconds. If a field comes back empty or wrong, improve its description and test again. Getting the template right here is far faster than debugging it inside a Power Automate flow later.

Step 2: Build Your Power Automate Flow

Here’s the flow structure:
2a. Set Up Your Trigger
Choose a trigger based on your use case:
- “When a file is created (SharePoint)” – for documents uploaded to SharePoint
- “When a new email arrives (Outlook)” – for email attachments
- “Manually trigger a flow” – for testing

2b. Add the HTTP Action to Call ParserBee

- Add a new action โ Search for “HTTP” โ Select “HTTP” (premium connector)
- Configure it as follows:
Method: POST
URI: https://app.parserbee.com/api/v1/extract
Your API key was created automatically when you signed up. Find it in the ParserBee dashboard under Settings, API Keys, and use the copy button next to the key.

Headers:
| Key | Value |
|---|---|
x-api-key | your-parserbee-api-key |
Body (using file_url):
If your file is accessible via a URL (e.g., SharePoint link):
{
"template_id": "your-template-id",
"file_url": "@{triggerOutputs()?['body/MediaUrl']}"
}

Body (using file upload):
If you want to upload the file directly, change the content type to multipart/form-data and include:
template_id: Your template IDfile: The file content from your trigger
2c. Parse the JSON Response
- Add a “Parse JSON” action after the HTTP step
- Use this schema:
{
"type": "object",
"properties": {
"success": { "type": "boolean" },
"request_id": { "type": "string" },
"data": { "type": "object" },
"credits_remaining": { "type": "integer" },
"processing_time_ms": { "type": "integer" },
"usage": {
"type": "object",
"properties": {
"pages_processed": { "type": "integer" },
"doc_size_bytes": { "type": "integer" }
}
}
}
}
2d. Use the Extracted Data
Now you can use the extracted fields anywhere in your flow:
- Save to Excel or SharePoint – Map each field to a column
- Send an email notification – Include the extracted data in the email body
- Create a record in Dynamics 365 or Dataverse – Populate fields automatically
- Post to Microsoft Teams – Notify your team with the extracted information
- Update a database – Write data to SQL Server or any connected system
Get started with ParserBee for free โ
Use Case Examples
๐ Invoice Processing
Trigger: A new invoice PDF is uploaded to SharePoint
ParserBee Template Fields:
invoice_number(string)vendor_name(string)invoice_date(string)due_date(string)subtotal(number)tax(number)total_amount(number)line_items(List, one entry per invoice row) – withdescription,quantity,unit_price
What You Get Back:
{
"success": true,
"data": {
"invoice_number": "INV-2026-0342",
"vendor_name": "CloudTech Solutions",
"invoice_date": "2026-03-10",
"due_date": "2026-04-10",
"subtotal": 4500.00,
"tax": 450.00,
"total_amount": 4950.00,
"line_items": [
{
"description": "Cloud Hosting (March 2026)",
"quantity": 1,
"unit_price": 3000.00
},
{
"description": "Technical Support Package",
"quantity": 1,
"unit_price": 1500.00
}
]
},
"credits_remaining": 487,
"processing_time_ms": 2340
}
Next Steps in Flow: Add a row to an Excel table, send approval email, create a payment entry.
๐ Resume/CV Parsing
Trigger: A candidate uploads their resume via Microsoft Forms
ParserBee Template Fields:
name(string)email(string)phone(string)education(array) – withinstitution,degree,major,yearwork_experience(array) – withcompany,role,duration,descriptionskills(array of strings)
What You Get Back:
{
"success": true,
"data": {
"name": "Sarah Johnson",
"email": "[email protected]",
"phone": "(555) 123-4567",
"education": [
{
"institution": "MIT",
"degree": "B.S.",
"major": "Computer Science",
"year": "2022"
}
],
"work_experience": [
{
"company": "Google",
"role": "Software Engineer",
"duration": "2022 - Present",
"description": "Full-stack development on Cloud Platform"
}
],
"skills": ["Python", "React", "AWS", "SQL", "Docker"]
}
}
Next Steps in Flow: Create a record in your ATS, send to hiring manager, add to SharePoint list.
๐งพ Receipt and Expense Extraction
Trigger: An employee forwards a receipt image via email
ParserBee Template Fields:
merchant_name(string)date(string)total(number)payment_method(string)items(List) – withname,price
This works even with:
- ๐ฑ Photos of receipts (JPEG, PNG)
- ๐ Scanned PDFs of receipts
- ๐ WebP images
๐ Contract and Agreement Parsing
Trigger: A new contract is uploaded to a SharePoint folder
ParserBee Template Fields:
parties(LIST – array of strings)effective_date(string)expiration_date(string)contract_value(number)key_terms(array of strings)renewal_clause(string)
ParserBee vs Native Power Automate PDF Extraction
Here’s a side-by-side comparison to help you decide:
When to Use the Native “Extract Text from PDF” Action:
- โ Your PDFs are always digitally generated (never scanned)
- โ You only need the raw text as a block of unformatted content
- โ You have a simple, consistent document layout
- โ You are comfortable writing regex or string operations to parse the output
When to Use ParserBee API:
- โ You need structured JSON data – not raw text
- โ You process scanned PDFs or image-based documents
- โ You want to extract data from images (PNG, JPEG, WebP)
- โ You need to handle complex layouts, tables, or multi-page documents
- โ You want a template-based approach – define fields once, extract automatically
- โ You need nested data structures (e.g., line items on an invoice)
- โ You want to process the same document type repeatedly with consistent results
- โ You want a no-code solution that doesn’t require regex or string manipulation
Supported File Types
ParserBee supports all the common document formats you’ll encounter:
| Format | Extension | Use Case |
|---|---|---|
.pdf | Invoices, contracts, reports, resumes | |
| PNG | .png | Screenshots, scanned documents, captured images |
| JPEG | .jpg, .jpeg | Photos of receipts, ID cards, documents |
| WebP | .webp | Web-optimized document images |
| HEIC | .heic | Photos taken on iPhone and modern smartphones |
| Word | .doc, .docx | Letters, reports, contracts, agreements |
| PowerPoint | .ppt, .pptx | Slide decks and presentations |
| Excel | .xls, .xlsx | Spreadsheets, financial data, tabular reports |
| CSV | .csv | Exported data, tables, bulk records |
| Text | .txt | Plain text documents and notes |
| HTML | .html, .htm | Web pages and saved online documents |
.eml | Email messages and their attachments |
Maximum file size: 50 MB
Frequently Asked Questions
Can I use Power Automate to extract text from a scanned PDF?
Yes, but not with the built-in “Extract text from PDF” action – that only works for digitally created PDFs with selectable text. For scanned PDFs, you have two options:
- AI Builder – Microsoft’s OCR add-on (requires premium license, returns raw text only)
- ParserBee API – AI-powered extraction via the HTTP connector (returns structured JSON data, free tier available)
Can Power Automate extract text from images?
The built-in PDF actions don’t support images. You can use AI Builder’s “Recognize text in an image” action (premium), or call the ParserBee API which supports PNG, JPEG, and WebP images natively.
How do I extract specific fields (like invoice number or date) from a PDF in Power Automate?
The native actions only return raw text – you’d need to write string functions or regex to parse individual fields. With ParserBee, you define the exact fields you want in a template, and the API returns them as a structured JSON object. No string parsing needed.
Is ParserBee free to use?
ParserBee offers a free tier with credits to get started. You can create templates, generate an API key, and start extracting data immediately. Paid plans are available for higher volume usage.
Does ParserBee work with Power Automate Cloud (not Desktop)?
Yes! ParserBee’s API works with both Power Automate Cloud and Power Automate Desktop. In Cloud flows, use the HTTP connector. In Desktop flows, use the “Invoke web service” action.
What happens if the PDF has tables?
ParserBee handles tables natively. You can define array-type fields in your template (e.g., line_items as a LIST which works as an array of objects), and ParserBee will extract each row as a structured object with the fields you specified.
Can I extract data from multiple documents of the same type?
Absolutely – that’s exactly what templates are designed for. Create a template once for your document type (invoices, receipts, etc.), and use the same template ID in every API call. ParserBee’s AI adapts to variations in layout while extracting the same fields consistently.
Is the HTTP connector in Power Automate a premium connector?
Yes, the HTTP connector requires a Power Automate Premium license. However, if you’re processing PDFs at any meaningful scale, you likely already have a premium plan. The investment is worth it for the structured data output you get from ParserBee compared to raw text. If you do not have a Premium licence, ParserBee’s Data Lab covers batch processing entirely in the browser, with no connector at all.
Can I use ParserBee to extract data from documents in languages other than English?
Yes, ParserBee’s AI engine supports multiple languages. The OCR and extraction capabilities work across different languages and character sets.
How fast is ParserBee’s extraction?
Most documents are processed in 2โ5 seconds. This is significantly faster than AI Builder, which can take minutes for complex or multi-page documents.
Conclusion
Extracting text from PDFs in Power Automate doesn’t have to be painful. Here’s the simple decision tree:
- Digital PDFs + raw text only? โ Use the built-in “Extract text from PDF” action
- Scanned PDFs or images? โ You need OCR – either AI Builder (premium, raw text) or ParserBee (structured data)
- Need structured data (specific fields)? โ Use ParserBee API via the HTTP connector – it’s the only option that gives you clean JSON without writing regex
- Have a batch of files and no real-time trigger? โ Upload them to ParserBee’s Data Lab and export straight to Excel. No flow needed.
ParserBee works inside your existing Power Automate flows. There’s nothing to migrate, no workflows to rebuild. Just add one HTTP action, point it at ParserBee’s API, and you’ll go from raw blobs of text to structured, usable data in seconds.
Get started with ParserBee for free โ
Have questions about using ParserBee with Power Automate? Reach out to us at [email protected] – we’re happy to help you set up your first flow.

