디지털·가전제품

QR 코드의 원리는 어떻게 되는지 궁금합니다.

요즘에는 마트나 어디에서 공산품에 붙어있는 QR코드로 물건을 쉽게 계산하기도하는데요. 이 QR 코드의 원리는 어떻게 되는지 궁금합니다.

3개의 답변이 있어요!

  • 마트에서 계산하는 장면을 떠올리셨다고 하셨는데, 사실 지금 계산대에서 삑 하고 찍히는 건 대부분 QR이 아니라 가로로 줄무늬만 있는 13자리 바코드예요. 공산품에 QR이 따로 붙어 있는 경우는 대개 상품 상세정보나 이벤트 페이지로 보내는 용도고요. 다만 이게 곧 바뀝니다. 지에스원이라는 국제 표준기구가 2027년 12월 31일까지 전 세계 소매 계산대가 2차원 코드를 읽을 수 있게 하자는 목표를 세워뒀고, 이걸 선라이즈 2027이라고 부릅니다. 기존 줄무늬 바코드를 금지하는 게 아니라 계산대가 둘 다 읽게 만드는 쪽이라, 앞으로 몇 년은 한 상품에 두 코드가 같이 붙어 있는 걸 자주 보시게 될 거예요.

    원리 자체는 줄무늬 바코드와 비교해보면 확 와닿습니다. 줄무늬 바코드는 가로 한 줄만 읽기 때문에 담을 수 있는 게 숫자 열몇 자리뿐인데, QR은 가로세로 격자를 다 쓰니까 같은 면적에 들어가는 정보량이 수십 배로 늘어나요. 격자 크기는 버전 1이 가로세로 21칸이고 버전이 하나 올라갈 때마다 4칸씩 커져서 최대인 버전 40은 177칸까지 갑니다. 이 최대 크기에 오류정정을 가장 낮게 잡으면 숫자는 7089자, 한글은 1817자까지 들어갑니다.

    많은 분들이 궁금해하시는 게 모서리 세 곳에 있는 큰 네모 눈 모양인데, 저게 왜 하필 저 모양인지가 재미있습니다. 저 도형은 어느 각도로 직선을 그어 통과시켜도 검정 흰색 검정 흰색 검정의 두께 비율이 1 대 1 대 3 대 1 대 1로 나오도록 설계돼 있어요. 카메라는 화면을 훑으면서 이 비율만 찾으면 되니까, 코드가 기울어져 있든 거꾸로 있든 화면 구석에 조그맣게 있든 위치와 회전 각도를 순식간에 잡아냅니다.

    눈 세 개 말고도 숨은 장치가 몇 개 더 있습니다. 눈과 눈 사이를 잇는 흑백 점선은 타이밍 패턴이라고 해서 격자의 눈금자 역할을 하고, 버전 2부터 생기는 작은 네모들은 정렬 패턴이라 종이가 휘거나 페트병 같은 곡면에 붙었을 때 격자가 얼마나 일그러졌는지 보정해줍니다. 눈 주변의 좁은 띠에는 오류정정 레벨과 마스크 번호 같은 해석용 정보가 들어 있는데, 이건 훼손되면 아예 못 읽으니까 코드 안에 두 군데 중복으로 넣어둡니다.

    덜 알려진 부분이 마스킹입니다. 데이터를 변환한 0과 1을 격자에 그대로 채우면 검은 부분이 한쪽에 뭉치거나, 하필 모서리 눈을 흉내 낸 무늬가 우연히 생겨서 인식이 실패할 수 있어요. 그래서 QR은 여덟 가지 규칙적인 무늬를 데이터 위에 겹쳐본 다음 흑백이 가장 골고루 흩어지는 걸 골라서 최종 그림으로 씁니다. 같은 주소를 넣어도 만들 때마다 모양이 미묘하게 달라 보이는 게 이것 때문이에요.

    가운데에 로고가 박힌 QR이 멀쩡히 읽히는 것도 원리가 있습니다. 리드 솔로몬이라는 오류정정 부호가 같이 들어가 있어서 레벨에 따라 대략 7퍼센트, 15퍼센트, 25퍼센트, 30퍼센트까지 훼손돼도 원래 데이터를 복원해내요. 로고를 넣을 생각이면 가장 높은 레벨로 만들면 되는데, 공짜는 아니고 같은 내용이라도 코드가 더 커지고 칸이 잘아집니다.

    직접 인쇄물에 QR을 넣어보면서 안 읽혀 애먹은 적이 몇 번 있는데, 원인은 늘 비슷했어요. 첫째로 코드 바깥 여백을 안 남긴 경우입니다. 규격상 사방으로 네 칸만큼 흰 여백이 필요한데 디자인 욕심에 테두리를 딱 붙여 자르면 리더가 코드 경계를 못 찾습니다. 둘째로 색을 반전시킨 경우예요. 어두운 배경에 밝은 코드를 얹으면 못 읽는 앱이 아직 많습니다. 셋째는 유광 코팅이나 라미네이팅 반사고요. 크기는 읽을 거리의 대략 10분의 1 이상으로 잡으면 대체로 무난합니다.

    요즘은 큐싱도 같이 알아두시면 좋습니다. 코드 자체는 그냥 주소를 담은 그림일 뿐이라, 식당 테이블이나 주차 정산기, 전기차 충전기에 붙은 정품 QR 위에 가짜 스티커를 덧붙이는 수법이 계속 나오고 있어요. 스캔하면 바로 열지 마시고 화면에 뜨는 도메인을 한 번 확인하시고, 결제나 로그인 화면이 나오면 그 링크 대신 해당 앱을 직접 켜서 진행하시는 게 안전합니다. 스티커가 덧대어진 느낌이 들면 손톱으로 모서리를 살짝 긁어보는 것도 의외로 유효해요.

    참고로 좁은 부품에 붙이는 마이크로 QR이나 가로로 길쭉한 알엠큐알 같은 변형 규격도 있고, 마케팅에서 쓰는 동적 QR은 코드 안에 짧은 중계 주소만 넣고 도착지를 나중에 바꿀 수 있게 한 방식입니다. 원리를 눈으로 확인해보고 싶으시면 무료 생성기에서 같은 글자를 오류정정 레벨만 바꿔가며 만들어보세요. 칸이 잘아지고 무늬가 달라지는 게 한눈에 보여서 이해가 훨씬 빠릅니다.

    채택된 답변
  • QR 코드는 1994년 일본의 토요타 자회사인 덴소 웨이브에서 자동차 부품을 효율적으로 관리하기 위해 개발한 2차원 바코드입니다. 기존의 1차원 바코드보다 훨씬 많은 정보를 담을 수 있고 인식 속도가 빠른 것이 특징입니다.

    ​QR 코드가 정보를 담고 스마트폰 등으로 이를 순식간에 인식할 수 있는 원리는 다음과 같습니다.

    ​1. 2차원 구조와 데이터 저장 방식

    ​점의 집합: QR 코드는 흰색 배경 위에 검은색 정사각형 작은 점들(모듈)이 가로세로 격자 무늬(매트릭스) 형태로 배열되어 있는 구조입니다.

    ​이진 데이터 변환: 우리가 보는 웹사이트 주소(URL), 텍스트, 숫자 등의 정보는 컴퓨터가 이해할 수 있는 0과 1(이진수) 데이터로 변환됩니다.

    ​흑백의 의미: 검은색 모듈은 1, 흰색 모듈은 0을 의미합니다. 이 흑백의 조합을 통해 방대한 양의 데이터를 코드 안에 밀집시킬 수 있습니다. (최대 숫자 약 7,080자, 문자 약 4,296자 저장 가능)

    ​2. 카메라 인식 및 디코딩 과정

    ​스마트폰 카메라로 QR 코드를 비추면 순식간에 정보가 읽히는 과정은 다음과 같습니다.

    ​위치 검출 패턴인식:

    ​QR 코드의 모서리 세 곳에 있는 큰 '이중 네모 박스'가 핵심입니다.

    ​카메라와 소프트웨어는 이 세 지점을 먼저 찾아내어 코드의 방향, 각도, 크기를 정확하게 파악합니다. 이 패턴 덕분에 QR 코드를 거꾸로 비스듬하게 찍어도 인식에 전혀 지장이 없습니다.

    ​타이밍 패턴(Timing Patterns) 파악:

    ​가로세로 모서리에 있는 세 개의 네모 사이를 연결하는 점선(흰색과 검은색이 번갈아 나타나는 줄)입니다.

    ​전체 코드의 격자가 몇 칸으로 이루어져 있는지 눈금(좌표)을 정확하게 계산하는 기준 역할을 합니다.

    ​데이터 복원 및 실행:

    ​위치와 좌표가 파악되면, 스마트폰 내부의 프로그램이 각 모듈의 흑백(0과 1) 정보를 읽어들여 원래의 데이터(웹사이트 주소 등)로 변환(디코딩)합니다.

    ​마트 결제의 경우, 이 변환된 데이터가 결제 시스템 서버로 전송되어 상품 정보나 결제 승인 처리가 이루어집니다.

  • QR코드는 바코드와 원리가 비슷해요.

    바코드가 일직선으로 읽는다면 QR코드는 네방향에서 읽을 수 있어 훨씬 경우의 수가 많습니다.

    빛이 검은색과 흰색을 인식하여 읽는 겁니다.