All posts
Workflow6 min read

How to extract data and metadata from PDFs with Power Automate

The built-in actions for PDF text extraction, the AI Builder model for invoices and receipts, and how to wire either one into a flow that drops structured data into Excel or Dataverse.

By · Updated

Power Automate has two distinct paths for getting data out of PDFs: built-in actions for plain text and metadata, and AI Builder for structured extraction (invoices, receipts, IDs, custom forms). They're priced differently and they solve different problems.

Built-in: text and metadata

The Plumsail Documents and Encodian connectors (free tier available) cover most extraction needs without per-call AI Builder credits:

  • Get PDF Metadata — title, author, creation date, page count.
  • Convert PDF to Text — flat text dump, no layout preservation.
  • Extract Tables from PDF — works on bordered tables, less reliable on borderless.
  • Fill PDF Form / Read PDF Form Fields — for true PDF forms with AcroFields.

Wire the output into Excel Online (Add row to table) or SharePoint (Update item) actions to land the data where you need it.

The other built-in option: Adobe PDF Services

Adobe's own connector (Adobe PDF Services, premium) exposes an Extract PDF content action that returns structured JSON — text, tables, and document structure — backed by Adobe's own extraction models. Table fidelity is a step up from the free connectors. It requires an Adobe PDF Services API credential; the free tier covers a monthly quota that resets each month, which is enough for low-volume flows.

AI Builder: structured extraction

AI Builder ships prebuilt models for invoices, receipts, IDs, business cards, and a custom-trainable model for arbitrary forms. The flow looks like:

  1. Trigger: When a file is created (SharePoint, OneDrive, Outlook attachment).
  2. Action: Extract information from invoices using AI Builder.
  3. Action: Add a row to an Excel table or create a Dataverse record from the parsed fields.

Pricing is credit-based — check the AI Builder calculator for current per-page costs. Custom models require a few dozen sample documents to train and produce a model you can call from any flow.

Image metadata

Power Automate doesn't have first-party EXIF support. Workarounds: use the AI Builder "Extract information from images" with a custom model, or call an Azure Function that runs ExifTool and returns JSON. The Azure Function path is more flexible if you need full EXIF including GPS.

When AI Builder isn't enough

AI Builder shines on the prebuilt domains (invoices, receipts). For long-tail document types — leases, scientific reports, multi-page contracts — it requires training a custom model and the accuracy ceiling is lower than a multimodal LLM. Two pragmatic alternatives inside a Power Automate flow:

  • HTTP action calling Azure Document Intelligence prebuilt or custom model.
  • HTTP action calling ExtractFox's API with a JSON schema for the document type.

Both let you keep the rest of the flow (trigger, downstream Excel/SharePoint/Dataverse actions) intact and swap in better extraction.

A complete invoice-intake flow

Putting the pieces together, a production flow usually looks like this:

  1. Trigger: When a new email arrives (Outlook), filtered to has attachment + .pdf.
  2. Apply to each attachment — loop over the files.
  3. AI Builder: Extract information from invoices — vendor, invoice number, date, line items, total, tax.
  4. Add a row into an Excel Online table (one row per invoice) or create a Dataverse record.
  5. Condition: confidence below your threshold → post to a Teams channel for manual review instead of writing the row.
  6. Save the original PDF to a SharePoint archive folder with a standardized filename (vendor-date-number).

Limits and gotchas

  • File size: most connectors cap around 50–100 MB per document — route oversized files to a manual queue instead of letting the flow fail silently.
  • Scanned PDFs: Convert PDF to Text returns nothing on scans because there's no text layer. Only AI Builder or an OCR-capable service handles them.
  • Multi-page tables: Extract Tables from PDF often splits a table that continues across pages into fragments — plan a merge step, or use AI Builder instead.
  • Concurrency: flows triggered per attachment run in parallel. Turn on Concurrency Control and cap it if the downstream system (Excel Online especially) rate-limits writes.
  • Encrypted PDFs fail at the extraction step — catch the error and notify someone rather than retrying in a loop.

Routes compared

RouteCostBest for
Plumsail / Encodian connectorsFree tier, then per planText, metadata, simple tables
Adobe PDF ServicesFree quota, then usage-basedHigher-fidelity tables and structure
AI Builder prebuilt modelsAI credits per pageInvoices, receipts, IDs
AI Builder custom modelCredits + training samplesRecurring custom document types
External API via HTTP actionPer callLong-tail documents, highest accuracy

Practical pattern

Use AI Builder for the standard document types where the prebuilt models work. Fall back to an external extraction API for anything custom. Keep the orchestration in Power Automate so non-developers can maintain the flow.

Related reading

Stop reading, start extracting

Drop a PDF or image into ExtractFox and get structured data back in seconds.

Try a free extraction →