It took almost twenty years after the invention of the first "bar code" for the technology to become commercially successful. Nowadays, we are used to seeing those symbologies in virtually every aspect of our everyday lives. And as usage expanded, of course, different types of barcode detectors have emerged over the past decades. A recent technology trend replaces laser scanners with smartphones for both commercial and private use. This shift has driven the development of a variety of high-performing open-source Software and SDK options designed for enterprise use cases.
In this article, we will compare popular barcode reader libraries and Scanbot's advanced Barcode Scanner SDK in terms of supported platforms and their capabilities to scan various types of barcodes. Finally, we will consider ease of integration and customer support.
But before we make this comparison and draw our conclusions, let's talk about the barcode scanner market, issues, and possible enterprise-grade solutions out there.
Covering countless use cases: Why do we need so many barcode formats?
There are plenty of different barcode symbologies. Roughly, those can be divided into one-dimensional (1D) and two-dimensional (2D) standards. 1D barcodes, like the EAN code, can only hold a minimal amount of data encoded by varying the widths of lines and the spaces between them – hence the name “linear” barcodes. In contrast, 2D barcodes, like the QR Code, consist of a grid of pixels that can have either an on (black) or off (white) state. They can store thousands of characters each.
But why do we need so many different kinds of barcodes? Why are we still using one-dimensional barcodes at all, if two-dimensional codes can encode so much more data? The answer is that 2D codes can only be read with dedicated imager scanners or smartphones. One-dimensional symbologies, however, need just a simple, low-cost laser scanner. Those are still in widespread use, reflecting the continuing popularity of 1D barcodes.
Can you read all types of barcodes with a single device?
Each dedicated barcode reader device, too, has its own benefits and disadvantages. Let’s have a quick look at the most common barcode scanners and their characteristics to get an overview of the available hardware scanning options on the market.
Pen-type barcode readers are the cheapest available option, but also the least practical. They require direct contact with the barcode, are limited to 1D barcodes, and perform poorly with damaged barcodes.
CCD barcode scanners are fast in recognition, but they are also limited to 1D barcodes and have a short reading distance.
Laser scanners are fast, easy to use, and work well in low light conditions. But they too are limited to 1D barcodes, and their moving mechanical components make them prone to malfunctions.
In contrast, imager barcode scanners work like cameras. Thus, they are able to read 2D barcodes, and work reliably even on damaged barcodes. Unfortunately, they are expensive and less suitable for 1D barcode recognition.
Lastly, smartphones (applause and confetti): Apps turn mobile devices into a modern barcode scanning tool that efficiently covers both 1D and 2D symbologies. Smartphones are considerably cheaper than imager scanners and allow users to scan all barcode types with just one device. With a BYOD strategy, there is no hardware cost at all. Enterprises don’t have to dedicate a mobile device to just one barcode scanning job, but instead get high versatility at the lowest TCO.
Additionally, users don't need any special training to use smartphones as scanners, since apps provide them with direct visual feedback. With simple mobile application updates, the apps themselves can evolve constantly.
Apps or websites with integrated scanning capabilities for barcodes can cover just about all barcode symbologies and turn smartphones into mobile barcode readers within just days.
Mobile scanners, too, have their differences. Now, it is about choosing the right kind of solution for your project: Open-source software, free barcode libraries or a proprietary Scanner SDK?
Properties of outstanding barcode scanner libraries for mobile apps
Let’s assume your mobile or web-based project requires barcode scanning for a use case such as inventory barcode scanner, process automation, or parcel tracking. Now, you’ll have to decide which barcode reading solution on the market suits your enterprise’s requirements best.
There are a couple of signs of a good third-party barcode library that you should look for while comparing your potential candidates.
First of all, you need to make sure that the performance of the scanner meets your requirements. Apart from raw speed, performance also includes properties like accuracy, response in rough conditions, and stability.
Since there is a large variety of web and mobile platforms, compatibility is another key topic. Suppose you want to support all common mobile and web platforms. Then your barcode library should be compatible with Android and iOS (or the cross-platform framework you are developing your mobile app in), as well as with common browsers such as Safari, Chrome, or Firefox.
The integration process itself is another crucial factor, as it decides how fast you can release your product to the market. Ease of integration also affects the quality of your product. A complicated integration increases the chances of developers making mistakes, while a straightforward integration phase makes it easier to arrive at an error-free software in the end.
Additionally, there are various types of barcodes out there – even QR codes come in several flavors, for example. Your enterprise-grade barcode scanning library should support all necessary barcode types, both those that you are currently working with and those you might use in the future.
Speaking of the future: Your requirements may evolve with your business. That means it’s also important to evaluate the continuity of the Barcode SDK development, the responsiveness of the software developers to your questions and bug reports, and customer support.
Comparison of barcode reader libraries
We are going to compare three libraries: ML Kit, ZXing, and the Scanbot Barcode Scanner SDK. We chose these candidates based on their popularity and functionality. Let’s briefly talk about each of these software libraries.
ML Kit is an easy-to-use tool that gives mobile developers access to Google's machine learning capabilities. The kit contains various APIs for different purposes, such as face detection, image labeling, text recognition – and barcode reading.
ZXing (“Zebra Crossing”) is a Java-based multi-format 1D/2D barcode image processing toolkit that has been ported to other languages. This open-source toolkit is the most popular barcode library in the market, and most other open-source libraries are, in fact, built upon ZXing. Currently, it is in maintenance mode, and only bug fixes and minor enhancements are considered.
Scanbot Barcode Scanner SDK is our own solution. Scanbot offers enterprise-grade scanning solutions for barcodes, documents, and data extraction with options for various types of mobile, cross-platform, and web solutions.
Barcode scanning capabilities
The table below makes clear that ML Kit covers the smallest number of barcode types. Both the Scanbot Barcode SDK and ZXing support all barcode standards that ML Kit does, but can also read RSS 14 and RSS Expanded codes. Only the Scanbot Barcode SDK additionally supports MSI Plessey, and only ZXing supports MaxiCode.
The variety of supported barcode types is not a performance measure as such. But, in the beginning, you have to check if the barcode type you require is covered by the barcode scanner library you choose.
|Scanbot Barcode SDK 3.2.0||ZXing 3.5.0||ML Kit 17.0.2|
The variety of platforms supported by the barcode scanner library is also a crucial consideration. Android and iOS are still the most popular operating systems on mobile devices.
Even though it might seem like there are only two platforms to support, it is not true from the software development perspective. Apart from native mobile app development, there are plenty of widely used cross-platform development frameworks. Additionally, developers can also use web-based hybrid solutions and progressive web apps (PWA) to develop apps for mobile devices.
The table below shows the compatibility of the library with the most popular platforms and frameworks on the market.
|Scanbot Barcode SDK 3.2.0||ZXing 3.5.0||ML Kit 17.0.2|
The Scanbot Barcode SDK supports both of the most popular native platforms, the most widely used cross-platform frameworks, and also Web apps via an npm package.
ZXing as such is only available for native Android development. However, there are community-developed libraries for other platforms that build on the original ZXing library. For example, you can use “zxingify-objc”to develop your code for iOS.
ML Kit supports both Android and iOS platforms. As with ZXing, you can find external libraries for other frameworks, such as Xamarin and Flutter, that use the original ML Kit library under the hood.
Ease of integration and customer support
Ease of integration is difficult to measure objectively, as it depends on several factors. These include the use case, available support, the developers themselves, and others. Still, there are things we can look at, such as code size and the quality of the available documentation.
Let’s consider how much code we would need to integrate these three barcode scanner SDKs. The Scanbot Barcode SDK requires the least code, followed by ML Kit. We would have to write the most code to integrate ZXing. The difference is not dramatic, though. All three are also well-documented. We can therefore say that all three SDKs do a great job on ease of integration.
Problems can appear during every integration – and afterward. By getting helpful, accurate answers fast, you can keep your app’s time-to-market short. This makes it crucial to consider the level of support you can expect.
ZXing is open-source software. If you have a problem, you can start by looking for solutions on community forums like StackOverflow. You can also try digging into the project’s code itself to find answers. The downside: It’s not something you developed with your team, so your developers would have to spend a lot of time to understand a huge project like this. Another approach is filing a bug report on the code repository and waiting for that problem to be fixed or answered. This also takes time, and you won’t know when – and if – it will happen. Especially because ZXing is no longer in active development, and only bug fixes and minor enhancements are being considered.
ML Kit is not an open-source library. Still, there are also websites where community-driven discussions take place. You can therefore raise your questions and wait for them to be answered by other enthusiasts. Of course, it’s also possible to file bug reports and make feature requests there.
Unlike ZXing and ML Kit, the Scanbot SDK team offers enterprise-level customer support and a dedicated Customer Success Manager to help the customers in every way possible. Our team makes it a priority to answer your questions fast, share useful code snippets, and quickly fix bugs reported by customers. With this dedicated support, the whole integration process becomes as smooth and seamless as possible.
We compared two of the most popular free barcode reader libraries and Scanbot's advanced Barcode Scanner SDK in terms of supported platforms and capability of scanning various types of barcodes. Let's take a look at the results briefly.
In terms of barcode support, both the Scanbot Barcode SDK and ZXing cover the most widely used barcode types in the market.
The Scanbot Barcode SDK has the greatest platform support in this list. It supports both of the most popular native platforms, Android and iOS, the most widely used cross-platform frameworks and also Web apps via an npm package.
When it comes to SDKs, several factors can impact the success of your project. Here are five things you should consider when deciding which SDK to buy.