रोज़ QR कोड स्कैन करें और उन तीन वर्गों के बारे में कभी न सोचें। मैं भी सालों तक उसी श्रेणी में था। असल में ये वर्ग कुछ वाकई चतुर इंजीनियरिंग का काम कर रहे हैं — और उनकी संख्या ठीक तीन क्यों है, चार नहीं, यह उतना दिलचस्प है जितना आप सोच सकते हैं।
इनका एक नाम है: फाइंडर पैटर्न
तीन बड़े वर्गों को आधिकारिक तौर पर पोज़िशन डिटेक्शन पैटर्न कहा जाता है, हालाँकि लगभग सभी लोग इन्हें फाइंडर पैटर्न कहते हैं [4]। ये हर QR कोड के ऊपर-बाएँ, ऊपर-दाएँ और नीचे-बाएँ कोनों में होते हैं — नीचे-दाएँ कभी नहीं। यह असमानता जानबूझकर है, और यही पूरी बात है।
हर फाइंडर पैटर्न तीन नेस्टेड वर्गों से बना होता है: एक ठोस काला बाहरी वर्ग, बीच में एक सफेद रिंग, और केंद्र में एक छोटा काला वर्ग [6]। जब कोई स्कैनर इन पैटर्न में से किसी क्षैतिज या ऊर्ध्वाधर रेखा के पार पढ़ता है, तो उसे गहरे और हल्के मॉड्यूल का एक बहुत खास क्रम दिखता है: 1:1:3:1:1 — एक काला, एक सफेद, तीन काले, एक सफेद, एक काला [6]।
यह अनुपात इस बात से परे है कि QR कोड कितना बड़ा या छोटा है, या किस कोण से स्कैन किया जा रहा है। यही एकरूपता एक कैमरे को मिलीसेकंड में पैटर्न को पकड़ने देती है।
विशेष रूप से 1:1:3:1:1 क्यों?
QR कोड का आविष्कार 1994 में जापानी कंपनी Denso Wave के मासाहिरो हारा ने किया था, मूल रूप से असेंबली लाइनों पर कार के पुर्जों को ट्रैक करने के लिए [2]। हारा की टीम को एक ऐसे पैटर्न की ज़रूरत थी जिसे एक स्कैनर तुरंत खोज सके — चाहे वह मुद्रित टेक्स्ट, लोगो या पैकेजिंग ग्राफिक्स से घिरा हो। चुनौती यह थी: आप जो भी पैटर्न चुनें, वह आसपास के डिज़ाइन में गलती से प्रकट हो सकता है, जिससे स्कैनर गलत चीज़ को कोड की सीमा के रूप में पढ़ सकता है।
उनका समाधान व्यवस्थित था। वह पैटर्न खोजो जो सामान्य मुद्रित सामग्री में कहीं भी प्रकट होने की सबसे कम संभावना रखता हो।
उन्होंने वास्तव में असली फ्लायर, पत्रिकाएँ और गत्ते के डिब्बे खंगाले — सब कुछ काले-सफेद मॉड्यूल अनुपात में घटाया [1]। एक संपूर्ण विश्लेषण के बाद, 1:1:3:1:1 क्रम वह निकला जो मुद्रित सामग्री में लगभग कभी स्वाभाविक रूप से प्रकट नहीं होता था। तो उन्होंने पूरे फाइंडर पैटर्न को उसी अनुपात के इर्द-गिर्द बनाया।
पैटर्न का भौतिक रूप — संकेंद्रित बारी-बारी से वर्ग — एक गो बोर्ड से प्रेरित था। काले और सफेद पत्थरों के विपरीत रंग ने हारा को नेस्टेड बारी-बारी मॉड्यूल के साथ काम करने का दृश्य विचार दिया [1]। छोटा विवरण है, लेकिन मुझे अच्छा लगता है कि एक बोर्ड गेम ने इंटरनेट पर सबसे अधिक स्कैन की जाने वाली छवियों में से एक को प्रभावित किया।
तीन कोने — चार क्यों नहीं?
यह अधिक दिलचस्प हिस्सा है।
तीन बिंदु एक अद्वितीय ओरिएंटेशन परिभाषित करते हैं। चार समान बिंदु नहीं करते।
यदि आपके पास L-आकार में तीन फाइंडर पैटर्न हैं (ऊपर-बाएँ, ऊपर-दाएँ, नीचे-बाएँ), तो स्कैनर वह L देखता है और तुरंत जान लेता है: यहाँ “ऊपर” कौन सा है, यहाँ ऊपरी-बाएँ एंकर है, यहाँ ग्रिड कैसे उन्मुख है [3][5]। इससे कोई फर्क नहीं पड़ता कि QR कोड उल्टा है, 45 डिग्री घुमाया हुआ है, या किसी बोतल के किनारे पर मुद्रित है — L-आकार अस्पष्टता को बिना किसी संदेह के हल कर देता है।
चार समान बड़े वर्ग एक समस्या होते। स्कैनर चार संभावित “सही” ओरिएंटेशन देखता और यह तय करने का कोई तरीका नहीं होता कि वास्तव में कौन सा सही है [5]। आपको अस्पष्टता को हल करने के लिए कोड में कहीं और अतिरिक्त जानकारी की ज़रूरत होती, जो डिटेक्शन पैटर्न होने के उद्देश्य को ही विफल कर देती।
नीचे-दाएँ कोने को इसके बजाय बड़े QR कोड (Version 2 और उससे ऊपर) में एक छोटा अलाइनमेंट पैटर्न मिलता है — एक 5×5 नेस्टेड वर्ग जिसका काम अलग है: तब परिप्रेक्ष्य विकृति को सुधारना जब कोड किसी घुमावदार सतह पर हो या तीव्र कोण से पढ़ा जा रहा हो [6]। यह मदद करता है लेकिन यह फाइंडर पैटर्न नहीं है। असमानता ही विशेषता है।
कोड संरचना का बाकी हिस्सा
फाइंडर पैटर्न से परे, QR कोड में कई अन्य कार्यात्मक क्षेत्र होते हैं [4]:
- टाइमिंग पैटर्न: फाइंडर पैटर्न के बीच क्षैतिज और ऊर्ध्वाधर रूप से चलने वाली बारी-बारी काली-सफेद रेखाएँ — ये एक रूलर की तरह काम करती हैं, जिससे स्कैनर मॉड्यूल का आकार माप सकता है और डेटा ग्रिड को सटीक रूप से बिछा सकता है
- फॉर्मेट जानकारी: फाइंडर पैटर्न के पास एक पट्टी जो त्रुटि सुधार स्तर और कौन सा डेटा मास्क पैटर्न लागू किया गया था, एन्कोड करती है — लचीलेपन के लिए दो जगह दोहराई जाती है
- क्वाइट ज़ोन: पूरे कोड के चारों ओर खाली सफेद बॉर्डर — ISO 18004 के अनुसार न्यूनतम 4 मॉड्यूल चौड़ा [8]। इसे हटाएँ और स्कैनर आस-पास के ग्राफिक्स को कोड का हिस्सा समझने लगते हैं
- वर्शन जानकारी: Version 7 और उससे ऊपर के कोड के लिए, अतिरिक्त ब्लॉक वर्शन नंबर (1–40) स्टोर करते हैं, स्कैनर को बताते हैं कि कितनी पंक्तियाँ और कॉलम अपेक्षित हैं [4]
वर्शन 1 (21×21 मॉड्यूल, ~25 अल्फान्यूमेरिक अक्षर) से 40 (177×177 मॉड्यूल, ~4,000+ अक्षर) तक जाते हैं। वर्शन बढ़ने के साथ अलाइनमेंट पैटर्न की संख्या भी बढ़ती है।
त्रुटि सुधार: क्षतिग्रस्त QR कोड फिर भी काम क्यों करते हैं
आपने यह ज़रूर देखा होगा — एक QR कोड जिसके बीच में कंपनी का लोगो लगा हो और फिर भी स्कैन होता हो। यह रीड-सोलोमन त्रुटि सुधार है, संयोग नहीं [7]।
कोड वास्तविक पेलोड से गणना किए गए अतिरिक्त डेटा को स्टोर करता है। जब तक मॉड्यूल का पर्याप्त अनुपात बचा रहता है, स्कैनर गणितीय रूप से मूल डेटा को पुनर्निर्मित कर सकता है — भले ही बचे हुए मॉड्यूल यादृच्छिक रूप से बिखरे हों। चार त्रुटि सुधार स्तर हैं:
| स्तर | अधिकतम पुनर्प्राप्त करने योग्य डेटा |
|---|---|
| L | 7% |
| M | 15% |
| Q | 25% |
| H | 30% |
Level H इसीलिए है कि आप QR कोड के लगभग 30% हिस्से को लोगो से ढककर भी स्कैन कर सकते हैं [7]। डिज़ाइनर इसका जानबूझकर फायदा उठाते हैं — Level H पर कोड जनरेट करें, फिर केंद्र पर आर्टवर्क लगाएँ। यह आमतौर पर काम करता है जब तक फाइंडर पैटर्न बरकरार रहते हैं।
और यही बात है — फाइंडर पैटर्न स्वयं त्रुटि सुधार से कवर नहीं होते। वे संरचनात्मक हैं। यदि तीनों बुरी तरह क्षतिग्रस्त या अस्पष्ट हैं, तो कोई भी रीड-सोलोमन गणित स्कैन को रिकवर नहीं कर सकता। स्कैनर को पहली जगह कोड मिलेगा ही नहीं।
तीन वर्ग सजावट नहीं हैं। वे बाकी सब चीज़ों का प्रवेश द्वार हैं।
समाप्त
स्रोत
- QR Code Development Story — DENSO WAVE
- History of QR Code — QRcode.com / DENSO WAVE
- QR code — Wikipedia
- What is QR Code Structure and How Does It Work? — Scanova
- QR code anatomy explained — QR Code Kit
- QR Code Anatomy: Finder Patterns & Error Correction — FileFusion
- QR Code Error Correction Explained — Scanova
- What is a QR Code Quiet Zone and Why Does It Matter? — QR Code Generator
