are a sort of two-dimensional barcodes
. It's quite much a de-facto standard for mobiles in Japan and is gaining in popularity world-wide. Some people incorrectly assume that "QR codes" and "2D barcodes" are synonyms, however there're dozens of 2D barcode formats/standards and QR code is just one of them (check out the Wikipedia
page for an extensive list of 2D barcode formats). QR codes can hold all sorts of content, not just numbers, text or URLs (which is the most common use of QR codes). They can hold up to 2953 bytes so small icons, images are also embeddable.
I've tested the built-in barcode reader of my Nokia N95 8GB: it could read successfully only the standard QR codes and failed to read any of the crippled ones in the Wikipedia article
(those that got some data removed, but should be still decodable due to the Read-Solomon coding used in QR codes). I could not read the one with the face design
either. It seems I'll have to look for a better barcode reader.
Here're some articles/websites on 2D barcodes (mostly related to mobile application):
Some barcode generators:
And some barcode readers for mobiles:
Since Glass is told not to support the N95, I did not even bother trying it. I've tested the other four apps though using the test QR codes that are available on the Wikipedia page
Here're my results:
- Nokia's Barcode Reader: quite nice, but it could read only the source image. Supports more 2D barcode formats (not sure which ones) and thus it's a bit slow in recognition.
- Kaywa Reader: fast and this was the only one that could read one of the non-standard images, namely the one with the face design.
- UpCode: fast and this is the only one that can read "regular" 1D barcodes too, but in 2D it could read only the source image.
- Semacode: this one is quite poor. It's written in Java and I suppose that's the reason for it not being able to continuously capture and analyze the image of the camera (like all the other barcode readers do). You can only position the camera and select "Capture". Then the phone asks you (every time) whether you allow the Semacode app. to use your camera and if you select "yes", then (and only then) it takes a shot and analyzes it. I could not read any single QR code using this app, but that's probably my mistake. However this annoying thing with asking for Java permission makes it quite a pain to use.
- QuickMark: good error correction, but still did not manage to recognize any of the "damaged" barcodes. Did not even recognize the face design code.
It was interesting to see that the i-nigma reader has the same settings and behaviour (while having its own look due to customized background image, fonts, etc.) and decoding capabilities as the Kaywa reader.
And the i-nigma reader could decode the face design QR code too! All these similiarities cannot be coincidental. After a little Google search it turned out that both use the reader (or the SDK) of 3GVision
. Actually i-nigma.com belongs to 3GVision.
Surprisingly none of the readers could decode any part of the "damaged" QR codes (this
Imho the best QR code reader is Kaywa (since it's the only one in my test that could read something that the others could not) and the most versatile (supporting 1D barcodes too) is UpCode.
PS: I've replaced the default Drupal logo on my site with a QR code.
It's quite interesting that non of the barcode reader apps could decode my QR code with default settings (except for QuickMark, but it had "close up" focusing as default).
I assume that the gradient background behind the logo is responsible for this, because if I load only the logo image in Firefox, then all readers managed to decode. However on the page (with the gradient background) the Nokia Barcode Reader failed completely, the Kaywa Reader could decode it once I've set the "scan mode" from normal to "close up", and UpCode succeeded once I've set the zoom level to 30%. So if you've problems reading a barcode, play with these settings to improve the chances of success. Another interesting thing is that Nokia Barcode Reader and Kaywa Reader both managed to display the latin1 "ü" character as it was meant (I created the QR code with Nokia's barcode generator
so I've no idea about the encoding used), but UpCode displayed this char as the string "Ã¼".
PS2: it's not quite trivial ... UpCode does no autodetection on the barcode format. You've to select the format that is to be recognized manually and the default format is DataMatrix (DM). UpCode can read 1D barcodes, but supports only the UPC-A, UPC-E, EAN/JAN-8 and EAN/JAN-13 variants. These are used for most products in stores, but you cannot read eg. the Wikipedia barcode
, because it's encoded with Code 128.