Read receipt photos with Claude to catch fields OCR missed in n8n

An n8n builder had Claude read each receipt photo next to the OCR text; across 136 real receipts it filled in 22 missing fields, including 4 dates and 5 VAT rates, and every amount matched.

Done withn8nClaude Code· Oct 26, 2026

What they did

The poster's team runs an expense workflow in self-hosted n8n. It used to run OCR on each receipt or invoice and pass the text to an LLM, so anything the OCR dropped, such as the date on a crumpled fuel receipt, never reached the model. They wrote a community node that runs the Claude Code CLI on the n8n host and hands it the photo or PDF itself, asking for JSON with amount, date and vendor. The workflow now reads every receipt twice, once from the OCR text and once from the image, and compares the two results field by field.

How it went

On 136 real receipts and invoices, the reading from the image supplied 22 values the OCR route had missed, among them 4 dates and 5 VAT rates. The two readings agreed on every amount. The node returns cost and token usage with each call, and it retries on failure. The author published it as an open-source community node.

Worth knowing

It only works on self-hosted n8n, because the node shells out to the claude CLI, which has to be installed and logged in on the host. Calls count against a Claude subscription rather than an API key, so check that the plan's terms cover automated use. By default the call runs with no tools or MCP servers. The source is the author's own launch post; there were no replies confirming the numbers.

Try it

With n8n· 4 parts to fill in

In my [n8n or automation tool] expense workflow, for each [receipt photo or PDF] read the image directly and return only JSON: {"amount": number, "date": "YYYY-MM-DD", "vendor": "", "vat_rate": number}. Then compare your result field by field with [the OCR text for the same receipt]. Fill any field the OCR left empty from your reading, and flag every field where the two disagree instead of picking one. Do not file or submit anything; stop after writing the merged record and the list of disagreements to [my sheet or log].

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related