← Back to blog
AI
Sep 17, 2026
7 min read
OCR can't read a produce invoice.
AI can.
Handwritten credits, 80-line broadline distributor sheets, faded thermal paper. Why language models beat template OCR on the invoices multi-unit operators actually receive.
80+
Line items
on a single broadline order
1 in 4
Produce invoices
carry a handwritten change
17%
Exception rate
of invoices need human rework (IOFM)
$12.90
Cost per invoice
when a person has to touch it
Pull a produce invoice out of the pile at any restaurant group and look at it honestly. There's a printed table, sure. There's also a hand-written credit in the margin, a substitution the driver noted at the door, a scrawled initial next to it, and a total that no longer matches the printed one. That piece of paper is the actual input to your AP process, not the clean PDF in a software demo.
Template OCR was built for the clean PDF. It's very good at pulling a known field from a known position on a known layout. Feed it the real thing and it does one of two things: it returns the wrong number, or it returns a low confidence score and hands the invoice to a person. Either way you're paying the manual cost.
The problem was never character recognition. It's that reading an invoice requires knowing what the invoice means.
››› The invoice OCR can't handle
Multi-unit operators don't receive one kind of invoice. In a single week a 50-location group will take in broadline distributor sheets running eighty-plus lines, small-farm produce tickets written partly by hand, thermal-paper delivery slips photographed in a walk-in, linen and pest control statements, utility bills for every address, and a stack of vendor emails with the invoice pasted in the body instead of attached.
Each of those arrives in a different format, from a different channel, in different condition. A template-based system needs to be configured for every one of them, and reconfigured every time a vendor changes its billing software.
››› How template OCR actually works
Optical character recognition turns pixels into characters. That's the whole job. Everything downstream, knowing that this string is an invoice number, that this block is the remit-to address, that this column is extended price rather than unit price, comes from a template someone drew over a sample document, or from rules keyed to nearby label text.
Which is why OCR performance falls off a cliff the moment a document deviates. Shift the table down an inch and the coordinates miss. Add a second page and the mapping doesn't carry. Write something by hand and there's no character to recognize in the first place. The software isn't wrong, exactly, it's just answering a much narrower question than the one you need answered.
OCR tells you what characters are on the page. It has no opinion about whether the invoice is right.
››› Four failures on real invoices
01
The handwritten credit
A produce delivery arrives two cases short. The driver crosses out the line, writes "-2 cs" and a new total in the margin, and initials it. Nothing about that is in the printed layout OCR was trained on, so the system files the original amount and you overpay until someone catches it at reconciliation, if they catch it at all.
Template OCR
Reads the printed total. Ignores the driver's pen.
Purpose-built AI
Reads the markup, ties it to the short-shipped line, and books the credited amount.
02
The 80-line broadline sheet
Broadline distributors send multi-page invoices where the table continues across page boundaries and subtotals repeat. Template OCR anchors on coordinates: move the table two inches and the mapping breaks. Miss six rows out of eighty and your food cost is wrong for the period quietly.
Template OCR
Grabs the header and totals, then loses rows at the page break.
Purpose-built AI
Keeps line-level structure across pages, including pack size, weight, and per-item tax.
03
The faded thermal receipt
A GM photographs a thermal-paper delivery ticket in a walk-in cooler under bad light. Half the characters are marginal. OCR returns a confidence score and hands it to a human. A model that knows this vendor, this location, and that line items must sum to the total can resolve most of it without asking anyone.
Template OCR
Low-confidence characters become 8s, Bs, and blanks.
Purpose-built AI
Uses vendor context and math to reconstruct what a smudged digit has to be.
04
The same vendor, five formats
The same distributor bills differently by region, and changes its invoice template when it upgrades billing software. Every one of those variants is a new OCR template someone has to build, test, and maintain. Across 40 vendors and 50 locations, template maintenance becomes its own job.
Template OCR
Needs a new template per layout, per region, per billing system.
Purpose-built AI
Reads meaning, not coordinates — new layouts don't require setup.
››› What a language model does differently
A vision-language model doesn't look for a field at coordinates. It looks at the document the way a person does and reasons about it: this number appears next to the word "total" and equals the sum of the lines above it, so it's the invoice total. This handwriting sits on the same row as a crossed-out quantity, so it's a correction to that line. This vendor always bills case quantities in the third column, so a value of 400 in that column is a weight, not a count.
That reasoning is what makes the hard invoices tractable. It also makes the easy ones cheaper, because you're not maintaining a template library to keep them working.
Scenario
Template OCR
Purpose-built AI
New vendor layout
Build and test a template
Works on the first invoice
Handwriting and markups
Dropped or flagged
Read and applied to the line
Line-level detail
Header and totals only, typically
Full line items with pack size and UOM
GL coding
Rules keyed to extracted fields
Learned from your history, per location
When it's unsure
Confidence score to a review queue
Cross-checks math, vendor history, and receiving
Cost of scale
Grows with vendor and layout count
Flat — more volume, same setup
››› AI alone isn't the answer either
Bolting a general-purpose model onto invoice images gets you better extraction and not much else. Extraction was only ever step one. The model still has to know that this location codes produce to 5010 and not 5000, that invoices over $2,500 route to the regional director, that this vendor bills the same delivery twice about once a quarter, and that your fiscal calendar has thirteen periods rather than twelve.
That knowledge is what turns reading into processing. Without it, you've upgraded your OCR and kept your review queue — which is the same trap as assisted AP dressed up as automated AP.
What actually closes the gap is a model trained on restaurant and hospitality documents, grounded in your own coding history, and wired directly into the ERP so the result posts without a human retyping it. That combination is how invoices with handwriting on them go straight through.
››› What to ask your AP vendor
Skip the demo deck and send them your ugliest invoices; the marked-up produce ticket, the three-page broadline sheet, the photo from the walk-in. Then ask:
If the answers involve templates, confidence thresholds, and a review queue, you're buying OCR with a nicer interface. The invoices on your desk deserve something that can actually read them.
Send us your ugliest invoice.
Handwriting, thermal paper, eighty lines across three pages — we'll read it back to you line by line.
Automated or assisted?
