QR코드 오류 수정 레벨 완전정리 — H(30%)면 로고를 박아도 정말 안전할까
QR코드 중앙에 브랜드 로고를 얹은 명함이나 포스터를 본 적이 있을 겁니다. "오류 수정 레벨을 H(30%)로 설정하면 로고를 덮어도 스캔된다"는 말은 자주 나오지만, 정확히 왜 그런지, 그리고 진짜로 아무렇게나 덮어도 되는 건지는 잘 알려져 있지 않습니다. 이 가이드에서는 QR코드 표준(ISO/IEC 18004)이 정의한 4단계 오류 수정 레벨의 원리와, 로고를 넣을 때 실제로 안전한 범위가 어디까지인지를 계산 구조부터 풀어서 설명합니다.
1. 오류 수정 레벨이란 — L/M/Q/H 네 단계
QR코드는 단순히 데이터를 흑백 격자에 그려 넣는 이미지가 아니라, 데이터 코드워드와 함께 리드-솔로몬(Reed-Solomon) 오류정정 코드워드를 같이 저장하는 구조입니다. 이 오류정정 코드워드의 비율을 얼마나 확보할지가 오류 수정 레벨이며, 표준은 4단계를 정의합니다.
| 레벨 | 이름 | 복원 가능 손상률 | 주 용도 |
|---|---|---|---|
| L | Low | 약 7% | 손상 위험이 거의 없는 화면 표시용 |
| M | Medium | 약 15% | 일반적인 용도 (표준 기본값) |
| Q | Quartile | 약 25% | 인쇄물, 야외 노출 등 손상 가능성이 있는 환경 |
| H | High | 약 30% | 중앙에 로고·그림을 삽입하는 경우 |
레벨이 올라갈수록 "더 많이 가려져도 읽힌다"는 뜻이고, 이는 곧 원본 데이터 대비 중복 코드워드의 비중이 커진다는 의미입니다.
2. 리드-솔로몬 오류정정이 손상을 복원하는 원리
직관적으로 설명하면, 리드-솔로몬 코드는 원본 데이터를 다항식의 값들로 취급하고, 그 다항식 위의 점을 필요한 개수보다 더 많이 찍어 저장해 두는 방식입니다. 예를 들어 직선(1차 다항식)은 점 2개만 있으면 완전히 결정되지만, 만약 점을 5개 찍어서 저장해 두면 그중 2개만 남아 있어도(나머지 3개가 지워지거나 잘못 읽혀도) 남은 점들의 조합으로 원래 직선을 다시 그려낼 수 있습니다. QR코드도 마찬가지로 데이터 코드워드들을 다항식 계수로 놓고 여분의 코드워드(패리티)를 추가로 계산해 저장하며, 스캐너는 읽은 값들 중 일부가 깨져 있어도 남은 코드워드들 간의 수학적 관계식을 풀어 깨진 부분의 원래 값을 역산합니다. 오류가 정정 가능한 한도 안에 있는 한 이 복원은 근사치가 아니라 원본과 100% 동일한 값을 돌려줍니다. 다만 한도를 넘어서면 복원 자체가 불가능해지고 스캔이 아예 실패합니다.
3. 왜 레벨이 높을수록 담을 수 있는 데이터량이 줄어드는가
여기서 트레이드오프가 생깁니다. QR코드는 버전(21×21 모듈의 버전 1부터 시작해 커지는 크기 등급)마다 전체 모듈 수, 즉 저장 가능한 코드워드 총량이 정해져 있습니다. 이 총량을 데이터 코드워드와 오류정정 코드워드가 나눠 쓰는 구조이기 때문에, 오류정정 비율을 7%에서 30%로 올리면 그만큼 더 많은 칸이 중복 코드워드에 할당되고, 실제 데이터를 담을 수 있는 칸은 상대적으로 줄어듭니다. 같은 버전(같은 크기)의 QR코드라면 H레벨은 L레벨보다 담을 수 있는 글자 수가 눈에 띄게 적고, 같은 양의 데이터를 H레벨로 담으려면 QR코드가 L레벨일 때보다 한두 단계 더 큰 버전(더 촘촘한 격자)을 써야 합니다. 즉 "안전 마진을 늘리는 대가로 용량을 내주는" 관계이며, 이게 바로 짧은 URL을 써야 로고 삽입용 H레벨 QR코드가 지저분해지지 않는 이유이기도 합니다.
4. 실제 계산기에서는 어떻게 적용되나
MODOO HUB의 QR코드 생성기는 현재 오류 수정 레벨을 M(약 15%)으로 고정해 생성합니다. URL·텍스트·Wi-Fi·연락처(vCard)를 QR코드로 변환하는 일반적인 용도에는 M레벨이 화면 표시와 인쇄 모두에서 무난한 절충점이기 때문입니다. 로고를 중앙에 삽입할 목적으로 H레벨이 필요하다면, 위에서 설명한 안전 범위(로고 15~20% 이내, QR 200px 이상, 파인더 패턴 미침범)를 지키는 별도의 로고 삽입 전용 도구나 라이브러리 옵션을 확인하는 것이 좋습니다.
자주 묻는 질문
Q. QR코드 오류 수정 레벨은 정확히 뭘 의미하나요?
A. QR코드 표준(ISO/IEC 18004)이 정의한 4단계로, 코드 일부가 가려지거나 손상돼도 원본 데이터를 복원할 수 있는 비율을 뜻합니다. L은 약 7%, M은 약 15%, Q는 약 25%, H는 약 30%까지 손상을 견딥니다. 레벨이 높을수록 같은 데이터를 담는 데 더 많은 중복 코드가 들어가 격자가 촘촘해집니다.
Q. H(30%) 레벨이면 로고를 아무렇게나 덮어도 되나요?
A. 아닙니다. H는 전체 심볼 면적의 최대 30%까지 손상을 복원할 수 있다는 이론적 한계일 뿐이고, 실제로는 로고를 중앙에 작게(전체 면적의 15~20% 이내), QR 자체는 충분히 크게(최소 200px 이상) 만들고 여백을 둬야 안전합니다. 로고가 파인더 패턴(모서리 네모)이나 타이밍 패턴을 가리면 H여도 인식 실패율이 높아집니다.
Q. 리드-솔로몬 오류정정은 어떻게 손상된 부분을 복원하나요?
A. QR코드는 실제 데이터 외에 리드-솔로몬 알고리즘으로 계산한 중복 코드워드를 함께 저장합니다. 이 중복 코드워드는 원본 데이터의 각 부분과 수학적으로 얽혀 있어서, 일부 코드워드가 읽히지 않아도 나머지 코드워드들의 조합만으로 방정식을 풀어 원래 값을 역산해낼 수 있습니다. 오류가 정정 가능 범위 안에 있으면 원본과 100% 동일하게 복원됩니다.
Q. 레벨을 높이면 저장할 수 있는 데이터량이 왜 줄어드나요?
A. QR코드의 전체 모듈(칸) 수는 버전(크기)마다 고정되어 있고, 그 안에서 실제 데이터 코드워드와 오류정정 코드워드가 자리를 나눠 씁니다. 오류정정 비율을 30%로 올리면 그만큼 더 많은 칸이 중복 코드워드에 할당되기 때문에, 같은 크기의 QR코드라면 담을 수 있는 실제 데이터(URL 글자 수 등)가 줄어들거나, 같은 데이터량을 유지하려면 QR코드 자체가 한 단계 더 커져야 합니다.
Q. MODOO HUB QR코드 생성기는 오류 수정 레벨을 고를 수 있나요?
A. 현재는 M(약 15%) 고정으로 생성됩니다. 일반적인 URL·텍스트·Wi-Fi·연락처 변환에는 M레벨이 무난한 절충점이며, 로고 삽입처럼 H레벨이 꼭 필요한 용도라면 이 가이드의 안전 범위를 참고해 별도 옵션을 확인하시길 권장합니다.