Skip to main content

Image 1D Barcode EXtractor - Detect and Extract 1D Barcode(s) in Photographs

Project description

IBEX 1D : Image 1D Barcode EXtractor

Detect 1D Barcode(s) in Photographs, Extract & Straighten them!

A Python 3 command line script to detect & extract barcode(s) in images, using OpenCV and NumPy.

Example of barcode extraction

Install

Via PIP

pip3 install ibex-1d

And for update to latest version use:

pip3 install --upgrade ibex-1d

Via Source Code

Download the latest release or clone/download this repository.

Usage

If you installed the package (via pip3) you can either import the package in your project:

import ibex_1d

image_path = "/Users/bensouchet/Desktop/IMG_3212.png"
settings = ibex_1d.Settings()
settings.use_adaptive_threshold = True

barcode_extract = ibex_1d.ImageBarcodeExtract1D(settings)
results = barcode_extract.find_barcodes([image_path])

Or use it as a script directly in you terminal:

ibex_1d -i ~/Desktop/IMG_3212.png

If you download a release or clone the repository, to use it as a script:

python3 ibex_1d.py -i ~/Desktop/IMG_3212.png

Results

If you called IBEX 1D via your terminal (as a script), the barcode images extracted will be saved into a newly created folder inside a folder ./results/, if nothing has been generated please check the log(s) in your terminal.

Otherwise if you called the function find_barcodes you will received a python list of ibex_1d.Result instances, this class store info about the execution (like execution status, message, debug steps) and the barcode(s) image(s) extracted for each image path passed to the function.

Multiple images

You can pass one or more images/photographs to the script like this:

ibex_1d -i ~/Desktop/IMG_3205.png ./object_12.jpg ~/Documents/photo_0345.jpeg

Inside the corresponding result sub-folder, extracted barcodes will be named barcode_001.png, barcode_002.png, barcode_003.png, ...

Incorrect result ?

If the barcode hasn't been extracted (or the resulting barcode image isn't good) this can be due to the OTSU threshold method. You can try using the script with the argument -a (or --adaptive-threshold):

ibex_1d -i ~/Desktop/IMG_3205.png -a

This threshold method isn't set as default because it's slower than OTSU.

Debug

You can visualize some steps of the sheet detection. For the script call you need to add the argument -d or --debug to the command:

ibex_1d -i ~/Documents/product_03.jpeg -d

if you imported the package, you need to enable the save_detection_steps in the settings instance like this:

settings = Settings()
settings.save_detection_steps = True

barcode_extract = ImageBarcodeExtract1D(settings)
results = barcode_extract.find_barcodes(images_paths)

This will add debug/steps images into the result sub-folders.

Errors / Warnings

In case of an error you should see a formatted log message in your terminal telling you exactly what is the issue. If the script crash or something don't work you can open an issue here.

Author / Maintainer

IBEX 1D has been created and is currently maintained by Ben Souchet.

Licenses

The code present in this repository is under MIT license.

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

ibex_1d-1.3.2.tar.gz (14.4 kB view hashes)

Uploaded Source

Built Distribution

ibex_1d-1.3.2-py3-none-any.whl (14.7 kB view hashes)

Uploaded Python 3

Supported by

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