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|improve this question
1  
1D or 2D? What symbology (i.e. standard)? –  David Carraher Sep 27 '13 at 1:57
add comment

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|improve this answer
    
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
show 8 more comments

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|improve this answer
    
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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.