ここでは Pure python QR Code generator を使ってみます。pip install qrcode などとしてインストールします(pillow も使われます)。Python ライブラリだけでなく,qr というスクリプトもインストールされます。Mac のターミナルまたは Windows のコマンドプロンプト等で
qr '奥村晴彦です' > test.png
として全角文字のQRコードも正しく生成できます(Windows の VS Code のターミナルではうまくいかないという報告があります)。
Google Colab でもうまくいくようです。
!pip install qrcode !qr '奥村晴彦です' > test.png
これで test.png というファイルができているので左ペインからダウンロードして表示します。あるいは,Google Colab のノートブックの中に表示したいのであれば次のようにします。
from IPython.display import Image
Image("test.png")
コマンドラインではなく Python だけで処理するには次のようにします:
import qrcode
img = qrcode.make('奥村晴彦です')
img.show() # 表示
img.save("test.png") # 保存
ほかに qrcodegen や,PyQRCode からフォークした PyQRCodeNG など,多数のQRコード生成ライブラリがあるようです。
QRコードを読むためのライブラリとして,ここでは pyzbar を使ってみます。インストールは pip install pyzbar です。Mac ではあらかじめ brew install zbar として zbar を入れておきます。次のような実行ファイル qrdecode.py を作っておくと便利です。パスの通ったところに置いておき qrdecode.py *.png *.jpg などとすれば画像からQRコードを見つけて復号してくれるはずです。ファイル名を与えなければクリップボードから画像を読みます。Macなら Control + Shift + Command + 4 でQRコードを含む部分をマウスで選択してから実行します。
#! /usr/bin/env python3
import sys
from pyzbar.pyzbar import decode
from PIL import Image, ImageGrab
def qrdecode(img):
for x in decode(img):
print(x.data.decode("utf-8"))
if len(sys.argv) == 1:
qrdecode(ImageGrab.grabclipboard())
else:
for arg in sys.argv[1:]:
qrdecode(Image.open(arg))
実はこれはQRコードだけでなく通常のバーコードも読めます。