Why receipt extraction is tuned to be conservative
A bank statement or invoice is almost always a digitally generated PDF with a real text layer underneath — extraction there is mostly about structure (which column is which), and the source characters are already unambiguous. A phone-photo receipt has no such guarantee: lighting, angle, thermal-print fade, and camera focus all degrade the actual pixels the model has to read, so the failure mode shifts from "structure" to "is this character even legible." Extract's receipt prompt is written around that difference — it still identifies columns by meaning (item_description, quantity, unit_price, line_total), but on any character it can't confidently resolve, it flags the cell for you rather than silently inserting its best guess, because a guessed digit in an expense total is worse than an extra thirty seconds of review.