- Create the Azure resource, then pick a prebuilt or custom-trained model.
- Each extracted field returns a confidence score between zero and one.
- Power Automate branches on a threshold (around 0.80 is a common start).
- High-confidence reads auto-pass; low-confidence ones go to a reviewer.
This guide is for an operations or IT lead at a small business who is tired of keying invoices, receipts, or forms by hand. By the end, you'll have a working pipeline that reads documents with Azure AI Document Intelligence, checks how confident the model is about each field, automatically passes clean reads through, and routes uncertain ones to a person for a quick check. The data stays in your own Microsoft tenant the whole way.
Before you start
You'll need an Azure subscription with rights to create resources, a Power Automate license that includes premium connectors (the HTTP and Azure AI Document Intelligence connectors are premium), and somewhere to send the results, like an Excel file in SharePoint or a Dataverse table. Gather five to ten sample documents of the type you want to process; you'll use them to pick or train a model.
Step 1: Create the Azure AI Document Intelligence resource
In the Azure portal at portal.azure.com:
- Select Create a resource, search for Document Intelligence, and select Create.
- Pick your subscription, a resource group, a region close to your users, and a name.
- Choose a pricing tier (the free tier is fine for testing; move to a paid tier for production volume), then select Review + create.
Once it deploys, open the resource and copy the Endpoint and one Key from the Keys and Endpoint page. You'll need both later, so store them somewhere safe.
Step 2: Choose a prebuilt model or train a custom one
Open Document Intelligence Studio (linked from your resource), and decide which path fits:
- Prebuilt model: Microsoft ships ready-made models for common documents, including invoices, receipts, ID documents, and W-2s. If your documents are one of these, you're done; just note the model ID. Prebuilt models need no training.
- Custom model: If your documents are your own forms, train a custom model. In the Studio, create a custom extraction project, upload your sample documents, label the fields you want (drag a box around each value and name it), and select Train.
After training, the Studio reports an accuracy score for the model. Aim for 80 percent or higher. If it's lower, add more labeled samples and train again.
Step 3: Test the model and read confidence scores
Still in the Studio, run a test document through your model. For each field it extracts, you get the value plus a confidence score between 0 and 1. A confidence of 0.95 means the model expects to be right about that field roughly nineteen times out of twenty.
This is the number your whole pipeline will hinge on. Look at your test results and pick a threshold; 0.80 is a common starting line. Fields at or above it you'll trust automatically; fields below it you'll send to a human.
Don't try to make the model perfect. Make the pipeline smart. A model that's right 85 percent of the time becomes reliable the moment you auto-pass the confident reads and route the rest to a person. The confidence score is the dial that makes that work.
Step 4: Build the Power Automate flow
In Power Automate (make.powerautomate.com), create a new automated cloud flow. A common shape:
- Trigger: "When a file is created" in a SharePoint document library (your inbox folder for new documents).
- Action: call the model. You can use the Azure AI Document Intelligence connector, or an HTTP action with the POST method pointed at your endpoint, passing your key and the file content. The response includes each field, its value, and its confidence score.
Run the flow once with a test document and look at the raw output so you can see exactly where the values and confidence scores live in the response.
Step 5: Branch on the confidence threshold
Add a Condition that checks the confidence of your key fields against the threshold from Step 3.
- If confidence is at or above the threshold (the "yes" branch): write the extracted values straight to your destination (an Excel row or a Dataverse record). This is straight-through processing, no human needed.
- If confidence is below the threshold (the "no" branch): send the document and the extracted values to a person. The cleanest way is the Approvals action or a Teams message, so the reviewer can confirm or correct the values, which then get written to the destination.
Step 6: Output to Excel or Dataverse
On the auto-pass branch, add Add a row into a table (Excel) or Add a new row (Dataverse) and map each extracted field to a column. On the review branch, write the corrected values the same way once the reviewer responds. Either way the data lands in your tenant, in a place your other tools can read.
A real benefit of this approach is that the documents and extracted data stay inside your own Azure and Microsoft 365 environment. Don't undo that by exporting results to an outside service. Keep the destination (SharePoint, Excel, Dataverse) inside your tenant so your data governance still applies.
Step 7: Verify with a real batch
Before you rely on it, run twenty or thirty real documents through the live flow. Check three things: Did high-confidence fields land correctly without review? Did genuinely tricky documents get routed to a person? Are the values in your Excel or Dataverse table accurate? Tune your threshold up if too many bad reads slip through, or down if reviewers are getting documents that were actually fine.
What to do next
Start with a single document type and a single destination; resist the urge to handle everything at once. Once one pipeline runs cleanly for a few weeks, add the next document type. If you'd like help standing up the Azure resource, training a custom model, or wiring the review step, that's work we do with clients regularly. Let's talk it through.