【Python勉強会】画像からバーコードを読取ってみた~QRコード編~

どうも!リョクちゃです。

今回はPythonで画像に映ったバーコード(QRコード)を読取り、

読取った結果を表示する方法を紹介していきます。

ちなみに前回の記事はこちら

Pythonで再帰処理をする方法を簡単に例を出しながら紹介しています。例として、ある自然数nの1~nまでの総和を求めるといった問題を対象に再帰処理を使った場合と使わない場合で簡単にコードを書いています。さわりだけでも簡単にわかってもらえたら嬉しいです。

画像に映ったバーコードを読取る

Pythonで画像に映されたバーコードを読取るには、

pyzbarといったモジュールを使うことで簡単にコードを書くことができます。

ここは先人の知恵をお借りして、コードの開発工数を削減していきましょう。

(ありがとうございます。)

スポンサーリンク




pyzbarをインストールする

自身のPython環境にインストールするには、

コマンドプロンプトを立ち上げて、以下のコマンドを実行します。

pip install pyzbar

もしくは

pip3 install pyzbar

※このコマンドを実行する前に、以下のコマンドを

念のため、優先して実行しておきましょう。

pip install –upgrade pip

もしくは

pip3 install –upgrade pip3

Pythonのコードファイルで使う方法

インストールしたpyzbarを使用するには、

.pyファイル上で、

from  pyzbar.pyzbar import decode

と書きます。

pyzbarのdecodeクラスを使用します。

今回使用する画像ファイル

以下のサイトで作成したQRコードを使います。

QRコードを無料で作成できるサイトです。自由な文章をQRコードにできます。商用利用も無期限・無制限で、EPS形式の生成も可能。初心者からプロまで簡単に使えます。

作成したQRコードには“12345678”が含まれています。

画像からバーコードを読取る

バーコードを読取るには、pyzbarのほかに以下のライブラリを使用します。

from pathlib import path
from PIL import Image

pthlibではローカルパスに保存された画像ファイルを扱うのに使います。

PILは画像ファイルを読み込むのに使います。

※もしPILがインストールされていなかったら

  pip install pil (Python2系)
  pip install pillow (Python3系)

バージョンによって違います。

これを組合わせて、以下のコードを書きます。

まず、画像ファイルのパスを指定します。

それから、画像ファイルを読取り、pyzbarのdecodeを使って

画像内のバーコード(QRコード)を探します。

結果をdata[0][0].decode(‘utf-8’, ‘ignore’)とすることで、

出力がされます。

今回は、printで表示される結果として”12345678″が表示されたらクリアです。

まとめ

Pythonでpyzbarモジュールを使うことで簡単に画像に映った、

バーコードを読取ることができました。

これを応用することで、読み取ったデータで照合ツールや、

画像ファイルのパスと読取った結果を紐付けて、データベースに保存する

といったこともできますね。

複数読取りなどの課題については次回以降まとめていきます。

最後までお読みいただきありがとうございます。

スポンサーリンク