Sửa lỗi mã QR là phần dữ liệu dự phòng được tích hợp sẵn, giúp mã vẫn quét được khi một phần bị bẩn, hư hỏng hoặc bị che. Có bốn mức: L khôi phục được khoảng 7% dữ liệu, M khoảng 15%, Q khoảng 25% và H khoảng 30%. Mức càng cao thì mã càng bền nhưng cũng dày đặc hơn.
Cơ chế sửa lỗi của mã QR
Mã QR không chỉ lưu văn bản của bạn một lần rồi trông chờ may mắn. Khi tạo mã, dữ liệu được chia thành các khối byte gọi là codeword, rồi các codeword sửa lỗi bổ sung được tính toán và thêm vào. Việc này dùng một phương pháp toán học gọi là mã sửa lỗi Reed–Solomon, thuộc cùng họ kỹ thuật đã được dùng hàng chục năm trong đĩa CD, DVD và truyền dữ liệu.
Khi điện thoại quét mã, nó đọc tất cả các codeword. Nếu một số codeword không đọc được hoặc bị sai do vết xước, vết bẩn hay logo đặt lên trên, máy quét dùng các codeword bổ sung để suy ra phần bị thiếu. Chừng nào mức hư hỏng còn nằm trong khả năng xử lý của mức đã chọn, lượt quét vẫn thành công và bạn không hề nhận ra có gì sai.
Mức sửa lỗi được ghi trong một vùng nhỏ của mã gọi là thông tin định dạng (format information), được lưu hai lần để máy quét đọc chính xác.
Bốn mức: L, M, Q và H
Mỗi mức đánh đổi dung lượng lưu trữ lấy độ bền. Các tỷ lệ dưới đây là lượng dữ liệu xấp xỉ của mã có thể được khôi phục.
- Mức L (Low), khoảng 7%. Chứa nhiều dữ liệu nhất trong mã nhỏ nhất. Phù hợp cho mã hiển thị trên màn hình hoặc dùng trong nhà, sạch sẽ, ít khả năng hư hỏng.
- Mức M (Medium), khoảng 15%. Mức cân bằng, thường là mặc định. Phù hợp với hầu hết ấn phẩm in như tờ rơi, thực đơn và danh thiếp.
- Mức Q (Quartile), khoảng 25%. Bảo vệ thêm cho mã có thể bị bẩn hoặc mòn, như trên bao bì, nhãn hàng hay trong xưởng.
- Mức H (High), khoảng 30%. Độ bền tối đa. Thường được chọn cho biển ngoài trời, môi trường khắc nghiệt, hoặc mã có logo đặt ở giữa.
Những con số này mô tả lượng dữ liệu khôi phục được, không có nghĩa là "bạn có thể che 30% hình ảnh". Hư hỏng ở sai chỗ, đặc biệt là trên ba ô vuông lớn ở góc, có thể khiến mã không quét được dù diện tích bị ảnh hưởng rất nhỏ.
Sự đánh đổi: độ bền và mật độ
Sửa lỗi không miễn phí. Các codeword bổ sung chiếm chỗ bên trong mã. Với cùng một nội dung, mức cao hơn đồng nghĩa với:
- Nhiều module hơn, tức các ô vuông nhỏ đen và trắng
- "Phiên bản" (version) QR lớn hơn, trải từ 21 × 21 module ở phiên bản 1 đến 177 × 177 ở phiên bản 40
- Mỗi ô vuông nhỏ hơn khi in ở cùng kích thước thực tế
Ô vuông nhỏ hơn thì camera khó phân giải hơn, nhất là từ xa, trong điều kiện thiếu sáng hoặc trên điện thoại cũ. Vì vậy, chọn mức H cho một địa chỉ web dài trên một nhãn nhỏ xíu có thể khiến mã kém ổn định hơn chứ không phải tốt hơn.
Cách khắc phục thường là giảm dữ liệu. Một link ngắn, như các link qr-th.com/r/ mà mã động của QR-TH sử dụng, giữ nội dung ngắn gọn. Điều đó chừa chỗ cho mức sửa lỗi cao hơn mà không làm mã quá dày đặc. Bài viết về mã QR tĩnh và mã QR động giải thích cách link ngắn hoạt động.
Nên chọn mức nào?
Dùng hướng dẫn đơn giản sau:
- Hiển thị trên màn hình hoặc in sạch sẽ trong nhà? Mức L hoặc M là đủ.
- Ấn phẩm marketing in thông thường, như thực đơn, tờ rơi hay poster? Mức M là lựa chọn mặc định đáng tin cậy.
- Có thể bị trầy, ướt, bẩn hoặc bị che một phần? Chọn Q.
- Có logo ở giữa, biển ngoài trời hoặc điều kiện khắc nghiệt? Chọn H, và giữ dữ liệu ngắn.
- Dù chọn mức nào, hãy thử mã đã in trên nhiều điện thoại ở đúng khoảng cách và ánh sáng thực tế.
Nhiều trình tạo mã QR tự động chọn mức hợp lý, thường nâng mức khi bạn thêm logo. Nếu công cụ cho phép tự chọn, hãy cân nhắc nơi mã sẽ được dùng thay vì lúc nào cũng chọn mức cao nhất.
Sửa lỗi và logo
Đặt logo vào giữa mã QR khả thi là nhờ sửa lỗi: logo che một số module, và máy quét tái tạo chúng từ dữ liệu dự phòng. Vài nguyên tắc giúp mã luôn ổn định:
- Dùng mức H, hoặc ít nhất là Q, khi thêm logo.
- Giữ logo khá nhỏ và ở chính giữa. Chừa nhiều khoảng dư so với mức khôi phục tối đa, vì hư hỏng thực tế, lóa sáng và nhòe mờ cũng tiêu tốn "ngân sách" sửa lỗi.
- Không bao giờ che ba ô định vị lớn ở các góc hoặc vùng trống quanh mã.
- Giữ độ tương phản mạnh giữa mã và nền.
Để có thêm lời khuyên thiết kế, hãy đọc bài viết về nguyên tắc thiết kế mã QR.
Những gì sửa lỗi không thể khắc phục
Sửa lỗi rất mạnh, nhưng có giới hạn. Nó không cứu được một mã có:
- Độ tương phản kém, như xám nhạt trên trắng hoặc sẫm trên sẫm
- Không có vùng trống, vì mã in sát ngay các hình ảnh khác
- Mẫu định vị ở góc bị hỏng
- Ô vuông quá nhỏ để phân giải ở khoảng cách quét
- Bị biến dạng nặng, ví dụ trên bề mặt cong nhiều
- Bị phản chiếu từ lớp cán bóng làm mờ trắng những vùng lớn
Sửa lỗi cũng không làm mã an toàn hơn. Một mã QR mức H vẫn có thể trỏ tới trang web nguy hiểm, và một nhãn dán lừa đảo dán đè lên mã thật vẫn quét hoàn hảo. Nếu không chắc về một mã, hãy quét mã QR trực tuyến bằng QR-TH trước để xem trang đích trước khi mở bất cứ thứ gì.
FAQ
Mức sửa lỗi mã QR nào là tốt nhất?
Không có mức nào tốt nhất cho mọi trường hợp. M là mặc định tốt cho hầu hết ấn phẩm in, còn H phù hợp với mã có logo và điều kiện ngoài trời hoặc khắc nghiệt. Hãy chọn theo nơi mã sẽ được dùng.
Mức sửa lỗi cao hơn có làm mã QR to hơn không?
Với cùng dữ liệu thì có. Nó thêm nhiều module hơn, nên hoặc mã in ra lớn hơn, hoặc từng ô vuông nhỏ đi.
Có thể đặt logo lên bất kỳ mã QR nào không?
Chỉ khi có đủ khả năng sửa lỗi để bù cho vùng bị che, vì vậy hãy dùng Q hoặc H. Giữ logo nhỏ, tránh xa các ô vuông góc, và luôn thử trước khi in.
Có thể đổi mức sửa lỗi sau khi in không?
Không. Mức sửa lỗi là một phần của hình mẫu đã in. Muốn đổi, bạn phải tạo và in một mã mới.
Muốn có một mã luôn đọc được trong điều kiện thực tế? Hãy tạo mã bằng trình tạo mã QR miễn phí của QR-TH, giữ nội dung ngắn gọn và quét thử trên vài điện thoại trước khi in.