Ένα QR code μενού εστιατορίου με ένα δαχτυλίδι καφέ στη γωνία. Μια πινακίδα κήπου ξεθωριασμένη από τρεις μήνες άμεσου ηλιακού φωτός. Μια ετικέτα αποθήκης λερωμένη με γράσο. Και τα τρία εξακολουθούν να σαρώνονται.
Αυτό δεν είναι τύχη. Κάθε QR code περιέχει πλεονάζοντα δεδομένα που επιτρέπουν στους σαρωτές να ανακατασκευάσουν τα κατεστραμμένα ή ελλείποντα τμήματα. Η προδιαγραφή ISO/IEC 18004:2024 ονομάζει αυτό διόρθωση σφαλμάτων QR code, και αποτελεί μέρος του format από τότε που τυποποιήθηκε για πρώτη φορά το 2000. Ένα παραδοσιακό barcode με την ίδια ζημιά θα ήταν αδύνατο να αναγνωστεί.
Βασικά σημεία:
Τα QR codes χρησιμοποιούν διόρθωση σφαλμάτων Reed-Solomon για ανάκαμψη από φυσική ζημιά, σύμφωνα με το ISO/IEC 18004:2024.
Τέσσερα επίπεδα: L (7%), M (15%), Q (25%), H (30%). Το ποσοστό αναφέρεται σε ανακτήσιμα codewords, όχι σε φυσική επιφάνεια.
Υψηλότερη διόρθωση σημαίνει μεγαλύτερη ανοχή σε ζημιά αλλά μικρότερη χωρητικότητα δεδομένων.
Τα QR codes δεν εξάγουν ποτέ λανθασμένα δεδομένα. Αποτυγχάνουν με ασφάλεια όταν η ζημιά υπερβαίνει τη δυνατότητα διόρθωσης.
Τα δυναμικά QR codes αποθηκεύουν σύντομα URL ανακατεύθυνσης, επομένως το επίπεδο M παρέχει αρκετό περιθώριο για τις περισσότερες χρήσεις.
Τι είναι η διόρθωση σφαλμάτων σε QR codes;

Σκεφτείτε το ως εφεδρικά δεδομένα ενσωματωμένα στον ίδιο τον κώδικα. Όταν η βρωμιά, οι γρατζουνιές ή το ξεθώριασμα καταστρέφουν ορισμένες από τις ασπρόμαυρες μονάδες, ο σαρωτής χρησιμοποιεί αυτά τα εφεδρικά δεδομένα για να καλύψει τα κενά. Το πλήρες μήνυμα φτάνει ακόμα και με κομμάτια να λείπουν.
Τα μαθηματικά πίσω από αυτό ονομάζονται διόρθωση σφαλμάτων Reed-Solomon. Ο Irving S. Reed και ο Gustave Solomon τα δημοσίευσαν το 1960 στο MIT Lincoln Laboratory για δορυφορικές επικοινωνίες, όπου ο θόρυβος του σήματος αλλοιώνει τα μεταδιδόμενα δεδομένα. Ο ίδιος algorithm κατέληξε σε CD, DVD, δίσκους Blu-ray και στα συστήματα δεδομένων των διαστημικών ανιχνευτών Voyager της NASA. Όταν η DENSO WAVE σχεδίασε το QR code το 1994, ο Reed-Solomon ήταν η φυσική επιλογή. Είχε ήδη επιβιώσει στο βαθύ διάστημα.
Το πρότυπο QR code καθορίζει τέσσερα επίπεδα διόρθωσης σφαλμάτων. Κάθε επίπεδο καθορίζει πόσα πλεονάζοντα δεδομένα περιέχει ο κώδικας και, ως άμεσο αντιστάθμισμα, πόσα συνολικά δεδομένα μπορεί να αποθηκεύσει.
Τα τέσσερα επίπεδα διόρθωσης σφαλμάτων σε QR codes
Κάθε QR code δημιουργείται σε ένα από τα τέσσερα επίπεδα διόρθωσης σφαλμάτων. Ο παρακάτω πίνακας δείχνει τι ανακτά κάθε επίπεδο, πόση χωρητικότητα δεδομένων προσφέρει στο μέγιστο μέγεθος (Έκδοση 40, ο μεγαλύτερος QR code που ορίζεται στην προδιαγραφή) και πού ταιριάζει καλύτερα.
Επίπεδο | Όνομα | Ανάκτηση | Μέγ. χωρητικότητα (V40) | Ιδανικό για |
|---|---|---|---|---|
L | Low | 7% | 2,953 bytes | Ψηφιακές οθόνες, καθαρά περιβάλλοντα |
M | Medium | 15% | 2,331 bytes | Εσωτερική εκτύπωση, φυλλάδια, μενού (πιο συνηθισμένη προεπιλογή) |
Q | Quartile | 25% | 1,663 bytes | Εξωτερική σήμανση, packaging, επιφάνειες με φθορά |
H | High | 30% | 1,273 bytes | Logo πάνω στον κώδικα, βιομηχανικά περιβάλλοντα, εργοστάσια |
Περισσότερη προστασία κοστίζει χώρο αποθήκευσης. Στην Έκδοση 40, το επίπεδο L αποθηκεύει 2,953 bytes. Το επίπεδο H αποθηκεύει 1,273. Αυτό αντιπροσωπεύει μείωση 57% στη χωρητικότητα για χάρη της αντοχής σε ζημιά.
Οι περισσότεροι generators χρησιμοποιούν το επίπεδο M ως προεπιλογή. Η DENSO WAVE επιβεβαιώνει ότι είναι το πιο συχνά επιλεγμένο επίπεδο στην πράξη. Το επίπεδο M χειρίζεται μικρές γρατζουνιές, ελαφρύ ξεθώριασμα και αποτυπώματα δακτύλων χωρίς να κάνει τον κώδικα μεγαλύτερο από ό,τι χρειάζεται.
Αυτά τα ποσοστά ISO είναι θεωρητικά μέγιστα. Στην πράξη, οι κώδικες τείνουν να αποτυγχάνουν νωρίτερα. Ο μηχανικός λογισμικού Huon Wilson δοκίμασε 12.800 διαμορφώσεις QR code με προσομοιωμένη ζημιά και διαπίστωσε ότι τα codes επιπέδου H παρήγαγαν 60% περισσότερες επιτυχημένες σαρώσεις από τα codes επιπέδου L. Τα πρακτικά όρια αποτυχίας ήταν περίπου 6% για L, 12% για M, 18% για Q και 20% για H. Η πραγματική ζημιά δεν κατανέμεται ομοιόμορφα, επομένως ο κώδικας φτάνει στο όριό του νωρίτερα από ό,τι υποδεικνύει η προδιαγραφή.
Πόση ζημιά μπορεί να αντέξει ένα QR code;

Τα ποσοστά στον πίνακα αναφέρονται σε codewords (μονάδες κωδικοποιημένων δεδομένων), όχι σε φυσική επιφάνεια. Η καταστροφή του 15% της επιφάνειας δεν σημαίνει απαραίτητα αλλοίωση του 15% των codewords. Ο λόγος έγκειται στον τρόπο που τα δεδομένα είναι τοποθετημένα μέσα στο πλέγμα.
Interleaving codewords
Για μεγαλύτερα QR codes, τα κωδικοποιημένα δεδομένα χωρίζονται σε πολλαπλά Reed-Solomon blocks και στη συνέχεια γίνεται interleaving πριν τοποθετηθούν στο πλέγμα. Μια γρατζουνιά που διασχίζει τον κώδικα διαγωνίως δεν καταστρέφει διαδοχικά codewords. Αντιθέτως, καταστρέφει ένα codeword εδώ, παρακάμπτει τρία, καταστρέφει ένα άλλο εκεί. Η ζημιά κατανέμεται σε πολλαπλά blocks διόρθωσης αντί να κατακλύζει ένα μόνο. Γι' αυτό μια μακριά γρατζουνιά είναι συχνά πιο επιβιώσιμη από μια βαθιά τρύπα σε ένα σημείο.
Ανίχνευση σφαλμάτων έναντι διόρθωσης σφαλμάτων
Ο Reed-Solomon μπορεί να ανιχνεύσει διπλάσια σφάλματα από όσα μπορεί να διορθώσει. Στο επίπεδο M, ο algorithm διορθώνει έως και 15% των αλλοιωμένων codewords, αλλά ανιχνεύει αλλοίωση έως και 30%. Όταν η ζημιά υπερβαίνει το budget διόρθωσης αλλά παραμένει εντός του εύρους ανίχνευσης, ο σαρωτής γνωρίζει ότι τα δεδομένα είναι αλλοιωμένα και δεν επιστρέφει τίποτα.
Αυτό είναι χαρακτηριστικό ασφαλείας. Ένα κατεστραμμένο QR code δεν θα σας στείλει ποτέ σε λάθος ιστοσελίδα ούτε θα χρεώσει λάθος λογαριασμό. Λειτουργεί σωστά ή δεν επιστρέφει τίποτα. Για κώδικες πληρωμών και tokens ταυτοποίησης, αυτή η διάκριση έχει μεγάλη σημασία.
Η εξαίρεση των μοτίβων αναγνώρισης
Τα τρία μεγάλα τετράγωνα στις γωνίες κάθε QR code είναι τα μοτίβα αναγνώρισης. Ο σαρωτής τα χρησιμοποιεί για να εντοπίσει και να προσανατολίσει τον κώδικα. Δεν προστατεύονται από τη διόρθωση σφαλμάτων όπως οι μονάδες δεδομένων. Αν ένα σχίσιμο, μια δίπλωση ή ένα αυτοκόλλητο καλύψει μία από τις τρεις γωνίες, ο κώδικας θα αποτύχει σχεδόν σίγουρα ανεξάρτητα από το επίπεδο διόρθωσης. Καμία ποσότητα redundancy δεν σώζει έναν κώδικα με χαμένη γωνία.
Ποιο επίπεδο διόρθωσης σφαλμάτων πρέπει να επιλέξετε;
Ορίστε τι να επιλέξετε για τα συνηθισμένα σενάρια.
Εσωτερική εκτύπωση (μενού, φυλλάδια, business cards): Επίπεδο M. Καθαρά περιβάλλοντα με ελάχιστη φυσική επαφή. Το επίπεδο M χειρίζεται τον περιστασιακό λεκέ ή τσάκισμα χωρίς να κάνει τον κώδικα μεγαλύτερο από ό,τι χρειάζεται.
Εξωτερικές ή εκτεθειμένες σε καιρικές συνθήκες επιφάνειες (πινακίδες κήπου, αυτοκόλλητα, στάσεις λεωφορείου): Επίπεδο Q ή H. Ξεθώριασμα από υπεριώδη ακτινοβολία, βροχή, φυσική επαφή από περαστικούς. Αυτοί οι κώδικες χρειάζονται μεγαλύτερο budget διόρθωσης σφαλμάτων επειδή η ζημιά συσσωρεύεται σε εβδομάδες και μήνες.
QR codes με logo ή επώνυμο σχεδιασμό: Επίπεδο H. Ένα κεντρικό logo καλύπτει σκόπιμα μονάδες δεδομένων, συνήθως 20-30% της επιφάνειας του κώδικα. Το 30% budget διόρθωσης του επιπέδου H το απορροφά. Χωρίς αυτό, ρισκάρετε. Μια μελέτη του AutoID Lab του University of Memphis δοκίμασε designer QR codes και βρήκε ότι ο μέσος ρυθμός ανάγνωσης ήταν 61,5%, με τον χειρότερο να πέφτει στο 9,6%. Τα μη τροποποιημένα codes πέτυχαν ~95%. Η κύρια αιτία αποτυχίας ήταν η ζημιά στις γωνίες των μοτίβων αναγνώρισης.
Ψηφιακή οθόνη (οθόνες, παρουσιάσεις, e-mail): Επίπεδο L. Δεν υπάρχει κίνδυνος φυσικής ζημιάς. Ο κώδικας υπάρχει ως pixels σε μια οθόνη. Το επίπεδο L διατηρεί τον κώδικα συμπαγή και γρήγορο στη σάρωση.
Δυναμικά QR codes: Το επίπεδο M είναι συνήθως αρκετό. Ένα δυναμικό QR code αποθηκεύει μόνο ένα σύντομο URL ανακατεύθυνσης (π.χ., freeqr.to/abc123), όχι το πλήρες περιεχόμενο του προορισμού. Λιγότερα δεδομένα σημαίνει λιγότερες μονάδες, που σημαίνει ότι η διόρθωση σφαλμάτων έχει αναλογικά περισσότερο χώρο για να λειτουργήσει.
Στον σχεδιαστή του FreeQR, οι τέσσερις ρυθμίσεις διόρθωσης σφαλμάτων ονομάζονται Low, Medium, High και Highest (αντιστοιχούν στα L, M, Q και H). Η προεπιλογή είναι Medium. Όταν προσθέτετε ένα logo, ο δείκτης σαρωσιμότητας σας ειδοποιεί αν το logo καλύπτει πάρα πολλές μονάδες για το επιλεγμένο επίπεδο. Τα δυναμικά codes επιτρέπουν επίσης την ενημέρωση του προορισμού χωρίς ανατύπωση.
Μια σημαντική λεπτομέρεια: το επίπεδο διόρθωσης σφαλμάτων ορίζεται κατά τη δημιουργία του κώδικα. Δεν μπορεί να αλλάξει μετά την εκτύπωση. Αν επιλέξετε το επίπεδο L και αργότερα μεταφέρετε τον κώδικα σε εξωτερικό χώρο, η μόνη λύση είναι ένας νέος κώδικας σε υψηλότερο επίπεδο. Σε περίπτωση αμφιβολίας, επιλέξτε το επίπεδο M.
Θέλετε να δείτε πώς λειτουργεί; Δημιουργήστε ένα δωρεάν QR code στο FreeQR και επιλέξτε το επίπεδο διόρθωσης σφαλμάτων.
Συχνές ερωτήσεις
Τι είναι η διόρθωση σφαλμάτων σε QR codes;
Επιπλέον δεδομένα ενσωματωμένα σε ένα QR code που επιτρέπουν στους σαρωτές να ανακατασκευάσουν κατεστραμμένες ή ελλείπουσες μονάδες. Ο μηχανισμός χρησιμοποιεί κώδικες Reed-Solomon, έναν μαθηματικό algorithm που αναπτύχθηκε αρχικά για δορυφορικές επικοινωνίες και αργότερα υιοθετήθηκε στην προδιαγραφή QR code (ISO/IEC 18004:2024).
Πόση ζημιά μπορεί να έχει ένα QR code και να εξακολουθεί να λειτουργεί;
Έως 30% στο επίπεδο H, 25% στο Q, 15% στο M και 7% στο L. Αυτά τα ποσοστά αναφέρονται στην αναλογία ανακτήσιμων codewords, όχι στη φυσική επιφάνεια του κώδικα. Η πραγματική ικανότητα επιβίωσης εξαρτάται από το πού εμφανίζεται η ζημιά και πώς αλληλεπιδρά με το interleaving των codewords.
Ποια είναι τα τέσσερα επίπεδα διόρθωσης σφαλμάτων;
L (Low, 7%), M (Medium, 15%), Q (Quartile, 25%) και H (High, 30%). Οι περισσότεροι generators χρησιμοποιούν το M ως προεπιλογή.
Ποιο επίπεδο διόρθωσης σφαλμάτων πρέπει να χρησιμοποιήσω για logo;
Επίπεδο H (30%). Ένα κεντρικό logo συνήθως καλύπτει 20-30% των μονάδων του κώδικα. Το επίπεδο H δίνει στον σαρωτή αρκετά πλεονάζοντα δεδομένα για να ανακατασκευάσει αυτό που το logo καλύπτει. Η χρήση χαμηλότερου επιπέδου με logo ρισκάρει να κάνει τον κώδικα αδύνατο να σαρωθεί.
Μπορεί ένα κατεστραμμένο QR code να δώσει λάθος πληροφορίες;
Όχι. Όταν η ζημιά υπερβαίνει αυτό που ο algorithm μπορεί να επιδιορθώσει, ο σαρωτής δεν επιστρέφει τίποτα. Λαμβάνετε κενό αποτέλεσμα, ποτέ λάθος URL ή λάθος διεύθυνση πληρωμής. Ο Reed-Solomon μπορεί να ανιχνεύσει διπλάσια σφάλματα από όσα μπορεί να διορθώσει, επομένως ο κώδικας γνωρίζει πότε είναι πολύ κατεστραμμένος για να είναι αξιόπιστος.
Γράφτηκε από τον Andy Lee, ειδικό τεχνολογίας QR στη FreeQR.