こんにちは、コーダー仲間です。
この記事では、Pythonを使用して画像からバーコードをデコードする方法を学びます。
この記事では、Pythonの pyzbar
モジュールを使用し、pillowモジュールと一緒に使用します。
pyzbar モジュールを使って画像からバーコードをデコードする
pyzbarモジュールは、一次元バーコードやQRコードを簡単に読み取り、デコードするためのモジュールで、正しく動作させるためには
PIL` モジュールを必要とします。
モジュールを実装する前に、まず両モジュールをインポートする必要がある。
この記事もチェック:Pythonのqrcodeモジュールを使ってQRコードを自作する方法
1. 必要なモジュールのインポート
機能を正確に動作させるために、まずコード内で pyzbar モジュールと PIL の両方をインポートする必要があります。
バーコードのデコードに必要なモジュールと関数は、以下のコードブロックを使ってインポートします。
1
2
|
from pyzbar.pyzbar import decode
from PIL import Image
|
2. バーコード画像のインポート
次に、PIL モジュールの Image サブモジュールの open 関数を使用して、システムからバー コード画像をインポートします。
以下にその様子を示す。
img = Image. open ( "bar1.jpg" )
|
このチュートリアルのために、我々はオンラインで見つけたランダムなバーコードを取りました。
もし、カスタムバーコード/QRコードを作成したい場合は、カスタムバーコード/QRコードの作成に関するチュートリアルを参照してください。
選んだバーコードは以下の通りです。
私たちの目的は、バーコードの下に存在する情報を抽出することです。
1
|
all_info = decode(img)
|
3. バーコードからの情報取得
バーコードの画像から情報を取り出すには、画像オブジェクトをパラメータとする decode
関数の助けを借ります。
そのコードを以下に示す。
[Decoded(data=b'00123456789101112133', type='CODE128', rect=Rect(left=28, top=0, width=2114, height=885), polygon=[Point(x=28, y=1), Point(x=28, y=885), Point(x=2142, y=884), Point(x=2142, y=0)])] |
しかし、この情報が all_info
変数に格納されるのは、以下のブロックのようになります。
得られた情報は非常に雑で、この情報からは何も解読できないことがわかると思います。
1
2
|
for i in all_info:
print (i.data.decode( "utf-8" ))
|
4. バーコードの情報を表示する
バーコードイメージのデータのみを表示し、それ以外の不要な情報を変数から無視するために、以下のコードブロックを使用します。
このコードブロックは、バーコードイメージの下にある値と一致する00123456789101112133という値を画面に表示します。
同じコードを他のバーコード画像やQRコード画像でもテストすることができます。
まとめ
Pythonプログラミング言語でバーコードをデコードする仕組みはご理解いただけたでしょうか。
チュートリアルを読んでいただき、ありがとうございました。
これからも読んでくださいね。