Mission: PDF417

Barcodes come in different flavors, and on the back of one of the document M&W’s shop uses lives a PDF417 code with all the data from the front perfectly encoded into little black and white boxes. (Or at least it’s exactly what the state has in their system.)

And it ain’t perfect, turns out.

I wanted the team to never need to type again. Ideal workflow would be to hold the back of the document, the barcode section, up the webcam on the front desk computer and all the delicious datas would happily dive into the appropriate fields in both the customer management software and in the software I built, stripping away all the human error generated by reading and typing.

A little research showed nothing exists out there on the old internet to do this, and a little coding during Mission: PDF417 explained why.

Currently, in the real world, companies and fellow humans use lasers to scan barcodes. Whether at the grocery store or pot shop or book store, out comes a little, magic red bar which all proper-like digests and decodes from paper (like a cereal box or printed document) or plastic (like a loaf of bread or an id badge).

And here’s the rub: physical objects ain’t perfect.

Some problems with physical stuff:

  • Paper gets crumpled.
  • Ink fades.
  • Printers run out of ink.
  • Things aren’t always flat.
  • People smudge chocolate and hand lotion on everything.
  • Designers get fancy and throw contrast out the window.

The barcode-reading lasers somehow slice through this. I have no idea how, and it’s worked for decades. Just buy a laser, man!

Cameras, also smudged by hand lotion and chocolate, naturally have challenges, as does the workflow of holding an object in place.

Undauntened, though, by common sense as I am — I want the thing the way I want it. — I got into coding a solution for hand-holding a PDF417 barcode

That’s the essence of a Mission. Can I build a silly thing which I want?

After studying for hours and bumping my head on dead ends, turns out, I can in this case.

Now I have to decide if the intellectual property is worth protecting or I should just share the methodology and codebase with my fellow humans as FOSS.