QR کدها برخلاف ظاهر ساده‌شان فقط مجموعه‌ای از مربع‌های سیاه و سفید نیستند. بخشی از اطلاعات داخل آن‌ها عمداً به شکلی ذخیره می‌شود که اگر قسمتی از کد به دلیل خراش، لکه، پارگی یا پوشانده شدن از بین برود، اسکنر بتواند بخشی از اطلاعات ازدست‌رفته را دوباره بازسازی کند. به همین دلیل ممکن است یک QR کد نسبتاً آسیب‌دیده همچنان با دوربین گوشی به‌درستی خوانده شود.

این قابلیت به‌خصوص برای QR کدهای چاپ‌شده روی بسته‌بندی، برچسب‌های حمل‌ونقل، منوهای رستوران و سطوحی که در معرض کثیفی یا فرسودگی قرار دارند اهمیت زیادی دارد. در واقع مقاومت QR کد در برابر آسیب، یکی از ویژگی‌های فنی طراحی آن است و نه نتیجه حدس زدن لینک توسط گوشی.

چرا QR کد خراب هنوز اسکن می‌شود؟

ظاهر QR کد از تعداد زیادی خانه کوچک یا Module تشکیل شده است، اما همه این خانه‌ها وظیفه یکسانی ندارند. سه مربع بزرگ در سه گوشه کد به دوربین کمک می‌کنند موقعیت و جهت QR کد را تشخیص دهد. الگوهای دیگری نیز برای تعیین مختصات خانه‌ها و اصلاح اعوجاج تصویر استفاده می‌شوند. استاندارد QR کد علاوه بر بخش داده، الگوهای شناسایی و تنظیم، اطلاعات قالب و محدوده سفید اطراف کد را نیز تعریف می‌کند.

بعد از شناسایی ساختار، بخش دیگری از QR کد به داده اصلی و اطلاعات تصحیح خطا اختصاص دارد. این اطلاعات اضافی یک نسخه پشتیبان ساده از لینک یا متن نیستند، بلکه روابط ریاضی ایجادشده از داده اصلی هستند. بنابراین اگر بخشی از داده قابل خواندن نباشد، الگوریتم رمزگشا می‌تواند با استفاده از اطلاعات باقی‌مانده، بخشی از داده ازدست‌رفته را بازسازی کند.

چرا QR کد خراب اسکن می‌شود؟ نحوه تصحیح خطا و بازیابی اطلاعات QR Code

نقش Reed-Solomon در بازیابی اطلاعات QR کد

QR کد برای تصحیح خطا از روش Reed-Solomon استفاده می‌کند. هنگام تولید کد، داده به واحدهایی به نام Codeword تقسیم می‌شود و اطلاعات اضافی برای بازیابی خطا در کنار آن قرار می‌گیرد. این اطلاعات به رمزگشا اجازه می‌دهد در صورت خراب شدن بخشی از Codewordها، مقدار برخی از آن‌ها را از روی داده‌های سالم محاسبه کند. DENSO WAVE نیز تصحیح خطای QR کد را مبتنی بر Reed-Solomon معرفی می‌کند.

برای درک ساده‌تر موضوع می‌توان تصور کرد که بخشی از یک مسئله ریاضی از بین رفته اما تعداد کافی از مقادیر دیگر باقی مانده است. در این حالت می‌توان مقدارهای نامعلوم را دوباره محاسبه کرد. QR کد نیز از همین ایده به شکل بسیار پیچیده‌تر استفاده می‌کند؛ بنابراین گوشی لازم نیست تک‌تک خانه‌های QR کد را بدون نقص دریافت کند.

چرا QR کد خراب اسکن می‌شود؟ نحوه تصحیح خطا و بازیابی اطلاعات QR Code

سطح تصحیح خطای QR کد چیست؟

چهار سطح تصحیح خطا برای QR کدهای استاندارد وجود دارد که با حروف L و M و Q و H مشخص می‌شوند. سطح L امکان بازیابی تقریبی ۷ درصد از Codewordها را فراهم می‌کند و این مقدار برای M حدود ۱۵ درصد است. در سطح Q مقدار تقریبی ۲۵ درصد و در سطح H حدود ۳۰ درصد است. این اعداد توسط DENSO WAVE به عنوان نرخ بازیابی Codewordها توضیح داده شده‌اند.

افزایش سطح تصحیح خطا رایگان نیست. اطلاعات اضافی برای بازیابی خطا فضای بیشتری از QR کد را اشغال می‌کنند و در نتیجه فضای کمتری برای URL یا متن اصلی باقی می‌ماند. اگر داده در سطح انتخاب‌شده جا نشود، ممکن است QR کدساز مجبور شود نسخه بزرگ‌تری از کد را تولید کند. QR کدهای استاندارد از نسخه ۱ تا نسخه ۴۰ ارائه می‌شوند و تعداد خانه‌های آن‌ها از ۲۱ در ۲۱ تا ۱۷۷ در ۱۷۷ افزایش پیدا می‌کند.

تفاوت سطح‌های L و M و Q و H

سطح L برای شرایطی مناسب‌تر است که محیط نسبتاً تمیز باشد و ظرفیت بیشتر اهمیت داشته باشد. سطح M برای استفاده‌های معمول انتخاب متداولی است و طبق توضیحات DENSO WAVE حدود ۱۵ درصد قابلیت بازیابی دارد. سطح Q و H زمانی کاربرد بیشتری پیدا می‌کنند که احتمال کثیف شدن، خراش یا آسیب فیزیکی QR کد بیشتر باشد.

با این حال نباید تصور کرد انتخاب H به معنی تضمین خوانده شدن QR کد در هر شرایطی است. این درصدها درباره Codewordهای قابل بازیابی صحبت می‌کنند و به معنی این نیستند که می‌توان دقیقاً ۳۰ درصد از تصویر QR کد را در هر نقطه‌ای پوشاند.

چرا QR کد خراب اسکن می‌شود؟ نحوه تصحیح خطا و بازیابی اطلاعات QR Code

چرا QR کد با وجود لوگو همچنان کار می‌کند؟

قرار دادن لوگو یا طرح گرافیکی روی QR کد در صورتی می‌تواند بدون از کار افتادن کد انجام شود که مقدار کافی از اطلاعات و ساختار ضروری همچنان باقی بماند. تصحیح خطا می‌تواند بخشی از اطلاعاتی را که توسط لوگو پوشانده شده است بازیابی کند.

اما این موضوع به معنی امکان پوشاندن هر قسمت از QR کد نیست. اگر لوگو یا طرح گرافیکی روی الگوهای اصلی شناسایی قرار بگیرد، ممکن است دوربین حتی قبل از رسیدن به مرحله تصحیح خطا نتواند QR کد را به‌درستی پیدا و تحلیل کند. بنابراین محل آسیب اهمیت زیادی دارد.

چرا QR کد خراب اسکن می‌شود؟ نحوه تصحیح خطا و بازیابی اطلاعات QR Code

آیا می‌توان ۳۰ درصد QR کد را پوشاند؟

عبارت «۳۰ درصد تصحیح خطا» یکی از مواردی است که ممکن است درباره QR کد باعث برداشت اشتباه شود. سطح H می‌تواند حدود ۳۰ درصد از Codewordهای مربوط به داده را بازیابی کند، اما این موضوع به معنی آن نیست که می‌توان ۳۰ درصد از سطح ظاهری QR کد را در هر نقطه‌ای حذف یا با برچسب پوشاند.

QR کد ابتدا باید توسط دوربین شناسایی و ساختار آن مشخص شود. اگر آسیب به یکی از الگوهای اصلی شناسایی یا ناحیه سفید اطراف کد وارد شود، ممکن است فرایند تشخیص از همان ابتدا با مشکل مواجه شود. استاندارد QR کد برای اطراف نماد یک محدوده سفید به نام Quiet Zone نیز در نظر می‌گیرد که بخشی از ساختار مورد نیاز برای تشخیص صحیح کد است.

محل آسیب مهم‌تر از مقدار آسیب است

خراشی که از بخش داده عبور می‌کند ممکن است به کمک تصحیح خطا قابل جبران باشد. در مقابل، آسیب به الگوهای شناسایی، الگوهای زمان‌بندی یا محدوده سفید اطراف کد می‌تواند باعث شود دوربین نتواند ساختار QR کد را به‌درستی تشخیص دهد.

علاوه بر محل آسیب، اندازه چاپ، میزان کنتراست، فوکوس دوربین، زاویه عکاسی، انعکاس نور و میزان اعوجاج تصویر نیز روی نتیجه تأثیر دارند. به همین دلیل دو QR کد که ظاهراً به یک اندازه آسیب دیده‌اند ممکن است یکی به‌راحتی اسکن شود و دیگری اصلاً خوانده نشود.

چرا QR کد خراب اسکن می‌شود؟ نحوه تصحیح خطا و بازیابی اطلاعات QR Code

چگونه یک QR کد مقاوم و قابل اسکن بسازیم؟

اگر قرار است QR کد روی بسته‌بندی، برچسب یا سطحی چاپ شود که احتمال کثیف شدن و آسیب دیدن آن وجود دارد، بهتر است سطح تصحیح خطا متناسب با شرایط انتخاب شود. DENSO WAVE نیز انتخاب سطح تصحیح خطا را وابسته به محیط استفاده و اندازه QR کد می‌داند و سطح M را گزینه‌ای متداول معرفی می‌کند.

همچنین نباید QR کد را بیش از حد کوچک چاپ کرد یا کنتراست آن را کاهش داد. حتی اگر اطلاعات تصحیح خطا کافی باشد، دوربین باید بتواند خانه‌های QR کد را با وضوح مناسب تشخیص دهد.

نکات مهم برای چاپ و طراحی QR کد

  • الگوهای بزرگ سه گوشه QR کد را نپوشانید.
  • محدوده سفید اطراف QR کد را حفظ کنید.
  • اگر کد در معرض کثیفی و فرسودگی قرار دارد، سطح تصحیح خطای بالاتر را بررسی کنید.
  • لوگو را تا حد امکان در بخش مرکزی و بدون پوشاندن الگوهای ساختاری قرار دهید.
  • اندازه QR کد را متناسب با فاصله اسکن و کیفیت چاپ انتخاب کنید.
  • بعد از طراحی، QR کد نهایی را با چند گوشی و در شرایط واقعی آزمایش کنید.
  • فقط به نمایش صحیح QR کد روی صفحه کامپیوتر اکتفا نکنید و نسخه چاپ‌شده را نیز آزمایش کنید.

در نتیجه وقتی یک QR کد قدیمی یا خراشیده همچنان توسط گوشی خوانده می‌شود، گوشی در حال حدس زدن URL نیست. بخشی از اطلاعات اضافی داخل ساختار QR کد به شکلی ریاضی ذخیره شده است که امکان بازسازی بخشی از داده‌های آسیب‌دیده را فراهم می‌کند. همین طراحی باعث شده QR کدها در برابر برخی آسیب‌های فیزیکی بسیار مقاوم‌تر از چیزی باشند که ظاهر ساده آن‌ها نشان می‌دهد.

البته تصحیح خطا یک سیستم جادویی نیست. هرچه اطلاعات بیشتری از بین برود یا آسیب به بخش‌های حیاتی ساختار QR کد برسد، احتمال شکست اسکن بیشتر می‌شود. بنابراین برای ساخت یک QR کد قابل اعتماد باید بین ظرفیت داده، اندازه کد، سطح تصحیح خطا، کیفیت چاپ و شرایط محیطی تعادل برقرار کرد.