QR কোডে কত লেখা ধরে: মেপে দেখা সীমা, বাংলা কেন কম ধরে

একই মাত্রার চারটি QR কোড পাশাপাশি: ৩৩, ৫৭, ১০১ ও ১৭৭ ঘরের, লেখা বাড়লে কোড ঘন হচ্ছে

ধরুন নিলয় একটি ছোট ক্যাফে চালান (নাম ও গল্প কাল্পনিক)। টেবিলের কার্ডে এমন একটি কোড চান, যা স্ক্যান করলে ঠিকানা, খোলার সময়, আজকের অফার আর অর্ডারের নিয়ম সব একসঙ্গে আসে। তিনি পুরো লেখাটা QR কোড জেনারেটর-এর ঘরে বসিয়ে দিলেন। কোড এল ঠিকই, কিন্তু কার্পেটের নকশার মতো ঘন জালে ভরা। আরও লেখা জুড়লে এক সময় টুল বলে দেবে, লেখাটি কোডে ধরছে না।

এখানে দুটি প্রশ্ন ওঠে। ঠিক কতটা ধরে, আর যতটা ধরে ততটা ঢোকানো কি ভালো? আগের লেখায় (QR কোড বানানোর সহজ নিয়ম) আমি সীমাটা মাপিনি, তাই কোনো সংখ্যা বলিনি। এবার টুলের নিজের QR লাইব্রেরি চালিয়ে মেপেছি। সংখ্যাগুলো সেখান থেকে, অনুমান নয়।

সীমাটা কত

L, M, Q ও H মাত্রায় একটি কোডে ধরা সর্বোচ্চ লেখার বার-চিত্র: ইংরেজিতে ২,৯৫৩ থেকে ১,২৭৩ বাইট, বাংলায় ৯৮৪ থেকে ৪২৪ চিহ্ন
বাংলায় একই কোডে প্রায় তিন ভাগের এক ভাগ লেখা ধরে।

QR কোড লেখাকে বাইটে গোনে। ইংরেজি অক্ষর, অঙ্ক আর চিহ্ন এক বাইট করে। টুলের চার মাত্রায় একটি কোডে সর্বোচ্চ যা ধরে:

  • L (কম): ২,৯৫৩ বাইট।
  • M (মাঝারি, গোড়ার): ২,৩৩১ বাইট।
  • Q (বেশি): ১,৬৬৩ বাইট।
  • H (সর্বোচ্চ): ১,২৭৩ বাইট।

আমি একটি অক্ষর বারবার বসিয়ে দেখেছি কোথায় গিয়ে টুল আর কোড বানাতে পারে না। যেমন M-এ ২,৩৩১ চলে, ২,৩৩২-এ ব্যর্থ হয়। প্রতিটি সীমার কোডই ১৭৭ × ১৭৭ ঘরের, অর্থাৎ QR কোডের সবচেয়ে বড় মাপ। মাত্রা বাড়ালে ভুল সংশোধনের জন্য বেশি জায়গা যায়, তাই ভেতরে ঢোকানো লেখা কমে।

দুটি ছোট তথ্য। প্রথমত, QR-এর নিয়মে সংখ্যার জন্য আলাদা সংক্ষিপ্ত পদ্ধতি আছে, কিন্তু এই টুল সেটা ব্যবহার করে না। শুধু অঙ্কের লেখা (যেমন ফোন নম্বর) বা বড় হাতের ইংরেজি লেখা মেপে দেখেছি, ফল সাধারণ লেখার সমান: ২,৯৫৩ অঙ্ক চলে L-এ, আর HTTPS://SELLSHOP.COM.BD লিখলেও ঘর ২৫ × ২৫, ছোট হাতের সঙ্গে হুবহু এক। অর্থাৎ সব বড় হাতে লিখে জায়গা বাঁচানো যাবে না। দ্বিতীয়ত, সংখ্যাগুলো টুলের বর্তমান লাইব্রেরির। লাইব্রেরি পাল্টালে ফল বদলাতে পারে, তাই নতুন সংস্করণে আবার মেপে নেওয়া ভালো।

বাংলা কেন তিন ভাগের এক ভাগ ধরে

বাংলার প্রতিটি চিহ্ন ইউনিকোডে তিন বাইট নেয়। আর গোনা হয় চিহ্ন ধরে, চোখে দেখা অক্ষর ধরে নয়। তাই “ক” একটি চিহ্ন (৩ বাইট), “কী” দুটি (৬ বাইট), আর “ক্ষ” তিনটি, কারণ ক, হসন্ত ও ষ আলাদা চিহ্ন (৯ বাইট)। ফল: M-এ বাংলা ৭৭৭ চিহ্ন পর্যন্ত চলে, ৭৭৮-এ ব্যর্থ। L-এ ৯৮৪, Q-তে ৫৫৪, H-এ ৪২৪।

এর মানে, কাগজে লেখা শব্দ বা অক্ষর গুনে হিসাব করলে ভুল হবে। যুক্তাক্ষর আর কার বেশি থাকলে লেখা আরও দ্রুত ভরে। এসএমএসেও বাংলা বেশি জায়গা নেয়, সেখানে এসএমএস কাউন্টার এনকোডিং (GSM-7 বা Unicode) দেখায়। দুটো ব্যবস্থা এক নয়, শুধু বাংলা যে বেশি জায়গা নেয় সেই কারণটি একই ধরনের।

ধরলেও কাজের হয় না

সীমা জানা এক কথা, কোডটা ছাপা বা পর্দায় পড়া যাবে কি না আরেক। আমি কয়েকটি কাল্পনিক লেখা M মাত্রায় টুলের লাইব্রেরিতে দিয়ে ঘর গুনেছি:

  • ছোট লিংক (https://sellshop.com.bd/tools/qr-code-generator/), ৪৮ বাইট: ৩৩ × ৩৩ ঘর।
  • ওয়াই-ফাইয়ের লেখা (WIFI:T:WPA;S:CafeNet;P:coffee1234;;, নাম ও পাসওয়ার্ড কাল্পনিক), ৩৫ বাইট: ২৯ × ২৯।
  • বাংলা ঠিকানা ও খোলার সময় (“সেলশপ ক্যাফে, বাড়ি ৫, রোড ৩, ধানমন্ডি, ঢাকা-১২০৫। খোলা: সকাল ৯টা থেকে রাত ১০টা।”), ৮০ চিহ্ন, ২০২ বাইট: ৫৭ × ৫৭।
  • ঈদ মেলার বাংলা বার্তা (৬৬ চিহ্ন), ১৬৮ বাইট: ৫৩ × ৫৩।
  • দোকানের পরিচয়, ডেলিভারি আর ফেরতের নিয়মসহ বাংলা অনুচ্ছেদ (২৬৫ চিহ্ন), ৬৯১ বাইট: ১০১ × ১০১।

একটি ছোট লিংক আর একটি অনুচ্ছেদের কোড পাশাপাশি রাখলে ফারাক চোখে পড়ে, ওপরের ছবিতে সেটাই দেখানো হয়েছে। এবার পিক্সেলের হিসাব। কোডের চারপাশে টুল চার ঘর করে ফাঁকা রাখে, তাই মোট ঘর = ঘর + ৮। টুল ছবির মাপ ওই সংখ্যা দিয়ে ভাগ করে পূর্ণসংখ্যায় ছাঁটে।

চারটি কোডের জন্য ৩৮৪ ও ১০২৪ px বাছলে প্রতি ঘরের পিক্সেল আর ছবির মাপের তালিকা
ঘর যত বেশি, প্রতি ঘর তত সরু।

গোড়ার ৩৮৪ px বাছলে ১০১ ঘরের কোডে প্রতি ঘর মাত্র ৩ px, আর সীমার কোডে ২ px। ১০২৪ বাছলে ৯ px আর ৫ px। ছাপলে অবশ্য কাগজের মাপ আলাদা, এখানে শুধু PNG ছবির হিসাব। কত px-এর ঘর পর্যন্ত ফোন পড়তে পারে, তা আমি মাপিনি, কোনো আসল ফোনেও পরীক্ষা করিনি। আমার ধারণা, এত সরু ঘরের কোড অনেক ফোনের জন্য কঠিন, কিন্তু সেটা ধারণা। ছাপার আগে নিজের ফোনে স্ক্যান করে দেখুন (ছাপার খুঁটিনাটি ছাপার জন্য QR কোড লেখায়)।

বাইট থেকে ঘর বের করার ছোট তালিকা

টুল ঘরের সংখ্যা দেখায় না, শুধু কোডটা আঁকে। তাই লেখা বসানোর আগে আন্দাজ করতে এই তালিকা কাজে লাগবে। M মাত্রায় (গোড়ার) একটি কোডে ওই ঘর সংখ্যায় সর্বোচ্চ যত বাইট ধরে, আমি লাইব্রেরি চালিয়ে বের করেছি:

  • ২১ ঘর: ১৪ বাইট পর্যন্ত।
  • ২৫ ঘর: ২৬ বাইট। ২৯ ঘর: ৪২ বাইট।
  • ৩৩ ঘর: ৬২ বাইট। ৩৭ ঘর: ৮৪ বাইট।
  • ৪১ ঘর: ১০৬ বাইট। ৪৫ ঘর: ১২২ বাইট।
  • ৪৯ ঘর: ১৫২ বাইট। ৫৩ ঘর: ১৮০ বাইট। ৫৭ ঘর: ২১৩ বাইট।

লেখার বাইট আন্দাজ করা সহজ: ইংরেজি অংশ যত অক্ষর, তত বাইট; বাংলা অংশ চিহ্ন গুনে তিন দিয়ে গুণ। লেখাটা কত বড় তার ধারণা পেতে শব্দ ও অক্ষর গণনা টুলে বসিয়ে দেখতে পারেন। ওই টুল বাইট গোনে না, আর যুক্তাক্ষর কীভাবে গোনে তা আমি মিলিয়ে দেখিনি, তাই ফলটা মোটামুটি আন্দাজ। শেষ নিশ্চয়তা পাবেন কোড টুলে লেখা বসিয়ে।

মাত্রা বাড়ালে সীমা কমে: একটি ফাঁদ

একটি উদাহরণ। ১,৫০০ বাইটের ইংরেজি লেখা (একটি অক্ষর বারবার বসানো) M মাত্রায় ১৪৫ × ১৪৫ ঘরে ধরে, Q-তে ১৭৩ × ১৭৩ ঘরে। কিন্তু H-এ টুল কোড বানাতে পারে না, কারণ H-এর সীমা ১,২৭৩। তখন টুল এই বার্তা দেখায়: লেখাটি এত বড় যে QR কোডে ধরছে না, লেখা ছোট করুন বা ভুল সংশোধনের মাত্রা কমান।

ফাঁদটা হলো এই: কেউ লোগো বসাবেন বলে আগেই H বেছে রাখলেন (লোগোর কথা আছে ছাপার লেখায়, টুলে লোগো বসে না)। পরে লেখা বাড়াতে গিয়ে দেখলেন কোড আসছে না। সমাধান দুটি: লেখা ছোট করুন, নয়তো মাত্রা নামান। দ্বিতীয়টি নিলে সুরক্ষা কমে, তাই ছাপার আগে স্ক্যান করে যাচাই বাড়ে।

কী কোডে ঢোকাবেন, কী পাতায় রাখবেন

এই অংশটা আমার পরামর্শ, টুলের মাপা ফল নয়। ছোট জিনিস সরাসরি কোডে দেওয়া যায়: ওয়েব লিংক, ফোন নম্বর, ইমেইল, ওয়াই-ফাইয়ের লেখা। এগুলো ২৫ থেকে ৩৭ ঘরের মধ্যে থাকে, যেমন ওপরের মাপে দেখা গেছে। কিন্তু ঠিকানা, সময়, অফার আর নিয়মের তালিকা কোডে না ঢুকিয়ে নিজের একটি পাতায় রাখুন, কোডে সেই পাতার ছোট লিংক দিন।

এতে দুটি সুবিধা। কোড ছোট ও সরল থাকে, আর খোলার সময় বা অফার বদলালে পাতা বদলালেই হয়। কোডের ভেতরের লেখা ছাপা হয়ে গেলে বদলানো যায় না, নতুন কোড বানিয়ে আবার ছাপতে হয়। নিলয়ের কার্ডের জন্য ঠিক এটাই কাজের: ৪৮ বাইটের একটি লিংক, ৩৩ × ৩৩ ঘর, আর পাতায় বাকি সব।

সীমাবদ্ধতা ও হালনাগাদ: সব সংখ্যা টুলের নিজের লাইব্রেরি (qrcode-generator ২.০.৪) চালিয়ে বের করা। সীমা মাপতে একটি অক্ষর বারবার বসিয়েছি; মিশ্র লেখায় মোট বাইট ধরেই হিসাব করবেন। ব্রাউজারে টুল খুলে বসিয়ে মেলানো হয়নি, কোনো আসল ফোন বা ছাপা কাগজেও স্ক্যান করা হয়নি। কত ছোট ঘর পড়া যায়, তার কোনো সংখ্যা আমি বলছি না। লিংক, নাম ও লেখা কাল্পনিক (sellshop.com.bd ছাড়া)। হালনাগাদ: ৮ নভেম্বর ২০২৬।

সাধারণ প্রশ্ন

একটি QR কোডে সর্বোচ্চ কত লেখা ধরে?

টুলে গোড়ার মাত্রায় (M) ২,৩৩১ বাইট, অর্থাৎ ইংরেজিতে ২,৩৩১ অক্ষর বা বাংলায় ৭৭৭ চিহ্ন। মাত্রা H হলে ১,২৭৩ বাইট। কিন্তু এত ঘন কোড পড়া কঠিন, তাই বড় লেখা পাতায় রেখে লিংক দিন।

বাংলা লিখলে কোড এত ঘন হয় কেন?

বাংলার প্রতিটি চিহ্ন তিন বাইট নেয়, আর কার ও হসন্তও আলাদা চিহ্ন। আমার মাপে ৮০ চিহ্নের বাংলা ঠিকানা ও সময় ২০২ বাইট, M-এ ৫৭ × ৫৭ ঘর।

সব বড় হাতে লিখলে বা শুধু অঙ্ক দিলে কোড ছোট হয়?

এই টুলে হয় না। আমার মাপে দুই ক্ষেত্রেই ঘর ও সীমা সাধারণ লেখার সমান।

লেখা বেশি হলে টুল কী করে?

কোড না এঁকে একটি বার্তা দেখায়: লেখা ছোট করুন বা ভুল সংশোধনের মাত্রা কমান। মাত্রা কমালে (যেমন H থেকে Q বা M) বেশি লেখা ধরে।