QR코드 오류 정정: 손상된 QR코드가 여전히 작동하는 이유
QR코드가 긁힘, 로고, 먼지에서 살아남는 방법. L, M, Q, H 오류 정정 레벨 심층 분석.
회사 로고가 한가운데 떡하니 박힌 QR코드를 본 적 있지. 코드의 일부가 말 그대로 가려져 있어. 그런데 스캔하면 완벽하게 작동해.
운이 아니야. 오류 정정이 제 역할을 하는 거야.
QR코드가 손상을 처리하는 방법
QR코드는 리드-솔로몬 오류 정정을 사용해. CD, DVD, 심우주 통신에서도 쓰이는 같은 수학이야. 핵심 아이디어: 추가 중복 데이터를 저장해서 일부가 없거나 손상돼도 원본 메시지를 복원할 수 있게 해.
QR코드를 생성할 때 데이터와 함께 오류 정정 코드워드가 인코딩돼. 이 코드워드에는 코드의 일부분을 읽을 수 없어도 원본 데이터를 복구하기에 충분한 정보가 들어있어.
네 가지 오류 정정 레벨
모든 QR코드는 네 가지 오류 정정 레벨 중 하나를 사용해:
| 레벨 | 복구 용량 | 적합한 용도 | |------|----------|------------| | L (낮음) | ~7% 손상 | 디지털 화면, 깨끗한 환경 | | M (보통) | ~15% 손상 | 범용, 기본 선택 | | Q (높음) | ~25% 손상 | 인쇄물, 보통 정도의 마모 | | H (최고) | ~30% 손상 | 가혹한 환경, 로고 오버레이 |
여기서 "손상"이란 코드가 여전히 스캔되면서 읽을 수 없는 코드워드의 비율을 의미해.
트레이드오프: 정정 vs 크기
오류 정정이 많으면 중복 데이터도 많아져. 데이터가 많으면 QR코드가 더 복잡해져(커져). 실제로 어떻게 보이냐면:
같은 내용이라도 H 레벨 오류 정정이 적용된 QR코드는 L 레벨보다 눈에 띄게 더 많은 모듈(그 작은 사각형들)을 가져. 코드가 더 조밀해지고 먼 거리에서 스캔하기 어려워져.
L 레벨: 가장 작고 단순한 QR코드. 먼 거리에서 스캔하기 가장 쉬워. 보호는 최소.
M 레벨: 좋은 균형. 대부분의 생성기에서 기본값. 일반적인 마모를 처리해.
Q 레벨: 상당히 더 조밀해. 접히거나, 번지거나, 부분적으로 가려질 수 있는 인쇄물에 좋아.
H 레벨: 최대 밀도. 심각한 손상에서도 살아남아. 중앙에 로고를 넣으려면 필수.
QR코드 안의 로고가 작동하는 이유
QR코드 중앙에 로고를 배치하면 사실상 코드를 "손상"시키는 거야 -- 그 모듈들을 읽을 수 없게 만드는 거지. 오류 정정 알고리즘이 로고를 손상된 데이터로 취급하고 나머지 모듈에서 누락된 정보를 복원해.
이건 H 레벨(가끔 Q 레벨)에서만 안정적으로 작동해. L 레벨에서는 코드의 8%만 가려도 스캔이 안 될 수 있어.
로고 배치 가이드라인:
- H 레벨 오류 정정 사용
- 로고를 QR코드 면적의 대략 15-20%로 유지
- 로고를 중앙에 배치 (QR코드는 모서리에 중요한 위치 패턴이 있어)
- 단순하고 대비가 높은 로고 사용
- 여러 스캐너로 최종 코드를 반드시 테스트
어떤 레벨을 사용해야 할까?
디지털 디스플레이 (웹사이트, 앱, 화면): L 또는 M 레벨. 코드가 물리적으로 손상되지 않아서 작은 코드가 스캔하기 더 쉬워.
명함과 전단지: M 레벨. 가벼운 마모에 대한 표준 보호.
제품 포장: Q 레벨. 제품은 다루어지고, 긁히고, 외부 환경에 노출돼.
실외 표지판과 가혹한 환경: H 레벨. 날씨, 먼지, 물리적 손상에 대한 최대 복원력.
로고가 있는 QR코드: H 레벨. 의심의 여지 없어. 가려진 영역을 보상하려면 추가 중복성이 필요해.
여백도 중요해
오류 정정은 코드 자체의 손상을 처리하지만, QR코드에는 "여백 영역"도 필요해 -- 코드 주위의 빈 여백이야. 이게 없으면 스캐너가 코드가 어디서 시작하고 어디서 끝나는지 찾을 수 없어.
표준은 4모듈 너비의 여백을 요구해. 이걸 건너뛰는 게 QR코드가 실패하는 가장 흔한 이유이고, 아무리 많은 오류 정정도 이건 고칠 수 없어.
오류 정정이 QR코드를 실제 세계에서 실용적으로 만드는 거야. 사용 사례에 맞는 레벨을 선택해 -- 대부분의 상황에서 M 레벨, 로고나 최대 내구성이 필요할 때 H 레벨 -- 그리고 인쇄하기 전에 항상 실제 스캐너로 테스트해.