QRコードのサンプル(Python、qrcode)

■いろいろなところで使われているQRコードを作ってみる。
アプリ決済や航空券とかいろんなところでQRコードが使われているので、これについて少し見てみたい。Pythonで作成できないか調べると、qrcodeというライブラリで作成できるようなので、これでサンプルを作ってみる。

Wikiを見ると、QRコードは30年くらい前にデンソーが開発したものとのこと。今ではJIS X 0510として規格化もされていた。

とりあえずライブラリをインストールして、下のサンプルコードを実行。

import qrcode
img = qrcode.make('sample')
type(img)  # qrcode.image.pil.PilImage
img.save("sample035_001.png")

import qrcode
##### 作成サンプル1 #####
img = qrcode.make('sample')
type(img)  # qrcode.image.pil.PilImage
img.save("sample035_001.png")

##### 作成サンプル2 #####
# 型番1, 誤り検出L, 文字列41
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=4,
    border=1,
)
qr.add_data('12345678901234567890123456789012345678901')
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("sample035_002.png")

##### 作成サンプル3 #####
# 型番1, 誤り検出L, 文字列42 → 型番2
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=4,
    border=3,
)
qr.add_data('123456789012345678901234567890123456789012')
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("sample035_003.png")

結果がこちら。上から作成サンプル1、2、3。

サンプル1。型番は1(21×21)。ピクセルを数えると、位置を決める3つの四角は、1辺7ピクセル。それ以外のところで、内容のデータを持ったり、誤り検出のデータを持ったりしているよう。
JIS X 0510を見ると、型番1のデータ容量は、誤り検出レベルLの場合、数字は41とのこと。サンプル2として、41個の数字でQRコードを作成。こちらは、作成時に型番や誤り検出レベルなども指定。

作成されたものは型番1(21×21)。次に、数字の数を42にして同じような設定で再度作成。ピクセルを数えると25×25の型番2になっていることが分かる。

多分、データ容量を超える場合、それをカバーできる型番に自動的に更新されるのではと思う。

QRコードは、スマホから読み込みができるので、専用のバーコードリーダーの導入が不要。ちょっとした製品管理などやりたい時でも簡単に使えるのではと思う。