QR코드는 어떻게 작은 칸에 많은 정보를 담을까?|검은 점의 정보 압축법

QR코드는 어떻게 작은 칸에 많은 정보를 담을까?|검은 점의 정보 압축법

카메라를 대면 순식간에 페이지가 열린다. 손톱만 한 정사각형 안에 인터넷 주소가 통째로 들어 있는 듯 보인다. 얼핏 보면 검은 점을 무작위로 찍어 놓은 그림 같지만, QR코드의 칸 하나하나는 정해진 규칙에 따라 배치된 정보다.

핵심은 ‘작은 칸’ 자체가 아니라 가로와 세로를 함께 쓰는 배열이다. QR코드는 숫자와 문자를 비트로 바꾼 뒤, 검은색과 흰색의 작은 정사각형으로 나눠 기록한다. 여기에 어느 방향에서 찍어도 코드를 찾게 하는 표식과, 일부가 가려져도 복원할 여분 정보를 더한다.

다만 QR코드가 큰 웹페이지나 동영상을 통째로 품는 것은 아니다. 일상에서 스캔하는 QR코드에는 대개 웹 주소처럼 비교적 짧은 데이터가 들어 있고, 스마트폰이 그 주소를 바탕으로 인터넷의 내용을 불러온다.

QR코드의 구조와 버전별 크기, 오류 정정(ECC) 원리를 설명한 인포그래픽
▲ QR코드의 구조와 버전별 크기, 오류 정정(ECC) 원리를 한눈에 정리한 인포그래픽. (제작: dolnews)

이 글은 QR코드를 만드는 법보다, 작은 격자 안에 정보와 여유분을 함께 넣는 원리를 살펴본다.


목차


1. QR코드의 작은 칸은 무엇일까

QR코드를 이루는 검은색·흰색의 최소 정사각형을 모듈(module)이라고 한다. 검은색과 흰색은 컴퓨터가 다루는 0과 1 같은 이진 정보로 읽힐 수 있다. 줄 하나를 따라 읽는 전통적인 바코드와 달리, QR코드는 가로와 세로 양쪽에 정보를 배치하는 2차원 코드다.

그래서 같은 공간에서 더 많은 정보를 다룰 수 있다. 하지만 모든 칸이 사용자가 넣은 문자만 뜻하는 것은 아니다. 코드의 위치와 방향을 알려 주는 칸, 데이터의 종류를 알려 주는 칸, 오류를 고치기 위한 칸도 함께 들어간다.

일반 QR코드는 버전 1부터 버전 40까지 있다. 가장 작은 버전 1은 21×21 모듈이고, 가장 큰 버전 40은 177×177 모듈이다. 버전이 한 단계 높아질 때마다 한 변의 모듈 수는 4개씩 늘어난다.


2. 정보가 많아지면 왜 코드도 커질까

QR코드는 입력값을 글자 그대로 칸 하나씩에 넣지 않는다. 먼저 숫자만 있는지, 영문·숫자 조합인지, 바이트 데이터인지처럼 데이터의 성격에 맞는 방식으로 인코딩한다. 같은 길이의 내용이라도 어떤 문자로 이루어졌는지, 어떤 오류 정정 수준을 선택했는지에 따라 필요한 칸 수가 달라진다.

예를 들어 숫자는 숫자 모드에서 비교적 효율적으로 표현할 수 있다. 반면 한글이 섞인 긴 문장이나 긴 URL은 더 많은 공간을 요구할 수 있다. 들어갈 데이터가 늘면 더 큰 버전을 써야 하고, 그만큼 QR코드는 촘촘하고 커진다.

여기서 흔한 오해가 하나 생긴다. 메뉴판 QR코드에 메뉴판 전체가 들어 있다고 생각하기 쉽지만, 실제로는 메뉴판이 있는 웹 주소만 담긴 경우가 많다. 스캔 뒤 보이는 풍부한 내용은 QR코드 안이 아니라 연결된 웹페이지에서 내려온다.

QR코드 버전별 크기 비교
▲ QR코드는 버전이 올라갈수록 모듈 수가 증가해 더 많은 정보를 저장할 수 있다. (출처: DENSO QRcode.com)

3. 휴대전화는 어떻게 방향을 알아볼까

QR코드의 세 모서리에 있는 큰 네모 무늬를 본 적 있을 것이다. 이것이 위치 검출 패턴이다. 스캐너는 이 세 표식을 찾아 코드가 화면 어디에 있는지, 얼마나 기울었는지, 어느 방향인지 판단한다.

이 표식 덕분에 코드를 똑바로 세워 찍을 필요가 없다. DENSO WAVE는 QR코드가 세 모서리의 위치 검출 패턴을 이용해 360도 방향에서 빠르게 읽히도록 설계됐다고 설명한다. 표식 주변에는 데이터 구역을 구분하고 격자를 맞추는 패턴도 배치된다.

따라서 QR코드를 꾸밀 때 세 모서리의 큰 표식을 다른 그림으로 덮거나, 모듈의 대비를 지나치게 낮추면 인식이 불안정해질 수 있다. 보기 좋은 디자인과 읽기 쉬운 디자인은 같은 조건이 아니다.


4. 일부가 가려져도 읽히는 이유

택배 상자의 QR코드가 조금 긁혔는데도 읽히는 이유는 오류 정정 정보 때문이다. QR코드는 원래 데이터에 Reed–Solomon 오류 정정 코드를 더해, 일부 모듈이 훼손되거나 오염돼도 가능한 범위에서 원래 데이터를 복원하게 한다.

오류 정정 수준은 L·M·Q·H의 네 단계다. 표준 안내 기준으로 전체 코드워드의 약 7%, 15%, 25%, 30%까지 복원할 수 있는 수준에 해당한다. 다만 수치가 높을수록 여분 정보가 늘어, 같은 내용을 담아도 코드가 더 커질 수 있다.

그러니 중앙에 로고를 넣은 QR코드가 원리상 가능한 것은 맞다. 그렇다고 아무 크기의 로고나 안전하다는 뜻은 아니다. 훼손 위치·코드 크기·오류 정정 수준·카메라 성능이 함께 영향을 준다. 실제 배포 전에는 쓰일 휴대전화로 인식 시험을 하는 편이 안전하다.


5. QR코드를 볼 때 알아둘 한 가지

QR코드는 내용을 숨겨 주는 자물쇠가 아니다. 카메라로 읽을 수 있다는 것은 다른 사람도 같은 데이터를 읽을 수 있다는 뜻이다. 특히 URL QR코드는 ‘그림’만 보고 어디로 연결되는지 알기 어렵다는 점을 기억할 필요가 있다.

낯선 장소의 QR코드를 스캔했다면, 열리기 전 또는 열린 뒤에 표시되는 주소의 도메인을 한 번 확인해 보자. 결제·로그인·개인정보 입력을 요구한다면 특히 공식 안내와 주소가 맞는지 확인하는 습관이 도움이 된다.

작은 점들이 많은 정보를 담는 비결은 마술이 아니라 설계다. 데이터를 알맞게 표현하고, 카메라가 위치를 찾게 하며, 손상에 대비한 여분을 넣는다. QR코드는 그 세 가지를 한 장의 격자에 나눠 담은 약속이다.


마치며

QR코드는 검은 칸과 흰 칸을 가로·세로로 배열해 데이터를 기록한다. 데이터가 길어질수록, 또는 오류 정정 여유를 많이 둘수록 더 많은 모듈이 필요하다.

세 모서리의 표식은 카메라가 방향을 찾도록 돕고, 여분의 오류 정정 정보는 일부 훼손 뒤에도 읽힐 가능성을 남긴다. 다음에 QR코드를 마주치면 점들의 무늬 대신, 그 안에 역할별로 나뉜 작은 칸들이 있다고 생각해 보자.


자주 묻는 질문 (FAQ)

Q1. QR코드 하나에 웹페이지 전체를 넣을 수 있나요?

일반적으로는 아닙니다. QR코드는 숫자·문자·바이트 데이터 등을 담을 수 있지만 용량에는 한계가 있습니다. 메뉴나 안내문처럼 긴 내용은 대개 QR코드에 담긴 URL을 통해 웹에서 불러옵니다.

Q2. QR코드 중앙의 로고가 있어도 읽히는 이유는 무엇인가요?

오류 정정 정보 덕분에 일부 손상이나 가림이 있어도 복원할 수 있기 때문입니다. 다만 로고가 너무 크거나 중요한 패턴을 가리면 읽히지 않을 수 있으므로, 실제 사용 환경에서 테스트해야 합니다.

Q3. QR코드가 흐리면 왜 잘 안 읽히나요?

카메라가 검은색과 흰색 모듈의 경계를 구별해야 하기 때문입니다. 작은 모듈, 낮은 대비, 부족한 여백, 흔들림은 인식을 어렵게 할 수 있습니다.


참고 자료

  • DENSO WAVE, 「What is a QR Code?」
  • DENSO WAVE, 「Information capacity and versions of the QR Code」
  • DENSO WAVE, 「Error correction feature」
  • DENSO WAVE, 「Point for determining the code area」

📚 함께 보는 잡학 수다

일상의 궁금증을 하나씩 풀어봅니다.

댓글 쓰기

0 Comments

문의하기 양식