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 コードの各種設定
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 コードはコードが汚れていたり,破損していても,コード自身でデータを復元する機能を持っている。
「誤り訂正能力」は 4 段階用意されており,ユーザが使用環境に合わせてレベルを選択することができる。このレベルを上げれば,誤り訂正能力は向上するが,データが増えるためコードのサイズは大きくなる。
QR コードの誤り訂正能力
QR コードの誤り訂正能力は,全コードワード(データを構成する単位で,QR コードでは 1 コードあたり 8 ビット)に対する復元率である。
レベル L からレベル H までの QR コードの誤り訂正能力を下表に示す。
レベル L | 約 7 % |
レベル M | 約 15 % |
レベル Q | 約 25 % |
レベル H | 約 30 % |
参考文献
本稿を作成するときに参考にした文献リストを以下に示す。
- DENSO WAVE
- DENSO WAVE お知らせ「QR コードが IEEE マイルストーンに認定されました」
- Masassiah Blog,「QR コードの奇跡 モノづくり集団の発想転換が革新を生んだ」
- QR コードの情報量とバージョン
- QR Code image generator qrcode
- Python Imagin Library Pillow
- Qiita「Pythonで簡単に2次元バーコード(QRコード)を作成する方法」
更新履歴
- 2022年11月19日 新規作成
- 2022年12月22日 IEEE マイルストーン認定,「誤り訂正機能について」を追加
- 2024年1月22日 本文を加除修正
- 2024年7月24日 参考文献に Qiita「Pythonで簡単に2次元バーコード(QRコード)を作成する方法」を追加