Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Nếu chỉ nhìn bằng mắt thường, mã QR dường như chẳng khác gì một ma trận gồm hàng trăm ô vuông đen trắng được sắp xếp một cách ngẫu nhiên. Thế nhưng phía sau những ô vuông tưởng như hỗn loạn ấy lại là cả một hệ thống tiêu chuẩn hóa cực kỳ chặt chẽ, kết hợp giữa mã hóa dữ liệu, hình học, xử lý ảnh và lý thuyết sửa lỗi.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Một mã QR có thể chứa một địa chỉ website, số điện thoại, thông tin liên hệ, chuỗi văn bản hoặc dữ liệu nhị phân. Camera điện thoại chỉ cần nhìn vào hình vuông đó trong thời gian rất ngắn là có thể xác định vị trí, nhận diện cấu trúc, sửa những lỗi do ảnh bị méo hoặc mã bị hư hỏng rồi khôi phục dữ liệu ban đầu.

Điều thú vị hơn là QR Code không phải một định dạng do mỗi nhà sản xuất tự nghĩ ra. QR Code đã được chuẩn hóa quốc tế và hiện được quy định bởi ISO/IEC 18004:2024, tiêu chuẩn dành riêng cho QR Code, bao gồm đặc tính ký hiệu, phương thức mã hóa dữ liệu, cấu trúc symbol, kích thước, sửa lỗi, thuật toán giải mã tham chiếu và yêu cầu chất lượng khi sản xuất.

Bài viết này sẽ đi từ những thứ dễ hiểu nhất đến phần “ruột” của QR Code, để thấy rằng đằng sau một hình vuông đen trắng nhỏ bé thực chất là một cỗ máy mã hóa dữ liệu khá tinh vi.

QR Code ra đời như thế nào?

QR là viết tắt của Quick Response, tức “phản hồi nhanh”. Công nghệ này được DENSO WAVE phát triển tại Nhật Bản vào năm 1994 trong bối cảnh ngành công nghiệp ô tô cần một phương pháp đánh dấu và theo dõi linh kiện hiệu quả hơn.

Các loại mã vạch một chiều truyền thống chủ yếu lưu trữ dữ liệu theo một chiều ngang. Khi lượng dữ liệu tăng lên, mã phải trở nên dài hơn. QR Code giải quyết vấn đề này bằng cách sử dụng mã ma trận hai chiều, cho phép dữ liệu được phân bố theo cả chiều ngang lẫn chiều dọc.

QR Code sau đó trải qua nhiều bước tiêu chuẩn hóa. DENSO WAVE cho biết QR Code được chấp nhận thành tiêu chuẩn quốc tế ISO vào tháng 6/2000. DENSO cũng công khai các thông số kỹ thuật của QR Code nhằm thúc đẩy việc sử dụng rộng rãi công nghệ này.

Đến nay, QR Code đã thoát khỏi phạm vi nhà máy và trở thành một trong những phương thức truyền dữ liệu trực quan phổ biến nhất. Chúng ta có thể bắt gặp QR Code trên bao bì, hóa đơn, poster, danh thiếp, vé điện tử, menu nhà hàng, thanh toán và vô số sản phẩm kỹ thuật số khác.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Tiêu chuẩn QR Code hiện nay là gì?

Nếu muốn nghiên cứu QR Code một cách nghiêm túc, tài liệu quan trọng nhất cần biết là ISO/IEC 18004.

Phiên bản hiện hành được ISO công bố là ISO/IEC 18004:2024, Edition 4. Tiêu chuẩn này quy định gần như toàn bộ nền tảng kỹ thuật của QR Code, từ cách dữ liệu được mã hóa cho tới cách một symbol được hình thành và cách decoder tham chiếu giải mã nó.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Điều đáng chú ý là tiêu chuẩn này không chỉ nói về “hình dạng của QR”. Nó bao phủ nhiều lớp kỹ thuật khác nhau, gồm:

  • Phương thức mã hóa ký tự.
  • Định dạng symbol.
  • Đặc tính kích thước.
  • Cấu trúc module.
  • Mã sửa lỗi.
  • Thuật toán giải mã tham chiếu.
  • Yêu cầu chất lượng sản xuất.
  • Các tham số mà ứng dụng có thể lựa chọn.

Nói cách khác, nếu muốn tự viết một QR Code generator hoặc decoder mà không phụ thuộc vào thư viện có sẵn, ISO/IEC 18004 chính là tài liệu nền tảng cần nghiên cứu.

Tuy nhiên, có một cập nhật đáng chú ý cho những ai nghiên cứu QR trong năm 2026: ISO hiện đã bắt đầu phát triển Working Draft của thế hệ tiếp theo, được gọi là ISO/IEC WD 18004, Edition 5. Đây mới chỉ là bản dự thảo đang phát triển và sẽ thay thế 18004:2024 trong tương lai, chứ chưa phải tiêu chuẩn chính thức thay thế bản 2024.

Một mã QR có kích thước bao nhiêu?

Thứ đầu tiên cần hiểu là QR Code không có một kích thước cố định.

QR Code được chia thành các Version, từ Version 1 đến Version 40 đối với QR Code thông thường. Version càng lớn thì ma trận càng lớn và có thể chứa nhiều dữ liệu hơn.

Version 1 có kích thước:

21 × 21 modules

Mỗi khi tăng một Version, mỗi cạnh tăng thêm 4 modules. Vì vậy:

Version 2 = 25 × 25

Version 3 = 29 × 29

...

Version 40 = 177 × 177

Ở đây cần phân biệt module với pixel.

Một module là một ô logic của QR Code. Khi xuất thành hình ảnh, mỗi module có thể được biểu diễn bằng nhiều pixel.

Ví dụ, một QR 21 × 21 module không có nghĩa hình ảnh cuối cùng chỉ rộng 21 pixel. Nếu mỗi module được render thành 20 × 20 pixel thì phần ma trận sẽ rộng 420 pixel.

Chính vì vậy, khi nói QR Code có “kích thước”, cần xác định đang nói về kích thước ma trận hay kích thước vật lý khi in.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

QR Code chứa được bao nhiêu dữ liệu?

Dung lượng QR phụ thuộc vào nhiều yếu tố cùng lúc:

Version + loại dữ liệu + Error Correction Level

Kiểu dữ liệu Dung lượng tối đa
Numeric 7.089 ký tự
Alphanumeric 4.296 ký tự
8-bit byte 2.953 byte
Kanji 1.817 ký tự

Đây là các giới hạn tối đa của QR Code Version 40 trong điều kiện phù hợp.

Điều này cũng giải thích tại sao hai chuỗi có cùng số lượng ký tự nhưng có thể cần kích thước QR khác nhau.

Ví dụ một chuỗi chỉ gồm chữ số có thể được mã hóa hiệu quả hơn một chuỗi Unicode phức tạp. QR Code có những mode mã hóa khác nhau để tận dụng đặc điểm của dữ liệu.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Bốn mode mã hóa quan trọng

Numeric Mode

Dùng cho dữ liệu số từ 0 đến 9.

Đây là mode rất hiệu quả vì QR có thể gom nhiều chữ số thành nhóm rồi biểu diễn bằng số bit ít hơn so với việc xử lý từng ký tự độc lập.

Alphanumeric Mode

Dùng cho một tập ký tự giới hạn gồm chữ cái, chữ số và một số ký hiệu đặc biệt.

Nó cũng tối ưu hơn byte mode đối với loại dữ liệu phù hợp.

Byte Mode

Dùng để chứa dữ liệu byte tổng quát.

Đây là mode thường gặp khi QR chứa URL hoặc văn bản được biểu diễn dưới dạng byte. Tuy nhiên, cần cẩn thận với Unicode vì số byte không nhất thiết bằng số ký tự.

Ví dụ một ký tự Unicode có thể cần nhiều byte trong UTF-8.

Kanji Mode

Đây là mode được thiết kế để mã hóa ký tự Kanji hiệu quả hơn.

Việc QR Code có các mode khác nhau là một trong những lý do cùng một lượng nội dung nhưng QR có thể có kích thước khác nhau tùy cách encoder lựa chọn phương pháp mã hóa.

Bên trong một QR Code có gì?

Đây là phần bắt đầu trở nên thú vị.

Những ô vuông đen trắng trong QR Code không phải toàn bộ đều là dữ liệu.

Một symbol QR bao gồm nhiều vùng có chức năng khác nhau.

Finder Pattern

Ba hình vuông lớn nằm ở góc trên trái, trên phải và dưới trái là Finder Pattern.

Chúng là một trong những thành phần quan trọng nhất đối với quá trình nhận diện QR.

Khi camera nhìn thấy ba cấu trúc này, thuật toán có thể xác định rằng khu vực trước mặt rất có khả năng chứa một QR Code và từ đó suy ra vị trí, orientation cũng như hình học của symbol.

Timing Pattern

Giữa các vùng chức năng có những chuỗi module đen trắng xen kẽ gọi là Timing Pattern.

Nó giúp decoder xác định lưới module của QR Code.

Nói đơn giản, nếu Finder Pattern giúp máy “tìm thấy và định hướng” QR thì Timing Pattern giúp nó hiểu “cái lưới này được chia như thế nào”.

Alignment Pattern

Khi QR lớn hơn, các Alignment Pattern được bổ sung.

Chúng giúp hệ thống xử lý những trường hợp QR bị biến dạng phối cảnh, chẳng hạn khi chúng ta chụp một tờ giấy từ góc xiên hoặc QR được in trên một bề mặt không hoàn toàn phẳng.

Đây là một trong những lý do QR có thể hoạt động tốt ngoài đời thực thay vì chỉ hoạt động khi được chụp chính diện hoàn hảo.

Format Information

Format Information chứa những thông tin cần thiết cho quá trình giải mã, trong đó có Error Correction LevelMask Pattern được sử dụng.

Version Information

Với những Version đủ lớn, QR còn chứa thông tin về Version của symbol.

Điều này giúp decoder biết chính xác cấu trúc ma trận mà nó đang xử lý.

Data Region

Phần còn lại chứa dữ liệu và mã sửa lỗi.

Nhưng ngay cả ở đây cũng chưa phải kiểu “mỗi ô đen tương ứng một bit của văn bản”. Dữ liệu đã trải qua nhiều bước xử lý trước khi được đặt vào ma trận.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Quiet Zone: vùng trắng tưởng như vô dụng nhưng cực kỳ quan trọng

Nếu nhìn một QR Code chuẩn, bác sẽ thấy xung quanh nó thường có một vùng trắng.

Đây là Quiet Zone.

Nó không chứa dữ liệu. Nhiệm vụ của nó là tạo khoảng cách thị giác và giúp hệ thống nhận diện phân biệt QR Code với những hình ảnh, đường nét hoặc ký hiệu xung quanh.

Vùng Quiet Zone tối thiểu thường tương ứng với 4 modules.

Đây là lý do những QR Code bị thiết kế sát mép, bị chữ hoặc họa tiết đè vào vùng trắng xung quanh có thể trở nên khó đọc.

Một QR đẹp chưa chắc là một QR tốt. Với QR Code, đôi khi khoảng trắng mới là thứ giúp cả hệ thống hoạt động.

Error Correction: tại sao QR bị rách vẫn quét được?

Đây có lẽ là “siêu năng lực” nổi tiếng nhất của QR Code.

Một mã QR có thể bị bẩn, trầy xước hoặc mất một phần nhưng điện thoại vẫn đọc được.

Bí mật nằm ở Error Correction.

QR Code sử dụng Reed-Solomon Code để tạo dữ liệu sửa lỗi. DENSO WAVE giải thích rằng mã Reed-Solomon được thêm vào dữ liệu gốc nhằm cho phép phục hồi dữ liệu khi symbol bị hư hỏng.

Level Khả năng phục hồi xấp xỉ
L 7%
M 15%
Q 25%
H 30%

Các con số này thường được gọi là tỷ lệ phục hồi, nhưng cần hiểu chính xác rằng đây là tỷ lệ liên quan đến codeword, không phải tỷ lệ diện tích hình ảnh.

Một hiểu lầm phổ biến là: “QR Level H cho phép che logo 30% diện tích”. Cách hiểu này quá đơn giản.

DENSO giải thích rằng tỷ lệ sửa lỗi được tính dựa trên tổng số codeword của QR. Một codeword của QR có độ dài 8 bit, và Reed-Solomon hoạt động ở cấp độ codeword/byte. Vì vậy việc che một vùng hình ảnh cụ thể không thể đơn giản quy đổi thành “che X% diện tích là vẫn quét được”.

Hơn nữa, vị trí phần bị che cũng rất quan trọng.

Che một vùng chứa Finder Pattern có thể nguy hiểm hơn nhiều so với việc mất một phần Data Region.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Reed-Solomon thực chất làm gì?

Có thể hình dung đơn giản thế này.

Ta có một chuỗi dữ liệu gốc:

DATA

Encoder không chỉ lưu DATA. Nó tính toán thêm những giá trị dư thừa:

DATA + ERROR CORRECTION

Nếu sau này một phần DATA bị mất hoặc bị đọc sai, decoder sử dụng phần dư thừa để suy ra dữ liệu ban đầu.

Đây chính là tư tưởng của mã sửa lỗi.

Reed-Solomon đặc biệt phù hợp với QR vì nó có khả năng xử lý các lỗi theo đơn vị symbol/codeword và chịu được những dạng lỗi theo cụm.

Khi tăng Error Correction Level, lượng dữ liệu dư thừa tăng lên.

Kết quả là:

Khả năng chịu lỗi tăng → dung lượng dữ liệu khả dụng giảm hoặc QR phải lớn hơn.

Đây là một sự đánh đổi rất quan trọng trong thiết kế QR.

Mask Pattern là gì?

Nếu chỉ đơn giản đặt dữ liệu nhị phân vào ma trận, QR có thể xuất hiện những vùng chứa quá nhiều module đen hoặc trắng liên tiếp.

Điều này không tốt cho khả năng nhận diện.

Vì vậy QR Code sử dụng Mask Pattern.

Có nhiều pattern mặt nạ khác nhau. Encoder thử các mask phù hợp rồi lựa chọn pattern giúp symbol có đặc tính tốt hơn theo các tiêu chí của tiêu chuẩn.

Về bản chất, mask không mã hóa dữ liệu mới. Nó là một phép biến đổi trên các module dữ liệu nhằm tạo ra hình ảnh QR dễ nhận diện hơn.

Đây là một chi tiết rất hay vì nó cho thấy QR Code được thiết kế không chỉ dựa trên lý thuyết lưu trữ dữ liệu mà còn dựa trên cách camera và thuật toán xử lý ảnh thực sự nhìn thấy symbol.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Vậy điện thoại đọc QR Code như thế nào?

Đây là phần biến một hình ảnh thành dữ liệu.

Một quy trình decoder điển hình có thể được hình dung như sau:

Ảnh camera → xử lý ảnh → tìm Finder Pattern → xác định hình học → hiệu chỉnh phối cảnh → lấy mẫu module → đọc Format/Version → bỏ Mask → lấy Data Codewords → Reed-Solomon → giải mã dữ liệu

Bước 1: Thresholding

Camera ban đầu không nhìn thấy “module đen trắng”.

Nó nhìn thấy một bức ảnh với ánh sáng, bóng, phản xạ, nhiễu camera và nhiều màu sắc khác nhau.

Decoder phải chuyển hình ảnh đó thành dữ liệu mà nó có thể phân biệt vùng sáng và tối.

Bước 2: Tìm Finder Pattern

Thuật toán tìm ba cấu trúc đặc trưng ở các góc QR.

Đây là bước cực kỳ quan trọng.

Khi xác định được ba Finder Pattern, decoder có thể suy ra hình dạng tổng thể của QR.

Bước 3: Hiệu chỉnh phối cảnh

QR ngoài đời hiếm khi xuất hiện hoàn hảo.

Một chiếc poster có thể được chụp từ bên cạnh. Một màn hình có thể phản chiếu ánh sáng. Một QR trên vật thể có thể bị cong.

Vì vậy decoder phải biến một hình tứ giác méo trở lại một lưới vuông chuẩn.

Quá trình này thường sử dụng perspective transformation hoặc homography.

Bước 4: Lấy mẫu từng module

Sau khi biết vị trí và kích thước lưới, decoder xác định từng module là đen hay trắng.

Lúc này hình ảnh thực tế đã được chuyển thành một ma trận nhị phân.

Bước 5: Đọc Format và Version

Decoder cần biết Error Correction Level và Mask Pattern.

Sau đó nó có thể xác định cách giải mã vùng dữ liệu.

Bước 6: Unmask

Nếu QR được tạo bằng một mask pattern, decoder phải áp dụng phép ngược để lấy lại trạng thái dữ liệu ban đầu.

Bước 7: Reed-Solomon

Nếu có những codeword bị đọc sai hoặc mất, Reed-Solomon sẽ cố gắng khôi phục chúng.

Bước 8: Decode

Cuối cùng, chuỗi bit được phân tích dựa trên mode, character count và các quy tắc encoding để khôi phục dữ liệu gốc.

Từ vài trăm ô đen trắng, decoder cuối cùng có thể trả về:

https://example.com

hoặc một chuỗi văn bản, số điện thoại, thông tin liên hệ hay dữ liệu khác.

Vì sao QR Code có thể chèn logo?

Đây là câu hỏi rất phổ biến trong thiết kế đồ họa.

Câu trả lời nằm một phần ở Error Correction.

Khi QR sử dụng mức sửa lỗi cao, nó có nhiều dữ liệu dư thừa hơn. Nếu một số module dữ liệu bị che khuất, decoder có khả năng phục hồi phần bị mất.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Tuy nhiên, thiết kế QR với logo không phải trò “bịt 30% rồi cầu may”.

Một thiết kế QR tùy biến cần đảm bảo Finder Pattern, Alignment Pattern, Timing Pattern, Quiet Zone và các vùng chức năng quan trọng vẫn đủ rõ ràng.

Nếu logo hoặc họa tiết phá vỡ cấu trúc quan trọng, QR có thể không đọc được dù đã chọn Level H.

Đây cũng là lý do những QR “nghệ thuật” đẹp mắt không phải lúc nào cũng là QR tốt về mặt kỹ thuật.

QR Code màu có được không?

Có.

QR Code về bản chất là một hệ thống module có hai trạng thái tương phản, nhưng trong ứng dụng thực tế người ta có thể sử dụng màu miễn sao bộ đọc vẫn phân biệt được foreground và background với độ tương phản đủ tốt.

Vấn đề nằm ở khả năng nhận diện, không phải việc QR bắt buộc phải có màu đen tuyệt đối.

Ví dụ QR xanh đậm trên nền trắng có thể hoạt động tốt.

Nhưng QR màu vàng nhạt trên nền trắng sẽ làm giảm tương phản và khiến camera khó phân biệt module.

Vì vậy khi thiết kế QR màu, nguyên tắc quan trọng hơn việc chọn màu đẹp là đảm bảo contrast, vùng trống và cấu trúc module.

QR Code có phải lúc nào cũng vuông?

QR Code thông thường có cấu trúc vuông.

Nhưng thế giới QR không chỉ có một loại.

Có những biến thể dành cho các trường hợp đặc biệt như Micro QR hoặc rMQR Code.

Micro QR được thiết kế cho những nơi diện tích in rất hạn chế.

rMQR, viết tắt của Rectangular Micro QR Code, hướng tới cấu trúc hình chữ nhật, phù hợp với những không gian mà một QR vuông truyền thống không tận dụng tốt.

Điều này đặc biệt thú vị đối với tem nhãn, linh kiện hoặc những sản phẩm có vùng in rất hẹp.

Ngoài ra còn tồn tại các công nghệ QR mở rộng như SQRC dành cho những ứng dụng cần phân biệt dữ liệu công khai và dữ liệu được bảo vệ.

QR Code có phải là một công nghệ mã hóa bảo mật?

Không.

Đây là một điểm rất quan trọng.

QR Code là cơ chế biểu diễn và truyền dữ liệu, không phải bản thân một hệ thống bảo mật.

Nếu QR chứa:

https://diepzen.com

thì QR chỉ là cách đóng gói chuỗi URL đó thành hình ảnh.

Nó không tự động mã hóa URL.

Tương tự, nếu QR chứa thông tin nhạy cảm dưới dạng plaintext, bất kỳ thiết bị nào đọc được QR cũng có thể lấy thông tin đó.

Vì vậy nếu cần bảo mật, encryption phải được thực hiện ở lớp dữ liệu hoặc ứng dụng, không nên nhầm lẫn giữa Error CorrectionEncryption.

Reed-Solomon giúp sửa lỗi.

Nó không giúp dữ liệu trở nên bí mật.

Những yếu tố quyết định một QR có dễ quét hay không?

Một QR Code tốt không chỉ phụ thuộc vào lượng dữ liệu.

Có thể xem khả năng đọc là kết quả của cả một hệ sinh thái:

Kích thước module + khoảng cách + độ tương phản + Quiet Zone + chất lượng in + bề mặt + góc nhìn + ánh sáng + mức Error Correction + độ phức tạp của thiết kế.

Một QR nhỏ nhưng in sắc nét trên giấy trắng có thể đọc tốt.

Một QR cực lớn nhưng bị bóng, phản chiếu hoặc biến dạng cũng có thể thất bại.

Đặc biệt với sản phẩm in ấn, việc kiểm tra QR bằng đúng điều kiện sử dụng thực tế quan trọng hơn việc chỉ quét thử trên màn hình máy tính.

Tại sao cùng một nội dung nhưng hai QR lại khác nhau?

Đây là một câu hỏi rất hay khi bắt đầu nghiên cứu QR.

Cùng một URL có thể tạo ra nhiều QR khác nhau do encoder lựa chọn:

  • Version khác nhau.
  • Error Correction Level khác nhau.
  • Encoding Mode khác nhau.
  • Mask Pattern khác nhau.
  • Cấu hình Structured Append hoặc các tùy chọn khác.

Do đó không tồn tại một hình ảnh duy nhất cho một chuỗi dữ liệu.

Có thể xem dữ liệu là “nội dung”, còn QR Code là “cách đóng gói nội dung đó thành một symbol”.

QR Code và bài toán cân bằng giữa dung lượng và độ bền

Đây là một trong những nguyên tắc quan trọng nhất khi thiết kế QR.

Muốn QR nhỏ hơn?

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Có thể giảm dữ liệu, tối ưu encoding hoặc chọn cấu hình phù hợp.

Muốn QR chịu được môi trường khắc nghiệt hơn?

Có thể tăng Error Correction.

Nhưng tăng Error Correction lại tiêu tốn nhiều không gian hơn cho dữ liệu sửa lỗi.

DENSO WAVE cũng khuyến nghị lựa chọn Error Correction dựa trên môi trường sử dụng. Ví dụ những môi trường có khả năng QR bị bẩn hoặc hư hỏng có thể cần mức sửa lỗi cao hơn, trong khi môi trường sạch có thể ưu tiên dung lượng.

Nói cách khác, không có một cấu hình QR “tốt nhất” cho mọi trường hợp.

QR trên menu nhà hàng, QR trên thùng hàng công nghiệp và QR trên màn hình điện thoại có những yêu cầu hoàn toàn khác nhau.

Từ một chuỗi văn bản đến một ma trận QR

Nếu rút gọn toàn bộ quy trình tạo QR Code xuống một dòng, chúng ta có thể hình dung:

Text → Encoding → Data Bits → Padding → Error Correction → Interleaving → Module Placement → Masking → QR Symbol

Còn khi đọc ngược:

QR Image → Detection → Perspective Correction → Module Sampling → Unmask → Codewords → Error Correction → Data Decoding → Original Text

Đây chính là điều khiến QR Code thú vị.

Nó không đơn thuần là một hình ảnh.

Nó là một cấu trúc dữ liệu được biến thành hình ảnh, sau đó hình ảnh ấy lại được biến ngược trở thành dữ liệu.

QR Code có thực sự “thông minh” không?

Bản thân QR Code không thông minh.

Nhưng nó được thiết kế cực kỳ thông minh.

Những hình vuông ở ba góc giúp máy định vị.

Timing Pattern giúp xác định lưới.

Alignment Pattern giúp xử lý biến dạng.

Format Information giúp decoder hiểu cách xử lý symbol.

Mask Pattern tối ưu hóa cấu trúc module.

Reed-Solomon giúp dữ liệu sống sót trước lỗi.

Encoding Mode giúp sử dụng không gian hiệu quả.

Quiet Zone giúp hệ thống nhận diện symbol giữa môi trường phức tạp.

Từng thành phần riêng lẻ có vẻ đơn giản. Khi ghép chúng lại, chúng tạo thành một hệ thống có khả năng truyền dữ liệu cực kỳ mạnh mẽ.

Nhìn lại một hình vuông nhỏ

QR Code nhìn bên ngoài có vẻ đơn giản đến mức gần như nhàm chán: một hình vuông chứa đầy ô đen trắng.

Nhưng nếu bóc từng lớp, nó lại giống một cỗ máy nhỏ được giấu trong một tấm ảnh.

Mã QR là gì? Cấu trúc, cách hoạt động và giải mã QR Code

Từ Version quyết định kích thước, Encoding quyết định cách dữ liệu được đóng gói, Function Pattern giúp camera định vị, Mask Pattern tối ưu hóa cấu trúc module, cho đến Reed-Solomon bảo vệ dữ liệu trước lỗi, tất cả đều phối hợp để biến một chuỗi ký tự thành một hình ảnh mà máy có thể đọc lại.

Tiêu chuẩn quan trọng nhất để nghiên cứu QR hiện nay là ISO/IEC 18004:2024. Đây là tiêu chuẩn quốc tế dành cho QR Code, bao phủ từ encoding, symbol format, kích thước, error correction cho đến thuật toán decoding tham chiếu và yêu cầu chất lượng sản xuất.

DENSO WAVE cũng cung cấp một lượng lớn tài liệu kỹ thuật về QR Code, bao gồm lịch sử tiêu chuẩn hóa, Version, dung lượng, Error Correction và các đặc tính của QR.

Và câu chuyện vẫn chưa dừng lại ở đó. Tính đến năm 2026, ISO đã bắt đầu phát triển Working Draft cho thế hệ tiếp theo của ISO/IEC 18004, cho thấy tiêu chuẩn QR Code vẫn tiếp tục được nghiên cứu và cập nhật.

Nếu muốn đi sâu hơn nữa, bước tiếp theo không còn là hỏi “QR Code là gì?”, mà là một câu hỏi thú vị hơn rất nhiều:

Làm thế nào để tự tay biến chuỗi HELLO WORLD thành từng bit, từng codeword, từng module và cuối cùng là một QR Code hoàn chỉnh?

Đó chính là lúc chúng ta bước vào phần sâu nhất của QR Code: Encoding → Reed-Solomon → Interleaving → Masking → Module Placement, nơi một chuỗi ký tự bắt đầu biến thành ma trận những ô vuông mà camera điện thoại có thể đọc trong chớp mắt.

Muốn thử giải mã một QR Code?

Lý thuyết về QR Code sẽ trở nên thú vị hơn khi được áp dụng vào một tình huống thực tế. Nếu muốn kiểm tra một mã QR ngay trên trình duyệt, bạn có thể sử dụng QR Decoder - Pro Max của DIEPZEN. Công cụ hỗ trợ quét mã QR bằng camera, tải ảnh QR lên và đọc dữ liệu, đồng thời cung cấp các thông tin phân tích chi tiết về mã QR.

Đặc biệt, với những người làm thiết kế đồ họa, in ấn, branding và bao bì, việc hiểu cấu trúc QR Code không chỉ để biết mã đang chứa nội dung gì. Trong thực tế, đôi khi chúng ta nhận được một mẫu thiết kế cũ có sẵn QR Code và khách hàng yêu cầu tái tạo lại mã QR với hình ảnh giống mẫu ban đầu. Khi đó, chỉ cần lấy URL hoặc nội dung bên trong rồi tạo lại một QR mới là chưa đủ, bởi cùng một dữ liệu hoàn toàn có thể tạo ra những QR Code có hình dạng module khác nhau.

Hình dạng của một QR Code còn phụ thuộc vào nhiều yếu tố như Encoding Mode, Version, Error Correction Level và Mask Pattern. Vì vậy, nếu muốn tái tạo một QR Code có sẵn với độ giống cao về mặt hình ảnh, chúng ta cần phân tích mẫu gốc để hiểu nó đang sử dụng cấu hình nào, thay vì chỉ đọc nội dung rồi tạo một mã mới một cách ngẫu nhiên.

Đây cũng là lúc một công cụ phân tích QR trở nên hữu ích. Thay vì nhìn vào một ma trận ô vuông và đoán xem bên trong nó có gì, bạn có thể bắt đầu từ dữ liệu thực tế của mã, xác định các thông số liên quan và từ đó có cơ sở để dựng lại QR trong quá trình thiết kế. Đặc biệt với những trường hợp cần khôi phục artwork, chỉnh sửa file thiết kế cũ, thay đổi kích thước hoặc vector hóa lại QR Code, việc hiểu rõ cấu trúc của mã sẽ giúp quá trình tái tạo chính xác và có kiểm soát hơn.

Nếu bạn cũng thường xuyên làm việc với QR Code trong thiết kế - như mình, đây là một công cụ có thể dùng để kiểm tra nhanh trước khi đưa mã vào poster, danh thiếp, bao bì, tem nhãn hoặc các ấn phẩm in ấn.

QR Decoder - Pro Max • Quét Mã QR - Phân Tích Chuyên Sâu

🔍 Thử QR Decoder - Pro Max

Tài liệu tham khảo chuyên sâu

ISO/IEC 18004:2024 – QR Code Bar Code Symbology Specification
Tiêu chuẩn quốc tế chính thức về QR Code, bao gồm đặc tính symbol, phương thức mã hóa dữ liệu, cấu trúc, kích thước, sửa lỗi, thuật toán giải mã tham chiếu và yêu cầu chất lượng sản xuất.

DENSO WAVE – QR Code Standardization
Tài liệu từ DENSO WAVE về lịch sử tiêu chuẩn hóa QR Code, cấu trúc, Version, dung lượng dữ liệu và các mức Error Correction.

DENSO WAVE – Error Correction Feature
Tài liệu chuyên sâu về cơ chế sửa lỗi của QR Code, Reed-Solomon Code và bốn mức Error Correction L, M, Q và H.

Dual-Message QR Codes
Nghiên cứu về QR Code hai lớp, đồng thời trình bày cấu trúc QR, Finder Pattern, Data Region và quy trình giải mã gồm thresholding, detection, module extraction và error correction.

Identification of QR Code Perspective Distortion Based on Edge Directions and Edge Projections Analysis
Nghiên cứu về nhận diện QR Code trong ảnh, Finder Pattern, thresholding và phương pháp xác định biến dạng phối cảnh để hỗ trợ quá trình giải mã.

ISO/IEC WD 18004 – Working Draft
Bản Working Draft Edition 5 đang được ISO phát triển, dự kiến thay thế ISO/IEC 18004:2024 trong tương lai. Đây vẫn là tài liệu đang trong quá trình phát triển, chưa phải tiêu chuẩn quốc tế chính thức.