windows10 64bit 1803
Anaconda3
Python 3.7
Pycharm2019.3
QRコードの読み取り
PythonでQRコードを読み取る際手間取ったので備忘録です。
ここでは、Pythonで作成したQRコードの読み込みを記載しています
pyzbar を インストールする
Pycharmのターミナルから pyzbar をインストールします。
Anaconda3を使用されている方はこれだけで大丈夫のはず。
pip install pyzbar
インストールしないと以下のようにエラーが出力されます。
from pyzbar.pyzbar import decode ModuleNotFoundError: No module nomed 'pyzbar'
とエラーが出力され『pyzbar.pyzbarインポートからModuleNotFoundErrorをデコード:「pyzbar」と名付けられたモジュールはありません。』と怒られてしまいます。
ちなみに私は、pyzbarをインストールしたにも関わらず以下の画像のようにエラーが出力されてしまいました。
なので、もう一度pyzbarをインストールし、pirllowもインストールしました。
pillowをインストールする
Anaconda3には、以下の画像のように始めからパッケージとしてインストール済です。
ので、インストールしても『インストール済』と表示されます。
pip install pillow
インポートするのは、pillow でなく PIL
画像ファイルの読み込み。インストールするにはPillowですが、インポートするパッケージの名前はPillow
ではなくPIL
なので注意しましょう。
pillow公式に説明があります。
from pyzbar.pyzbar import decode from PIL import Image image = 'qr_code.png' # 画像ファイルの指定 data = decode(Image.open(image)) # QRコードの読取り output = data[0][0].decode('utf-8', 'ignore') print(output)
でもこのまま出力しても
文字化けしてしまいます。
文字化けの対処方法
当初、コーディングに以下を記述していたのですが、これでは文字化けしたままで、調べてみるとEmacsユーザー併用のコーディング方法のようでした。
# -*- coding: utf-8 -*-
とりあえず、次に 試したのは、以下の記述を1行目に記述すると文字化けが解消されました。
# coding: UTF-8
参考サイト:Python で文頭に記載する文字コードの「アレ」の名称(なんちゃら UTF-8 みたいなやつ
windowsの文字コードを調べてみる
Windowsでは主に Shift-JIS で設定とのことで調べてみた結果ターミナルから調べてみました。
現在の文字コードを調べるには、ターミナル から chcp と入力します。
(base) C:\Users\chiraura\PycharmProjects\Python_test>chcp 現在のコード ページ: 932 (base) C:\Users\chiraura\PycharmProjects\Python_test>
932と表示されたので Windows-31J (MS932) です。
参考サイト:Shift_JIS と Windows-31J (MS932) の違い
65001と表示されたらutf-8です。
Windowsの文字コードはShift-JISではなくWindows-31J
MacやLinuxはUTF-8
Pythonを調べてみるとutf-8 でした。
chardet 3.0.4:https://pypi.org/project/chardet/
>>> import sys >>> sys.getdefaultencoding() 'utf-8' >>>
参考サイト:Pythonシステムパラメータと関数
CSVファイルを開くとエラーが表示された際の対処方法
QRコードからCSVに出力したファイルを開くとまたもや文字化けしていました。
Pythonで作成したQRコードをcsvに書き込んだ際以下のように文字化けし、ファイルが間違ったエンコーディングでロードされたらしい。
なので色々試してみた結果・・
Set project encoding to ‘windows-31j’ プロジェクトのエンコーディングを「windows-31j」に設定します
Reload in another encoding 別のエンコーディングでリロードする
windows-31jでリロードすることで無事表示されました。
ちなみに、UTF-8をロードしてもNG(文字化け)でした💦
しかし、メモ帳で作成したファイル(utf-8)をパイチャームで開くとそれはOK
なので、よくわからないが、Pycharmで保存したファイルの読み込みには文字変換して読み取ればOKのはず。
その他参考サイト
![](https://www.pg-fl.jp/doscmd/chcp_1.png)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UHl0aG9uJTIwMyVFMyU4MSVBRSVFNSU5MCU4NCVFNyVBOCVBRSVFMyU4MiVBOCVFMyU4MyVCMyVFMyU4MiVCMyVFMyU4MyVCQyVFMyU4MyU4NyVFMyU4MiVBMyVFMyU4MyVCMyVFMyU4MiVCMCVFMyU4MSVBQiVFMyU4MSVBNCVFMyU4MSU4NCVFMyU4MSVBNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MjNhNDU0NDgxOWQzMzRmYWRiY2YzZDg0ZjkzMDg1YzM&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtZXRoYW5lJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hNzkyZjU2OTg3MmUzZWU1NmEyZmQ3YWIyMzljNDY4MQ&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4gS0xhYiDmoKrlvI_kvJrnpL4&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%231E2121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=c7034895d860bdc1afd3edf71360cd85)
![](https://www.javadrive.jp/python/ini/img/p5-0.png)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JTVCUHl0aG9uJTVEJTVCY2hhcmRldCU1RCUyMCVFMyU4MyU5NSVFMyU4MiVBMSVFMyU4MiVBNCVFMyU4MyVBQiVFMyU4MSVBRSVFNiU5NiU4NyVFNSVBRCU5NyVFMyU4MiVCMyVFMyU4MyVCQyVFMyU4MyU4OSVFMyU4MSVBRSVFOCU4NyVBQSVFNSU4QiU5NSVFNSU4OCVBNCVFNSU4OCVBNSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MjNhNjg2YjI5YzBkMDY2YjMwYmMwM2ViMjk4NmE0ODY&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBrb2FyYS1sb2NhbCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MzA1OTEyMGM4ZmYxNTY1ZGRkNzI3OTM1NjFmY2RkMWE&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4g44Oq44OD44Kv44K944OV44OI5qCq5byP5Lya56S-&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%231E2121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=c76598dac3939a33d1c58b71b1506959)
![](https://kazusa-pg.com/images/python-thumbnail.png)
コメント