Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

barcode-qr-code-sdk

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

barcode-qr-code-sdk

Barcode and QR code scanning SDK for Python

  • 9.6.40.2
  • PyPI
  • Socket score

Maintainers
1

Python Extension: Barcode and QR Code SDK

This project provides a CPython binding to the Dynamsoft C/C++ Barcode Reader SDK v9.x. It demonstrates how to build a Python 1D/2D barcode SDK package for Windows, Linux and macOS from scratch. Beyond desktop PCs, it's also compatible with embedded and IoT devices such as Raspberry Pi and Jetson Nano. You are free to customize the Python API for Dynamsoft Barcode Reader to suit your specific needs.

Note: This project is an unofficial, community-maintained Python wrapper for the Dynamsoft Barcode SDK. For those seeking the most reliable and fully-supported solution, Dynamsoft offers an official Python package. Visit the Dynamsoft Capture Vision Bundle page on PyPI for more details.

About Dynamsoft Capture Vision Bundle

  • Get a 30-day FREE trial license to activate the SDK.
  • Install the SDK via pip install dynamsoft-capture-vision-bundle.

Comparison Table

FeatureUnofficial Wrapper (Community)Official Dynamsoft Python Barcode SDK
SupportCommunity-driven, best effortOfficial support from Dynamsoft
DocumentationREADME onlyComprehensive Online Documentation
API CoverageLimitedFull API coverage
Feature UpdatesMay lag behind the official SDKFirst to receive new features
CompatibilityLimited testing across environmentsThoroughly tested across all supported environments
OS SupportWindows, Linux, macOSWindows, Linux, macOS

Supported Python Edition

  • Python 3.x

Installation of Dependencies

To show UI, you need to install the OpenCV package:

pip install opencv-python

Command-line Usage

$ scanbarcode <file-name> -l <license-key>

# Show the image with OpenCV
$ scanbarcode <file-name> -u 1 -l <license-key>

python barcode QR code scanner

How to Build the Python Barcode and QR Code Extension

  • Create a source distribution:

    python setup.py sdist
    
  • setuptools:

    python setup_setuptools.py build
    python setup_setuptools.py develop # Copy libraries to barcodeQrSDK folder
    
  • scikit-build:

    python setup.py build
    python setup.py develop # Copy libraries to barcodeQrSDK folder
    
  • Build wheel:

    pip wheel . --verbose
    # Or
    python setup_setuptools.py bdist_wheel
    # Or
    python setup.py bdist_wheel
    

Quick Start

  • Console App

    import barcodeQrSDK
    
    # set license
    barcodeQrSDK.initLicense("LICENSE-KEY")
    
    reader = barcodeQrSDK.createInstance()
    
    results, elapsed_time = reader.decodeFile("IMAGE-FILE")
    for result in results:
        print(result.format)
        print(result.text)
        print(result.x1)
        print(result.y1)
        print(result.x2)
        print(result.y2)
        print(result.x3)
        print(result.y3)
        print(result.x4)
        print(result.y4)
    
  • Video App

    import barcodeQrSDK
    import numpy as np
    import cv2
    import json
    
    g_results = None
    
    def callback(results, elapsed_time):
        global g_results
        g_results = (results, elapsed_time)
    
    def run():
        # set license
        barcodeQrSDK.initLicense("LICENSE-KEY")
    
        # initialize barcode scanner
        scanner = barcodeQrSDK.createInstance()
        params = scanner.getParameters()
        # Convert string to JSON object
        json_obj = json.loads(params)
        # json_obj['ImageParameter']['ExpectedBarcodesCount'] = 999
        params = json.dumps(json_obj)
        ret = scanner.setParameters(params)
        
        scanner.addAsyncListener(callback)
    
        cap = cv2.VideoCapture(0)
        while True:
            ret, image = cap.read()
            if image is not None:
                scanner.decodeMatAsync(image)
                
            if g_results != None:
                print('Elapsed time: ' + str(g_results[1]) + 'ms')
                cv2.putText(image, 'Elapsed time: ' + str(g_results[1]) + 'ms', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
                for result in g_results[0]:
                    x1 = result.x1
                    y1 = result.y1
                    x2 = result.x2
                    y2 = result.y2
                    x3 = result.x3
                    y3 = result.y3
                    x4 = result.x4
                    y4 = result.y4
                    
                    cv2.drawContours(image, [np.int0([(x1, y1), (x2, y2), (x3, y3), (x4, y4)])], 0, (0, 255, 0), 2)
                    cv2.putText(image, result.text, (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
    
            cv2.imshow('Barcode QR Code Scanner', image)
            ch = cv2.waitKey(1)
            if ch == 27:
                break
        
        scanner.clearAsyncListener()
    
    if __name__ == '__main__':
        run()
    

    Python barcode and QR code scanner

Methods

  • barcodeQrSDK.initLicense('YOUR-LICENSE-KEY'): Set the global license key for the barcode SDK.

    barcodeQrSDK.initLicense("LICENSE-KEY")
    
  • barcodeQrSDK.createInstance(): Create a new barcode reader instance.

    reader = barcodeQrSDK.createInstance()
    
  • decodeFile(filename): Decode barcodes and QR codes from an image file.

    results, elapsed_time = reader.decodeFile("IMAGE-FILE")
    
  • decodeMat(Mat image): Decode barcodes and QR codes from an OpenCV Mat.

    image = cv2.imread("IMAGE-FILE")
    results = reader.decodeMat(image)
    for result in results:
        print(result.format)
        print(result.text)
        print(result.x1)
        print(result.y1)
        print(result.x2)
        print(result.y2)
        print(result.x3)
        print(result.y3)
        print(result.x4)
        print(result.y4)
    
  • getParameters(): Retrieve the current SDK parameters as a JSON string.

    params = reader.getParameters()
    
  • setParameters(JSON string): Set barcode SDK parameters using a JSON string.

    import json
    json_obj = json.loads(params)
    json_obj['ImageParameter']['DPMCodeReadingModes'][0]['Mode'] = 'DPMCRM_GENERAL'
    json_obj['ImageParameter']['LocalizationModes'][0]['Mode'] = 'LM_STATISTICS_MARKS'
    params = json.dumps(json_obj)
    ret = reader.setParameters(params)
    
  • addAsyncListener(callback function): Register a Python function to receive barcode results asynchronously.

  • decodeMatAsync(<opencv mat data>): Asynchronously decode barcodes and QR codes from an OpenCV Mat.

    def callback(results, elapsed_time):
        print(results)
                                                        
    import cv2
    image = cv2.imread("IMAGE-FILE")
    reader.addAsyncListener(callback)
    reader.decodeMatAsync(image)
    sleep(1)
    
  • clearAsyncListener(): Stop the asynchronous listener and clear the registered callback.

  • decodeBytes(bytes, width, height, stride, imageformat): Decode barcodes from a raw image byte array.

    import cv2
    image = cv2.imread("IMAGE-FILE")
    results, elapsed_time = scanner.decodeBytes(image.tobytes(), image.shape[1], image.shape[0], image.strides[0], barcodeQrSDK.ImagePixelFormat.IPF_BGR_888)
    
  • decodeBytesAsync: Asynchronously decode image byte arrays.

    def callback(results, elapsed_time):
        print(results)
                                                        
    import cv2
    image = cv2.imread("IMAGE-FILE")
    imagebytes = image.tobytes()
    scanner.decodeBytesAsync(image.tobytes(), image.shape[1], image.shape[0], image.strides[0], barcodeQrSDK.ImagePixelFormat.IPF_BGR_888)
    sleep(1)
    

Supported Barcode Symbologies

  • Linear Barcodes (1D)

    • Code 39 (including Code 39 Extended)
    • Code 93
    • Code 128
    • Codabar
    • Interleaved 2 of 5
    • EAN-8
    • EAN-13
    • UPC-A
    • UPC-E
    • Industrial 2 of 5
  • 2D Barcodes:

    • QR Code (including Micro QR Code)
    • Data Matrix
    • PDF417 (including Micro PDF417)
    • Aztec Code
    • MaxiCode (mode 2-5)
  • Patch Code

  • GS1 Composite Code

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc