読み取れないバーコードを走査線の明暗プロファイルから復元。チェックディジットで検算しながら不明な桁を推定します
すべての処理はブラウザ内で完結します。画像がサーバーへ送信されることはありません。
画像から複数の水平走査線を傾きを変えながら取り出し、それぞれの明暗プロファイルを作ります。プロファイルの立ち下がり/立ち上がりから連長(run-length)を求めて最小モジュール幅を推定し、スタートガードの位置と幅から格子を当てはめてモジュール単位で読み直します。読めなかった桁には仮の値を当て、チェックディジットが成立する組み合わせだけを解析案として提示します。
二値化しきい値(自動判定を含む複数段階)× 白黒反転 × 回転(0/90/180/270度)の組み合わせを自動で試行します。バーコードが縦向きに写っている写真や、白地に黒ではなく反転して印刷されたラベルに有効です。
下の「処理前」プレビューをドラッグして範囲を選ぶと、その範囲だけに処理を掛けられます。影で黒く潰れた部分だけを反転する、白飛びした部分だけを暗くする、といった使い方ができます。補正は重ねられ、あとから個別に削除できます。
棚の商品や配送伝票をカメラで撮ったものの、バーコードが読み取れない——その多くは、ピンボケ・手ブレ・照明ムラ・影・光の反射・低解像度が原因です。本ツールは、画像処理(鮮明化・局所適応二値化・部分補正)と走査線ごとの明暗プロファイル解析、そしてバーコード固有のチェックディジットによる検算を組み合わせ、読み取れなかったバーコードの復元を試みる無料のオンラインツールです。
QRコードにはリード・ソロモン符号による誤り訂正があり、最大で約30%の欠損を数学的に復元できます。一方、一般的なバーコードには誤り訂正符号がありません。あるのは末尾1桁のチェックディジットだけで、これは「誤りに気づく」ためのもので「誤りを直す」ためのものではありません。そのぶんバーコードには別の強みがあります。同じ情報が縦方向に何百本もの走査線として繰り返し存在することです。上半分が影で潰れていても、下半分の1本が無事なら、その線だけを読めば復元できます。
画像全体で1つのしきい値を使うと、影が落ちた部分がまるごと黒に潰れ、白飛びした部分がまるごと白になります。本ツールは局所適応二値化(各画素を、その周囲の平均輝度と比べて黒か白かを決める方法。積分画像で高速に計算します)を自動試行に含めているため、明暗のムラがある写真でも「まわりより暗いか」という基準で判定できます。それでも直らない場合は、プレビュー上をドラッグしてその範囲だけを反転・明るく・暗く・白で塗る部分補正を重ねられます。
EAN-13(JAN-13)は13桁目が検査数字で、前12桁に 1,3,1,3… の重みを掛けた合計から一意に決まります。仮の値を当てた組み合わせのうちチェックディジットが成立するのは約10分の1だけです。さらにEAN-13には、左6桁それぞれが奇数パリティ(Lコード)か偶数パリティ(Gコード)かの並びで先頭桁を表すという仕組みがあり、64通りの並びのうち10通りしか有効ではありません。CODE128にも103を法とするチェック文字があります。本ツールはこれらをすべて満たす組み合わせだけを解析案として残します。
バーの上下どちらかに無事な走査線が残っている、細いバーがつぶれている、影で片側だけ暗い——こうしたケースには効果があります。逆に、左右方向にバーが欠けている(数字の一部が完全に失われている)場合、失われた桁数が増えるほど候補は急増し、チェックディジットだけでは1つに絞れません。その場合は解析案を複数提示しますが、推測を含むため、業務で使う前に必ず現物と照合してください。読み取りの補助として、ZXing (zxing-js) ライブラリも併用しています。
いいえ。画像の読み込み・鮮明化・二値化・走査線の抽出・デコードまで、すべての処理はお使いのブラウザ内(Canvas と JavaScript)で完結します。画像や読み取り結果が外部のサーバーへ送信・保存されることはありません。商品パッケージや配送伝票など、他人に見せたくない画像でも安心してお使いいただけます。
EAN-13(JAN-13)・UPC-A・EAN-8・CODE128・CODE39 に対応しています。いずれも実際にバーコード画像を生成し、一部を影で潰した状態から復元できることを確認した種類だけを掲載しています。EAN-13 と UPC-A は同じ95モジュール構成のため、先頭が0のEAN-13はUPC-Aとして表示し、数字は先頭の0を含む13桁で表示します。
バーコードには末尾に検査用の数字(チェックディジット)が入っており、他の桁から計算した値と一致するかで正誤を判定できます。読み取れなかった桁に仮の値を当てて総当たりすると多数の候補が出ますが、チェックディジットが通る組み合わせだけを残せば候補は約10分の1に絞れます。EAN-13ではさらに、左6桁の奇数パリティ・偶数パリティの並びが先頭桁を表すという規則があり、64通りのうち10通りしか成立しません。CODE128にも103を法とするチェック文字があります。これはQRコードには無い、バーコード固有の絞り込み手段です。
いいえ、復元には限界があります。バーコードは1次元でデータの冗長性がほとんどなく、QRコードのような誤り訂正符号を持ちません。本ツールは複数の走査線・傾き補正・局所適応二値化で「読める線」を探し、それでも読めない桁にはチェックディジットで検算しながら仮の値を当てますが、読み取れない桁が多いほど候補は増え、確実性は下がります。バーの上下いずれかが残っていれば復元できる可能性が高く、左右方向に大きく欠けている場合は困難です。
読み取れなかった桁に仮の値を当て、チェックディジットが成立した組み合わせを解析案として並べています。チェックディジットが通ることは「ありえない値ではない」ことしか保証せず、元のバーコードと一致する保証はありません。仮に当てた桁が0個の案(推測なし)以外は、すべて推測を含みます。数字を業務で使う前に、必ず現物や別の情報と突き合わせて確認してください。