डेटा से पैटर्न तक
QR कोड बनाने की शुरुआत डेटा के हिसाब से एन्कोडिंग मोड चुनने से होती है: न्यूमेरिक, अल्फ़ान्यूमेरिक, बाइट या कांजी। एन्कोडर डेटा को बिट्स में बदलता है, उन्हें 8-बिट के कोडवर्ड में बाँटता है और चुने हुए लेवल के Reed–Solomon एरर करेक्शन कोडवर्ड जोड़ता है। फिर वह सबसे छोटा वर्शन चुनता है जिसमें सब समा जाए।
कोडवर्ड को ग्रिड में ज़िगज़ैग रास्ते से रखा जाता है, जो तय पैटर्न वाली जगहों को छोड़ देता है। आख़िर में एन्कोडर आठ मास्क पैटर्न में से एक लगाता है, ताकि बड़े खाली हिस्से या भ्रम पैदा करने वाली आकृतियाँ टूट जाएँ, और मास्क तथा एरर करेक्शन लेवल को फ़ॉर्मैट इन्फ़ॉर्मेशन में दर्ज कर देता है।
- एन्कोडिंग मोड चुनें
- डेटा एन्कोड करें और एरर करेक्शन कोडवर्ड जोड़ें
- वर्शन (आकार) चुनें
- फ़ाइंडर, टाइमिंग और अलाइनमेंट पैटर्न रखें
- डेटा मॉड्यूल भरें
- आठ मास्क में से सबसे अच्छा लगाएँ और फ़ॉर्मैट इन्फ़ॉर्मेशन लिखें
कैमरे की तस्वीर से डेटा तक
डिकोडिंग यही कदम उलटे क्रम में चलाता है। स्कैनर तीन फ़ाइंडर पैटर्न ढूँढता है, जिनका गहरे और हल्के का 1:1:3:1:1 अनुपात ज़्यादातर तस्वीरों में अलग नज़र आता है, और उन्हें टाइमिंग व अलाइनमेंट पैटर्न के साथ मिलाकर ग्रिड का नक्शा बनाता है। वह फ़ॉर्मैट इन्फ़ॉर्मेशन पढ़ता है, मास्क हटाता है और कोडवर्ड इकट्ठा करता है।
फिर Reed–Solomon डिकोडिंग गलत पढ़े गए कोडवर्ड को ठीक करती है, एरर करेक्शन लेवल की सीमा तक। अगर बहुत ज़्यादा हिस्सा खराब हो, तो कोड गलत डेटा देने के बजाय पढ़ा ही नहीं जाता, इसीलिए QR कोड से बिगड़े हुए नतीजे कम ही मिलते हैं।
साइज़ और कॉन्ट्रास्ट क्यों मायने रखते हैं
हर कदम इस पर टिका है कि कैमरा गहरे मॉड्यूल को हल्के से अलग पहचान सके। छोटे मॉड्यूल, कम कॉन्ट्रास्ट, चमक, धुंधलापन या क्वाइट ज़ोन का न होना, ये सब ज़्यादा मॉड्यूल को संदेह में डालते हैं, और एरर करेक्शन एक हद तक ही सँभाल सकता है। डेटा छोटा, कॉन्ट्रास्ट मज़बूत और किनारा साफ़ रखने से डिकोडर का काम सबसे आसान हो जाता है।