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のはず。
その他参考サイト
コメント