IT 이야기

QR코드는 어떤 원리로 정보를 읽을까?

QR코드는 검은색과 흰색으로 구성된 작은 사각형에 정보를 저장한다.

스마트폰 카메라는 이 사각형의 위치와 배열을 분석해 웹사이트 주소, 연락처나 결제 정보를 해석한다.

QR코드의 작은 사각형에는 무엇이 들어 있을까?

QR코드를 자세히 보면 작은 검은색과 흰색 사각형이 격자처럼 배열돼 있다. 각각의 사각형을 모듈이라고 한다.

모듈은 QR코드에서 정보를 표현하는 기본 단위다. 스캐너는 각 모듈의 밝고 어두운 상태를 구분해 저장된 데이터를 읽는다.

컴퓨터는 정보를 0과 1로 표현하는 이진수 방식으로 처리한다. QR코드 역시 검은색과 흰색 모듈의 배열을 활용해 데이터를 표현한다.

다만 검은색 칸이 항상 1, 흰색 칸이 항상 0이라는 단순한 방식으로만 내용을 바로 읽는 것은 아니다. 스캐너는 코드에 적용된 규칙을 확인하고 배열을 해석해야 한다.

또한 모든 모듈에 주소나 문자가 들어 있는 것도 아니다. 일부 영역은 위치 확인, 방향 판단과 오류 복원을 위해 사용된다.

QR코드를 구성하는 주요 영역

QR코드는 여러 기능을 담당하는 구역으로 나뉜다. 각 구역은 스캐너가 코드를 정확하게 인식하도록 돕는다.

세 모서리의 큰 사각형은 QR코드에서 가장 눈에 띄는 부분이다. 스캐너는 이를 먼저 찾아 코드의 위치와 방향을 파악한다.

정렬 패턴은 QR코드가 비스듬하거나 곡면에 인쇄됐을 때 왜곡을 보정한다. 코드의 버전에 따라 포함되는 정렬 패턴의 개수와 위치가 달라진다.

타이밍 패턴은 일정한 간격으로 배열된 무늬다. 스캐너가 작은 사각형의 크기와 격자 간격을 계산할 때 기준으로 사용한다.

QR코드의 구조는 일반적인 줄무늬 바코드와 다르다. 두 방식의 차이는 바코드와 QR코드는 무엇이 다를까?에서 확인할 수 있다.

구성 요소 위치 역할
위치 검출 패턴 세 모서리의 큰 사각형 코드의 위치와 방향 확인
정렬 패턴 코드 내부의 작은 사각형 기울어짐과 왜곡 보정
타이밍 패턴 주요 인식 영역 사이 격자의 간격과 배열 확인
형식 정보 주요 인식 영역 주변 오류 복원 수준과 해석 방식 확인
데이터 영역 나머지 격자 공간 주소, 문자와 기타 데이터 저장
오류 복원 정보 데이터와 함께 배치 손상된 데이터 복구
여백 코드 바깥쪽 코드와 주변 디자인을 구분

스마트폰이 QR코드를 촬영해 위치를 검출하고 데이터를 해석하는 순서를 보여주는 다이어그램

스마트폰은 QR코드를 어떻게 인식할까?

스마트폰 카메라가 QR코드를 읽는 과정은 여러 단계로 진행된다.

예를 들어 QR코드에 ible.blog 주소가 저장돼 있다고 가정하자. 스마트폰은 사각형 배열을 분석한 뒤 해당 문자열을 웹사이트 주소로 인식한다.

이후 운영체제나 카메라 앱은 주소를 화면에 표시한다. 사용자가 이를 선택하면 브라우저가 열리면서 웹사이트에 접속한다.

QR코드가 웹사이트 내용을 직접 저장하는 것은 아니다. 일반적으로 사이트로 이동할 수 있는 주소만 저장하며, 실제 페이지는 인터넷을 통해 불러온다.

문자나 연락처가 직접 저장된 경우에는 인터넷 없이도 내용을 읽을 수 있다. 반면 웹페이지 접속이나 온라인 결제에는 별도의 인터넷 연결이 필요할 수 있다.

  • 카메라가 QR코드를 포함한 이미지를 촬영한다.
  • 이미지에서 세 모서리의 위치 검출 패턴을 찾는다.
  • 코드의 방향, 크기와 기울어진 정도를 계산한다.
  • 격자 간격을 확인하고 각 모듈의 상태를 판별한다.
  • 형식 정보를 읽어 데이터 해석에 필요한 설정을 확인한다.
  • 저장된 데이터를 추출하고 손상된 부분을 복원한다.
  • 결과를 웹사이트 주소, 문자나 기타 데이터로 해석한다.

코드가 기울어져도 읽을 수 있는 이유

QR코드를 똑바로 들지 않아도 스마트폰이 인식하는 이유는 위치 검출 패턴 때문이다. 세 모서리의 사각형이 코드의 방향을 판단하는 기준점 역할을 한다.

스캐너는 이 패턴들의 위치를 비교해 코드가 어느 방향으로 돌아갔는지 확인한다. 이후 기울어진 이미지를 분석 가능한 형태로 보정한다.

예를 들어 인쇄된 QR코드를 옆으로 돌려도 세 기준점의 상대적인 위치는 유지된다. 스캐너는 이 관계를 이용해 어느 쪽이 위인지 판단한다.

정렬 패턴은 추가적인 보정에 사용된다. 종이가 휘어졌거나 코드가 곡면에 인쇄된 경우, 내부 격자의 위치를 더 정확하게 계산하는 데 도움을 준다.

다만 기울어짐이나 왜곡이 지나치면 인식이 어려울 수 있다. 카메라 초점, 조명과 인쇄 상태도 실제 인식 결과에 영향을 준다.

QR코드 버전 1과 버전 40의 모듈 수 차이를 비교한 그래픽

QR코드에 저장할 수 있는 정보는 얼마나 될까?

QR코드의 저장 용량은 모듈 개수와 데이터 종류에 따라 달라진다. 더 많은 정보를 저장하려면 더 많은 모듈이 필요하다.

일반적인 QR코드 규격은 버전 1부터 버전 40까지 나뉜다. 버전이 높아질수록 가로와 세로의 모듈 수가 증가한다.

버전이 한 단계 올라갈 때마다 각 변에 4개 모듈이 추가된다. 정보가 많아질수록 QR코드의 무늬가 촘촘해지는 이유다.

가장 큰 버전에서는 숫자를 최대 7,089자까지 저장할 수 있다. 영문과 숫자를 조합한 정보는 최대 4,296자까지 기록할 수 있다.

다만 이러한 수치는 데이터 종류와 오류 복원 설정에 따라 달라진다. 실제 웹사이트 주소나 한글 문장을 넣을 때의 저장량은 같은 글자 수라도 다를 수 있다.

특히 긴 주소를 작은 크기로 인쇄하면 모듈이 지나치게 작아진다. 이 경우 카메라가 사각형을 정확히 구분하지 못할 수 있다.

QR코드 버전 모듈 구성 특징
버전 1 21×21 간단한 숫자나 짧은 문자열에 적합
버전 2 25×25 버전 1보다 더 많은 정보 저장
버전 3 29×29 추가 데이터와 오류 복원 정보 저장
버전 40 177×177 가장 많은 모듈을 사용하는 일반 QR코드

일부가 가려져도 인식되는 원리

QR코드에는 원래 데이터와 함께 오류 복원에 필요한 정보가 저장된다. 이를 통해 코드 일부가 손상돼도 원래 내용을 복구할 수 있다.

오류 복원에는 리드솔로몬이라는 수학적 오류 정정 방식이 사용된다. 이 방식은 일부 데이터가 손실됐을 때 남은 정보와 복원용 데이터를 이용해 내용을 재구성한다.

복원 수준은 네 가지로 구분된다.

코드워드는 QR코드 내부 데이터를 구성하는 정보 단위다. 복원 비율은 코드워드를 기준으로 하며, 이미지 면적의 동일한 비율을 항상 가려도 된다는 뜻은 아니다.

예를 들어 오류 복원 수준이 H라고 해도 중요한 위치 검출 패턴이 손상되면 인식하지 못할 수 있다. 로고가 너무 크거나 코드 전체의 대비가 낮아도 읽기 어려워진다.

복원 수준을 높이면 손상에는 강해진다. 대신 복원 정보가 차지하는 공간이 늘어나 실제 데이터를 저장할 수 있는 용량은 줄어든다.

QR코드에 이러한 기능이 포함된 이유는 초기 개발 환경과 관련이 있다. 기름과 먼지가 많은 제조 현장에서도 정보를 읽어야 했기 때문이다. 처음 개발된 배경은 QR코드는 어떤 목적으로 처음 개발됐을까?에서 자세히 다뤘다.

복원 수준 복원 가능한 코드워드 비율 특징
L 약 7% 저장 용량을 우선하는 경우
M 약 15% 일반적인 사용 환경
Q 약 25% 손상 가능성이 있는 환경
H 약 30% 오염이나 손상 위험이 높은 환경

QR코드가 인식되지 않는 주요 원인

QR코드가 정상적으로 인식되려면 카메라가 모듈과 경계선을 구분할 수 있어야 한다. 다음과 같은 상황에서는 인식률이 떨어질 수 있다.

특히 QR코드 주변의 빈 공간은 중요한 역할을 한다. 이 여백을 quiet zone이라고 하며, 주변 이미지와 코드 영역을 분리해 준다.

덴소웨이브는 일반 QR코드의 각 면에 4개 모듈 너비의 여백을 확보하도록 안내한다. 코드 바로 옆에 글자나 장식이 붙으면 인식이 어려워질 수 있다.

또한 코드가 정상적으로 읽히는 것과 연결된 웹사이트가 정상적으로 작동하는 것은 별개다. 주소 자체가 잘못됐거나 페이지가 삭제됐다면 스캔에는 성공해도 접속할 수 없다.

문제 상황 인식 가능 여부 원인
인쇄 크기가 지나치게 작음 제한 개별 모듈을 구분하기 어려움
이미지가 흐리거나 초점이 맞지 않음 제한 검은색과 흰색의 경계가 불명확함
주변 여백이 부족함 제한 코드와 주변 디자인을 구분하기 어려움
배경과 코드의 색상 대비가 낮음 제한 밝고 어두운 모듈을 정확히 판별하기 어려움
코드 위의 로고가 지나치게 큼 조건부 가능 손상 영역과 오류 복원 수준에 따라 달라짐
위치 검출 패턴이 크게 가려짐 불가 코드의 위치와 방향을 확인하기 어려움
강한 반사나 그림자가 발생함 조건부 가능 조명 상태와 촬영 각도에 따라 달라짐
연결된 웹사이트가 삭제됨 코드 인식 가능 주소는 읽히지만 웹페이지 접속은 실패

확인할 점

이 글은 덴소웨이브가 공개한 QR코드 규격 자료를 바탕으로 작동 원리를 정리한 내용이다. 실제 QR코드 생성·인식 결과는 사용하는 도구와 인쇄 환경에 따라 달라질 수 있다.

자주 묻는 질문

QR코드는 인터넷 없이도 읽을 수 있나요?

코드 자체에 저장된 문자나 주소를 해석하는 데 인터넷이 반드시 필요한 것은 아니다. 다만 웹사이트 접속이나 온라인 결제처럼 외부 서비스와 연결되는 기능은 인터넷이 필요할 수 있다.

QR코드 안에 웹사이트 전체가 저장돼 있나요?

아니다. 일반적으로 웹사이트 주소만 저장된다. 스마트폰은 주소를 읽은 뒤 인터넷을 통해 실제 웹페이지에 접속한다.

QR코드가 회전해도 인식되는 이유는 무엇인가요?

세 모서리의 위치 검출 패턴으로 코드의 방향을 파악하기 때문이다. 스캐너는 이 기준점을 이용해 회전된 이미지를 보정한 뒤 정보를 읽는다.

QR코드 가운데 로고를 넣어도 되나요?

오류 복원 범위 안에 있고 주요 인식 영역을 가리지 않으면 가능할 수 있다. 다만 로고가 크거나 대비가 낮으면 인식률이 떨어지므로 실제 기기로 확인해야 한다.

QR코드마다 무늬가 다른 이유는 무엇인가요?

저장된 정보, 코드 버전과 오류 복원 설정이 다르기 때문이다. 같은 정보를 저장하더라도 생성 프로그램의 처리 방식에 따라 무늬가 달라질 수 있다.

참고한 자료