Spaces:
Running
Running
| title: Deep Barcode Reader | |
| emoji: 🔳 | |
| colorFrom: gray | |
| colorTo: red | |
| sdk: streamlit | |
| sdk_version: 1.42.2 | |
| app_file: app.py | |
| pinned: false | |
| # Deep-Barcode-Reader | |
| This repository is used for reading different types of barcodes and QR codes from images. | |
| The code is written in Python and uses OpenCV, Pyzbar and other libraries for reading barcodes and QR codes. | |
| ## How to Use | |
| The library offers several functions for reading barcodes and QR codes from images. | |
| General options can be selected before applying the reader method. These options are: | |
| - `--data_path` is the path to the image file. | |
| - `--result_path` is the path to the output file. | |
| - `--verbose` is the verbosity level of the code. | |
| - `--method` is the method for reading the barcode or QR code. | |
| - `--model_size` is the size of the deep learning model. | |
| The available methods are as: | |
| - [Opencv Barcode Reader](#opencv-barcode-reader) | |
| - [Zbar Barcode Reader](#zbar-barcode-reader) | |
| - [QR Reader](#qr-reader) | |
| ### Opencv Barcode Reader | |
| This method can only detect barcodes but NOT QR codes. It can detect and decode EAN-8, EAN-13, UPC-A and UPC-E | |
| barcode types. You can use the method by running the following command: | |
| ```shell | |
| deep_barcode_reader -vv -d tests/test_data/sample.jpg -m opencv | |
| ``` | |
| This method can only detect specific types of barcodes. However, it is faster than the other methods. | |
| ### Zbar Barcode Reader | |
| This method can detect and decode both barcodes and QR codes. | |
| It is very powerful to detect and decode different types of barcodes and QR codes. | |
| You can use the method by running the following command: | |
| ```shell | |
| deep_barcode_reader -vv -d tests/test_data/sample.jpg -m zbar | |
| ``` | |
| ### QR Reader | |
| This method can only detect and decode QR codes. | |
| Depending on the model size as `n` as nano, `s` as small, `m` as medium, or `l` as large, | |
| the detection and decoding process time and accuracy can be changed. | |
| ```shell | |
| deep_barcode_reader -vv -d tests/test_data/sample.jpg -m zbar --model_size l | |
| ``` | |
| ## How to Develop | |
| Do the following only once after creating your project: | |
| - Init the git repo with `git init`. | |
| - Add files with `git add .`. | |
| - Then `git commit -m 'initialize the project'`. | |
| - Add remote url with `git remote add origin REPO_URL`. | |
| - Then `git branch -M master`. | |
| - `git push origin main`. | |
| Then create a branch with `git checkout -b BRANCH_NAME` for further developments. | |
| - Install poetry if you do not have it in your system from [here](https://python-poetry.org/docs/#installing-with-pipx). | |
| - Create a virtual env preferably with virtualenv wrapper and `mkvirtualenv -p $(which python3.10) ENVNAME`. | |
| - Then `git add poetry.lock`. | |
| - Then `pre-commit install`. | |
| - For applying changes use `pre-commit run --all-files`. | |
| ## Docker Container | |
| To run the docker with ssh, do the following first and then based on your need select ,test, development, or production containers: | |
| ```shell | |
| export DOCKER_BUILDKIT=1 | |
| export DOCKER_SSHAGENT="-v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK -e SSH_AUTH_SOCK" | |
| ``` | |
| ### Test Container | |
| This container is used for testing purposes while it runs the test | |
| ```shell | |
| docker build --progress plain --ssh default --target test -t barcode_docker:test . | |
| docker run -it --rm -v "$(pwd):/app" $(echo $DOCKER_SSHAGENT) barcode_docker:test | |
| ``` | |
| ### Development Container | |
| This container can be used for development purposes: | |
| ```shell | |
| docker build --progress plain --ssh default --target development -t barcode_docker:development . | |
| docker run -it --rm -v "$(pwd):/app" -v /tmp:/tmp $(echo $DOCKER_SSHAGENT) barcode_docker:development | |
| ``` | |
| ### Production Container | |
| This container can be used for production purposes: | |
| ```shell | |
| docker build --progress plain --ssh default --target production -t barcode_docker:production . | |
| docker run -it --rm -v "$(pwd):/app" -v /tmp:/tmp $(echo $DOCKER_SSHAGENT) barcode_docker:production deep_barcode_reader -vv -d tests/test_data/sample.jpg -m zbar --model_size l | |
| ``` | |
| ## Hugging Face Deployment | |
| The repository is also deployed in [hugging face](https://huggingface.co/spaces/afshin-dini/Deep-Barcode-Reader) in which one can upload images, select the appropriate method and its parameters and detect and decode the barcodes or QR codes. | |
| It is good to mention that you can also run the application locally by running the following command: | |
| ```shell | |
| streamlit run app.py | |
| ``` | |
| and then open the browser and go to the address `http://localhost:8501` | |