A barcode or QR scanner tested on a clean printed sample works reliably. The same code, crumpled, poorly lit, or photographed at an angle on a real receipt, fails far more often — and that's the condition it actually needs to work in.

What actually helps

  • Preprocessing: adaptive thresholding and deskewing before detection, rather than feeding the raw photo directly to a decoder.
  • Trying multiple crop regions and rotations if the first detection attempt fails, rather than giving up after one pass.
  • Falling back to a larger, more robust detection library rather than a minimal one if your first choice struggles on real-world samples.

Testing honestly

Build your test set from real photos taken the way users will actually take them — hand-held, imperfect lighting — not from clean scanned samples, which will always overstate real-world performance.

See camera-quality problems that quietly break a vision model.

Pranjul Rathour, GenAI Engineer from Kanpur, India. Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at any campus: pranjulrathour41@gmail.com.