Skip to content

IDP Extract

Extracts everything an extraction project asks for from a document, routes to the profile of the format in front of it and looks each value up in the page, so you know where every value came from and how much it deserves your trust.

It is the normal path of the IDP: one activity. Inside it loads the document if needed, routes to the profile, extracts all fields in a single call to the model, grounds and persists the result to the store — but that is its business, not yours.

IDP Extract document = = doc
project = "device-record"
credential = = credential("anthropic-key")
→ output: res

The project carries the configuration, not the playbook

Section titled “The project carries the configuration, not the playbook”

This activity used to ask for taxonomy, model, mode and endpoint. Now it asks for an extraction project and everything else comes from it. The project — which you edit in the portal — carries:

  • the canonical schema (the fields you deliver, the contract),
  • N format profiles, one per layout, each with its overrides on top of the canonical,
  • a router that picks the profile by the document’s printed format code,
  • the config: model, reading mode, endpoint and OCR credential.

So the person who knows which fields matter configures it in the portal and does not touch the playbook. The playbook only says which project and where the document comes from.

ParameterTypeWhat it is
projecttextThe name of an extraction project of this environment. It carries the canonical schema, the format profiles, the model, the reading mode and the OCR endpoint. For CI it also accepts an inline project-resolve JSON.
credentialcredentialZoan Cloud credential holding the model provider’s API key. Use = credential("name").
documentobjectA document that IDP Classify or IDP Load Document already read. Pass it and the file is not read again — with a scan that means not paying Azure twice.
pathtextThe path, if you do not pass document.
dpiintThe dpi the boxes come back in. Use the same one you give PDF To Images if you are going to upload the document, or the boxes land in the wrong place.
pagestextWhich pages to read. Empty = all of them.
azureCredentialcredentialZoan Cloud credential holding the Azure Document Intelligence key. Only for scans.
maxRetriesintHow many times to retry a transient provider failure. A backfill is thousands of calls, so the odd 429 or 5xx is a certainty, not a risk.

The same document type arrives in several formats, and each format paints the fields somewhere else. The project has one profile per format; IDP Extract reads the printed code of the document (for example F-GOP-007), picks the matching profile and merges its overrides on top of the canonical. The output always comes out with canonical names — the mapping is identity.

It extracts what it is asked for, always. Checking that the document is the right one is your decision, and it happens earlier with IDP Classify.

It is not a whim: an activity that decides on its own not to do its job hides the control flow, and it also prevents routing between several projects — which is exactly what you need when the queue brings mixed documents.

FieldWhat it is
valuesThe data, clean: { serial: "ABC-123", accessories: [...] }. It is what the rest of the playbook consumes.
fieldsOne field per value, with its box, its confidence and why it needs review. It is what the validation station paints.
needsReviewWhether any field fell below its threshold.
reviewFieldsWhich ones.
documentTypeThe type the project declares.
formatThe profile it routed to (e.g. F-GOP-007). Use it to trace and show which format was used.
sourcetext or azure-di.
dpiThe dpi of the boxes.
pageCountPages read.
valuesThe data, clean: { serial: "ABC-123", accessories: [...] }.
documentIdThe id of the document persisted in the store.
referenceThe key it was saved under (idempotency).
usageThe consumption of the document: { model, inputTokens, outputTokens, calls }.

A model that grades itself says “95%” with the same certainty when it is right as when it makes it up. That confidence is not calibrated.

The one here comes from looking the literal up among the document’s words. If it is there, there is confidence and a box. If it is not, the value cannot be verified and the field goes to review. It is a mechanical check, not an opinion.

If the project configures an escalation model, when more than 10% of the fields land below threshold the activity retries once with that model and keeps the result that leaves fewer fields to review. An extra call worth cents that saves reviewer minutes. Usage of both calls is added up in usage.

If you pass document (a reading already done) and pages (a range, "4-7"), the activity slices the reading to that range instead of re-reading the file: that is how Take Confirmed Bundles makes extracting a bundle’s segments not pay Azure again.