Back

QR 코드는 30%가 훼손되어도 읽을 수 있다? (리드-솔로몬 코드)

QR 코드는 이제 우리 일상 어디에나 있습니다. 결제, 체크인, 정보 공유 등 다양한 곳에 쓰이죠.

그런데 QR 코드의 일부가 찢어지거나 낙서가 되어 있어도 스마트폰이 문제없이 인식하는 것을 본 적 있나요?

QR 코드에는 오류 복원(Error Correction) 기능이 내장되어 있기 때문입니다. 심지어 최대 30%가 손상되어도 데이터를 복구할 수 있습니다.

1. QR 코드의 구조

QR 코드는 단순히 흑백 점을 무작위로 찍은 것이 아닙니다.

  • 위치 검출 패턴 (Finder Pattern): 세 모서리에 있는 큰 사각형 3개. 카메라가 QR 코드의 위치와 회전 각도를 파악하게 해줍니다.
  • 타이밍 패턴 (Timing Pattern): 흑백이 교차하는 점선. 좌표의 기준이 됩니다.
  • 데이터 영역: 실제 정보가 담긴 곳입니다.
  • 오류 수정 코드 영역: 데이터가 손상되었을 때 복구하기 위한 정보가 담긴 곳입니다.

2. 오류 복원 레벨 (Error Correction Level)

QR 코드를 생성할 때 복원 능력을 4단계 중 하나로 설정할 수 있습니다.

  1. Level L (Low): 약 7% 손상 복원 가능. (데이터 용량이 가장 큼)
  2. Level M (Medium): 약 15% 손상 복원 가능. (가장 보편적으로 사용)
  3. Level Q (Quartile): 약 25% 손상 복원 가능.
  4. Level H (High): 약 30% 손상 복원 가능.

복원 레벨을 높일수록 오류 수정 코드가 많이 들어가므로, QR 코드의 크기가 커지거나 담을 수 있는 데이터 양이 줄어듭니다.

가운데에 로고나 이미지가 박힌 디자인 QR 코드는 바로 이 Level H를 사용하여, 이미지가 가리는 부분을 '손상된 데이터'로 취급하고 복원해내는 원리를 이용한 것입니다.

3. 리드-솔로몬 코드 (Reed-Solomon Code)

이 마법 같은 복원 능력의 핵심은 리드-솔로몬 알고리즘입니다.

CD나 DVD, 하드디스크, 우주 통신에서도 사용되는 이 알고리즘은 데이터에 수학적인 중복 정보를 추가하여, 일부 정보가 유실되더라도 나머지 정보를 통해 원래 값을 계산해 낼 수 있게 합니다.

마치 연립방정식에서 미지수의 개수만큼 식을 알면 답을 구할 수 있는 것과 비슷한 원리입니다.

결론

QR 코드는 단순한 바코드가 아니라, 고도의 수학적 알고리즘이 집약된 기술입니다.

다음에 QR 코드를 찍을 때, 그 작은 사각형 안에 숨겨진 수학의 견고함을 한 번쯤 떠올려 보세요.

TechQR CodeAlgorithmData

관련 도구 둘러보기

Pockit의 무료 개발자 도구를 사용해 보세요