Python で QR コードを生成
Python の qrcode ライブラリで 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
以上で Python で QR コードを扱う準備は完了である。
QR コードの生成
早速,Python で QR コードを作成してみる。
import qrcode
img = qrcode.make('https://masassiah.xyz/')
img.save("qrcode_masassiah_xyz.png")
上記の Python プログラムでは,本サイトの URL の QR コードを作成し,png 形式で保存している。
生成された QR コードを以下に示す。

QR コードの各種設定
QR コードを生成するとき,QR コードのバージョン,誤り訂正レベル,セルサイズ,余白の幅,色を指定できる。
- 生成される QR コードのバージョン(引数 version)
- 誤り訂正レベル(引数 error_correction)
- セルのサイズ(引数 box_size)
- 余白の幅(引数 border)
- 色(引数 fill_color, backcolor)
バージョン 10,誤り訂正レベル L,セルサイズ 2,余白の幅 8 に設定したサンプルコードを示す。
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 コードを下図に示す。

誤り訂正機能について
QR コードはコードが汚れていたり,破損していても,コード自身でデータを復元する機能を持っている。「誤り訂正能力」は 4 段階用意されており,ユーザが使用環境に合わせてレベルを選択することができる。このレベルを上げれば,誤り訂正能力は向上するが,データが増えるためコードのサイズは大きくなる。
QR コードの誤り訂正能力
QR コードの誤り訂正能力とは,全コードワード(データを構成する単位で,QR コードでは 1 コードあたり 8 ビット)に対する復元率である。
レベル 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
更新履歴
- 2022年11月19日 新規作成
- 2022年12月22日 IEEE マイルストーン認定,「誤り訂正機能について」を追加