จากข้อมูลสู่ลวดลาย
การสร้าง QR Code เริ่มจากเลือกโหมดการเข้ารหัสที่เหมาะกับข้อมูล ได้แก่ ตัวเลข ตัวอักษรและตัวเลข ไบต์ หรือคันจิ ตัวเข้ารหัสแปลงข้อมูลเป็นบิต แบ่งเป็นโค้ดเวิร์ดขนาด 8 บิต และเพิ่มโค้ดเวิร์ดแก้ไขข้อผิดพลาดแบบ Reed–Solomon ตามระดับที่เลือก จากนั้นเลือกเวอร์ชันที่เล็กที่สุดที่ใส่ข้อมูลได้
โค้ดเวิร์ดถูกวางลงในตารางตามเส้นทางซิกแซกที่ข้ามลวดลายตายตัว สุดท้ายตัวเข้ารหัสใช้มาสก์หนึ่งในแปดแบบเพื่อทำลายพื้นที่ว่างกว้าง ๆ หรือรูปร่างที่สับสน และบันทึกมาสก์กับระดับการแก้ไขข้อผิดพลาดไว้ใน Format Information
- เลือกโหมดการเข้ารหัส
- เข้ารหัสข้อมูลและเพิ่มโค้ดเวิร์ดแก้ไขข้อผิดพลาด
- เลือกเวอร์ชัน (ขนาด)
- วาง Finder, Timing และ Alignment Pattern
- เติมโมดูลข้อมูล
- ใช้มาสก์ที่ดีที่สุดในแปดแบบและเขียน Format Information
จากภาพกล้องสู่ข้อมูล
การถอดรหัสทำขั้นตอนเดียวกันย้อนกลับ เครื่องสแกนหา Finder Pattern ทั้งสาม ซึ่งอัตราส่วนสีเข้มต่อสีอ่อน 1:1:3:1:1 โดดเด่นจากภาพส่วนใหญ่ แล้วใช้ร่วมกับ Timing และ Alignment Pattern เพื่อสร้างแผนที่ตาราง จากนั้นอ่าน Format Information ถอดมาสก์ และรวบรวมโค้ดเวิร์ด
การถอดรหัส Reed–Solomon จะซ่อมโค้ดเวิร์ดที่อ่านผิด ภายในขีดจำกัดของระดับการแก้ไขข้อผิดพลาด ถ้าเสียหายมากเกินไป โค้ดจะอ่านไม่ได้แทนที่จะคืนข้อมูลผิด นี่คือเหตุที่ QR Code แทบไม่ให้ผลเป็นข้อมูลเพี้ยน
ทำไมขนาดและคอนทราสต์จึงสำคัญ
ทุกขั้นตอนขึ้นอยู่กับความสามารถของกล้องในการแยกโมดูลสีเข้มจากสีอ่อน โมดูลเล็ก คอนทราสต์ต่ำ แสงสะท้อน ภาพเบลอ หรือไม่มีขอบเงียบ ล้วนทำให้โมดูลที่กำกวมมากขึ้น และการแก้ไขข้อผิดพลาดรับได้จำกัด การทำให้ข้อมูลสั้น คอนทราสต์เข้ม และขอบโล่ง ทำให้ตัวถอดรหัสทำงานง่ายที่สุด