Không có một mức sửa lỗi QR đúng cho mọi tem. Tem nhỏ, sạch, dữ liệu ngắn thường dùng M. Bề mặt cong hoặc dễ trầy xước nên lên Q. Mã có logo ở giữa nên dùng H và phải quét thử bản in thật. Mức cao hơn chịu lỗi tốt hơn nhưng làm mã dày hơn, nên ô mã phải in nhỏ đi nếu kích thước tem không đổi.
Mức sửa lỗi của mã QR là gì?
Mức sửa lỗi là phần dữ liệu dự phòng được ghi kèm trong mã QR để máy quét vẫn đọc ra nội dung khi một phần mã bị bẩn, trầy, mờ hoặc bị che. QR có bốn mức, ký hiệu L, M, Q, H, tương ứng với tỷ lệ gần đúng của các từ mã (codeword) có thể khôi phục.
| Mức | Khả năng khôi phục (xấp xỉ) | Hợp với |
|---|---|---|
| L | khoảng 7% | Môi trường sạch, dữ liệu dài, mã hiển thị trên màn hình |
| M | khoảng 15% | Mức dùng phổ biến nhất, in sạch trên giấy hoặc decal |
| Q | khoảng 25% | Môi trường dễ bẩn, dễ mòn, bề mặt không phẳng |
| H | khoảng 30% | Mã có logo, hoặc nơi hao mòn nhiều |
Các con số trên khớp giữa tài liệu của Seagull Scientific (phần mềm thiết kế nhãn) và hướng dẫn của Deloitte QR. Trang của Denso Wave, đơn vị phát minh ra mã QR, cho biết mức M là mức được chọn thường xuyên nhất, và gợi ý Q hoặc H cho môi trường nhà máy nơi mã dễ bị bẩn, còn L có thể chọn ở nơi sạch với lượng dữ liệu lớn.
Cần hiểu đúng một điều: "30%" không có nghĩa bạn được thoải mái che 30% diện tích mã. Đó là tỷ lệ từ mã có thể được dựng lại về mặt lý thuyết, và nó chỉ đúng khi phần hư hỏng không rơi vào những vùng quan trọng như ba ô định vị ở góc. Vì vậy trong thực tế phải chừa biên độ an toàn, và người ta luôn kết luận bằng cách quét thử.
Vì sao mức sửa lỗi cao hơn không phải lúc nào cũng tốt hơn?
Mức sửa lỗi cao thêm dữ liệu dự phòng vào cùng một nội dung. Mã vì thế phải có nhiều ô hơn. Denso Wave nêu rõ rằng mức cao hơn làm tăng lượng dữ liệu, kéo theo kích thước của mã QR lớn hơn.
Hướng dẫn của Deloitte QR đưa một ví dụ cụ thể: với cùng một đường dẫn, mức L cho mã lưới 25 x 25, còn mức H cho mã lưới 29 x 29. Nghe thì chỉ chênh vài ô, nhưng trên tem nhỏ, nếu chiều rộng tem cố định thì mỗi ô sẽ nhỏ đi tương ứng. Với đường dẫn dài hơn, chênh lệch còn lớn hơn.
Đây là đánh đổi cốt lõi khi in tem nhỏ. Một mã chịu lỗi tốt nhưng ô quá bé sẽ khó quét hơn một mã chịu lỗi vừa phải mà ô to, rõ. Khả năng sửa lỗi chỉ cứu được những hư hỏng xảy ra sau khi in. Nó không cứu được lỗi in ra ô quá nhỏ ngay từ đầu, vì khi đó máy quét không phân biệt nổi ô đen và ô trắng.
Tem nhỏ: chọn mức nào và rút gọn gì trước?
Với tem nhỏ in sạch trên giấy hoặc decal, đặt mức M làm điểm xuất phát. Nếu tem sẽ qua tay nhiều khâu, dễ cọ xát, thì cân nhắc Q. Chỉ lên H khi thật sự cần, ví dụ có logo.
Với tem nhỏ, thứ nên tối ưu trước mức sửa lỗi là độ dài dữ liệu. Bài hướng dẫn trên DEV Community lưu ý dữ liệu dài làm ô mã nhỏ lại và khó đọc hơn với camera. Cách xử lý thực tế:
- Mã hoá một đường dẫn ngắn thay vì nhét cả chuỗi thông tin vào mã. Thông tin chi tiết nằm ở trang đích, mã chỉ cần trỏ tới đó.
- Bỏ tham số theo dõi không cần thiết khỏi đường dẫn.
- Giữ nguyên biên trắng xung quanh (quiet zone). Nguồn trên khuyến nghị tối thiểu bằng bề rộng bốn ô ở cả bốn phía, không để mã chạm nền rối hoặc chữ.
Về kích thước, Denso Wave khuyến nghị in mã lớn nhất có thể trong vùng in cho phép, và để vận hành ổn định thì mỗi ô nên gồm từ 4 chấm in trở lên. Ví dụ trên trang này: máy in nhiệt 300 dpi cấu hình 5 chấm cho ô khoảng 0,42 mm. Trang cũng nhắc phải cân nhắc máy quét sẽ dùng trước khi chọn kích thước ô, vì độ phân giải của đầu đọc quyết định ô nhỏ nhất đọc được. In mịn hơn giới hạn đó là vô ích.
Bài DEV Community nêu mốc khoảng 2 x 2 cm là tối thiểu cho mã in để quét gần. Hãy xem đây là con số tham khảo của một nguồn, không phải chuẩn bắt buộc. Máy quét công nghiệp và điện thoại có giới hạn khác nhau, nên cách chắc chắn là quét thử đúng thiết bị khách hàng sẽ dùng.
Khi có logo ở giữa mã, có bắt buộc dùng mức H không?
Về thực tế, có. Logo che đi một phần mã, nên cần biên dự phòng lớn nhất. Hướng dẫn của Deloitte QR khuyên đặt logo ở chính giữa và dùng mức H để tối đa kích thước logo; cùng nguồn cho biết ở mức H logo có thể che tới khoảng 30% bề mặt mã. Bài trên DEV Community đưa con số gần giống: giữ logo trong khoảng 20 đến 30% diện tích mã và tuyệt đối không che ba ô định vị ở góc.
Tôi khuyên đọc những con số này như trần lý thuyết, không phải mục tiêu thiết kế. Có ba lý do để giữ logo nhỏ hơn đáng kể:
- Phần dự phòng của mức H còn phải dành cho hao mòn thật: trầy, nhăn, bẩn, mực lem. Dùng hết nó cho logo thì không còn gì cho các hư hỏng sau này.
- Trên tem nhỏ, mỗi ô vốn đã bé, nên sai lệch in nhỏ cũng đủ làm hỏng những ô còn lại quanh logo.
- Máy quét rẻ hoặc cũ chịu lỗi kém hơn điện thoại đời mới.
Nếu tem quá nhỏ, cân nhắc bỏ logo khỏi mã và đặt thương hiệu cạnh mã. Một mã sạch ở mức M hay Q thường đáng tin cậy hơn một mã chen logo ở mức H trên diện tích chật. Logo có màu sắc cũng nên đủ tương phản với nền, vì mã in màu nhạt đọc kém hơn đen trên trắng.
In trên bề mặt cong: Q hay H, và còn gì cần chú ý?
Các nguồn tôi đã đọc không nói gì về bề mặt cong, nên phần này là nhận định kỹ thuật chung, không phải trích dẫn từ tiêu chuẩn.
Bề mặt cong gây ra hai kiểu lỗi khác nhau. Kiểu thứ nhất là méo hình học: các ô ở mép bị nén lại, khó tách. Kiểu thứ hai là phản chiếu và loá ở chai, lon, màng co, che mất từng mảng ô. Mức sửa lỗi giúp tốt với kiểu thứ hai (mất cục bộ), nhưng giúp ít với kiểu đầu nếu độ méo lớn đến mức máy quét không dựng nổi lưới ô.
Từ đó rút ra thứ tự ưu tiên:
- Giảm độ cong mã phải chịu: đặt mã trên phần có bán kính lớn nhất của bao bì, và đặt mã sao cho chiều rộng của nó chạy dọc theo trục thẳng của chai hoặc lon, không vòng theo chu vi.
- Làm mã nhỏ lại hơn bề mặt, đừng để mã ôm quanh gần hết chu vi.
- Tăng kích thước ô trước, rồi mới tăng mức sửa lỗi.
- Chọn Q làm mặc định cho bề mặt cong. Lên H nếu bao bì còn có nguy cơ trầy xước, ngưng tụ hơi nước hoặc loá mạnh, miễn là ô vẫn đủ lớn.
- Dùng lớp phủ mờ thay vì bóng ở vị trí in mã nếu quy trình cho phép, để giảm loá.
Và như mọi trường hợp khác: quét thử bản in thật trên bao bì thật, ở nhiều góc nghiêng, không quét trên màn hình bản thiết kế.
Bảng chọn nhanh theo tình huống
| Tình huống | Mức gợi ý | Việc cần làm kèm theo |
|---|---|---|
| Tem nhỏ, in sạch, đường dẫn ngắn | M | Rút gọn dữ liệu, giữ biên trắng bốn ô |
| Tem nhỏ, qua nhiều khâu vận chuyển, dễ cọ xát | Q | Kiểm tra ô còn đủ lớn sau khi tăng mức |
| Bề mặt cong (chai, lọ, ống) | Q | Giảm độ cong mã chịu, tăng kích thước ô |
| Có logo ở giữa | H | Logo nhỏ hơn mức trần, không che ô định vị |
| Bề mặt cong và có logo | H, nhưng cân nhắc bỏ logo | Quét thử nhiều góc nghiêng |
| Mã hiển thị trên màn hình, dữ liệu dài | L hoặc M | Kiểm tra trên nhiều thiết bị |
Bảng này là điểm khởi đầu. Nếu một phương án quét tốt nhất quán trên nhiều thiết bị thì chọn phương án có mức sửa lỗi thấp hơn để ô to hơn, trừ khi bạn có lý do cụ thể về hao mòn hoặc logo.
Quy trình kiểm tra trước khi in hàng loạt
Phần lớn sự cố mã QR không đọc được xuất hiện ở khâu in số lượng lớn, khi đã quá muộn để sửa. Một quy trình ngắn giúp tránh điều đó:
- In thử vài chục tem trên đúng vật liệu, đúng máy in và đúng mực của lô sản xuất. Bản in giấy văn phòng không đại diện cho decal chuyên dụng.
- Quét bằng nhiều điện thoại và ít nhất một máy quét công nghiệp nếu chuỗi cung ứng của bạn có dùng. Deloitte QR và DEV Community đều nhấn mạnh việc quét thử trên nhiều thiết bị và ứng dụng, đặc biệt sau khi thêm logo.
- Tạo điều kiện xấu có chủ ý: quét ở góc nghiêng, ánh sáng yếu, tem hơi nhăn hoặc bị cọ nhẹ.
- Ghi lại cấu hình đã chốt: phiên bản mã, mức sửa lỗi, kích thước ô, kích thước tem. Khi đổi nhà in hoặc vật liệu, chạy lại bước 1.
Với doanh nghiệp làm truy xuất nguồn gốc, mã QR trên tem thường trỏ tới một trang tra cứu theo lô hoặc theo sản phẩm. Dữ liệu chi tiết nằm ở trang đích, nên nội dung trong mã có thể rất ngắn. Cách làm này vừa giữ mã thưa, ô to, vừa cho phép bạn cập nhật thông tin sau khi đã in. Các nền tảng truy xuất như VNCX thiết kế theo hướng đó: mã chỉ mang định danh, thông tin nằm trên hệ thống.
Sai lầm hay gặp khi chọn mức sửa lỗi
Ba sai lầm lặp lại nhiều nhất. Thứ nhất là luôn bật H "cho chắc" mà không nhìn đến việc ô co nhỏ trên tem bé. Thứ hai là coi con số 30% như hạn mức che mã, rồi để logo chiếm gần hết biên dự phòng. Thứ ba là chỉ quét thử trên màn hình, không quét bản in thật trên bao bì thật.
Một điểm khác cần nhớ: mức sửa lỗi không bù cho biên trắng bị thiếu hay độ tương phản kém. Biên trắng bị cắt, nền xám hay mực nhạt làm hỏng việc nhận diện mã ngay từ đầu, trước cả khi cơ chế sửa lỗi được dùng đến.
Câu hỏi thường gặp
Tem QR nhỏ nên dùng mức sửa lỗi nào?
Phần lớn trường hợp dùng M là hợp lý: in sạch, ô vẫn đủ lớn. Nếu tem dễ cọ xát thì dùng Q, và nên rút gọn đường dẫn trước khi nghĩ đến việc tăng mức.
Có logo ở giữa mã QR thì phải dùng mức H không?
Nên dùng H, vì logo che mất một phần mã và cần biên dự phòng lớn nhất. Giữ logo nhỏ hơn mức trần các nguồn nêu (khoảng 20 đến 30% diện tích), không che ô định vị ở góc, và quét thử bản in thật.
Mức sửa lỗi 30% có nghĩa là che được 30% mã không?
Không hẳn. Đó là tỷ lệ từ mã có thể khôi phục về lý thuyết, và chỉ đúng khi phần mất không rơi vào các vùng quan trọng. Trong thực tế hãy chừa biên an toàn và dựa vào kết quả quét thử.
Tăng mức sửa lỗi có làm mã QR khó quét hơn không?
Có thể, nếu kích thước tem cố định. Mức cao hơn làm mã có nhiều ô hơn (ví dụ cùng một đường dẫn, mức L cho lưới 25 x 25 còn mức H cho lưới 29 x 29), nên mỗi ô nhỏ đi và có thể vượt giới hạn đọc của máy quét.
In mã QR trên chai hoặc lon nên chú ý gì?
Giảm độ cong mã phải chịu bằng cách đặt mã trên phần ít cong, tăng kích thước ô, và dùng ít nhất mức Q. Sau đó quét thử trên bao bì thật ở nhiều góc nghiêng.
Nguồn tham khảo

Tác giả
VNCX Team
Bắt đầu với VNCX
Cần tư vấn giải pháp truy xuất nguồn gốc?
Đội ngũ VNCX sẵn sàng hỗ trợ bạn triển khai truy xuất nguồn gốc



