Web Demos

BARCODE READER SDK DEMO

Explore the flexibe barcode reading settings to optimize for your specific usage scenario.

WEB TWAIN SDK DEMO

Try the most popular web scanner features: scan images, import local images and PDF files, edit, save to local, upload to database, and etc.

BARCODE READER JAVASCRIPT DEMO

Transform any camera-equipped devices into real-time, browser-based barcode and QR code scanners.

MRZ SCANNER WEB DEMO

Detects the machine-readable zone of a passport, scans the text, and parses into human-readable data.

APP STORE DEMOS

BARCODE READER SDK FOR IOS

BARCODE READER SDK FOR ANDROID

VIEW MORE DEMOS >

Read Challenging Barcodes with Custom Scan Parameters

Dynamsoft Barcode Reader provides 100+ flexible configuration parameters to customize scan settings under different scenarios. Whether your barcode is readable, distorted, low resolution, upside-down, in low light, in motion, in the rain, zoomable, panoramic, parsed, or some other challenge, we have done it.

Check out the examples below and learn how to improve the reading rate and accuracy to meet your scanning requirements.

Single Multiple
OneD QR Code Data Matrix PDF417 Aztec Code MaxiCode DotCode GS1 DataBar Postal Codes Patch Code GS1 Composite Code
Rich texture With text Out of focus Low light Blur Clean
Crumpled Perspective distortion Direct part marking Glare Tainted Incomplete (missing a corner or a side) Dotted Uneven lighting White barcode on black background Low contrast Curved Tiny Good quality
Minimum quite zone Small barcode on a large image Other
Results:

Code39 Extended with Zero-Margin

Issue: Vehicle Identification Number (VIN) is sometimes accompanied with a code 39 extended barcode underneath. The placement is usually very tight and close to the series of digits resulting in a barcode with zero upper and lower margin. Many barcode scanners fail to read such barcodes. Solution: Dynamsoft offers many barcode localization methods catering to different usage scenarios. The Lines localization method localizes barcodes by searching for groups of lines. This is optimized for 1D and PDF417 barcodes which is suitable for identifying barcodes with little margin. JSON Template: { "ImageParameter": { "LocalizationModes": [ { "LibraryFileName": "", "LibraryParameters": "", "Mode": "LM_LINES" } ], "Description": "", "Name": "Settings", "Timeout": 99999 }, "Version": "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet to Use the Template: barcodeReader.initRuntimeSettingsWithString(template); Image Source: https://universe.roboflow.com/kirill-sergeev/vin-detection/

Single
OneD
With text
Good quality
Minimum quite zone

Barcode with Shadow

Issue: It’s very common that an image taken may present some shadows. The barcode area with uneven lighting is a very challenging decoding situation that many scanners fail to read. Solution: Dynamsoft Barcode Reader provides an adaptive binarization mode BM_LOCAL_BLOCK which caters to different lighting areas in the image in order to successfully decode these challenging barcodes. JSON Template: { "ImageParameter" : { "BinarizationModes": [ { "BlockSizeX": 0, "BlockSizeY": 0, "EnableFillBinaryVacancy": 1, "ImagePreprocessingModesIndex": -1, "LibraryFileName": "", "LibraryParameters": "", "Mode": "BM_LOCAL_BLOCK", "ThresholdCompensation": 10 } ], "Name": "Settings" }, "Version" : "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet to Use the Template: barcodeReader.initRuntimeSettingsWithString(template);

Single
QR Code
Low light
Uneven lighting
Other

Batch QR Codes

Issue: When it comes to scanning hundreds of barcodes in an image, Dynamsoft offers many optimization settings to effectively and quickly batch scan QR Codes. Solution: First, set the barcode type to QR code if your image only contains this type of code to reduce decoding time. Next, set the ImagePreprocessingModes to eliminate blurriness and set the ThresholdCompensation in BinarizationModes higher to improve the binary image with a dark background. Then, try different localization methods to accurately pinpoint the barcode locations. At last, set the ExpectedBarcodesCount to a large number such as 999 to make sure that the algorithm works really hard to decode as many barcodes as possible. JSON Template: { "ImageParameter" : { "BinarizationModes": [ { "BlockSizeX": 0, "BlockSizeY": 0, "EnableFillBinaryVacancy": 1, "ImagePreprocessingModesIndex": -1, "LibraryFileName": "", "LibraryParameters": "", "Mode": "BM_LOCAL_BLOCK", "ThresholdCompensation": 20 } ], "LocalizationModes": [ { "LibraryFileName": "", "LibraryParameters": "", "Mode": "LM_CONNECTED_BLOCKS" }, { "IsOneDStacked": 0, "LibraryFileName": "", "LibraryParameters": "", "Mode": "LM_SCAN_DIRECTLY", "ScanDirection": 0, "ScanStride": 0 }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "LM_STATISTICS" }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "LM_LINES" } ], "BarcodeFormatIds": [ "BF_QR_CODE", "BF_MICRO_QR" ], "ExpectedBarcodesCount": 999, "ImagePreprocessingModes": [ { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GENERAL" }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GRAY_EQUALIZE", "Sensitivity": 5 }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GRAY_SMOOTH", "SmoothBlockSizeX": 3, "SmoothBlockSizeY": 3 } ], "Name": "Settings" }, "Version" : "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet to Use the Template: barcodeReader.initRuntimeSettingsWithString(template);

Multiple
QR Code
Blur
Good quality
Other

Blurry Barcodes

Issue: The barcodes are blurry. The image might be taken in motion or low resolution. Solution: There are some parameters we can adjust to improve the reading rate. Set the deblurLevel to 9 (0 - 9) so that it will try to spend extra effort to read blurred barcodes. Set the ExpectedBarcodesCount to a higher value like 999 so that it will try all the available image processing methods. Set ImagePreprocessingModes to preprocess the image. Set ScaleUpModes to scale up modules if their size is too small. JSON Template: { "ImageParameter": { "BarcodeFormatIds": [ "BF_ITF" ], "BarcodeFormatIds_2": [ "BF2_NULL" ], "DeblurLevel": 9, "Description": "", "ExpectedBarcodesCount": 999, "ImagePreprocessingModes": [ { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GENERAL" }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GRAY_EQUALIZE", "Sensitivity": 5 }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GRAY_SMOOTH", "SmoothBlockSizeX": 3, "SmoothBlockSizeY": 3 } ], "ScaleUpModes":["SUM_LINEAR_INTERPOLATION(0,4,6)"], "Name": "Settings", "Timeout": 99999 }, "Version": "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet to Use the Template: barcodeReader.initRuntimeSettingsWithString(template);

Multiple
OneD
Blur
Curved
Other

Curved QR Code

Issue: When a barcode is wrapped on a cylindrical object such as a pop can, the resulting barcode image is curved. The deformed barcode is very challenging to scan correctly. Solution: Dynamsoft Barcode Reader SDK provides several image processing methods to combat deformation. These helps to scan curved, crumpled, distorted and other types of challenging barcodes. JSON Template: { "ImageParameter": { "BarcodeFormatIds": [ "BF_QR_CODE", "BF_MICRO_QR" ], "BarcodeFormatIds_2": [ "BF2_NULL" ], "DeformationResistingModes": [ { "Level": 5, "LibraryFileName": "", "LibraryParameters": "", "Mode": "DRM_GENERAL" }, { "Level": 5, "LibraryFileName": "", "LibraryParameters": "", "Mode": "DRM_BROAD_WARP" }, { "Level": 5, "LibraryFileName": "", "LibraryParameters": "", "Mode": "DRM_DEWRINKLE" } ], "Description": "", "Name": "Settings", "Timeout": 99999 }, "Version": "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet to Use the Template: barcodeReader.initRuntimeSettingsWithString(template);

Single
QR Code
Clean
Curved
Other

Damaged QR Code

Issue: Often you might find that a barcode is damaged, for example, scratched, marked up, or incomplete with missing corners, etc. Solution: We can try different localization methods to identify the location of the barcode that is severely damaged and then use our proprietary algorithm to complete the QR Code to improve the decoding rate. JSON Template: { "ImageParameter" : { "BarcodeFormatIds": [ "BF_QR_CODE", "BF_MICRO_QR" ], "LocalizationModes" : [ { "LibraryFileName" : "", "LibraryParameters" : "", "Mode" : "LM_CONNECTED_BLOCKS" }, { "LibraryFileName" : "", "LibraryParameters" : "", "Mode" : "LM_SCAN_DIRECTLY", "ScanDirection" : 0, "ScanStride" : 0 }, { "LibraryFileName" : "", "LibraryParameters" : "", "Mode" : "LM_STATISTICS" }, { "LibraryFileName" : "", "LibraryParameters" : "", "Mode" : "LM_LINES" } ], "ImagePreprocessingModes": [ { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GENERAL" }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GRAY_EQUALIZE", "Sensitivity": 5 }, { "LibraryFileName": "", "LibraryParameters": "", "Mode": "IPM_GRAY_SMOOTH", "SmoothBlockSizeX": 3, "SmoothBlockSizeY": 3 } ], "BarcodeComplementModes": [ { "Mode": "BCM_AUTO" } ], "Name": "Settings", "Timeout" : 100000 }, "Version" : "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet: barcodeReader.initRuntimeSettingsWithString(template);

Single
QR Code
Clean
Incomplete (missing a corner or a side)
Other

DataMatrix Code with Red-Striped Background

Issue: Barcodes printed on a textured background are more difficult to decode. For example, the barcodes in the sample image are printed on a red-striped backgroud, which affects the binarization result. Solution: We can increase the weight of the red channel during the binarization process to reduce the impact of the red stripes. JSON Template: { "ImageParameter": { "ExpectedBarcodesCount": 2, "ColourConversionModes": [ { "BlueChannelWeight": 0, "GreenChannelWeight": 0, "LibraryFileName": "", "LibraryParameters": "", "Mode": "CICM_GENERAL", "RedChannelWeight": 1000 } ], "Description": "", "Name": "Settings", "Timeout": 3500 }, "Version": "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet: barcodeReader.initRuntimeSettingsWithString(template);

Multiple
Data Matrix
Clean
Tainted
Other

High Version QR Code

Issue: The higher the QR code version, the more data modules there are and the more challenging it is to read such dense QR codes. Solution: Dynamsoft Barcode Reader uses a special algorithm optimized for reading a dense QR code. Set the appropriate ScaleUpModes, which determines the process for scaling up an image for detecting barcodes with a small module size. JSON Template: { "ImageParameter" : { "BarcodeFormatIds" : ["BF_QR_CODE"], "ScaleUpModes":["SUM_LINEAR_INTERPOLATION(0,4,6)"], "Name" : "Settings", "ScaleDownThreshold" : 99999, "Timeout":5000 }, "Version" : "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet: barcodeReader.initRuntimeSettingsWithString(template);

Single
QR Code
Clean
Good quality
Other

Inverted DPM Codes

Issue: Direct Part Marks (DPM) are codes, symbols, and texts that are etched or printed directly onto the surface of a part, which has a different texture from marks printed on paper. They are often inverted on a dark surface. Solution: Enable the DPM reading mode and invert the color of the image using GrayscaleTransformationModes. JSON Template: { "Version": "3.0", "ImageParameter": { "Name": "Test1", "GrayscaleTransformationModes":[ { "Mode":"GTM_INVERTED" } ], "DPMCodeReadingModes":[ { "Mode":"DPMCRM_GENERAL" } ], "DeblurLevel": 9, "Timeout": 99999 } } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet to Use the Template: barcodeReader.initRuntimeSettingsWithString(template);

Single
Data Matrix
Clean
Direct part marking
Other

Scan Barcode Off Screen

Issue: When you scan a barcode displayed on a flat-screen TV, a mobile phone, LCD or LED screens, the image contains roughly parallel dark and light bands superimposed, called the moiré pattern. The interfering pattern makes decoding the barcode very challenging. Solution: Dynamsoft Barcode Reader SDK provides an image processing step to remove the moiré texture and would quickly decode the barcode. JSON Template: { "ImageParameter" : { "TextureDetectionModes": [ { "LibraryFileName": "", "LibraryParameters": "", "Mode": "TDM_GENERAL_WIDTH_CONCENTRATION", "Sensitivity": 5 } ], "Name": "Settings" }, "Version" : "3.0" } Test Decoding × Upload Local File Decode Binarized image produced by Dynamsoft Barcode Reader: Template for Dynamsoft Barcode Reader: JavaScript Code Snippet to Use the Template: barcodeReader.initRuntimeSettingsWithString(template);

Single
QR Code
Rich texture
Good quality
Other