Κώδικας QR

Ο κώδικας QR (αγγλικά Quick Response, "γρήγορη ανταπόκριση", ως εμπορικό σήμα "QR-Code") είναι ένας γραμμωτός κώδικας (barcode) δύο διαστάσεων, που δημιουργήθηκε από την ιαπωνική εταιρεία Denso-Wave το 1994. Λόγω της αυτόματης διόρθωσης σφαλμάτων, η μέθοδος αυτή είναι πολύ εύρωστη και, ως εκ τούτου, χρησιμοποιείται ευρέως. Περαιτέρω εξελίξεις είναι το Micro-QR-Code, το Secure-QR-Code (SQRC), το iQR-Code και το Frame-QR-Code.

Ιστορία 
Ο κώδικας QR αναπτύχθηκε για τη σήμανση μονάδων και εξαρτημάτων για το τμήμα εφοδιασμού στην αυτοκινητοβιομηχανία του ομίλου Toyota. Η Denso, η οποία ανέπτυξε τον κωδικό QR, συνεργάζεται με την Toyota ως προμηθευτής για όλες τις ηλεκτρικές και ηλεκτρονικές μονάδες, μεταξύ άλλων, από τότε που αποσχίστηκε από τον όμιλο το 1949. Την ανάπτυξη του κώδικα δύο διαστάσεων ανέλαβε η θυγατρική εταιρεία Denso Wave, η οποία αναπτύσσει επίσης συστήματα αναγνώρισης και συσκευές για την κινητή συλλογή δεδομένων. Ο κωδικός QR αναπτύχθηκε το 1994 από τον Μασαχίρο Χάρα και τα μέλη της ομάδας του Τακαγιούκι Ναγκάγια, Μοτοάκι Γουατάμπε, Ταντάο Νοτζίρι και Γιούτζι Ουτσιγιάμα.

Ο Μασαχίρο Χάρα και η ομάδα του κέρδισαν το Βραβείο Κοινού 2014 του Ευρωπαϊκού Βραβείου Εφευρέτη του Ευρωπαϊκού Οργανισμού Διπλωμάτων Ευρεσιτεχνίας στην κατηγορία "Μη ευρωπαϊκές χώρες".

Βασικά στοιχεία 
Ο κώδικας QR αποτελείται από έναν τετραγωνικό πίνακα μαύρων και λευκών τετραγώνων που αναπαριστούν τα κωδικοποιημένα δεδομένα σε δυαδική μορφή. Μια ειδική σήμανση σε τρεις από τις τέσσερις γωνίες του τετραγώνου παρέχει προσανατολισμό. Τα δεδομένα στον κώδικα QR επεκτείνονται με έναν κώδικα διόρθωσης σφαλμάτων. Αυτό σημαίνει ότι η απώλεια έως και 30% του κώδικα είναι ανεκτή, δηλαδή μπορεί ακόμα να αποκωδικοποιηθεί.

Πρότυπα 
Υπάρχουν διάφορα πρότυπα που περιγράφουν την κωδικοποίηση των κωδικών QR.

 10 Μαρτίου 1995 - Αριθμός ευρωπαϊκού διπλώματος ευρεσιτεχνίας EP0672994 
 Οκτώβριος 1997 - AIM (Association for Automatic Identification and Mobility) International 
 Ιανουάριος 1999 - JIS X 0510
 Ιούνιος 2000 - ISO/IEC 18004:2000 (αποσύρθηκε)                                                                                                                                                                                                                                 Ορίζει το Μοντέλο Κώδικα QR 1 και το Μoντέλο Κώδικα QR 2
 Νοέμβριος 2004 - Επέκταση του JIS X 0510 με τον Micro-QR-Code
 1 Σεπτεμβρίου 2006 - ISO/IEC 18004:2006                                                                                                                                                                                                                                              Ορίζει τον Κώδικα QR 2005, μια επέκταση του Μoντέλου Κώδικα QR 2. Δεν καθορίζει πώς μπορεί να διαβαστεί το Μοντέλο Κώδικα QR 1, αλλά βασίζεται στις προδιαγραφές του Μοντέλου Κώδικα QR 1.

Ο κώδικας QR έχει καταχωρηθεί ως εθνικό πρότυπο στις ακόλουθες χώρες

Εκτός από τα επίσημα πρότυπα, η NTT DoCoMo έχει καθορίσει de facto πρότυπα για την κωδικοποίηση των διευθύνσεων URL, των πληροφοριών επικοινωνίας και άλλων τύπων δεδομένων. Το έργο ανοικτού κώδικα "ZXing" διατηρεί έναν κατάλογο τύπων δεδομένων κώδικα QR.

Δομή 

Ο κωδικός περιέχει πληροφορίες για την έκδοση (1) και τη μορφή δεδομένων που χρησιμοποιείται (2). Το τμήμα δεδομένων (3) περιέχει τα κωδικοποιημένα δεδομένα σε πλεονάζουσα μορφή. Για την οριοθέτηση του πεδίου, ο κώδικας QR περιέχει ένα συγκεκριμένο μοτίβο σε τρεις μόνο από τις γωνίες του (4.1). Ο αναγνώστης αναγνωρίζει τον προσανατολισμό μέσω του μοτίβου που λείπει στην τέταρτη γωνία. Καθώς αυξάνεται το μέγεθος του κώδικα, προστίθενται περισσότερα μοτίβα (4.2) για να γίνει πιο ορατή η ευθυγράμμιση του κώδικα. Μεταξύ των τριών κύριων δεικτών θέσης υπάρχει μια γραμμή (4.3) που αποτελείται από μια ακολουθία αυστηρά εναλλασσόμενων bits, με την οποία ορίζεται ο πίνακας. Το λευκό περίγραμμα (5), η λεγόμενη ήσυχη ζώνη, είναι επίσης σημαντικό για τον διαχωρισμό του κώδικα από άλλες πληροφορίες.

Χωρητικότητα και ανοχή σφαλμάτων 
Τα στοιχεία του συμβόλου είναι τετράγωνα, από τα οποία το ελάχιστο είναι 21×21 και το μέγιστο 177×177 στοιχεία στο σύμβολο. Η ακραία ζώνη (ήσυχη ζώνη) πρέπει να έχει πλάτος τουλάχιστον τεσσάρων στοιχείων. Τα μεγαλύτερα περιεχόμενα μπορούν να χωριστούν σε έως και 16 μεμονωμένους κωδικούς.

Υπάρχουν τέσσερα επίπεδα διόρθωσης σφαλμάτων που επιτρέπουν την ανακατασκευή από 7% (επίπεδο L) έως 30% (επίπεδο H) των αλλοιωμένων δεδομένων. Χρησιμοποιείται η διόρθωση σφαλμάτων της κωδικοποίησης Reed-Solomon. Η ιδιότητα αυτή αξιοποιείται στη δημιουργία των λεγόμενων "κωδικών σχεδιασμού".

Το μέγιστο πληροφοριακό περιεχόμενο ενός κώδικα QR (177×177 στοιχεία, επίπεδο διόρθωσης σφαλμάτων "L") είναι 23.648 bits (2.956 bytes). Σύμφωνα με τον κατασκευαστή, μπορούν να κωδικοποιηθούν 7089 δεκαδικά ψηφία, 4296 αλφαριθμητικοί χαρακτήρες ή 1817 χαρακτήρες Kanji/Kana.

Υπάρχει ξεχωριστή διαδικασία κωδικοποίησης για τους χαρακτήρες Kanji και Kana (U+4E00 έως U+9FFF, U+3040 έως U+309F, U+30A0 έως U+30FF).

Ο Micro-QR-Code με μέγεθος μεταξύ 11×11 και 17×17 στοιχείων λαμβάνει έως και 35 ψηφία, με πλάτος περιγράμματος τουλάχιστον δύο στοιχείων.

Άδεια χρήσης 
Η χρήση του κώδικα QR δεν απαιτεί άδεια χρήσης και είναι δωρεάν. Οι προδιαγραφές έχουν αποκαλυφθεί από την Denso Wave και είναι διαθέσιμες από τον Διεθνή Οργανισμό Τυποποίησης στην Ελβετία. Η ονομασία "QR Code" προστατεύεται ειδικά στην Ιαπωνία, τις Ηνωμένες Πολιτείες της Αμερικής, την Αυστραλία και την Ευρώπη ως επωνυμία της Denso Wave Incorporated. Κατά τη χρήση πρέπει να επικολλάται σχετική σημείωση.

Ο κώδικας QR έχει καθιερωθεί ως δημόσιο πρότυπο. Στην Ιαπωνία είναι πολύ διαδεδομένος, και μπορεί να βρεθεί σχεδόν σε κάθε διαφημιστική αφίσα εκεί. Η ιαπωνική κυβέρνηση χρησιμοποιεί επίσης τον κώδικα QR. Για παράδειγμα, το ιαπωνικό τμήμα μετανάστευσης χρησιμοποιεί τον κώδικα QR με κωδικοποιημένα δεδομένα για τη θεώρηση εισόδου, ο οποίος επικολλάται στο διαβατήριο κατά την είσοδο.

Εμφάνιση 
Ο κώδικας QR μπορεί να εκτυπωθεί εύκολα με όλες τις κοινές μεθόδους. Ωστόσο, όπως και με τον ραβδωτό κώδικα, είναι σημαντικό η αντίθεση να είναι όσο το δυνατόν υψηλότερη, ιδανικά μαύρο σε λευκό. Ανάλογα με τις δυνατότητες της συσκευής ανάγνωσης που χρησιμοποιείται, είναι επίσης δυνατή η αντίστροφη απεικόνιση. Υπάρχει επίσης η δυνατότητα έγχρωμης εκτύπωσης του κώδικα. Ωστόσο, πρέπει να ληφθεί μέριμνα ώστε ο κώδικας να έχει ομοιόμορφη αντίθεση όταν προβάλλεται ως εικόνα ημιτόνου ή ως εικόνα γραμμής. Ολοένα και περισσότερο, ο κώδικας QR χρησιμοποιείται επίσης για άμεση σήμανση σε προϊόντα. Για παράδειγμα, καίγονται απευθείας στην επιφάνεια του προς σήμανση υλικού με τη χρήση λέιζερ.

Δεν υπάρχει όριο στο μέγεθος εμφάνισης του κώδικας QR, αρκεί ο αναγνώστης να μπορεί να καταγράψει την εικόνα με τρόπο που να γεμίζει τη μορφή και να διαφοροποιείται.  Διαφημιστικές πινακίδες και ολόκληρες προσόψεις κτιρίων έχουν ήδη σημανθεί με έναν μόνο κώδικα QR.

Ανάγνωση κωδικών 

Η ανάγνωση κωδικών QR αποτελείται από δύο βήματα:

 Δημιουργία μιας ψηφιακής εικόνας των δεδομένων με κώδικα QR, π.χ. με χρήση ψηφιακής φωτογραφικής μηχανής.
 Μετατροπή των κωδικοποιημένων δεδομένων που περιέχονται στην εικόνα σε μορφή κειμένου (αποκωδικοποίηση).

Κινητά τηλέφωνα 
Πολλά κινητά τηλέφωνα, PDA και παρόμοιες συσκευές διαθέτουν ενσωματωμένες κάμερες. Με αυτά και το κατάλληλο λογισμικό από ένα κατάστημα εφαρμογών, μπορείτε να αποκωδικοποιήσετε τους κώδικες QR και να τους ερμηνεύσετε, αν χρειαστεί, π.χ. να μεταβείτε αυτόματα σε έναν ιστότοπο. Η διαδικασία που είναι γνωστή ως mobile tagging είναι εξαιρετικά δημοφιλής στην Ιαπωνία. Εξαπλώνεται επίσης και στην Ευρώπη από το 2007.

Κοινή είναι η κωδικοποιημένη εικόνα μιας διαδικτυακής διεύθυνσης, που χρησιμοποιείται σε περιοδικά, ενημερωτικά φυλλάδια ή σε μεγάλο μέγεθος σε διαφημιστικές αφίσες. Το πλεονέκτημα αυτής της μεθόδου είναι ότι εξαλείφει την κουραστική πληκτρολόγηση. Εκτός από τις διευθύνσεις URL, οι κωδικοί QR περιέχουν στην πράξη, για παράδειγμα, αριθμούς τηλεφώνου, διευθύνσεις, ενημερωτικά κείμενα, premium SMS, vCards, δεδομένα πρόσβασης WLAN ή γεωγραφικά δεδομένα.

Με την κυκλοφορία του iOS 11, η Apple πρόσθεσε μια εγγενή λειτουργία ανάγνωσης QR στην εφαρμογή κάμερας που είναι προεγκατεστημένη σε όλα τα iPhone και iPad.

Scanner 
"Scanner" είναι ο κοινός όρος για τους αναγνώστες, ανάλογος με τους αναγνώστες ραβδωτού κώδικα. Ο όρος "imager" χρησιμοποιείται επίσης συνήθως στη βιομηχανία όταν αναφέρεται σε μια συσκευή 2D. Έχουν μια κάμερα και έναν αποκωδικοποιητή. Επιπλέον, πολλές συσκευές παρέχουν βοήθεια στόχευσης, συχνά με τη μορφή ενός μοτίβου που δημιουργείται με λέιζερ και υποδεικνύει το πεδίο ανάγνωσης.

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

Λογισμικό 
Εάν μια ψηφιακή εικόνα QR είναι ήδη διαθέσιμη, τότε το μόνο που χρειάζεται είναι ένα λογισμικό που αναλύει την εικόνα και τη μετατρέπει (αποκωδικοποιεί) σε κείμενο. Υπάρχουν διαδικτυακοί αποκωδικοποιητές κωδικών QR για το σκοπό αυτό, για παράδειγμα.

Δημιουργία κωδικών 
Για να δημιουργήσετε έναν κωδικό QR, χρειάζεστε:

 το προς κωδικοποίηση κείμενο
 τον επιθυμητό βαθμό διόρθωσης σφαλμάτων

Η πρόχειρη ακολουθία των γεγονότων είναι η εξής:

 Με βάση το μήκος του κειμένου και το βαθμό διόρθωσης σφαλμάτων, καθορίζετε το μέγεθος του κώδικα QR.
 Ξεκινάτε με μια λευκή περιοχή στην οποία εμφανίζονται σταδιακά όλα τα στοιχεία του κωδικού QR.
 Τα πρότυπα αναγνώρισης που δεν εξαρτώνται από το κείμενο εφαρμόζονται πρώτα στην επιφάνεια. Αυτά είναι τα μοτίβα θέσης, τα μοτίβα ευθυγράμμισης και οι γραμμές συγχρονισμού.
 Μια ακολουθία bit παράγεται από το κείμενο.
 Μια περαιτέρω ακολουθία bit για διόρθωση σφαλμάτων δημιουργείται για την ακολουθία bit κειμένου.
 Η συμβολοσειρά ψηφίων κειμένου σχεδιάζεται στο σύμβολο μαζί με τη συμβολοσειρά ψηφίων διόρθωσης σφάλματος όπου υπάρχει ακόμη χώρος. Αυτό γίνεται από τα δεξιά προς τα αριστερά σε σερπαντίνες.
 Για να επιτευχθεί ότι το σύμβολο περιέχει περίπου τον ίδιο αριθμό μαύρων και λευκών εικονοστοιχείων και για να αποφευχθούν μοτίβα που δυσχεραίνουν την ανάγνωση, τοποθετούνται διαδοχικά οκτώ διαφορετικές μάσκες πάνω στο σύμβολο. Η μάσκα που δίνει το καλύτερο αποτέλεσμα διατηρείται.
 Τέλος, στο σύμβολο αναγράφεται ο αριθμός αναγνώρισης της χρησιμοποιούμενης μάσκας.

Online Γεννήτρια Κώδικα QR 
Ένας γρήγορος και εύκολος τρόπος για να δημιουργήσετε έναν κωδικό QR είναι να χρησιμοποιήσετε μια διαδικτυακή γεννήτρια κωδικών QR. Ένα σενάριο μετατρέπει τα κείμενα σε κώδικα και δημιουργεί το γραφικό. Έτσι, είναι δυνατό για σχεδόν οποιονδήποτε να δημιουργήσει έναν κώδικα με απλό τρόπο.

Οι κωδικοί QR μπορούν να δημιουργηθούν όχι μόνο ως γραφικά εικονοστοιχείων, αλλά μπορούν επίσης να αποτελούνται από κατάλληλα στοιχεία Unicode.

Μετατροπή του κειμένου σε συμβολοσειρά bit 
Λόγω των πολύπλευρων δυνατοτήτων εφαρμογής και του μικρού μεγέθους των κωδικών QR, δόθηκε σημασία στο γεγονός ότι το κωδικοποιημένο κείμενο απαιτεί ελάχιστο χώρο. Ανάλογα με τους χαρακτήρες που εμφανίζονται στο κείμενο, το κείμενο μπορεί να κωδικοποιηθεί με διαφορετικά σύνολα χαρακτήρων:

 Δυαδικά (κατά byte)
 Εάν το κείμενο αποτελείται μόνο από ψηφία (0-9), καταναλώνει το λιγότερο χώρο. Στην περίπτωση αυτή, τρία ψηφία κάθε φορά συνδυάζονται και αποθηκεύονται ως μονάδα 10-bit.
 Εάν το κείμενο αποτελείται μόνο από ψηφία (0-9), κεφαλαία γράμματα (A-Z) και εννέα άλλους ειδικούς χαρακτήρες (κενό, $, %, *, +, -, /, ., :), δύο χαρακτήρες κάθε φορά συνδυάζονται και αποθηκεύονται ως μονάδα 11-bit.
 Εάν το κείμενο αποτελείται μόνο από χαρακτήρες που εμφανίζονται στο ISO-8859-1 (σε αυτούς περιλαμβάνονται κεφαλαία και πεζά γράμματα, αριθμοί, πολλά σημεία στίξης και συνδυασμένα γράμματα για τη δυτικοευρωπαϊκή γλωσσική περιοχή), κάθε χαρακτήρας αποθηκεύεται ως μονάδα 8-bit.
 Εάν το κείμενο αποτελείται μόνο από kanji, κάθε χαρακτήρας αποθηκεύεται ως μονάδα 13-bit.
 Στις υπόλοιπες περιπτώσεις γίνεται πιο περίπλοκο- τότε χρησιμοποιείται η κωδικοποίηση χαρακτήρων ECI.

Αφού καθοριστεί το κατάλληλο σύνολο χαρακτήρων, οι ακόλουθες πληροφορίες εγγράφονται στη συμβολοσειρά bit:

 ο αριθμός αναγνώρισης του συνόλου χαρακτήρων
 ο αριθμός των χαρακτήρων του κειμένου
 το ίδιο το κείμενο
 το αναγνωριστικό τέλους- είναι πάντα 0000
 διαίρεση της ακολουθίας bit που προκύπτει σε μονάδες των 8-bit- συμπλήρωση με μηδενικά bit στο τέλος, εάν είναι απαραίτητο
 συμπλήρωση μέχρι τη χωρητικότητα δεδομένων της έκδοσης κώδικα QR με τις κωδικές λέξεις 11101100 και 00010001 εναλλάξ.

Παράδειγμα 
Για την κωδικοποίηση του κειμένου "Märchenbuch", επιλέγεται πρώτα το κατάλληλο σύνολο χαρακτήρων. Στην περίπτωση αυτή, είναι το ISO-8859-1. Αυτό το σύνολο χαρακτήρων έχει τον αριθμό αναγνώρισης 0100.

Το δεύτερο βήμα μετράει πόσους χαρακτήρες περιέχει το κείμενο. Σε αυτή την περίπτωση, πρόκειται για 11 χαρακτήρες. Για μικρούς κώδικες QR, ο αριθμός αυτός κωδικοποιείται με 8-bit, άρα 0000 1011. Για μεγαλύτερους κώδικες QR, ο αριθμός κωδικοποιείται με 16-bit.

Στη συνέχεια κωδικοποιούνται οι επιμέρους χαρακτήρες. Στην περίπτωση της κωδικοποίησης ISO-8859-1, κοιτάξτε στον πίνακα του συνόλου χαρακτήρων για να δείτε τι αριθμό έχει αυτός ο χαρακτήρας και γράψτε τον αριθμό. Για το "M", αυτό είναι 0100 1101. Το "ä" παίρνει τον αριθμό 1110 0100, και ούτω καθεξής. 

Το αναγνωριστικό τέλους αποτελεί το συμπέρασμα. Είναι πάντα 0000, εκτός αν δεν υπάρχει αρκετός χώρος. Τότε θα συντομευτεί.

Συνολικά, το κείμενο "Märchenbuch" γίνεται έτσι αυτή η ακολουθία bit:

 0100
 0000 1011
 0100 1101 1110 0100 0111 0010 0110 0011 0110 1000 0110 0101 0110 1110 0110 0010 0111 0101 0110 0011 0110 1000
 0000

Χωρίστε σε μονάδες των 8 bit και, εάν είναι απαραίτητο, συμπληρώστε κωδικούς: 010000 10110100 11011110 01000111 00100110 00110110 10000110 01010110 11100110 00100111 01010110 00110110 10000000 11101100 00010001 11101100 00010001 ...

Παραπομπές

Πηγές
Επίσημη ιστοσελίδα του κώδικα QR
Open Source QR Code Library

Κωδικοποιήσεις
Αλληλεπίδραση Ανθρώπου-Υπολογιστή