← ハシトシステム トップ English ツール ブログ ポスター

すべての処理はブラウザ内で完結します。画像がサーバーへ送信されることはありません。

クリックして画像を選択/ここにドラッグ&ドロップ/Ctrl+V で貼り付け
調整パラメータ

画像から複数の水平走査線を傾きを変えながら取り出し、それぞれの明暗プロファイルを作ります。プロファイルの立ち下がり/立ち上がりから連長(run-length)を求めて最小モジュール幅を推定し、スタートガードの位置と幅から格子を当てはめてモジュール単位で読み直します。読めなかった桁には仮の値を当て、チェックディジットが成立する組み合わせだけを解析案として提示します。

手動修正:右の「復元したモジュール」をクリックすると、そのモジュールの黒/白が反転します。橙色は不確実なモジュール、青枠は手動で修正したモジュールです。スタートガード・センターガード・ストップパターンは規格で値が決まっているため、一致率の評価に使っています。
使い方:画像を読み込むと右に処理前後のプレビューが表示されます。スライダーを動かすと自動で再デコードを試みます。細いバーがつぶれている写真は拡大率+アンシャープ、薄い印刷やレシートはコントラスト+二値化が有効です。

二値化しきい値(自動判定を含む複数段階)× 白黒反転 × 回転(0/90/180/270度)の組み合わせを自動で試行します。バーコードが縦向きに写っている写真や、白地に黒ではなく反転して印刷されたラベルに有効です。

ヒント:試行は小さな単位に分割して実行するため、処理中も画面は固まりません。読み取れた場合は、成功したパラメータとシンボル体系を表示します。
ヒント:手ブレ・ピンボケにはアンシャープマスク(ぼかした画像との差分を足し込む簡易エッジ強調)を適用します。バーコードは細いバーほど先につぶれるため、半径を細いバーの太さに合わせるのがコツです。
プレビューと結果

部分補正(一部だけ色が壊れている写真向け)

下の「処理前」プレビューをドラッグして範囲を選ぶと、その範囲だけに処理を掛けられます。影で黒く潰れた部分だけを反転する、白飛びした部分だけを暗くする、といった使い方ができます。補正は重ねられ、あとから個別に削除できます。

処理前
処理後
復元したモジュール(クリックで黒/白を反転)
黒モジュール(バー) 白モジュール(スペース) 不確実(黒率が拮抗) 手動で修正
走査線の明暗プロファイル(下ほど黒い/横線は判定しきい値)
読み取れないときの撮り直しのコツ:
・明るい均一な光の下で、反射・テカリを避けて撮影する
・バーコードが画面の横幅いっぱいになるように正面から近づき、数秒静止してピントを合わせる
・バーの左右にある余白(クワイエットゾーン)まで入るようにフレーミングする
・バーの上下方向はどこか1本でも無事な走査線が残っていれば復元できる可能性があります
・パッケージの曲面は、できるだけ平らに見える角度から撮る

写真のバーコード復元ツールについて

棚の商品や配送伝票をカメラで撮ったものの、バーコードが読み取れない——その多くは、ピンボケ・手ブレ・照明ムラ・影・光の反射・低解像度が原因です。本ツールは、画像処理(鮮明化・局所適応二値化・部分補正)と走査線ごとの明暗プロファイル解析、そしてバーコード固有のチェックディジットによる検算を組み合わせ、読み取れなかったバーコードの復元を試みる無料のオンラインツールです。

バーコードはQRコードより「復元が難しい」

QRコードにはリード・ソロモン符号による誤り訂正があり、最大で約30%の欠損を数学的に復元できます。一方、一般的なバーコードには誤り訂正符号がありません。あるのは末尾1桁のチェックディジットだけで、これは「誤りに気づく」ためのもので「誤りを直す」ためのものではありません。そのぶんバーコードには別の強みがあります。同じ情報が縦方向に何百本もの走査線として繰り返し存在することです。上半分が影で潰れていても、下半分の1本が無事なら、その線だけを読めば復元できます。

4つの復元アプローチ

局所適応二値化と部分補正

画像全体で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) ライブラリも併用しています。

よくある質問(FAQ)

画像はサーバーにアップロードされますか?

いいえ。画像の読み込み・鮮明化・二値化・走査線の抽出・デコードまで、すべての処理はお使いのブラウザ内(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個の案(推測なし)以外は、すべて推測を含みます。数字を業務で使う前に、必ず現物や別の情報と突き合わせて確認してください。

小中学生向け 学習ポスター(無料配布)はこちら →