Skip to main content

Wrapper for decoding/reading barcodes with ZXing (Zebra Crossing) library

Project description

python-zxing

PyPI Build Status License: LGPL v3

This is a wrapper for the ZXing barcode library. It will allow you to read and decode barcode images from Python.

It was originally a "slightly less quick-and-dirty" fork of oostendo/python-zxing, but has since evolved considerably beyond that ancestral package.

Dependencies and installation

Use the Python 3 version of pip (usually invoked via pip3) to install: pip3 install zxing

  • You'll neeed to have a recent java binary somewhere in your path. (Tested with OpenJDK v7, v8, v11.)
  • pip will automatically download the relevant JAR files for the Java ZXing libraries (currently v3.5.3)

Usage

The BarCodeReader class is used to decode images:

>>> import zxing
>>> reader = zxing.BarCodeReader()
>>> print(reader.zxing_version, reader.zxing_version_info)
3.5.1 (3, 5, 1)
>>> barcode = reader.decode("test/barcodes/QR_CODE-easy.png")
>>> print(barcode)
BarCode(raw='This should be QR_CODE', parsed='This should be QR_CODE', path='test/barcodes/QR_CODE-easy.png', format='QR_CODE', type='TEXT', points=[(15.0, 87.0), (15.0, 15.0), (87.0, 15.0), (75.0, 75.0)])

The attributes of the decoded BarCode object are raw, parsed, path, format, type, points, and raw_bits. The list of formats which ZXing can decode is here.

The decode() method accepts an image path or PIL Image object (or list thereof) and takes optional parameters try_harder (boolean), possible_formats (list of formats to consider), and pure_barcode (boolean). If no barcode is found, it returns a False-y BarCode object with all fields except path set to None. If it encounters any other recognizable error from the Java ZXing library, it raises BarCodeReaderException.

Command-line interface

The command-line interface can decode images into barcodes and output in either a human-readable or CSV format:

usage: zxing [-h] [-c] [--try-harder] [--pure-barcode] [-V] image [image ...]

Human-readable:

$ zxing /tmp/barcode.png
/tmp/barcode.png
================
  Decoded TEXT barcode in QR_CODE format.
  Raw text:    'Testing 123'
  Parsed text: 'Testing 123'

CSV output (can be opened by LibreOffice or Excel):

$ zxing /tmp/barcode1.png /tmp/barcode2.png /tmp/barcode3.png
Filename,Format,Type,Raw,Parsed
/tmp/barcode1.png,CODE_128,TEXT,Testing 123,Testing 123
/tmp/barcode2.png,QR_CODE,URI,http://zxing.org,http://zxing.org
/tmp/barcode3.png,QR_CODE,TEXT,"This text, ""Has stuff in it!"" Wow⏎Yes it does!","This text, ""Has stuff in it!"" Wow⏎Yes it does!"

License

LGPLv3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zxing-1.0.3.tar.gz (689.6 kB view details)

Uploaded Source

File details

Details for the file zxing-1.0.3.tar.gz.

File metadata

  • Download URL: zxing-1.0.3.tar.gz
  • Upload date:
  • Size: 689.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for zxing-1.0.3.tar.gz
Algorithm Hash digest
SHA256 5a6da4365061e46364b46046ab6f19f6dcf646f35375fff311763231832f6fd4
MD5 f097165a2c139480fc0577412ec1593f
BLAKE2b-256 a7ac2a004e63cd205900191a189028762c2e9b39e2c95f8e0f6fa50626612ac3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page