Φτιάξτε ένα barcode scanner!

dimitris | Τρί, 11/13/2012 - 23:42 | 15'

Χρησιμοποιήστε την webcam του υπολογιστή σας για να εισάγετε δεδομένα από γραμμικούς κώδικες οπουδήποτε!

Του Γιάννη Τουλή *

Αφορμή για να γράψω αυτόν τον οδηγό, στάθηκε μία ανάγκη που παρουσιάστηκε στο Τμήμα Μουσικών Σπουδών του Ιονίου Πανεπιστημίου που απαιτούσε την σάρωση δεδομένων γραμμικών κωδικών (barcodes) και την εισαγωγή τους σε μία βάση δεδομένων. Αν και στο σύνολό τους τα ΑΕΙ περνάνε μία άνευ προηγουμένου οικονομική δυσπραγία, ο βασικός στόχος για το Τμήμα Μουσικών Σπουδών ήταν πρωτίστως να επιβεβαιώσει για μία ακόμη φορά το ορθό της απόφασής του να υιοθετήσει το ΕΛΛΑΚ, βρίσκοντας και σε αυτή την περίπτωση μια λύση μέσα από την “αχαλίνωτη” δημιουργικότητα της κοινότητας! Το ότι έχετε στα χέρια σας αυτόν τον οδηγό είναι άλλη μία απόδειξη ότι το ΕΛΛΑΚ πραγματικά μπορεί να καλύψει ανάγκες που εμείς ως χρήστες ούτε που φανταζόμασταν ότι κάποιοι φίλοι έχουν ήδη μεριμνήσει προσφέροντάς μας λύσεις για αυτές! Το μόνο που έχουμε να κάνουμε για να τις βρούμε είναι μία βόλτα στη “γειτονιά της πληροφορίας”, το διαδίκτυο.

Οι γραμμικοί κώδικες και ιδιαίτερα οι δισδιάστατοι κώδικες QR έχουν διαδοθεί πάρα πολύ τον τελευταίο καιρό μέσα από τις ευκολίες που παρέχουν σε χρήστες smartphones. Η σάρωση των γραμμικών κωδικών στα smartphones επιτυγχάνεται με τη χρήση της ενσωματωμένης κάμερας του τηλεφώνου σε ρόλο σαρωτή. Κατά συνέπεια η δυνατότητα να χρησιμοποιήσουμε μία webcam ως σαρωτή είναι δεδομένη. Με αυτόν τον τρόπο γλιτώνουμε την αγορά κάποιου Barcode Scanner.

Τα Zbar-tools

Αναζητώντας στο διαδίκτυο μία εφαρμογή που να χρησιμοποιεί την webcam του υπολογιστή ως σαρωτή γραμμικών κωδικών, σύντομα “έπεσα” πάνω στα Zbar-tools.

Πρόκειται για μια σουίτα ΕΛ/ΛΑΚ για ανάγνωση γραμμωτών κωδικών από διάφορες πηγές, όπως τα βίντεο συνεχούς ροής, αρχεία εικόνας κ.α.. Υποστηρίζει πολλούς δημοφιλείς τύπους γραμμωτών κωδικών, συμπεριλαμβανομένων των EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 και QR Code. Μπορεί κανείς να τα χρησιμοποιήσει αυτόνομα αλλά και να τα ενσωματώσει σε οποιοδήποτε widget Qt, GTK, PyGTK, κ.α.

Δοκιμάζοντας τα, πραγματικά εντυπωσιάστηκα από την ταχύτητα της σάρωσης τους και την ακρίβεια των αποτελεσμάτων τους! Παρ' όλα αυτά το πρόβλημα μου δεν είχε λυθεί ακόμη! Τα ZBar-tools εξάγουν τα αποτελέσματα της σάρωσης σε ένα τερματικό. Αυτό που έπρεπε τώρα να βρω ήταν ο τρόπος με τον οποίο θα μπορούσα να εισάγω τα δεδομένα της σάρωσης σε ένα οποιοδήποτε πρόγραμμα. Η αλήθεια είναι ότι εκεί τα βρήκα λίγο “σκούρα”! Έτσι λοιπόν μετά από ένα πραγματικά επίμονο ψάξιμο, ουσιαστικά ο μόνος οδηγός που βρήκα ήταν του κυρίου David Samblas ο οποίος όμως ήταν γραμμένος στα ισπανικά! Το ότι δεν υπάρχει οδηγός ούτε καν στα αγγλικά (εάν υπάρχει απλά δεν κατάφερα να το βρω!) είναι και ο βασικότερος λόγος που αποφάσισα να γράψω αυτό το άρθρο, το οποίο δεν είναι τίποτε άλλο παρά μία ελεύθερη απόδοση στα ελληνικά του άρθρου του κυρίου David Samblas τον οποίο και ευχαριστώ πολύ!

Τα εργαλεία που χρησιμοποιεί ο κύριος Samblas στον οδηγό του είναι το zbarcam από τα Zbar-tools και το Crickey.

Τι είναι το Crickey;

Το Crickey είναι ένα πολύ μικρό προγραμματάκι γραμμένο σε C από την κυρία Akkana Peck, που δημιουργεί γεγονότα πλήκτρων (key events). Είναι δηλαδή το πρόγραμμα που μεταφέρει τα δεδομένα που σάρωσε το zbarcam οπουδήποτε τοποθετήσουμε τον κέρσορα, σαν να τα έχουμε πληκτρολογήσει εμείς!
Αυτά τα δύο εργαλεία είναι που χρειάζονται, προκειμένου να μετατρέψουμε τη webcam σε έναν πολύ γρήγορο και αποτελεσματικό σαρωτή γραμμωτών κωδικών, χωρίς να ξοδέψουμε δεκάρα!

Δείτε πως γίνεται στην πράξη:

Βήμα 1ο: Εγκαθιστούμε τα Zbar-tools

Τα ZBar-tools υπάρχουν στα αποθετήρια του Ubuntu / Debian κατά συνέπεια μπορείτε να τα εγκαταστήσετε και με τις τρεις παραδοσιακές μεθόδους (Κέντρο Λογισμικού της διανομής σας, Synaptic, τερματικό)
Επειδή θα χρειαστούμε το τερματικό έτσι κι αλλιώς παρακάτω, ίσως ο πιο σύντομος τρόπος εγκατάστασης θα ήταν να δώσετε μέσα από το τερματικό την εντολή:

# Ubuntu:
sudo apt-get install zbar-tools

# Debian:
apt-get install zbar-tools

Με το τέλος της εγκατάστασης θα έχουμε ήδη στήσει το μηχανισμό σάρωσης και αναγνώρισης γραμμικών κωδικών. Εάν έχετε ένα οποιοδήποτε προϊόν κοντά σας που έχει γραμμικό κώδικα και την webcam ετοιμοπόλεμη, μπορείτε να δοκιμάσετε το zbarcam άμεσα δίνοντας την εντολή στο τερματικό:

zbarcam

Μαζί με το παράθυρο του τερματικού θα ανοίξει και ένα παράθυρο της webcam. Πλησιάστε τον γραμμικό κώδικα του προϊόντος που είχατε δίπλα σας προς την κάμερα και προσπαθήστε να το κρατήσετε ακίνητο για λίγα δευτερόλεπτα. Μόλις αναγνωρίσει το zbarcam ότι στην εικόνα που πιάνει η webcam υπάρχει γραμμικός κώδικας, θα αρχίσει να τον “βομβαρδίζει” με κόκκινες τελίτσες ή γραμμές οι οποίες μόλις γίνουν πράσινες τότε μπορείτε να δείτε στο τερματικό το περιεχόμενο του γραμμικού κώδικα που μόλις σαρώσατε! Με αυτή τη δοκιμή έχουμε επιβεβαιώσει ότι ο μηχανισμός σάρωσης λειτουργεί! Το επόμενο μας βήμα θα είναι να στήσουμε εκείνο το μηχανισμό που θα μας επιτρέψει να εισάγουμε το περιεχόμενο του γραμμικού κώδικα που σαρώνουμε σε οποιοδήποτε πρόγραμμα θέλουμε. Αυτό θα γίνει εγκαθιστώντας τις απαιτούμενες βιβλιοθήκες και στη συνέχεια εγκαθιστώντας το Crickey ως εξής:

Βήμα 2ο: Εγκατάσταση των βιβλιοθηκών

Η διαδικασία είναι πολύ απλή. Δίνουμε απλώς:

# Ubuntu:
sudo apt-get install libx11-dev x11proto-xext-dev libxt-dev libxtst-dev
# Debian:
su
apt-get install libx11-dev x11proto-xext-dev libxt-dev libxtst-dev

Βήμα 3ο: Λήψη και εγκατάσταση του Crickey 

Στο Debian και το Ubuntu αρκούν οι εντολές:

wget http://www.shallowsky.com/software/crikey/crikey-0.8.3.tar.gz
tar -xzf crikey-0.8.3.tar.gz
cd crikey-0.8.3
make

Τώρα έχουμε ήδη το εκτελέσιμο "crikey" αλλά προκειμένου να μπορούμε να το χρησιμοποιούμε χωρίς να χρειάζεται να επιλέγουμε κάθε φορά το φάκελο στον οποίο έγινε η μεταγλώττιση, μπορούμε ως root να το αντιγράψουμε στο / usr / local / bin.

Για παράδειγμα:

cp crikey /usr/local/bin

Ουσιαστικά η “κατασκευή” μας είναι έτοιμη! Εάν θέλετε να πάρετε μία πρώτη γεύση, μπορείτε να ξεκινήσετε ένα οποιοδήποτε πρόγραμμα επιθυμείτε π.χ. το Writer του Libre Office ή του Open Office και δώστε στο τερματικό την εντολή:

zbarcam --raw|crikey -i

Με αυτή την εντολή θα ανοίξουν τα δύο γνωστά παράθυρα που αναφέραμε και πριν, δηλαδή του τερματικού και της webcam. Το παράθυρο του τερματικού μπορείτε να το ελαχιστοποιείστε εάν θέλετε. Ταιριάξτε τα δύο παράθυρα (της webcam και του προγράμματος που θα χρησιμοποιήστε) στην οθόνη σας και τοποθετήστε τον κέρσορα του ποντικιού εκεί που θέλετε να εμφανιστεί το περιεχόμενο του γραμμικού κώδικα. Κατόπιν σαρώστε με τη webcam το προϊόν που έχετε δίπλα σας από την προηγούμενη δοκιμή. Εάν πάνε όλα καλά θα δείτε το αποτέλεσμα της σάρωσης να εισάγεται στο σημείο που έδειχνε ο κέρσορας του ποντικιού. Σε περίπτωση που δεν καταφέρατε να σαρώσετε τον γραμμικό κώδικα, η πιο πιθανή αιτία είναι το μεγάλο μέγεθος του παραθύρου της webcam. Εάν το παράθυρο της webcam είναι πολύ μεγάλο τότε δυσκολεύεται να εστιάσει και αυτό έχει σαν αποτέλεσμα να μην αναγνωρίσει τον γραμμικό κώδικα. Ένα καλό μέγεθος παραθύρου για τη webcam θα ήταν αυτό που θα χωρούσε ίσα ίσα να δείχνει π.χ. το πρόσωπο σας.

Εάν θέλετε να χρησιμοποιήσετε τη webcam για να σαρώσετε πολλούς γραμμικούς κώδικες, καλό θα ήταν να την τοποθετήσετε σε ένα σημείο που να μην χρειάζεται να κρατάτε στον αέρα τα αντικείμενα που προορίζονται για σάρωση. Με αυτόν τον τρόπο δεν θα χρειάζεται να έχετε το παράθυρο της webcam στο προσκήνιο γιατί θα ξέρετε ακριβώς που θα πρέπει να τοποθετήσετε το αντικείμενο που θέλετε να σαρώσετε, κατά συνέπεια θα μπορείτε πιο γρήγορα και πιο ξεκούραστα να εισάγετε τα δεδομένα σας.

...Τελικές πινελιές

Μπορεί να έχουμε στήσει τον σαρωτή μας και να δουλεύουν όλα μια χαρά. Παρ' όλα αυτά απομένουν κάποιες “τελικές πινελιές” έτσι ώστε να μπορούμε να τον ενεργοποιούμε με ένα και μόνο (διπλό) κλικ.
Σε αυτό το σημείο μπορούμε πλέον να διαγράψουμε το φάκελο Crikey που δημιουργήθηκε στον προσωπικό κατάλογο μας καθώς και το αρχείο που περιέχει τον πηγαίο κώδικα του προγράμματος. Για να μπορούμε να ανοίγουμε με ένα κλικ το ZBar μαζί με το Crickey θα πρέπει να ανοίξουμε τον κειμενογράφο που προτιμούμε και να δημιουργήσουμε ένα σκριπτάκι με το εξής περιεχόμενο:

#!/bin/sh
echo “Hello! Your Barcode Scanner is ready to go!” 
zbarcam --raw|crikey -i

Το σκριπτάκι αυτό θα το αποθηκεύσουμε με το όνομα Barcodescanner.sh στον προσωπικό κατάλογό μας. Κατόπιν ανοίγοντας ένα τερματικό στον κατάλογο που βρίσκεται το αρχείο Barcodescanner.sh (δηλαδή στο home) το κάνουμε εκτελέσιμο δίνοντας την εντολή:

chmod 755 Barcodescanner.sh

Η τελευταία μας δουλειά είναι να δημιουργήσουμε έναν εκκινητή στην επιφάνεια εργασίας μας με το όνομα π.χ. Barcode Scanner που να εκτελεί σε τερματικό την εντολή:

./Barcodescanner.sh

Αυτό γίνεται πολύ απλά κάνοντας δεξί κλικ σε ένα κενό σημείο στην επιφάνεια εργασίας. Επιλέξτε δημιουργία εκκινητή, δώστε ένα όνομα (π.χ. Barcode Scanner) και μία περιγραφή εάν θέλετε. Κατόπιν κάντε κλικ στο πεδίο που λέει: Εκτέλεση σε τερματικό.

Είμαστε έτοιμοι! Τώρα πια μπορούμε με ένα κλικ να εισάγουμε δεδομένα από γραμμικούς κώδικες οπουδήποτε θέλουμε και δεν έχουμε ξοδέψει ούτε ένα Ευρώ για αυτό!


Μετά την εγκατάσταση των Zbar tools και με την εντολή # zbarcam εμφανίζεται ένα τερματικό και ένα παράθυρο της κάμερας. Ότι σαρώνει η κάμερα μπορείτε να το δείτε στο τερματικό.


Ιδού το αποτέλεσμα! Ότι σαρώνει πλέον η κάμερα, μπορούμε να το χρησιμοποιήσουμε οπουδήποτε!

 

* Ο Γιάννης Τουλής είναι Επίκουρος Καθηγητής του Τμήματος Μουσικών Σπουδών του Ιονίου Πανεπιστημίου και μέλος του Greeklug.

Δώσε αστέρια!

MO: 4 (ψήφοι: 2)