인쇄한 QR이 안 읽히면, 대개 코드가 아니라 조건의 문제입니다
전단·메뉴판·현수막에 넣은 QR이 "어떤 폰은 되는데 어떤 폰은 안 된다"는 신고가 들어오면 대부분 코드 자체는 정상입니다. 인식은 카메라가 코드를 찾는 단계와 찾은 뒤 데이터를 복원하는 단계로 나뉘는데, 현장에서 무너지는 쪽은 거의 언제나 앞 단계입니다. 오류정정 레벨을 올려도 소용이 없었다면 그래서입니다 — 오류정정은 뒤 단계를 보호하지 앞 단계를 보호하지 않습니다.
이 글은 인쇄물 QR을 배포하기 전에 확인해야 할 물리적 조건을 운영 기준으로 정리한 것입니다. 같은 구조가 산업용 광학 마커에서도 관찰된다는 최근 실험 결과는 오늘 리서치 리뷰에 따로 정리했습니다. 거기서는 절반이 가려졌을 때 기존 방식의 인식률이 0%로 떨어지는 반면 정보를 넓게 분산한 방식은 69%가 남았습니다. QR도 같은 성질을 갖습니다 — 버티는 층과 한 번에 무너지는 층이 따로 있습니다.
무너지는 순서: 크기 → 여백 → 대비 → 데이터 길이
현장에서 실패를 재보면 원인이 뒤섞여 보이지만, 실제로는 순서가 있습니다.
- 물리적 크기가 첫 번째입니다. 스캔 거리의 약 1/10이 실무 기준선입니다 — 50cm에서 찍는 명함·메뉴판은 최소 2cm, 3m 밖에서 찍는 포스터는 30cm가 필요합니다. "화면에서 잘 보이니 괜찮다"는 판단이 가장 흔한 실패 원인입니다.
- 여백(콰이어트 존)이 두 번째입니다. 코드 한 칸(모듈) 크기의 네 배를 사방에 비워야 디코더가 코드의 경계를 찾습니다. 배경 사진 위에 얹거나 테두리 장식을 바짝 붙이면 코드는 멀쩡한데 탐지가 시작되지 않습니다.
- 명암 대비가 세 번째입니다. 밝은 바탕에 어두운 코드가 원칙입니다. 반전(어두운 바탕에 밝은 코드)은 규격상 허용되지만 구형 카메라·저조도에서 실패율이 올라갑니다. 빨강–검정처럼 명도 차가 작은 조합도 흑백 변환 뒤 붙어 버립니다.
- 데이터 길이가 마지막입니다. 담는 글자가 길수록 같은 인쇄 크기에서 칸이 촘촘해집니다. 긴 추적 URL을 그대로 넣으면 인쇄 크기를 두 배로 키운 것과 반대 효과가 납니다.
순서가 중요한 이유는 대책의 가성비가 다르기 때문입니다. 크기를 1cm 키우는 것이 오류정정 레벨을 올리는 것보다 거의 항상 싸고 확실합니다.
오류정정 레벨을 올리면 왜 역효과가 나는가
QR의 오류정정 레벨(L·M·Q·H)은 훼손을 견디는 정도를 정합니다. H는 약 30%까지 복원하지만, 그만큼 같은 데이터에 더 많은 칸이 필요합니다. 인쇄 크기를 그대로 두고 레벨만 올리면 칸이 작아져 탐지가 오히려 어려워집니다. 로고를 가운데 얹을 계획이 없다면 대부분의 인쇄물에는 M으로 충분하고, 남는 여유는 칸을 키우는 데 쓰는 편이 낫습니다.
정리하면 이렇습니다. 얼룩·긁힘·비 맞음처럼 부분 훼손은 오류정정이 막아 줍니다. 여백 침범·세 모서리(파인더 패턴) 가림·너무 작은 칸은 오류정정과 무관하게 탐지 자체를 막습니다. 후자는 복구가 없습니다.
배포 전 점검 목록
- 실제 인쇄물(모니터 아님)로 예상 스캔 거리에서 세 기종 이상으로 테스트했는가 — 최신 아이폰, 3년 이상 된 안드로이드, 저가형 하나.
- 매장 조명·야간 가로등처럼 실제 조도에서 찍어 봤는가. 형광등 아래 반사되는 코팅지도 확인.
- 사방 여백이 코드 한 칸의 네 배 이상 비어 있는가. 접히는 선·재단선이 코드를 지나가지 않는가.
- 세 모서리의 큰 사각형(파인더 패턴)이 로고·스티커·구멍에 가리지 않는가.
- 담은 주소가 짧은가. 긴 캠페인 URL이라면 짧은 주소로 줄여 담았는가.
- 현수막·배너라면 원본 해상도로 확대했는가. 작은 이미지를 늘리면 칸 경계가 흐려집니다.
도구가 필요하다면 무료 QR 코드 생성기에서 용도별 해상도(책자용 1024px·대형 인쇄용 4096px)로 바로 내려받을 수 있습니다. 입력한 내용은 브라우저 안에서만 처리됩니다.
인쇄 후에 목적지를 바꿔야 한다면
위 조건을 다 지켜도 해결되지 않는 문제가 하나 남습니다 — 인쇄한 뒤에 링크가 바뀌는 경우입니다. 일반 QR은 주소가 코드 안에 그대로 박혀 있어, 이벤트가 끝나거나 페이지 구조가 바뀌면 전단을 다시 찍는 것 말고는 방법이 없습니다.
이럴 때 쓰는 것이 동적 QR입니다. 코드에는 짧은 중계 주소만 담고 실제 목적지는 서버에서 관리하므로, 이미 배포한 인쇄물을 그대로 두고 링크만 교체할 수 있습니다. 부수 효과로 스캔 수·지역·기기 분포를 볼 수 있어 오프라인 캠페인의 성과를 처음으로 숫자로 잡을 수 있습니다. 다만 중계 서버가 살아 있어야 동작한다는 의존이 새로 생기므로, 인쇄물 수명이 몇 년 단위라면 그 점을 감안해 결정해야 합니다.
바로 쓰는 체크리스트
- 크기 — 스캔 거리의 1/10 이상. 명함·메뉴판 2~3cm, 포스터 10cm, 현수막 30cm 이상.
- 여백 — 사방으로 모듈 4칸. 배경 이미지 위에 얹지 않기.
- 대비 — 밝은 바탕 + 어두운 코드. 반전·저채도 조합 피하기.
- 내용 — 짧은 주소. 추적 파라미터는 중계 단계에서 붙이기.
- 오류정정 — 로고를 얹지 않으면 M. 레벨을 올리기 전에 크기부터.
- 검증 — 실제 인쇄물 · 실제 거리 · 실제 조명 · 기종 3개 이상.
참고 링크
- 50% 가려도 69%는 읽힌다: BlobBoards 광학 마커 강건성 리뷰 — 같은 실패 구조를 실험으로 확인한 오늘 리서치 리뷰
- arXiv:2608.28830 — BlobBoards: Robust Markers for Accurate Pose