Python で QR コードを生成

Python の qrcode ライブラリで QR コードを生成する方法についてまとめる。

なお,本稿で QR コードを生成したときに用いた Python のバージョンは 3.7.4 である。

QR コードとは

QR コードは,1994年に自動車部品メーカであるデンソーの開発部門(現在は分社化してデンソーウェーブ)が開発したマトリックス型二次元コードである。

ここで,QR は Quick Response の頭字語であり,高速読み取りを目的の一つとしている名称である。

QR コードは ISO/IEC 18004,JIS X 0510「情報技術―自動認識及びデータ取得技術― QR コード バーコードシンボル体系仕様」 “Information technology-Automatic identification and data capture techniques-QR Code bar code symbology specification” で規格化されている。

電気・電子分野において,社会や産業の発展に貢献をした歴史的な業績を表彰する IEEE マイルストーンに,QR コードは 2020 年に認定されている。

事前準備 Python ライブラリをインストール

Python で QR コードを使うため,画像ライブラリ Pillow と QR コード生成ライブラリ qrcode をインストールする。

画像ライブラリ Pillow インストール

画像ライブラリ Pillow をインストールする。

pip install Pillow

QR コード生成ライブラリ qrcode インストール

QR コード生成ライブラリ qrcode を インストールする。

pip install qrcode

Pillow と qrcode をインストールすれば,Python で QR コードを扱うことができる。

QR コードの生成

早速,Python で QR コードを作成してみる。

import qrcode

img = qrcode.make('https://masassiah.xyz/')
img.save("qrcode_masassiah_xyz.png")

上記の Python プログラムでは,qrcode のライブラリを読み込んだ後,本サイトの URL の QR コードを作成し,png 形式で保存している(ファイル名称は “qrcode_masassiah_xyz.png”)。

保存した QR コードの png 画像を以下に示す。

図 生成した QR コード(https://masassiah.xyz/)

QR コードの各種設定

Python のライブラリ qrcode を用いて QR コードを生成するとき,QR コードのバージョン,誤り訂正レベル,セルサイズ,余白の幅,色を指定できる。

  • 生成される QR コードのバージョン(引数 version)
  • 誤り訂正レベル(引数 error_correction)
  • セルのサイズ(引数 box_size)
  • 余白の幅(引数 border)
  • 色(引数 fill_color, backcolor)

ここで,バージョン 10,誤り訂正レベル L,セルサイズ 2,余白の幅 8 に設定し,QR コードの png 画像を生成するサンプルコードを示す。

import qrcode

qr = qrcode.QRCode(
    version=10,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=2,
    border=8
)
qr.add_data('https://masassiah.xyz/')
qr.make()
img = qr.make_image()
img.save('qrcode10L28.png')

上記のコードを実行して,保存された QR コードの png 画像を以下に示す。

図 QR コード(バージョン 10,誤り訂正レベル L,セルサイズ 2,余白の幅 8)

誤り訂正機能について

QR コードはコードが汚れていたり,破損していても,コード自身でデータを復元する機能を持っている。

「誤り訂正能力」は 4 段階用意されており,ユーザが使用環境に合わせてレベルを選択することができる。このレベルを上げれば,誤り訂正能力は向上するが,データが増えるためコードのサイズは大きくなる。

QR コードの誤り訂正能力

QR コードの誤り訂正能力は,全コードワード(データを構成する単位で,QR コードでは 1 コードあたり 8 ビット)に対する復元率である。

レベル L からレベル H までの QR コードの誤り訂正能力を下表に示す。

レベル L約 7 %
レベル M約 15 %
レベル Q約 25 %
レベル H約 30 %
表 QR コードの誤り訂正能力

参考文献

本稿を作成するときに参考にした文献リストを以下に示す。

QR コードの奇跡

更新履歴

  • 2022年11月19日 新規作成
  • 2022年12月22日 IEEE マイルストーン認定,「誤り訂正機能について」を追加
  • 2024年1月22日 本文を加除修正

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です