Prueba de decodificación 2 - tpII/2020-pc-6-combiot GitHub Wiki

A continuacion explicaremos la segunda alternativa para la decodificacion del codigo pdf417, haciendo uso de Docker y la libreria pyzxing (Python + Java) principalmente.

  1. Instalamos docker en nuestras computadoras
  2. Creamos el archivo Dockerfile con el siguiente contenido:
FROM python:3.8.6-alpine3.12
ENV VERSION=3.6.3
RUN apk add openjdk8 wget gcc g++ \
    && wget -O /tmp/maven.tar.gz https://apache.dattatec.com/maven/maven-3/3.6.3/binaries/apache-maven-$VERSION-bin.tar.gz \
    && tar -zxvf /tmp/maven.tar.gz -C /etc/ \
    && mv /etc/apache-maven-$VERSION /etc/maven \
    && pip install pyzxing
ENV PATH=/etc/maven/bin:$PATH
  1. Creamos la imagen con el comando:
docker build -t combi .
  1. Corremos la imagen de forma local:
docker container run -itd --name combi  -v $PWD:/combi combi:latest
  1. Para correr comandos dentro del contenedor utilizamos el siguiente comando:
docker exec -it combi ash
  1. Entramos a la carpeta combi y corremos el programa en python "deco-docker.py" para decodificar la imagen del pdf417.

Contenido del deco-docker.p

from pyzxing import BarCodeReader

reader = BarCodeReader()
results = reader.decode('./barcode.png')
print(results)

Obteniendo el siguiente resultado:

[{'filename': 'file:///combi/./barcode.png', 'format': 'PDF_417', 'type': 'TEXT', 'raw': "{'name': 'Cliente', 'date': '12/10/2020', 'valid': True}", 'parsed': "{'name': 'Cliente', 'date': '12/10/2020', 'valid': True}", 'points': [(20.0, 20.0), (20.0, 487.0), (533.0, 20.0), (533.0, 487.0), (71.0, 20.0), (71.0, 487.0), (479.0, 20.0), (479.0, 487.0)]}]
  1. Para quedarnos con la informacion del campo 'parsed' que es la que nos interesa simplemente accedemos de la siguiente manera:
results[0]['parsed']

Obteniendo asi:

{'name': 'Cliente', 'date': '12/10/2020', 'valid': True}