Dari data menjadi pola
Membuat QR code dimulai dengan memilih encoding mode yang sesuai dengan data: numerik, alfanumerik, byte, atau kanji. Encoder mengubah data menjadi bit, membaginya menjadi codeword 8-bit, dan menambahkan codeword koreksi kesalahan Reed–Solomon pada level yang dipilih. Lalu ia memilih versi terkecil yang muat.
Codeword ditempatkan di kisi dengan jalur zigzag yang melewati pola tetap. Terakhir, encoder menerapkan salah satu dari delapan mask pattern untuk memecah area kosong yang luas atau bentuk yang membingungkan, dan mencatat mask serta level koreksi kesalahan di format information.
- Pilih encoding mode
- Encode data dan tambahkan codeword koreksi kesalahan
- Pilih versi (ukuran)
- Tempatkan finder, timing, dan alignment pattern
- Isi modul data
- Terapkan mask terbaik dari delapan mask dan tulis format information
Dari gambar kamera menjadi data
Decoding menjalankan langkah yang sama secara terbalik. Scanner menemukan tiga finder pattern, yang rasio gelap-terangnya 1:1:3:1:1 menonjol dari kebanyakan gambar, lalu memakainya bersama timing dan alignment pattern untuk memetakan kisi. Ia membaca format information, melepas mask, dan mengumpulkan codeword.
Decoding Reed–Solomon kemudian memperbaiki codeword yang salah terbaca, sampai batas level koreksi kesalahan. Jika terlalu banyak yang rusak, kode gagal terbaca alih-alih mengembalikan data yang salah, itulah sebabnya QR code jarang menghasilkan hasil yang kacau.
Mengapa ukuran dan kontras penting
Setiap langkah bergantung pada kemampuan kamera membedakan modul gelap dari terang. Modul kecil, kontras rendah, silau, buram, atau quiet zone yang hilang membuat makin banyak modul diragukan, dan koreksi kesalahan hanya bisa menyerap sampai batas tertentu. Menjaga data tetap pendek, kontras kuat, dan margin bersih membuat tugas decoder paling mudah.