QR 코드 판독기
업로드한 이미지나 카메라로 QR 코드를 브라우저에서 바로 해독합니다 — 앱 설치가 필요 없고 서버에 아무것도 업로드되지 않습니다.
조회수 229회
QR 코드는 실제로 어떻게 해독되는가
QR(Quick Response) 코드는 데이터를 그림으로 나타낸 것이 아닙니다 — 비트를 직접 인코딩하는 흑백 모듈의 격자이며, 이를 다시 읽어내는 것은 단순한 조회가 아니라 여러 단계로 이루어진 컴퓨터 비전 문제입니다. 첫 단계는 코드의 위치를 찾는 것입니다: 모든 QR 코드는 세 모서리에 뚜렷한 파인더 패턴(중첩된 정사각형 고리)을 갖고 있으며, 각 패턴은 중심을 지나는 어떤 스캔선을 따라도 매우 특정한 1:1:3:1:1 명암 모듈 비율을 가집니다. 해독기는 이미지를 한 줄씩 훑으며 이 정확한 비율을 찾는데, 일반적인 이미지 콘텐츠에서 이 비율이 우연히 나타날 확률은 통계적으로 거의 0에 가깝기 때문에, 바로 이 점 때문에 지문(fingerprint)으로 선택된 것입니다. 세 파인더 패턴을 모두 찾으면 사진이 비스듬히 촬영되었더라도 해독기는 코드의 회전, 크기, 대략적인 위치를 알 수 있습니다.
방향이 정해지면 해독기는 각 모듈의 중심을 샘플링해 1 또는 0으로 읽고, 파인더 패턴 옆의 형식 정보 스트립을 이용해 적용된 오류 정정 수준과 마스킹 패턴을 파악한 뒤, XOR 마스크를 역으로 풀어냅니다(QR 코드는 동일한 모듈이 길게 이어지면 파인더 패턴 탐색이 혼란스러워지므로, 이를 막기 위해 여덟 가지 패턴 중 하나로 자기 데이터를 의도적으로 뒤섞습니다). 마지막으로 리드-솔로몬 오류 정정을 실행해 원래 바이트를 복원합니다 — 이는 CD와 위성 통신에서 사용되는 것과 동일한 수학적 기법으로, 생성 시 선택한 오류 정정 수준에 따라 QR 코드가 물리적으로 최대 30%까지 손상되거나 가려져도 여전히 읽힐 수 있는 이유입니다.
이 도구는 오픈소스 QR 해독 라이브러리를 사용해 이 모든 해독 과정을 JavaScript로 전적으로 로컬에서 수행하며, 업로드한 정지 이미지든 기기 카메라에서 한 프레임씩 가져와 동일한 방식으로 분석하는 실시간 영상이든 마찬가지입니다. 어떤 데이터도 서버로 전송되지 않습니다 — Wi-Fi 비밀번호나 개인 연락처 정보를 담고 있을 수 있는 QR 코드를 이미지를 어딘가에 먼저 업로드하지 않고 브라우저에서 온전히 해독하는 것은 의미 있는 개인정보 보호 차이입니다.
해독된 텍스트가 실제로 의미하는 것
- http:// 또는 https://로 시작하는 URL에는 "링크 열기" 버튼이 표시됩니다. 그 외의 것(일반 텍스트, Wi-Fi 자격 증명 문자열, vCard)은 URL이 아닌 콘텐츠에 자동으로 동작을 취하는 것이 예측 불가능하기 때문에 해독된 원본 텍스트 그대로 표시됩니다.
- 카메라 스캔은 유효한 코드를 찾을 때까지 초당 약 60번(브라우저의 애니메이션 프레임 속도에 맞춰) 각 프레임을 확인한 뒤 자동으로 멈춥니다 — 영상은 절대 녹화되거나 저장되지 않습니다.
- 오류 정정 수준이 더 높은 QR 코드(생성 시 L/M/Q/H로 표시됨)는 더 많은 물리적 손상을 견디지만, 격자의 더 많은 부분이 콘텐츠 대신 중복 데이터에 할당되므로 코드 크기당 저장할 수 있는 실제 데이터는 더 적습니다.
- 사진에서 해독이 실패하는 가장 흔한 원인은 움직임에 의한 흐림, 극단적인 촬영 각도, 또는 프레임 안에서 코드가 너무 작아 개별 모듈이 뭉개지는 경우이며, 코드 자체가 근본적으로 읽을 수 없는 경우는 드뭅니다.
자주 묻는 질문
스캐너는 사진 속 QR 코드를 어떻게 찾나요?
세 모서리에 있는 중첩된 정사각형 고리인 세 개의 뚜렷한 파인더 패턴을, 스캔선을 따라 나타나는 고유한 1:1:3:1:1 명암 비율을 찾아 탐지합니다. 이 비율이 우연히 나타날 확률은 극히 낮으며, 이 때문에 복잡한 사진에서도 신뢰할 수 있는 지문 역할을 하는 것입니다.
손상되었거나 일부가 가려진 QR 코드가 여전히 읽히는 이유는 무엇인가요?
QR 코드는 CD와 위성 전송에 쓰이는 것과 동일한 수학적 기법인 리드-솔로몬 오류 정정을 사용해 실제 콘텐츠와 함께 중복 데이터를 저장합니다. 코드 생성 시 선택한 오류 정정 수준에 따라 코드의 약 30%까지 손실되거나 손상되어도 여전히 올바르게 해독될 수 있습니다.
제 사진이나 카메라 영상이 어딘가로 업로드되나요?
아니요. 업로드된 이미지 경로와 실시간 카메라 경로 모두 JavaScript를 이용해 브라우저 안에서 전적으로 해독됩니다 — 어떤 이미지나 영상 프레임도 서버로 전송되지 않습니다.
어떤 코드에는 "링크 열기" 버튼이 표시되고 다른 코드에는 표시되지 않는 이유는 무엇인가요?
해독된 텍스트가 http:// 또는 https://로 시작할 때만 나타납니다. 일반 텍스트, Wi-Fi 자격 증명, 연락처 카드 같은 다른 QR 콘텐츠는 URL이 아닌 데이터에 자동으로 동작을 취하는 것이 예측 가능하거나 안전하지 않기 때문에 원본 텍스트로 표시됩니다.
사진에 QR 코드가 분명히 있는데도 스캔이 실패하는 이유는 무엇인가요?
가장 흔한 원인은 움직임에 의한 흐림, 격자 형태를 왜곡하는 급격한 촬영 각도, 또는 프레임 안에서 코드가 너무 작아 개별 모듈을 구분할 수 없는 경우입니다 — 코드 자체가 읽을 수 없다고 단정하기 전에 더 선명하고, 더 정면에서, 더 가까이 찍은 사진을 시도해 보십시오.
비슷한 도구
문제 신고하기
QR 코드 판독기
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!