Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Is there a Mathematica barcode image reader (much like TextRecognize) that allows the user to enter an image of a barcode and then read it to get an output string?

share
1  
1D or 2D? What symbology (i.e. standard)? –  David Carraher Sep 27 '13 at 1:57

2 Answers 2

Here is a bare bones, non-robust, use at your own risk, etc. code39 reader

(*get image *)
i = Binarize[Import@"http://i.stack.imgur.com/Cx3JD.png", .7]

Mathematica graphics

(* Char encodings from Paul's article - See link bellow *)
c1 = IntegerDigits[#, 2, 9] &@{168,42,148,138,133,388,162,52,289,97,352,49,304,112,37,292,100,265,
           73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208};
c2 = Characters["$%*+-./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"];

(*binary code for the image, drop the white flanks at the ends*)
code = Join @@ Split[Round /@ Mean /@ Transpose@ImageData@i][[2 ;; -2]];

(*get strip widths... err lengths... whatever,dropping the start/stop marks*)
lengths = Most /@ Partition[Length /@ Split@code, 10];

(*determine what is a wide and a thin strips are*)
{max, min} = {Max@#, Min@#} &@lengths;
f = Nearest[{{max} -> 1, {min} -> 0}];

(*convert from wide/thin encoding to chars*)
StringJoin @@ (Join @@@ Map[f, lengths, {2}] /. Thread[Rule[c1, c2]])

"CODE39"

Table and encoding shamelessly stolen from Paul Abbott's article on "The Mathematica Journal"

share
    
I can't get this to read other examples (eg here) –  cormullion Sep 27 '13 at 8:31
1  
@cormullion :D So here's the Coast Guard battle song, / We fight on land or sea./ Through howling gale and shot and shell,/ To win our victory./ "Semper Paratus" is our guide,/ Our pledge, our motto too./ We're "Always Ready" do or die!/ Aye! Coast Guard we are for you! –  belisarius Sep 27 '13 at 12:47
3  
@DavidG.Stork This code implements a barcode reader, not a creator as you could have found if you cared to test it. Enough. –  belisarius Sep 27 '13 at 17:11
1  
You are correct. The code you posted looked much like (http : // www.mathematica - journal.com/issue/v9i2/contents/Tricks9 - 2/Tricks9 - 2 _ 2. html) and the output appeared to be a crisp barcode (not a .jpg input image), so I mistakenly assumed yours was the same (creator) code. My mistake. –  David G. Stork Sep 27 '13 at 17:29
2  
@cormullion You may use a small tripod to hold the camera still –  belisarius Sep 27 '13 at 18:48

Yes!... It's new in version 10. Here is the documentation page

The syntax is very simple:

BarcodeRecognize["image"]

It uses ZXing library (http://code.google.com/p/zxing/).

You can alse create barcode using BarcodeImage as these examples: enter image description here enter image description here

share
    
How do you know it's using the zxing library? (I missed this in the docs and I'm curious) –  Ajasja Dec 5 '13 at 12:32
    
Secret!.. I'm a beta tester and exchanged some mails with the developer. :) –  Murta Dec 5 '13 at 13:56

This site is currently not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .