Receipt OCR¶

Receipt OCR automatically extracts grocery line items from a photo of your receipt and adds them to your pantry after you approve. It's available on the Paid tier and BYOK-unlockable on Free.
Upload a receipt¶
- Click Receipts in the sidebar
- Click Upload receipt
- Take a photo or select an image from your device
Supported formats: JPEG, PNG, HEIC, WebP. Maximum file size: 10 MB.
How OCR processing works¶
When a receipt is uploaded:
- OCR runs — the LLM reads the receipt image and identifies line items, quantities, and prices
- Review screen — you see each extracted item with its detected quantity
- Approve or edit — correct any mistakes, remove items you don't want tracked
- Confirm — approved items are added to your pantry in bulk
The whole flow is designed around human approval — Kiwi never silently adds items to your pantry. You always see what's being imported and can adjust before confirming.
Reviewing extracted items¶
Each extracted line item shows:
- Product name — as extracted from the receipt
- Quantity — detected from the receipt text (e.g., "2 × Canned Tomatoes")
- Confidence — how certain the OCR is about this item
- Edit — correct the name or quantity inline
- Remove — exclude this item from the import
Low-confidence items are flagged with a yellow indicator. Review those carefully — store abbreviations and handwriting can trip up the extractor.
Free tier behavior¶
On the Free tier without a BYOK backend configured:
- Receipts are stored and displayed
- OCR does not run automatically
- You can enter items from the receipt manually using the item list view
To enable automatic OCR on Free tier, configure a BYOK LLM backend.
Tips for better results¶
- Flatten the receipt: lay it on a flat surface rather than crumpling
- Include the full receipt: get all four edges in frame
- Good lighting: avoid glare on thermal paper
- Fresh receipts: faded thermal receipts (older than a few months) are harder to read
Re-running OCR¶
If OCR produced poor results, you can trigger a re-run from the receipt detail view. Each re-run uses a fresh extraction — previous results are discarded.