Receipt Parse

2026-10-08 02:21 UTC

About this benchmark

Reads a short, clean PDF receipt and fills a fixed JSON schema: invoice and receipt numbers, date paid, vendor, bill-to name and email, currency, subtotal, discount, total, amount paid, payment method and the line-item table. The model is told to use only values printed on the page.

This is the floor of the document suite: it asks nothing of long-context reading, only whether a model can hold a whole schema at once without dropping or inventing a field. Grading is per field: exact match on identifiers and dates, case-insensitive containment on names, a numeric tolerance on money, and absolute value on the discount so a sign convention does not decide the score.

Cases

  • receipt-a: One synthetic single-page receipt from Northwind Labs billed to Jane Doe, in USD. A 50% discount line takes a $22.00 subtotal down to an $11.00 total, so a model that reads the discount as positive, or reports the subtotal as the total, is caught.

Results

15/15 targets scored · 3 trials each · $0.17 total · show

Cost vs latencymost attractive quadrant
Latency & costsort by
TargetScore ↓StddevLatencyTok/sCostErrors
OpenAIgpt-6-luna@openai100.00.03.6s72.9best$0.00060/3
OpenAIgpt-5.6-luna@openai100.00.03.7s53.5$0.00100/3
bestClaudeclaude-haiku-5.5@anthropic100.00.02.5s89.2$0.00120/3
Geminigemini-3.5-flash-lite@google-ai-studio100.00.0best2s131.6$0.00250/3
OpenAIgpt-6.1-sol@openai100.00.04.2s38.8$0.00790/3
OpenAIgpt-5.6-terra@openai100.00.02.1s66.9$0.00820/3
OpenAIgpt-6-sol@openai100.00.04.8s43.7$0.00940/3
Claudeclaude-haiku-4.5@anthropic100.00.06s31.1$0.01040/3
Geminigemini-3.7-flash100.00.07.6s122.8$0.01290/3
Geminigemini-3.8-flash100.00.011.5s98.4$0.01510/3
Grokgrok-4.5@xai100.00.06.7s64.7$0.01790/3
Grokgrok-4.6@xai100.00.012.5s111.9$0.03540/3
⚠Qwenqwen3.8-flash3 field missesreceipt-a: date_paid (3/3)93.80.0112.7s50.2$0.01420/3
⚠Qwenqwen3.7-plus@alibaba3 field missesreceipt-a: date_paid (3/3)93.80.047s55.3$0.01640/3
⚠DeepSeekdeepseek-v4.1-flash14 field missesreceipt-a: bill_to_email (1/3)receipt-a: bill_to_name (1/3)receipt-a: date_paid (2/3)receipt-a: discount (1/3)receipt-a: invoice_number (1/3)receipt-a: line_items.0.amount (1/3)receipt-a: line_items.0.description (1/3)receipt-a: line_items.0.unit_price (1/3)receipt-a: payment_method (1/3)receipt-a: receipt_number (1/3)receipt-a: subtotal (1/3)receipt-a: total (1/3)receipt-a: vendor_name (1/3)70.836.913.4s262.0$0.01900/3

Note

  • qwen/qwen3.7-plus and qwen/qwen3.8-flash miss only date_paid, on all three trials each. Both returned June 3, 2026 where 2026-06-03 was required. The date is correct; the format is not.
  • deepseek/deepseek-v4.1-flash trial 2 returned a receipt that is not in the document: a different vendor (Acme Corp.), customer, invoice number, two line items and an empty date_paid. Its schema was intact, so the output parsed cleanly and scored 0.19 on the few fields it happened to match. Trial 3 read the right receipt and missed only date_paid on the same format.

Conclusion

Twelve targets swept all three trials, so the pick falls to cost and speed. openai/gpt-6-luna is the cheapest at $0.00055 for the run, at 3,638ms. anthropic/claude-haiku-5.5 costs about twice that ($0.00116) and answers faster at 2,505ms; google/gemini-3.5-flash-lite is the fastest clean sweep at 1,969ms for $0.00245. The sol models and everything above $0.008 buy nothing this scenario can detect.

Both qwen rows are fixable: one field, wrong format, every trial, with the values read correctly. deepseek-v4.1-flash is unsafe. Its 70.8 mean averages one clean trial, one date-format miss and one invented receipt, and the invented one is well-formed JSON a consumer would accept without complaint.