ToolActToolAct

바코드 해독

이미지에서 바코드를 온라인으로 인식하고 디코딩합니다. 업로드, 드래그 앤 드롭, 붙여넣기 지원. 모든 처리가 브라우저에서 이루어집니다

바코드 이미지 업로드

바코드 이미지를 여기에 드래그 앤 드롭하세요

PNG, JPG, GIF, BMP, WebP 등 일반적인 이미지 형식 지원

Ctrl+V로 클립보드에서 이미지를 붙여넣을 수도 있습니다

바코드 해독이란?

바코드 해독은 바코드 이미지를 원래 내용으로 복원하는 기술입니다. 바코드가 포함된 이미지를 업로드하면 도구가 자동으로 바코드에 저장된 숫자 또는 텍스트 정보를 인식하고 디코딩합니다. CODE128, EAN-13, EAN-8, CODE39, UPC 등 일반적인 1차원 바코드 형식을 지원합니다. 이 도구는 브라우저에서 완전히 실행되며, 이미지가 서버로 전송되지 않습니다.

사용 방법

사용법

  1. 업로드 영역을 클릭해 바코드 이미지를 선택하거나, 이미지를 영역으로 드래그 앤 드롭하세요.
  2. Ctrl+V(Mac은 Cmd+V)로 클립보드의 이미지를 붙여넣을 수도 있습니다.
  3. 도구가 바코드를 자동으로 감지하고 내용을 디코딩합니다
  4. 디코딩된 결과는 아래에 표시되며, 바코드 형식과 콘텐츠 유형을 함께 확인할 수 있습니다
  5. '결과 복사' 버튼을 클릭해 디코딩된 내용을 복사하거나, 링크인 경우 직접 열 수 있습니다

디코딩 팁

  • 전체 바코드가 선명하게 보이는 고대비 이미지를 사용하세요. 흐림, 빛 반사, 잘림, 강한 원근 왜곡은 인식률을 저하시킵니다.
  • URL이나 상품 코드가 디코딩되면, 프로덕션 기록에 사용하기 전에 대상 URL이나 식별자를 확인하세요.

활용 사례

스캐너 없이 바코드 이미지에서 값 읽기이미지를 업로드하거나 드래그하거나 클립보드에서 붙여넣으면 브라우저에서 ZXing을 실행해 소매, 물류, 2차원 일반 형식(EAN, UPC, Code 128, Code 39, ITF, Data Matrix, PDF417, Aztec, QR Code)을 디코딩합니다. ZXing은 워커 스레드에서 실행되어 큰 이미지에서도 UI가 멈추지 않으며, Reed-Solomon 오류 정정을 내부적으로 적용하므로 약간 흐리거나 일부가 가려진 코드도 기호의 여유 범위 내에서 디코딩됩니다.
디코딩된 텍스트와 감지된 기호 형식 함께 확인하기재고 관리, 포장, 지원 업무에서 숫자 자체뿐 아니라 추가 정보가 필요할 때 결과 패널을 활용하세요. 디코딩된 내용, 문자 수, 바코드 형식이 함께 표시되어 값을 다른 시스템에 복사할 때 원본 형식을 유지할 수 있습니다.
의심스러운 인쇄 코드를 열기 전에 확인하기디코딩된 내용이 URL이면 페이지가 이를 표시하고 명시적인 열기 동작을 제공합니다. 스마트폰 카메라로 바로 스캔하기 전에 목적지를 먼저 읽어볼 기회를 줍니다.
원본이 사라진 라벨 복구하기공급업체 시스템이 SKU를 더 이상 인식하지 못할 때, 보관해 둔 포장 라벨, 선적 마크, 재고 스티커 사진을 디코딩할 수 있습니다. 원시 값과 감지된 기호 형식이 반환되어 CSV, ERP 입력, 감사 로그에 형식을 유지한 채 붙여넣을 수 있습니다. 기호 형식을 아는 것이 중요한 이유: 13자리 EAN-13은 GS1 접두어에 선행 0이 붙은 것 외에 12자리 UPC-A와 동일한 물리적 제품이므로, EAN-13 결과 0123456789052는 UPC-A 123456789052와 같은 제품이며 이 구분이 복구 기록에 보존되어야 합니다.
다중 바코드 포장 또는 선적 묶음 검증하기하나의 이미지에 두 개 이상의 코드(카톤+아이템, GS1+추적 코드)가 포함되어 있을 때, 디코더가 가장 두드러진 코드를 감지하는지 확인하고 다른 코드를 확인하려면 잘라내기 또는 재업로드하세요. 한 번에 하나의 코드만 잘라내는 것이 다중 라벨 표면을 확인하는 가장 확실한 방법입니다.

기술 원리

1차원 바코드(UPC, EAN, Code 39, Code 128, ITF, Codabar)는 평행한 막대와 공백의 시퀀스이며, 각 너비가 숫자, 문자 또는 전체 ASCII 범위를 인코딩합니다. 2차원 바코드(QR Code, Data Matrix, PDF417, Aztec)는 조용 영역(quiet zone) 위에 배치된 모듈(셀)의 2차원 패턴으로, 보통 세 모서리에 방향 감지를 위한 위치 탐지 패턴이 있습니다. 바코드 디코딩은 그 역순입니다: 이미지 → 전처리 → 기호 위치 파악 → 막대/공백 너비 측정(또는 2차원 격자 샘플링) → 인코딩 테이블 조회 → 체크섬 검증. 이미지 처리 파이프라인이 중요합니다. 소스 이미지는 그레이스케일 변환(휘도 = 0.299R + 0.587G + 0.114B, Rec. 601 가중치)을 거친 뒤, 전역 또는 적응형 임계값 처리(Otsu 방법은 클래스 간 분산을 최대화하는 임계값을 선택하여 조명이 양호한 대부분의 스캔에 효과적이고, Sauvola 적응형 임계값은 불균일한 조명에 더 적합합니다)를 적용합니다. 에지 검출(Sobel 커널: 3x3 Gx와 Gy)은 수직 막대 전환을 찾고, 해당 선에 대한 Hough 변환으로 방향을 구하며, 연결 성분 분석으로 기호의 경계 사각형을 찾습니다. 조용 영역(기호 주위의 필수 빈 여백, QR Code의 경우 X 디멘션의 10배, Code 128의 경우 막대 너비의 9배)은 기호가 유효한 후보로 인정되기 전에 검증됩니다. 1차원 코드의 경우, 디코더는 X 디멘션(가장 좁은 막대의 너비, 단위 길이)을 측정하고 막대-공백 너비를 X의 배수로 읽습니다. Code 39 문자는 9개 막대 + 9개 공백(하나는 문자 간 간격)이며, 9개 요소 중 3개가 넓고(1을 나타냄) 6개가 좁습니다(0을 나타냄). Code 128 문자는 11개 모듈입니다: 시작 패턴, 6개의 인코딩된 막대/공백, 종료 패턴. 따라서 각 문자는 11개 모듈이고, 11 x 문자수 + 13(시작 + 종료 + 체크 + 조용 영역)이 기호 너비를 결정합니다. Code 128에는 세 가지 인코딩 세트가 있습니다: A(대문자 + 제어 문자), B(대문자 + 소문자), C(쌍을 이룬 숫자 00-99) — 세트 전환 코드를 사용하면 인코더가 각 부분 문자열에 대해 가장 효율적인 세트를 선택할 수 있습니다. 2차원 코드의 경우 알고리즘이 다릅니다. QR Code는 Reed-Solomon 오류 정정(EC 레벨 L/M/Q/H는 각각 7%, 15%, 25%, 30%의 중복성을 추가)과 구성 가능한 마스킹 패턴(8개 중 하나를 선택하며, 인코더가 페널티 점수를 최소화하는 패턴을 선택합니다)을 사용합니다. 마스킹 후 비트 스트림은 21x21(버전 1)에서 177x177(버전 40)까지의 정사각형 격자에 배치됩니다. 모서리에 있는 세 개의 7x7 파인더 패턴과 내부 모서리에 있는 5x5 얼라인먼트 패턴이 방향과 스케일을 제공합니다. Data Matrix는 두 면에 L자형 실선 테두리, 나머지 두 면에 교대하는 검은색/흰색 패턴을 사용하는 유사한 레이아웃을 가집니다. PDF417은 미국 운전면허증과 항공 탑승권에 사용되는 스택형 선형 코드(17개 모듈 너비, 최대 90행)입니다. 이 페이지는 ZXing('Zebra Crossing') 라이브러리를 사용합니다. ZXing은 Google ZXing 프로젝트에서 유래한 Apache-2.0 오픈 소스 다중 형식 디코더입니다. ZXing은 전체 파이프라인(위치 파악 → 전처리 → 디코딩)을 실행하고 알려진 모든 기호 체계를 순차적으로 시도합니다. UPC-A, UPC-E, EAN-8, EAN-13, Code 39, Code 93, Code 128, ITF, Codabar, QR Code, Data Matrix, PDF417, Aztec를 지원합니다. 2차원 코드의 경우 양호한 조명에서 1080p 사진 기준 성공률은 약 99%이며, 1차원 코드는 원근, 흐림, 빛 반사가 막대 너비를 왜곡하므로 약간 낮습니다(~85-95%). 본 도구는 이미지 파일 입력(파일 업로드, 드래그 앤 드롭, 클립보드 붙여넣기)만 지원하며, 카메라 실시간 스캔 기능은 제공하지 않습니다. 체크섬이 중요합니다. UPC/EAN은 단일 modulo-10 체크 디지트를 사용하고(홀수 위치 숫자의 합 x 3 + 짝수 위치 숫자의 합, mod 10, 10에서 뺀 값), Code 128은 modulo-103 체크 문자를 사용합니다. Code 39는 체크 디지트를 요구하지 않지만 물류 환경에서는 mod-43 체크가 권장됩니다. QR Code는 Reed-Solomon EC를 사용하며, EC 디코더가 코드가 정정할 수 있는 것보다 많은 오류를 발견하면 디코딩에 실패합니다. 이 페이지는 라이브러리가 제공하는 경우 체크섬 불일치, 조용 영역이 너무 작음, 마스킹 충돌 등 디코딩 실패의 원인을 표시합니다.

  • 1차원 바코드(UPC, EAN, Code 39, Code 128, ITF)는 막대/공백 너비로 데이터를 인코딩하고, 2차원 코드(QR Code, Data Matrix, PDF417, Aztec)는 모듈의 2차원 격자로 인코딩합니다. 둘 다 유효하려면 단위 너비의 약 10배에 해당하는 조용 영역이 필요합니다.
  • 이미지 파이프라인: Rec. 601 그레이스케일(0.299R + 0.587G + 0.114B) → Otsu 또는 Sauvola 임계값 → Sobel 에지 검출 → Hough 변환으로 방향 파악 → 연결 성분 분석으로 기호의 경계 상자 찾기.
  • Code 128는 3개의 인코딩 세트를 가집니다: A(대문자 + 제어 문자), B(대문자 + 소문자), C(쌍을 이룬 숫자 00-99). 세트 전환 코드를 사용하면 인코더가 각 부분 문자열에 대해 가장 컴팩트한 세트를 선택할 수 있어, UPC-A '123456789012'를 Code 39보다 더 조밀하게 패킹합니다.
  • Code 39: 문자당 9개 막대 + 9개 공백, 3개 넓은 것(1)과 6개 좁은 것(0); 시작/종료 문자 '*'. 선택적 mod-43 체크 디지트. 자동차, 국방, 미국 정부(MIL-STD-1189)에서 널리 사용됩니다.
  • Code 93은 Code 128의 전신으로, 문자당 9개 모듈(6개 데이터 + 시작/종료)과 47개의 고유 문자를 가집니다. 대부분의 애플리케이션에서 Code 128에 의해 대체되었지만 일부 캐나다 약국 및 USPS 애플리케이션에서 여전히 사용됩니다.
  • QR Code: L/M/Q/H 레벨의 Reed-Solomon EC(7%/15%/25%/30% 중복성), 8개 마스킹 패턴, 21x21에서 177x177 모듈(버전 1~40). 모서리에 있는 세 개의 7x7 파인더 패턴이 방향을 제공하고, 더 큰 버전에서는 5x5 얼라인먼트 패턴이 원근 왜곡을 보정합니다.
  • Data Matrix: 두 면에 L자형 실선 테두리, 나머지 두 면에 교대하는 검은색/흰색 패턴; 전자 및 제약 분야의 소형 품목 마킹에 사용(ISO/IEC 16022).
  • ZXing('Zebra Crossing', Apache-2.0, Google): 여기서 사용되는 오픈 소스 다중 형식 디코더. UPC-A/E, EAN-8/13, Code 39/93/128, ITF, Codabar, QR Code, Data Matrix, PDF417, Aztec를 지원합니다. 본 도구는 이미지 파일(업로드, 드래그 앤 드롭, 클립보드 붙여넣기)에서만 디코딩하며, 카메라 실시간 스캔은 제공하지 않습니다.
  • 체크섬: UPC/EAN은 mod-10, Code 128은 mod-103, Code 39는 선택적 mod-43, QR Code는 Reed-Solomon EC를 사용합니다. 체크섬 불일치는 이미지가 손상되었음을 의미하며, 데이터 자체가 잘못된 것은 아닙니다.

예시

상품 바코드 인식

마트에서 찍은 상품 사진을 업로드하여 EAN-13 바코드를 디코딩하면 6901234567890이 나오고, 이를 검색해 상품명, 제조사, 가격 등을 확인할 수 있습니다

운송장 번호 추출

택배 송장의 바코드를 촬영해 SF1234567890 같은 운송장 번호를 디코딩한 뒤, 택배사 사이트에서 배송 현황을 조회합니다

도서 ISBN 디코딩

책 뒷면의 바코드를 스캔해 9787111234567 같은 ISBN을 추출한 뒤, 도서 데이터베이스에서 상세 정보를 검색합니다

자주 묻는 질문

어떤 바코드 형식을 디코딩할 수 있나요?

CODE 128, EAN-13, EAN-8, UPC-A, UPC-E, CODE 39, CODE 93, ITF(Interleaved 2 of 5), Codabar 등 일반적인 1D 코드와 QR Code, Data Matrix, Aztec, PDF417 같은 2D 코드를 지원합니다. 본 페이지는 브라우저 내에서 ZXing 라이브러리를 사용해 업로드된 단일 이미지에서 이 모든 형식을 자동으로 감지하고 디코딩합니다.

디코딩을 위해 이미지가 업로드되나요?

아니요. 디코딩은 WebAssembly 또는 순수 JavaScript를 통해 전적으로 브라우저에서 수행됩니다. 이미지를 드롭하면 바이트는 로컬에서 읽히며, 어떤 데이터도 서버로 전송되지 않습니다. 브라우저의 네트워크 탭에서 직접 확인할 수 있습니다.

바코드가 디코딩되지 않는 이유는 무엇인가요?

흔한 원인은 다음과 같습니다. 이미지가 흐릿하거나, 디코더가 허용하는 범위 이상으로 회전되었거나, 명암 대비가 너무 낮거나, 반사광이 있는 경우입니다. 바코드 주변을 더 가깝게 잘라내고, 밝기와 명암을 높이며, 코드 전체가 최소 200~300픽셀 너비가 되도록 하세요. 직사광선 아래에서 촬영한 광택 인쇄 코드는 종종 실패합니다.

어떤 입력 형식을 받을 수 있나요?

PNG, JPEG, GIF, WebP, BMP를 지원합니다. 파일 업로드, 드래그 앤 드롭, 클립보드 붙여넣기 모두 가능합니다. 이미지는 디코딩을 위해 숨겨진 캔버스로 읽히며, 서버로는 아무것도 전송되지 않습니다.

결과에 어떤 정보가 포함되나요?

디코딩된 텍스트 내용과 감지된 바코드 형식이 표시됩니다. 디코딩된 텍스트가 URL이면 새 탭에서 열 수 있는 버튼이 나타납니다. 글자 수와 형식 이름도 함께 표시됩니다.

EAN-13의 체크 디지트도 검증되나요?

ZXing은 형식별 체크 디지트를 포함한 내부 검증을 통과한 경우에만 결과를 반환합니다. 디코딩에 실패하면 본 페이지는 "바코드를 감지하지 못했습니다"만 표시하며, 이미지 자체가 읽히지 않은 것인지 체크섬 오류인지는 구분하지 않습니다.

한 이미지에서 여러 개의 바코드를 디코딩할 수 있나요?

본 페이지는 이미지에서 가장 선명한 코드 하나를 감지합니다. 여러 바코드가 포함된 이미지는 각각 잘라내어 따로 업로드하는 것이 가장 안정적인 결과를 얻는 방법입니다.