システム開発<基本編>PythonでQRコード生成ツール

Python

前回の記事では、Python環境のインストーラーのダウンロードとパソコン(Windows)への

インストールを実施して、Python環境の構築を紹介しました。

最低限のPython環境が、パソコンに構築されている事を前提に、今回は、便利なツールとして、

Pythonで、QRコードの生成ツールを紹介します。

 

QRコード(キューアール・コード)

QRコードは、1994年(平成6年)に愛知県の自動車部品メーカーであるデンソーの開発部門

(現在は分社化してデンソーウェーブ)が発明したマトリックス型二次元コードになります。

現在では、世界各地やインターネット上でも、データの読み取りや決済用コードとして多用

されていますので、毎日のように目にしたり、スマホのカメラ機能を利用して、QRコード

読み取った経験も多いと思います。

QRコードの詳細については、下記を参照して下さい。

 

 Python パッケージ(ライブラリ)の確認

Pythonは、世界中にモジュールやパッケージ、ソースコードの記載例が多く存在しています。

Pythonは、システム開発やアプリケーション、ツール作成をする際、1から手書きをしなくても、

実績が有るモジュールやパッケージを組み合わせて、開発作業を進めることが出来ます。

これは、作業効率が良いばかりでは無く、手書きが少なくなる事により、無駄なバグを減らし、

強靭且つ安定したプログラムとなり、お客様や利用者の信頼性と利便性が向上します。

モジュール:単一のPythonファイルで、関数クラスを定義します。
パッケージ:複数のモジュールを纏めたディレクトリで、関連するモジュールをグループ化します。
ライブラリ:特定の機能を提供するモジュールやパッケージの集まりのことです。

 

Pythonでは、パッケージの管理とインストールに、ツールの pip を利用します。

pip は、The package installer for Python の意味です。

 

利用方法としては、コマンドプロンプトPowerShell で、コマンドラインとして、

python -m pip list を入力することで、現在、インストールされているパッケージを

一覧で表示させることが出来ます。

前回の記事で、Python環境がインストールされたばかりの状態では、上記のように、

パッケージは pip のみがインストールされています。

 

 Python パッケージ(ライブラリ)のインストール

Pythonでは、QRコードの生成に必要なqrcodeライブラリをインストールする必要が有ります。

単にQRコードを生成するだけでしたら、qrcodeライブラリをインストールだけで済みます。

コマンドは、python -m pip install qrcode になります。

今回は、より多くの画像処理を行ったり、今後の画像処理の事を考慮して、pillowライブラリとの

依存関係を含むqrcodeライブラリpillowライブラリを含む)をインストールしてみましょう。

コマンドは、python -m pip install qrcode[pil] になります。

インストールされているパッケージを、一覧で確認してみましょう。

python -m pip list を入力します。

上記のように、qrcodeライブラリpillowライブラリが無事にインストールされました。

 

OpenCVライブラリ のインストール

pillowライブラリに加えて、画像の読み込み、表示、保存、画像処理、特徴検出、物体追跡、

機械学習を考慮して、OpenCVライブラリもインストールしておきましょう。

 

OpenCV(Computer Vision)は、インテルのComputer Vision向けオープンソースライブラリで、具体的には、画像処理、画像解析、機械学習などが行えます。主にC++で書かれていますが、Pythonなど他の言語でも使用することが出来ます。

コマンドは、python -m pip install opencv-python になります。

上記のように、OpenCVライブラリも無事にインストールされました。

 

QRコード 生成ツール

QRコードの生成に必要な、Pythonのライブラリがインストールされましたので、

実際にQRコードの生成ツールを開発して行きます。

統合開発環境(IDLE)の起動

先ずは、Python開発向けに、統合開発環境(IDLE)を起動しましょう。

Windowsメニューより、IDLE(Python 3.13 63bit)をクリックします。

バージョンの異なるPython環境をインストールした場合は、該当の統合開発環境(IDLE)

起動してみて下さい。

上記のように、IDLE Shell が起動されたと思います。

上部のタブメニューより、File → New File を選択して、新規画面を起動します。

上記のような、真っ白な画面が起動されたと思います。

 

QRコード 生成ソース例

実用的に使える、QRコード 生成ツールを開発していきましょう。

入力したURLから、QRコード が生成されたら、とても便利ですよね。

それでは、ソースを紹介します。


import qrcode
from PIL import Image
import cv2

outfile = "C:/work/python/data/qrcode.png"   # pngファイルに保存

def Create_QRCode(msg):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_M,
        box_size=10,
        border=4,
    )
    qr.add_data(msg)
    
    qr.make(fit=True)

    img = qr.make_image(fill_color="black", back_color="white")

    img.save(outfile)

    #img.show()

    out_img = cv2.imread(outfile)
    
    cv2.imshow("QRCode", out_img)

    cv2.waitKey(0)

if __name__ == "__main__":
    try:
        while True:    
            msg = input("Enter a message = ")
            msg_leng = len(msg)
            
            print('msg_leng : ', msg_leng)
            print('---------------------------')

            Create_QRCode(msg)

    except Exception as e:
        print("Exception : ", e)

    finally:
        print("Create QRcode End...")

ソースをコピー&ペーストして、名前を付けて保存して下さい。

例では、Create_QRCode.py という名前で保存しています。

 

ソースの解説

import qrcode
from PIL import Image
import cv2

こちらは、先程、インストールした3つのライブラリの利用が出来るように、

先頭文でライブラリ環境をインポートしています。

outfile = “C:/work/python/data/qrcode.png”

こちらは、QRコードの画像(png形式)を、保存する場所を指定しています。

お手元のパソコンのフォルダ構成に合わせて、修正して下さい。

def Create_QRCode(msg):

こちらは、QRコードを生成する関数名:Create_QRCodeを定義しています。

qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=10,
border=4,
)

こちらは、QRCodeメソッドを利用して、QRコードの形式、エラー訂正、サイズ、余白などを

制御することが出来ます。

引数:versionは、値が大きくなると、QRコードに含まれるセル(黒白の四角)の数が多くなり、

画像サイズと情報量が増えます。

version=1が最小で、version=40が最大となります。

引数:error_correctionは、誤り訂正レベルを設定できます。

今回は、ERROR_CORRECT_M を利用しています。

誤り訂正レベルは、下記となります。

  • ERROR_CORRECT_L:約7%以下の誤差は、修正可能
  • ERROR_CORRECT_M:約15%以下の誤差は、修正可能
  • ERROR_CORRECT_Q:約25%以下の誤差は、修正可能
  • ERROR_CORRECT_H:約30%以下の誤差は、修正可能

誤り訂正レベルについては、下記を参照して下さい。

引数:box_sizeは、QRコードのセル(四角い黒白の点)のサイズ(ピクセル)を設定します。

引数:borderは、QRコードの外周の余白の幅(セルの数)を設定します。

img = qr.make_image(fill_color=”black”, back_color=”white”)
img.save(outfile)

make_image()メソッドの引数:fill_color, back_colorで、QRコードのセルの色を設定します。

QRコードのセルの色は、QRCode()の引数ではないので、注意が必要です。

out_img = cv2.imread(outfile)
cv2.imshow(“QRCode”, out_img)
cv2.waitKey(0)

こちらは、OpenCVの機能を用いて、保存したQRコードの画像の読み込みと表示をしています。

imreadメソッドで、QRコードの画像の読み込みを行っています。

imshowメソッドで、QRコードの画像を画面上に表示しています。

第一引数:”QRCode” は、QRコードの画像のタイトル(上段)を設定しています。

waitKeyメソッドは、キーボード入力を処理する関数です。

引数は、入力待ち時間の意味で、ミリ秒単位で指定します。

今回のように、引数:0 を指定した時は、何かしらのキーを打つまでは、

キー入力を無期限で待ち続ける設定です。

画面上に表示されたQRコードの画像を非表示にする場合は、右上の×ボタンを押します。

 

ツールの起動

作成したソース画面の上部のタブメニューより、Run → Run Module を選択して、

ツールを動かしてみましょう。

 

ツールを起動して、エラーが無ければ、IDLE Shell には、「Enter a message =

が表示されます。

QRコードを生成したい、URLを入力してみましょう。

今回は、Yahoo! JapanのトップページのURLを入力してみます。

Yahoo! JapanのトップページのURLを入力後、Enterキーを押すと、

入力したURLの長さ:24(バイト文字)が表示されます。

別の画面で、QRコードの画像がポップアップされていることが分かると思います。

実際に、上記のQRコードの画像に、スマホのカメラ機能で読み込むと、Yahoo! Japanの

トップページへ遷移することが確認出来ると思います。

QRコードの画像が保存された場所を、確認してみましょう。

outfile = “C:/work/python/data/qrcode.png”

qrcode.pngをダブルクリックすると、保存されたQRコードの画像が表示されます。

 

まとめ

今回は、便利なツールとして、Pythonで、QRコードの生成ツールを紹介しました。

記事の例では、Yahoo! JapanのトップページのURLを入力しましたが、色々なURLを入力して

QRコードの生成が出来るか、試してみて下さい。

Python開発としては初めての記事でしたので、ツールで必要となるパッケージ(ライブラリ)の

インポート方法や、統合開発環境(IDLE)の起動、ソースの解説、ツールの起動方法、

QRコードの画像の確認と、出来るだけ丁寧に解説して来ました。

次回以降も、Pythonで実装が出来る便利なツール、役立つツールを紹介したいと思います。

コメント

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