Bỏ qua, tới nội dung chính

Mức sửa lỗi L, M, Q, H và cách chọn để chèn logo

Mức sửa lỗi của mã QR không phải thanh trượt “chất lượng”, dù nhiều công cụ tạo mã bày nó ra như vậy. Nó là lượng dữ liệu thừa được cố tình nhét thêm vào mã để sau này khôi phục phần bị mất — và bạn trả giá cho phần thừa đó bằng một mã dày ô hơn.

Bốn mức được đặt tên L, M, Q, H, khôi phục lần lượt khoảng 7%, 15%, 25% và 30% dữ liệu bị hỏng. Mức càng cao thì mã càng chịu được xước, bẩn, và càng cho phép chèn logo che giữa; đổi lại cùng một nội dung sẽ đẩy mã lên phiên bản cao hơn, lưới dày hơn, và in nhỏ khó quét hơn.

Chọn đúng mức là một đánh đổi thật, không có đáp án chung cho mọi trường hợp. Bài này đưa ra bảng khôi phục kèm phần dung lượng bị mất, cách chọn theo nơi mã sẽ sống, và một giới hạn mà mức H cũng không cứu nổi. Nếu bạn đang định chèn logo vào giữa mã QR, phần thứ ba là phần cần đọc kỹ nhất.

Bốn mức khôi phục được bao nhiêu, và mất bao nhiêu dung lượng

Mỗi mức đánh đổi giữa khả năng chịu hỏng và sức chứa. Bảng dưới lấy dung lượng ở phiên bản 40 chế độ số làm mốc so sánh, theo đặc tả của Denso Wave — đơn vị phát minh mã QR năm 1994 — và chuẩn ISO/IEC 18004 bản 2015.

Mức Tên đầy đủ Khôi phục được Sức chứa còn lại so với mức L Dùng khi
L Low khoảng 7% 100% Mã hiển thị trên màn hình, môi trường sạch
M Medium khoảng 15% khoảng 79% Mặc định cho hầu hết bản in trong nhà
Q Quartile khoảng 25% khoảng 56% Có logo nhỏ, mã dán nơi hay va chạm
H High khoảng 30% khoảng 43% Logo lớn, ngoài trời, bao bì, tem dễ trầy

Cột thứ tư là cột người ta hay bỏ qua. Nhảy từ M lên H không chỉ “an toàn hơn” — nó cắt gần một nửa sức chứa, nên một chuỗi vốn vừa khít ở mức M sẽ đẩy mã lên vài phiên bản khi chuyển sang H.

Cái giá của sửa lỗi là mã dày hơn

Dữ liệu thừa chiếm chỗ trong cùng một lưới, nên mã phải nở ra để chứa cả nội dung lẫn phần thừa. Ví dụ cụ thể: một đường link 60 ký tự ở mức M vừa vặn phiên bản 4 với lưới 33×33 ô; cùng link đó ở mức H cần phiên bản 6, lưới 41×41 ô.

Chênh 8 ô mỗi cạnh nghe ít, nhưng in cùng khổ 3 cm thì mỗi ô tụt từ 0,9 mm xuống 0,73 mm. Camera điện thoại đọc được cả hai, chỉ là cái thứ hai chậm hơn và kém chắc chắn hơn trong điều kiện thiếu sáng. Đây là lý do tôi không mặc định chọn H cho mọi thứ dù nghe có vẻ an toàn nhất.

Muốn giữ cả hai đầu, hãy cắt nội dung trước rồi mới nâng mức sửa lỗi. Rút link từ 120 ký tự xuống 50 ký tự tiết kiệm nhiều ô hơn hẳn so với việc hạ mức từ H xuống Q theo bảng dung lượng từng phiên bản.

Chọn mức nào khi chèn logo vào giữa

Dùng mức Q nếu logo che dưới 15% diện tích mã, dùng mức H nếu che 15–25%. Trên 25% thì đừng chèn, kể cả ở mức H — phần dư 30% là ngưỡng lý thuyết cho toàn bộ mã, còn logo tập trung ở giữa gây mất dữ liệu dồn cục nên khó khôi phục hơn so với xước rải rác.

Ba nguyên tắc thực hành khi đặt logo: giữ hình vuông hoặc tròn ở đúng tâm mã; chừa một viền trắng mỏng quanh logo để camera tách được ranh giới; và không để logo chạm vào bất kỳ ô vuông định vị nào. Logo trong suốt đè lên các ô đen là kiểu sai hay gặp nhất, vì camera vẫn thấy nhiễu chứ không thấy trắng.

Nói thẳng một chuyện: mã có logo luôn quét chậm hơn mã không logo, dù bao nhiêu phần trăm. Với mã dùng để nhận tiền ở quầy, tôi khuyên bỏ logo. Với mã in trên tờ rơi hay danh thiếp — nơi thương hiệu quan trọng và khách không vội — thì chèn thoải mái.

Chọn mức theo nơi mã sẽ sống

Môi trường quyết định nhiều hơn sở thích. Mã hiển thị trên màn hình máy tính hoặc trong email thì mức L là đủ, vì không có gì làm hỏng nó. Mã in trên giấy đặt trong nhà — menu, tờ rơi, bảng để bàn — mức M chạy tốt suốt nhiều năm.

Từ mức Q trở lên là dành cho mã chịu va chạm thật: tem dán trên thùng hàng bị cọ xát khi vận chuyển, nhãn trên chai lọ bị tay ướt chạm vào, mã dán ở mép bàn nơi khách hay tì tay. Mức H dành cho ngoài trời, bao bì thực phẩm, và những chỗ bạn biết trước là mã sẽ bẩn — mã trong nhà xưởng, mã trên thùng gửi kho.

Mức H không cứu được ba ô định vị

Sửa lỗi chỉ áp dụng cho vùng dữ liệu, không áp dụng cho các mẫu định vị. Ba ô vuông lớn ở ba góc là thứ camera dùng để nhận ra “đây là một mã QR”; mất một ô là máy không tìm thấy mã để mà bắt đầu đọc, dù 99% phần còn lại còn nguyên và mức sửa lỗi đang ở H.

Điều này giải thích một hiện tượng khá phổ biến: tấm bảng QR bị bong một góc vẫn nhìn “gần như nguyên vẹn” nhưng không ai quét được nữa. Cùng lý do đó, vùng trắng bao quanh mã không được cắt, và đừng đặt logo hay chữ ký đè lên góc mã. Chi tiết về vai trò từng thành phần nằm ở bài cấu tạo và nguyên lý hoạt động của mã QR.

Mất một ô góc là mã chết.

Reed–Solomon làm việc đó thế nào

Thuật toán chia dữ liệu thành các khối, tính thêm một số khối kiểm tra từ chính dữ liệu gốc, rồi trộn tất cả rải đều khắp mã. Khi giải mã, máy so các khối kiểm tra với dữ liệu đọc được để xác định chỗ nào sai và suy ngược lại giá trị đúng.

Việc rải đều là chi tiết quan trọng: nhờ nó mà một vết xước dài không xóa trọn một khối dữ liệu mà chỉ làm hỏng vài bit ở nhiều khối khác nhau — dễ khôi phục hơn nhiều. Cùng thuật toán này từng được dùng trong đĩa CD và truyền tin vệ tinh, những nơi dữ liệu tới đích không bao giờ nguyên vẹn.

Chốt lại

Mức sửa lỗi mua khả năng chịu hỏng bằng cách hy sinh sức chứa. Mức H cắt gần một nửa dung lượng so với mức L, và không mức nào cứu được ba ô định vị ở góc. Nếu phải chọn nhanh, mức M cho mọi thứ in trong nhà và mức Q khi có logo là hai lựa chọn đúng trong phần lớn trường hợp.

Theo tôi, sai lầm hay gặp không phải chọn mức quá thấp mà là chọn quá cao rồi lại in nhỏ. Mã mức H dày ô, in 2,5 cm trên tem sản phẩm, dán lên bề mặt hơi cong — cộng lại thành một mã không ai quét nổi, dù trên màn hình nó trông rất “an toàn”. Khi đã chốt mức, hãy tạo mã có logo rồi tải về ở dạng vector và in thử một bản ở đúng khổ trước khi đặt số lượng lớn — mười phút thử tiết kiệm cả lô in.

Thắc mắc thường gặp về mức sửa lỗi

Mức sửa lỗi nào là mặc định khi tạo mã QR

Phần lớn công cụ để mặc định ở mức M, đủ cho bản in thông thường trong nhà. Nếu công cụ không cho chọn, gần như chắc chắn bạn đang dùng mức M.

Chọn mức H thì mã có quét nhanh hơn không

Ngược lại. Mức H làm mã dày ô hơn ở cùng lượng nội dung, nên camera cần lấy nét kỹ hơn và mất thêm chút thời gian. Mức cao chỉ giúp khi mã đã bị hỏng, không giúp gì với mã còn nguyên.

Mã QR bị che bao nhiêu phần trăm thì hết quét được

Tùy mức sửa lỗi và tùy phần bị che nằm ở đâu. Ở mức H, mã chịu được khoảng 30% diện tích hỏng nếu hỏng rải rác trong vùng dữ liệu. Nhưng chỉ cần mất một ô vuông định vị ở góc là hỏng hoàn toàn, dù tỉ lệ che chưa tới 5%.

Có cần tăng mức sửa lỗi khi in mã QR khổ lớn không

Không cần, và thường là không nên. Mã khổ lớn có mỗi ô rộng nên đã dễ quét sẵn; tăng mức sửa lỗi chỉ làm dày lưới mà chẳng giải quyết vấn đề nào. Với khổ lớn, thứ đáng đầu tư là chất liệu bền màu và kích thước đúng theo khoảng cách quét.

Bài viết liên quan

Mã QR tạo ở đây không hết hạn

Toàn bộ mã trên taomaqrcode.com là mã QR tĩnh: nội dung nằm ngay trong hình, không đi qua máy chủ trung gian nên dùng được mãi và không giới hạn lượt quét.

Đọc thêm mã QR tĩnh và mã QR động khác nhau thế nàomã QR có hết hạn không.