Individuazione barcode con Python
Supponiamo di avere un documento PDF, e supponiamo che su questo documento sia stato incollato un barcode. L'obiettivo è estrarre il contenuto del barcode dal documento in maniera automatica con Python.
Ci serviranno due librerie: pyzbar per l'estrazione e interpretazione del barcode e pdf2image per trasformare le pagine del pdf in immagini. Le possiamo installare come di consueto:
pip install pyzbar pdf2image
Pdf2image richiede per il suo funzionamento che sul sistema sia presente Poppler. Poppler è una libreria open source per lavorare con i PDF. È possibile scaricare i binari direttamente dal sito (https://poppler.freedesktop.org/). Non è richiesta nessuna installazione, è sufficiente scaricare lo zip (nel nostro caso per Windows) ed estrarlo da qualche parte.
Possiamo iniziare.
Per prima cosa importiamo le funzioni necessarie dalle librerie:
from pyzbar import pyzbar
from pdf2image import convert_from_path
Dopodiché trasformiamo il pdf in una lista di immagini. Dobbiamo naturalmente usare il nome del nostro file come primo parametro, e il path in cui abbiamo copiato i binari di Poppler. Il secondo parametro rappresenta i DPI della conversione in immagine, di solito 500 è un valore corretto per questo tipo di analisi.
pages = convert_from_path(
'documento.pdf',
dpi=500,
poppler_path=r'C:\poppler-0.68.0\bin'
)
A questo punto possiamo prendere la prima pagina (pages[0]) e darla in pasto a pyzbar.
decoded_objects = pyzbar.decode(pages[0])
Per concludere, possiamo stampare il risultato dell'analisi, ad esempio così:
for obj in decoded_objects:
print("Type:", obj.type)
print("Data:", obj.data)
Facciamo una prova con un PDF trovato a caso su google. In prima pagina campeggia un barcode, e chi ha preparato il documento è stato così gentile da scriverci sopra la decodifica.
E questo è il risultato!