Amazon Textract Asynchronous Analysis: Audit Every Page of a Donation Deed

A historical society receives a fictional nine-page donation deed with a handwritten amendment on page nine. Extracting the first visible page is not enough to decide what the museum can reproduce. Amazon Textract’s asynchronous operations are built for multipage PDF and TIFF processing, but the application must still wait for a completed job, collect every paginated response, and review the underlying pages. The workflow below is an instructional design, not evidence that a real deed was uploaded or that Textract correctly recognized a particular clause.

Define what a successful archive import means

Start with a document inventory: source filename, checksum, scanned page count, accession reference, permission classification, and the person authorized to review it. The output should be a searchable aid attached to the immutable scan. For a deed, accuracy is not simply how many words appear in the OCR. Missing a restriction, attachment, amendment, signature block or a crossed-out phrase can change the meaning of the entire document.

Record page numbers as part of each extracted record. A fictional deed may say ‘photographs may be displayed’ on page two and ‘online distribution is excluded’ on page nine. That contradiction must remain visible until a reviewer resolves it. Keep the physical or approved digital original available for comparison; avoid converting a machine-extracted field into a verified legal permission or an automatic publishing decision.

Start a multipage job and preserve its identity

Amazon Textract supports asynchronous document text detection and analysis; the StartDocumentAnalysis operation produces a JobId rather than the finished extracted text. The input document resides in an S3 bucket under appropriate IAM permissions. Choose text detection or analysis based on whether you need only words and lines or relationships such as forms and tables. Do not infer that every object needs the more complex mode.

Original educational illustration of Amazon Textract asynchronous analysis. Process: Upload approved deed to S3 → Start async analysis and record JobId → Receive completion via SNS / SQS → Collect all result pages and verify. Synthetic teaching scene rather than a vendor screenshot or tested result.

Persist the job identifier, source file checksum, processing type, submission timestamp, tenant identifier and document revision together. A client retry after a network interruption should inspect existing job state before starting another identical job. This matters when two scanned versions share a title. Apply deduplication at your application layer; a job ID tracks one Textract operation, not a guaranteed unique archival document.

Use completion events rather than repeated polling

The documented asynchronous design publishes completion information to Amazon SNS, with an SQS subscriber or Lambda consumer able to receive it. Confirm that the SNS topic, Textract endpoint and supporting permissions match the intended AWS Region. The message includes a job identity and status, which the consumer must correlate with its own pending record. A message received for the wrong job should never complete a different import.

Check SUCCEEDED before fetching the complete result, and handle FAILED or partial outcomes as review holds. AWS discourages excessive repeated Get calls as a completion mechanism because retrieval can be throttled. An SQS consumer must also tolerate repeat deliveries or retry behavior: marking a job ‘completed’ twice must not duplicate pages or overwrite a manually corrected transcription. Completion means the processing job finished, not that the deed’s clauses are reliable.

Retrieve all pages with NextToken

GetDocumentAnalysis returns Block objects and may return a NextToken when there are more results than fit in one response. Retrieve and store each page of the API response until the token is absent; never treat one successful HTTP response as a complete multipage document. The documented maximum results per response is 1,000. Work from returned page identifiers rather than assuming that API response chunks correspond one-to-one with scanned pages.

The service may report DocumentMetadata page counts, while each block can carry page context and relationships. Reconcile the collected blocks against the source scan and document metadata before marking extraction complete. Count distinct source page identifiers, detect gaps and duplicated blocks, and track missing tables or page headers. In particular, text positioned in the margin must be checked against the page image instead of concatenated into a seemingly authoritative paragraph.

Compare an incomplete read with a verified export

A useful quality-control diagram distinguishes three states: the original multi-page scan, a flawed export that stopped after the first API response, and a reviewed result containing every expected page. The middle state might appear entirely plausible because early pages are well formed. The final state must also show where a late amendment is located so readers understand why page completeness matters more than a large volume of extracted text.

Original educational illustration of Amazon Textract asynchronous analysis. Visual comparison: Original deed has nine pages, Last page omitted by mistake, All pages reconciled with scan. Synthetic teaching scene rather than a vendor screenshot or tested result.

These visuals are teaching examples, not a vendor screenshot or measured OCR output. Do not label any result ‘100% accurate.’ Review page nine against the original scan, including the precise word used to limit online reuse. If a reader cannot tell whether the clause was transcribed accurately, route the record to manual correction and preserve the original wording as evidence.

Protect output, retention and provenance

AWS documents temporary storage of asynchronous results in a Textract-owned bucket for seven days by default, with an OutputConfig option to place results in the customer’s S3 location. That is a retrieval and storage property, not an archival retention policy. Set your own access boundaries, encryption and deletion schedule for derived OCR artifacts, especially when deeds contain donor addresses or confidential valuations.

Keep audit fields that identify which scan version produced the OCR, who approved corrections, and whether any personal information was hidden in a public transcription. Restrict access to S3 input objects, output objects, notification topics and processing roles; avoid writing full deed text into application error logs. If a review requires more than the service’s default result availability window, plan for properly secured durable output in advance.

Run an adversarial page-completeness review

Build a tiny synthetic test set: a three-page deed with a clause on the last page, a table spanning pages, one upside-down scan and an image with a partially cut-off signature. Simulate duplicated completion messages and a missing NextToken fetch. The checker should reject an export with a missing page even when every returned block appears syntactically valid. Test a version mismatch after the original PDF is rescanned.

Original educational illustration of Amazon Textract asynchronous analysis. Release review: Count original PDF pages, Follow every NextToken, Review amendments and signatures, Restrict OCR output access. Synthetic teaching scene rather than a vendor screenshot or tested result.

Reviewers should record the expected page count, encountered page IDs, missing clauses and corrections, not just the number of OCR blocks. Require human sign-off on reuse rights and ambiguous legal terminology. A migration gate should fail closed when the scan and response cannot be reconciled. The evaluation here is a proposed test design; no AWS resources were created and no extraction accuracy was measured.

Release a searchable copy without granting new rights

Publish only the approved transcript or catalog metadata, with a link back to the original item where the archive’s rules allow that. A text-search result can help find the amendment, but it cannot establish consent, ownership, or whether a deed has been superseded. When an archive includes multiple transfer agreements, show their dates and associations explicitly rather than merging clauses into a single polished answer.

Document the fallback: if Textract is unavailable, a manual indexing queue preserves the submission without fabricating a complete OCR result. An editor can state that page recognition is pending. Recheck the official AWS service limits, pricing, output configuration, and IAM requirements for the actual account before implementation. The goal is verifiable page coverage, not a claim that automation removes professional archive review.

How We Research

For this November 2026 guide, we reviewed current official developer sources: AWS: Calling Amazon Textract asynchronous operations; AWS: GetDocumentAnalysis API reference; AWS: Multipage document processing with SQS. We compared documented API behavior, request structures and limitations with a fictional nonprofit scenario, then created original instructional diagrams. We did not run vendor APIs, inspect real donor documents, evaluate live locations, measure latency, or conduct a legal or security audit. The illustrations are conceptual, not product screenshots or benchmark output. A real implementation must confirm available regions, preview status, model or API version, cost, IAM rules, source permissions and applicable privacy policies.

Frequently Asked Questions

Can Textract analyze multipage PDFs asynchronously?

Yes. AWS documents asynchronous text detection and analysis for multipage PDF and TIFF files stored in S3.

Does SUCCEEDED mean every clause was read correctly?

No. It reports job completion, not accuracy or legal validity. Compare results with the original scan.

Why do I need NextToken?

A GetDocumentAnalysis response can contain only part of the Blocks array. Continue until there is no NextToken.

Can the service store results forever?

Its default asynchronous result store is temporary; configure secure output and your own retention policy as needed.

Should I restart a job after a timeout?

First reconcile the existing source, job ID and completion messages to avoid duplicate imports.

Scroll to Top