QR 코드는 30%가 훼손되어도 읽을 수 있다? (리드-솔로몬 코드)
QR 코드는 이제 우리 일상 어디에나 있습니다. 결제, 체크인, 정보 공유 등 다양한 곳에 쓰이죠.
그런데 QR 코드의 일부가 찢어지거나 낙서가 되어 있어도 스마트폰이 문제없이 인식하는 것을 본 적 있나요?
QR 코드에는 오류 복원(Error Correction) 기능이 내장되어 있기 때문입니다. 심지어 최대 30%가 손상되어도 데이터를 복구할 수 있습니다.
1. QR 코드의 구조
QR 코드는 단순히 흑백 점을 무작위로 찍은 것이 아닙니다.
- 위치 검출 패턴 (Finder Pattern): 세 모서리에 있는 큰 사각형 3개. 카메라가 QR 코드의 위치와 회전 각도를 파악하게 해줍니다.
- 타이밍 패턴 (Timing Pattern): 흑백이 교차하는 점선. 좌표의 기준이 됩니다.
- 데이터 영역: 실제 정보가 담긴 곳입니다.
- 오류 수정 코드 영역: 데이터가 손상되었을 때 복구하기 위한 정보가 담긴 곳입니다.
2. 오류 복원 레벨 (Error Correction Level)
QR 코드를 생성할 때 복원 능력을 4단계 중 하나로 설정할 수 있습니다.
- Level L (Low): 약 7% 손상 복원 가능. (데이터 용량이 가장 큼)
- Level M (Medium): 약 15% 손상 복원 가능. (가장 보편적으로 사용)
- Level Q (Quartile): 약 25% 손상 복원 가능.
- Level H (High): 약 30% 손상 복원 가능.
복원 레벨을 높일수록 오류 수정 코드가 많이 들어가므로, QR 코드의 크기가 커지거나 담을 수 있는 데이터 양이 줄어듭니다.
가운데에 로고나 이미지가 박힌 디자인 QR 코드는 바로 이 Level H를 사용하여, 이미지가 가리는 부분을 '손상된 데이터'로 취급하고 복원해내는 원리를 이용한 것입니다.
3. 리드-솔로몬 코드 (Reed-Solomon Code)
이 마법 같은 복원 능력의 핵심은 리드-솔로몬 알고리즘입니다.
CD나 DVD, 하드디스크, 우주 통신에서도 사용되는 이 알고리즘은 데이터에 수학적인 중복 정보를 추가하여, 일부 정보가 유실되더라도 나머지 정보를 통해 원래 값을 계산해 낼 수 있게 합니다.
마치 연립방정식에서 미지수의 개수만큼 식을 알면 답을 구할 수 있는 것과 비슷한 원리입니다.
결론
QR 코드는 단순한 바코드가 아니라, 고도의 수학적 알고리즘이 집약된 기술입니다.
다음에 QR 코드를 찍을 때, 그 작은 사각형 안에 숨겨진 수학의 견고함을 한 번쯤 떠올려 보세요.
관련 도구 둘러보기
Pockit의 무료 개발자 도구를 사용해 보세요