$ /buzzqrd/projects/grocer

grocer 🏪 🛒

Grocer is a Rust library for reading barcodes from images by scanning and sampling pixels in the image.



Grocer was made out of an interest for protocols and printed ways of storing and representing information. The basic barcode is so simple, yet incredibly useful. Everywhere you look: packages, shipping containters, and everything at the supermarket is covered in barcodes. It's always interesting wondering what a barcode can tell you about an item. At first, grocer was being written in C (and I'll release it in C at some point), but as I learned Rust and learned about the Crates system, I noticed that there wasn't a crate for scanning barcodes with images. So, I decided to cleanup and refactor my C code into Rust. Grocer got it's name because of how common barcodes are in grocery stores and the association between the checkout and barcode scanning.


Grocer is a project that I plan on working on for a long time, maintinating, updating, and adding new features. I'm very interested in barcodes and maintaining a useful Rust crate, especially since Rust doesn't have any other barcode reading libraries. Here are some of the changes and features I plan on adding:

  1. Structs to represent found barcodes
  2. Proper reading of barcodes forwards and backwards
  3. Updating the functions to be easily changed to work with other barcode variants
  4. UPC-E support
  5. Reading barcodes vertically
  6. Options to choose reliability of results or speed of scanning