Procurement Document Extraction

Extract Purchase Order Acknowledgments to Excel — Spot the Gap Between What Was Ordered and What the Supplier Confirmed

A PO Acknowledgment is a hybrid document — it repeats every PO line item (buyer's data) plus adds supplier-side confirmations: accepted quantities, confirmed ship dates, pricing confirmations, substitution notes. The most valuable data is the gap between the two — and that's exactly what template-based OCR misses because it only reads the pre-configured PO fields. Our Vision AI reads both sides of the acknowledgment in one pass, outputting Ordered vs Accepted quantities side-by-side with automatic discrepancy detection.

Encrypted processing · Automatic data deletion after conversion

PDF / Scan / Photo
Ordered vs Accepted
XLSX / CSV

What You Can Extract from a Purchase Order Acknowledgment

Type the column names you need — the AI reads every acknowledgment as a complete document, extracting both the PO fields the buyer sent and the confirmation fields the supplier added. Instead of typing each column name individually, you can save a set of columns as a preset for one-click reuse — or open one of the pre-configured templates on the demo page to see extraction in action with sample data.

PO Number
Acknowledgment Date
Buyer Name
Supplier Name
Item Code
Description
Qty Ordered
Qty Accepted
Unit Price
Line Total
Confirmed Ship Date
Substitution Note
Acknowledgment Status
Terms Confirmed

The tool uses Custom Column Extraction: you type the column names — "Qty Ordered," "Qty Accepted," "Confirmed Ship Date," "Substitution Note" — and the AI locates the matching values anywhere on the page by understanding what each label means, not where it sits on a template. The same column names work across POAs from dozens of different suppliers because the extraction is driven by label semantics, not pixel coordinates. You can also define Computed Columns — for example, "Qty Gap (Qty Ordered minus Qty Accepted)" — and the AI calculates the difference during extraction, so your output spreadsheet already has a discrepancy column without any post-processing in Excel. Or add Inferred Columns like "Risk Level (options: Full Match / Shortage / Over-Accepted / Substituted)" and the AI reads each line's Qty Ordered, Qty Accepted, and Substitution Note to assign the appropriate label.

The PO Acknowledgment Lives Between the PO and the Invoice — Template OCR Reads Only Half the Document

When a supplier sends back a purchase order acknowledgment, they're not just confirming receipt — they're making changes. Quantities get adjusted downward when inventory is short. Items get substituted with near-equivalent SKUs when the original isn't available. Ship dates shift forward or back based on production capacity. Pricing gets reconfirmed — or corrected — at the line level. The document is a negotiation artifact, not a mirror of the original PO. But template-based extraction tools are built around the PO: they expect the same fields in the same positions as the original order. When the supplier adds an "Accepted Qty" column or a "Substitution" row that the template wasn't configured to read, those fields are invisible. The differences between ordered and confirmed — the reason you read the acknowledgment in the first place — don't make it into the spreadsheet.

01

Template-based OCR only reads the PO fields it was configured for — every supplier-side confirmation column is invisible. A template set up for "Item Code, Description, Qty, Unit Price, Line Total" on a standard PO will extract exactly those fields from a POA. But the POA also contains "Qty Accepted" (which may be lower than Qty because of a partial shipment), "Confirmed Ship Date" (which may be two weeks later than the original PO due date), and "Acknowledgment Status" (Accepted, Partial, or Rejected at the line level). The template sees the PO fields because they match the configuration — and skips the confirmation fields because they weren't part of the original template. The output looks like a complete PO extraction but is missing the data that turns a PO acknowledgment from a rubber stamp into an actionable supply chain document.

02

Substitutions and price corrections create data that the original PO template has no field mapping for. A supplier running low on a specific component might substitute a pin-compatible part with a different manufacturer SKU — and note it on the POA. A line item for 500 units might receive a "Substitution: PN-403B replaces PN-401A, 200 units at revised price $3.42." The original PO template has no column called "Substitution Note" and no column for a replacement SKU. These fields don't get extracted because they don't exist in the template schema. The procurement buyer opens the Excel file, sees 500 units of PN-401A at the PO price, and assumes everything matches — until the shipment arrives with 300 units of PN-401A and 200 units of PN-403B, and the invoice doesn't reconcile. The error is not in the OCR accuracy — every character was read correctly. The error is that the template only extracts what it was told to look for.

03

Every supplier formats their POA differently — a template built for one supplier's layout fails on the next. Supplier A labels the accepted quantity column "Ack Qty" and puts it to the right of the ordered quantity. Supplier B calls it "Confirmed" and places it in a separate confirmation section below the original line items. Supplier C embeds the acknowledgment directly on the original PO by stamping "ACCEPTED" next to each line and handwriting in the ship date. Template-based tools, even those that use machine learning, still require per-supplier training or per-supplier field mapping. At 200 active suppliers, you need 200 field mappings. At supplier 201, the template is useless until someone manually configures the new layout. The problem compounds with every new supplier added to the supply base.

01

Vision AI reads the entire acknowledgment as one document — extracting PO fields and confirmation fields in a single pass. Instead of applying a pre-configured PO template and hoping the supplier's additions happen to match, the AI reads every label and value on the page: "PO Number," "Item Code," "Description," "Qty Ordered" from the original PO section — and "Qty Accepted," "Confirmed Ship Date," "Substitution Note," "Acknowledgment Status" from the supplier's confirmation section. Both sets of fields populate the same row in the output spreadsheet because the AI understands that a line item with the same Item Code and Description on this page represents both sides of the same commercial transaction. You don't need separate templates for the PO columns and the acknowledgment columns — one set of column names extracts the full document.

02

Computed Columns turn extraction into instant discrepancy detection — the gap between Ordered and Accepted is calculated before you open the file. Define columns: "Qty Ordered," "Qty Accepted," and then "Qty Gap (Qty Ordered minus Qty Accepted; flag if negative)." The AI extracts Qty Ordered and Qty Accepted from the acknowledgment, then computes the difference. Negative values automatically flag shortfalls — those are the line items where the supplier can't deliver the full quantity. Zero means exact match. Define "Price Match (output 'Warning' if Ordered Unit Price ≠ Accepted Unit Price)" and the AI compares the PO price against the supplier's confirmed price on every line. Define "Lead Time Check (output 'Late' if Confirmed Ship Date > PO Requested Date)" and the AI flags every line where the confirmed date slips past the original due date. This isn't just extraction — it's extraction plus procurement analytics, completed in the same processing pass.

03

Custom Column Extraction eliminates the per-supplier template problem — extraction is driven by label meaning, not by field position. You type the column names once: "PO Number," "Qty Ordered," "Qty Accepted," "Confirmed Ship Date," "Substitution Note," "Acknowledgment Status." The AI processes Supplier A's POA — reads the label "Ack Qty" and maps it to "Qty Accepted." Then Supplier B's POA — reads the label "Confirmed" and maps it to "Qty Accepted" because it understands that both labels express the same commercial concept. Supplier C's handwritten acknowledgment on the original PO — the AI reads the handwritten ship date next to each line item and maps it to "Confirmed Ship Date." The column names stay the same. The supplier documents change. The AI bridges the gap because it reads semantics, not templates. Adding a 201st supplier requires zero configuration changes — the same column names extract data from the new format.

How 50 Supplier Acknowledgments Get Extracted, Compared, and Flagged in One Processing Run

Upload — every POA from every supplier, as-is, no pre-sorting by format

Drop in all the supplier acknowledgments from a month-end purchasing reconciliation: 50 POAs across 28 suppliers. Some are clean digital PDFs exported from the supplier's ERP. Some are portal-generated acknowledgments with a structured line item table. Some are scans of the original PO with the supplier's handwritten confirmation annotations in the margins — ship dates penciled next to each line, quantities crossed out and rewritten, "accepted" stamped in red at the header. A few are email confirmations printed to PDF where the supplier wrote "See changes in red" above a modified copy of the PO. No pre-sorting, no separating formats — the batch processes everything together because the AI reads each document independently by label meaning, not by template expectation.

Define columns — the comparison columns that turn extraction into a discrepancy report

Type the column names for your procurement review spreadsheet: PO Number, Supplier Name, Item Code, Description, Qty Ordered, Qty Accepted, Confirmed Ship Date, Unit Price (Accepted), Substitution Note, Acknowledgment Status. Then add the analytics columns: Qty Gap (Qty Ordered minus Qty Accepted; flag if negative), Price Check (output 'Warning' if Ordered Unit Price ≠ Accepted Unit Price), Is Substituted (output 'Yes' if Substitution Note is not empty), Risk Level (options: Full Match / Shortage / Over-Accepted / Substituted). The AI extracts the supplier data, compares each line, and fills every column — you open the Excel file to find every discrepancy already surfaced, sorted by risk.

Output — one spreadsheet, every comparison already run, every exception already flagged

Download an Excel file where each row represents one line item from one supplier acknowledgment — with all PO fields and all confirmation fields in the same row. The Qty Gap column has already flagged every line where the supplier accepted fewer units than ordered. The Price Check column has already surfaced every line with a confirmed unit price that differs from the PO price. The Is Substituted column has already identified every line with a Substitution Note. The Risk Level column has already classified every line — "Full Match" for lines the supplier will deliver exactly as ordered, "Shortage" for lines with a negative Qty Gap, "Over-Accepted" for lines where the supplier committed to more than ordered, "Substituted" for lines with a different SKU. Filter by Risk Level, review the exceptions, and route to the appropriate follow-up — shortage lines to expediting, substitution lines to engineering for approval, price-change lines to the category manager. No manual comparison step. The spreadsheet is the comparison.

When PO Acknowledgment Extraction Works Best — and Where to Verify

The AI reliably reads both PO fields and supplier confirmation fields from any standard acknowledgment format. A few edge cases warrant a spot-check — particularly where the document format itself makes the supplier's changes ambiguous.

Reliably extracts

Standard supplier-generated POA PDFs with clear header (buyer/supplier/PO number/date) and line item table — the AI reads both the PO data section and the supplier's confirmation columns in one pass.

Portal-exported acknowledgment documents from major supplier portals and e-procurement systems — structured line item tables with accepted quantities and ship dates extract cleanly regardless of portal layout conventions.

Scanned or faxed POAs with handwritten supplier annotations in the margins — the Vision AI reads both printed text and handwriting. Ship dates penciled next to line items, quantities crossed out and rewritten, stamps and signatures all extract as labeled fields.

Batch processing across multiple suppliers — 50 POAs from 28 suppliers with different formats, one column definition, one output spreadsheet. No per-supplier configuration needed because extraction is driven by label meaning, not template position.

Verify these cases

Partial acceptance POAs with line-level status fields (Accepted / Partial / Rejected) — the AI reads what's printed. If the supplier marks a line "Partial" but doesn't print the specific quantity they'll deliver, the Acknowledgment Status column will show "Partial" with no corresponding Qty Accepted value. Check these lines against the supplier's follow-up communication.

Substitutions where the reason is described in a free-text paragraph rather than a structured field — the AI extracts the text if a "Substitution Note" column is defined, but long narrative explanations may be truncated. Define the column and verify that critical substitution reasoning (engineering equivalency, spec deviation) is captured fully.

Supplier-added terms and conditions pages attached after the acknowledgment — the AI extracts only what's in the acknowledgment section, not the legal boilerplate. T&C text does not map to defined columns and is correctly excluded, but any supplier-side conditions embedded inline within the line item table (e.g., "shipped as-is, no returns") should be captured by defining a "Line-Level Notes" column.

Computed Column discrepancy checks are arithmetic comparisons — they confirm whether two extracted values differ, but they do not assess whether the difference is commercially acceptable. A Qty Gap of -5 on a 500-unit line is a 1% shortfall that may not warrant escalation; the same -5 on a 10-unit line is a 50% shortfall that requires immediate action. Use the Risk Level column for triage, not as a final procurement decision.

Frequently Asked Questions

Can the AI detect when the supplier accepted fewer items than the PO ordered?

Yes — this is the core use case. Extract Qty Ordered and Qty Accepted as two separate columns. The AI reads the original ordered quantity from the PO section and the supplier's confirmed quantity from the acknowledgment section, placing both in the same row. Add a Computed Column "Qty Gap (Qty Ordered minus Qty Accepted)" and the AI calculates the difference during extraction. Negative values mean the supplier confirmed fewer units than ordered — those rows are your shortage list. Zero means exact match. You can also add an Inferred Column "Risk Level (options: Full Match / Shortage / Over-Accepted / Substituted)" and the AI reads the Qty Gap, Substitution Note, and Acknowledgment Status to assign the appropriate label per line — turning a flat extraction into a prioritized exceptions report without any post-processing in Excel.

Does it work with POAs where the supplier substituted items with different SKUs?

Yes. Define "Item Code," "Description," and "Substitution Note" as columns. The AI extracts the original ordered item code and description from the PO section, then reads the supplier's substitution note — whether it's a structured field labeled "Substitution," a note in the line item description column like "Replacing PN-401A with PN-403B," or a handwritten annotation in the margin. If the substitution includes a replacement SKU, that is captured too — define a "Substitute Item Code" column and the AI extracts it separately. Add an Inferred Column "Is Substituted (options: Yes / No)" that reads the Substitution Note field and outputs "Yes" if it's non-empty and "No" otherwise — giving you an instant filter for every line that requires engineering or quality review before the order proceeds. For POAs where the supplier simply crossed out the original item and wrote a new one above it, the AI reads both values and places them in the correct columns.

How does it handle POAs from suppliers who confirm on the original PO rather than issuing a separate document?

Many smaller suppliers don't generate a formal acknowledgment — they stamp "ACCEPTED" on the original PO, handwrite ship dates next to each line, cross out quantities they can't fulfill, and fax or email it back. The Vision AI reads this document the same way it reads a formal POA: it identifies the original PO fields (Item Code, Description, Qty Ordered, Unit Price), then reads the supplier's handwritten annotations. A stamped "ACCEPTED" near the header maps to the Acknowledgment Status column. A handwritten date next to a line item maps to Confirmed Ship Date. A crossed-out quantity with a new number written above it — the AI reads the printed original as Qty Ordered and the handwritten override as Qty Accepted. The key distinction from template-based tools: the AI doesn't need the supplier's annotations to appear in a specific column or format. It reads anything visible on the page and maps it to your column names based on what the content represents — a date near an item is a ship date, a quantity written over a printed number is an accepted quantity.

Can I batch-process POAs from dozens of suppliers with completely different formats?

Yes. Upload all supplier acknowledgments — formal PDFs, portal exports, scanned annotated POs, email printouts — in a single batch. Define your column names once. The AI processes Supplier A's structured POA table and reads the "Qty Accepted" column labeled "Ack Qty." It processes Supplier B's acknowledgment where the same data is in a column labeled "Confirmed Qty." It processes Supplier C's handwritten markup on the original PO where the accepted quantity is scribbled above the printed ordered quantity. All three map to "Qty Accepted" in the output spreadsheet because the AI matches by label meaning, not by field position or column header text. This is the difference between template-based extraction (one mapping per supplier format) and semantic extraction (one column name, any format). The output is one consolidated Excel file with every POA's data in the same column structure — sort by Supplier Name to review per-supplier, or filter by Qty Gap to see every shortage across all suppliers at once.

Is my procurement data — supplier pricing, quantities, substitution details — secure?

All file transfers use TLS 1.3 encryption. Documents are processed in an isolated session and automatically deleted from our servers within 24 hours of conversion. Your procurement data — supplier names, item codes, unit prices, quantities, substitution notes — is never used to train our AI models and is never retained beyond the processing window. The extracted Excel file downloads directly to your machine; we do not store extraction results. For procurement teams managing sensitive supplier pricing and supply chain data, this architecture ensures that competitive pricing information, supplier performance data, and order details leave our servers when processing completes. The only persistent copy is on your own systems.

📮 contact email: [email protected]