Decoding a 2D barcode printed from Adobe Reader

Decoding a 2D barcode printed from Adobe Reader

While Adobe has barcoded-forms decoding built into LiveCycle and had standalone products in the past, these products are not essential to processing barcoded form images and data. The barcodes are available in the clear if any form is printed by Acrobat or a reader-extended form is printed by Adobe Reader on the Mac or Windows. However, you do need a product that will locate and decode the barcode.

Decoding barcodes

There are a large number of barcode decoders on the market at different levels. Adobe includes barcode recognition and decoding with the LiveCycle server when Reader Extensions is purchased. This gives the ability to build processing around the barcode data, bringing in TIFF or image-based PDF and extracting the data strings.

Since the 2D barcode standards have been in place for over a decade, support for decoding barcodes is widespread, with a variety of platforms and capabilities. The list below are the ones that we are most familiar with, and we’re open to including others as we work with them and gain first-hand experience.

Local testing

One previously had to buy a handheld scanner for barcode recognition. However, there are a few scanners for mobile phones that are available. While RedLaser builds one, it tends to be a bit consumer-focused. I use the iPhone app from Manatee Works. It can easily read barcodes printed on paper; it can read from the computer screen if you’ve zoomed in appropriately. One thing that you must do when you load it is to use the setup screen (the gears) and enable the PDF417, QR and Data Matrix codes. The handheld technologies are pretty simple: they must have the barcode in the middle of the screen; they are unable to distinguish and report multiple barcodes.

The Inlite and OnBarcode service and package, described below, are also useful in testing, no matter whether you created the image direct from Acrobat or printed and scanned.

Server integration

The premier package comes from Accusoft. Their Barcode Express product is available on the major server platforms (C++, .Net, Java) and is the library that Adobe uses in its barcode product. It is able to recognize multiple barcodes on a single page. They have an extensive demo and tutorial page.

Inlite Research has a toolkit and a service for reading barcodes. If you open your barcoded form in Acrobat and do a SaveAs TIFF, you can submit that TIFF file to them and they’ll find the barcode. It’s a very easy way to try their .NET library.

OnBarcode has a .NET toolkit, and has packaged these into standalone programs you can run on your windows system.  You give it a TIFF; it will find the barcode and decode it.

Mobile development

Zxing is an open source Java library from Google. It’s main intent is mobile deployment, but it will operate on the server. It does have significant limitations, such as requiring the software that calls the decoder to isolate the barcode and centering it in the graphic before it will recognize it. It’s a good free library with which  to familiarize yourself, but the comments on PDF417 being alpha quality might scare you away from a production deployment.

Manatee, mentioned above under local testing, has mobile libraries as their primary source of business and the functionality appears robust.

Commercial scanning/ OCR/ ICR barcode systems

OCR/ICR systems readily support both 1D and 2D barcode data in their processing. While not an exhaustive list, I’ll mention two vendors.

ABBYY’s FineReader supports all three of the symbologies used by Acrobat and Reader. See more at http://www.abbyy.com/ocr_sdk_windows/technical_specifications/barcodes/

Kofax also processes barcodes in their VRS product with the Enhance Bar Code (EBC) option. See the chapter in the documentation on barcodes.

If you have experience with any of these products or would like to contribute a code sample, leave a comment and I’ll contact you to be a guest contributor.

Leave a Reply

Your email address will not be published. Required fields are marked *