Recursive AI

Receipts

All oneocr recipes

Read a till receipt into merchant, date, time, totals, payment method and items, each with the words it was read from.

Install RecursiveAI.OneOcr.Models.Documents next to RecursiveAI.OneOcr, as for invoices. The image is receipt.png from the sample images. This program lists every field and item the model found:

C#
using OneImage;
using OneOcr;
using OneOcr.Documents;
using OneOcr.Models.Documents;
 
OcrEngine engine = OcrEngine.LoadBundled();
DocumentModels.Configure();
 
Receipt receipt = Image.Load("receipt.png").ExtractReceipt(engine);
 
foreach (ExtractedField field in receipt.Extraction.Fields)
    Console.WriteLine($"{field.Id,-24} {field.Text,-16} -> {field.Value,-12} {field.Confidence:F2}");
foreach (ExtractedGroup item in receipt.Extraction.LineItems)
    Console.WriteLine("item: " + string.Join(", ", item.Fields.Select(f => $"{f.Id["receipt.".Length..]}={f.Text}")));
Text
receipt.merchant         Corner Market    -> Corner Market 0.95
receipt.date             24/10/2026       -> 2026-10-24   1.00
receipt.time             14:32            -> 14:32        1.00
receipt.subtotal         27.22            -> 27.22        1.00
receipt.tax              2.07             -> 2.07         1.00
receipt.total            $ 29.29          -> 29.29        0.81
receipt.paymentMethod    Card **** 4821   -> Card **** 4821 1.00
item: itemName=Coffee beans, amount=12.99
item: quantity=2x, itemName=Oat milk, amount=8.98
item: itemName=Bagels, amount=5.25

Receipt also has typed shortcuts: receipt.Merchant, Date, Time, Subtotal, Tax, Tip, Total and PaymentMethod, and receipt.Items. The fields are the same ExtractedField records as an invoice’s, with receipt. ids instead of business terms. Value is normalized (2026-10-24 from 24/10/2026, 29.29 from $ 29.29) and Text is what is printed.

The total’s confidence is lower than the rest here (0.81): it is the mean probability of the tags on its words, and a figure to threshold on per field, not a calibrated probability.