물리적 구조
QR 코드는 기능별로 구분된 영역들로 이루어집니다. 범례를 클릭하면 해당 영역이 강조됩니다.
세 모서리에 배치된 7×7 동심 사각형. 스캐너가 QR의 위치·방향을 인식하는 기준점입니다.
오류 정정 레벨(L/M/Q/H)과 마스크 번호를 저장. BCH(15,5) 코드로 이중 보호됩니다.
6번째 행·열에 흑백이 교번하는 패턴. 모듈 격자의 기준선 역할을 합니다.
Version 2 이상에서 나타납니다. 곡면이나 왜곡된 코드의 좌표 보정을 돕습니다.
실제 데이터와 Reed–Solomon 오류 정정 코드워드가 배치되는 영역입니다.
인코딩 파이프라인
입력 문자열은 네 단계를 거쳐 QR 코드의 모듈 패턴으로 변환됩니다.
입력 문자 집합에 따라 최적 인코딩 방식을 선택합니다.
Numeric — 숫자만, 10비트로 3자
Alphanumeric — 영숫자+일부 기호, 11비트로 2자
Byte — UTF-8 전체, 8비트/자
Kanji — 한·중·일, 13비트/자
4비트 모드 지시자 + 문자 수 필드 + 데이터 비트 순서로 붙입니다.
이후 종료자(0000)와 패딩 코드워드
(0xEC 0x11 교번)를 채워 버전의 용량을 맞춥니다.
GF(256) 갈루아 체 위에서 다항식 나눗셈을 수행, 오류 정정 코드워드를 생성합니다. H 레벨은 데이터의 30%가 파손되어도 복원 가능합니다. QR 로고를 중앙에 얹어도 읽히는 이유입니다.
비트열을 우하→좌 지그재그로 배치한 뒤, 8가지 마스크 패턴을 모두 XOR 적용해 4가지 페널티 점수 합산이 최소인 마스크를 최종 선택합니다.
Reed–Solomon 오류 정정
QR 코드의 가장 독창적인 특성입니다. 레벨별로 복원 가능 비율이 달라집니다.
왜 H 레벨을 항상 쓰지 않을까? — 오류 정정 코드워드가 많아질수록 같은 버전에 담을 수 있는 데이터가 줄어듭니다. 동일한 데이터를 H 레벨로 저장하면 L 레벨보다 훨씬 큰 버전이 필요합니다.
마스크 패턴
마스킹 없이 데이터를 배치하면 Finder 패턴 같은 규칙적 패턴이 나타나 스캐너가 오인식합니다. 8가지 XOR 마스크 중 페널티 점수가 가장 낮은 것을 선택합니다.
페널티 점수 규칙
ISO 18004 표준은 4가지 조건을 검사합니다. 연속 5개 이상 동색 모듈, 2×2 동색 블록, Finder 유사 패턴, 명암 비율 불균형. 합산 페널티가 가장 낮은 마스크를 채택합니다.
버전과 용량
Version 1(21×21)부터 Version 40(177×177)까지, 버전당 4씩 커집니다.
| 버전 | 크기 | 숫자(L) | 바이트(L) | 주요 용도 |
|---|
알아두면 좋은 특성
Quiet Zone
QR 코드 주변에 반드시 4모듈 너비의 흰 여백이 필요합니다. 없으면 스캐너가 경계를 인식하지 못합니다.
이중 Format 정보
오류 정정 레벨과 마스크 번호를 담은 Format 정보는 QR 내부에 두 곳에 복제 저장됩니다. Format 정보 자체도 BCH(15,5) 코드로 보호받아, Finder 패턴이 손상되어도 Format을 복원할 수 있습니다.
Dark Module
Version 정보와 Format 정보 사이 특정 위치의 모듈은 항상 검정입니다((4V+9, 8)). 마스크와 무관하게 고정됩니다.
마이크로 QR
ISO 18004는 11×11~17×17 크기의 마이크로 QR도 정의합니다. Finder 패턴이 하나뿐이며, 소형 전자 부품 라벨에 주로 쓰입니다.
URL QR 코드가 대부분 Version 3~5인 이유 — https://example.com 같은 URL은 약 20~40자(바이트 모드)이며, M 레벨 기준 Version 3(57자)~Version 4(78자) 안에 담깁니다. 로고를 얹으려면 H 레벨 Version 5 이상이 됩니다.