Pythonのpyzbarモジュールの使い方|バーコードの画像を読み取り情報を取得する方法

スポンサーリンク

こんにちは、コーダー仲間です。

この記事では、Pythonを使用して画像からバーコードをデコードする方法を学びます。

この記事では、Pythonの pyzbar モジュールを使用し、pillowモジュールと一緒に使用します。

スポンサーリンク

pyzbar モジュールを使って画像からバーコードをデコードする

pyzbarモジュールは、一次元バーコードやQRコードを簡単に読み取り、デコードするためのモジュールで、正しく動作させるためにはPIL` モジュールを必要とします。

モジュールを実装する前に、まず両モジュールをインポートする必要がある。

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. バーコードの情報を表示する

バーコードイメージのデータのみを表示し、それ以外の不要な情報を変数から無視するために、以下のコードブロックを使用します。

Bar1
Bar1

このコードブロックは、バーコードイメージの下にある値と一致する00123456789101112133という値を画面に表示します。


同じコードを他のバーコード画像やQRコード画像でもテストすることができます

まとめ

Pythonプログラミング言語でバーコードをデコードする仕組みはご理解いただけたでしょうか。

チュートリアルを読んでいただき、ありがとうございました。

これからも読んでくださいね。

タイトルとURLをコピーしました