TL; DR : Saya membutuhkan cara untuk memecahkan kode QR-code dari file gambar menggunakan (lebih disukai murni) Python.
Saya punya file jpg dengan kode QR yang ingin saya dekode menggunakan Python. Saya telah menemukan beberapa perpustakaan yang mengklaim melakukan ini:
PyQRCode ( situs web di sini ) yang seharusnya dapat memecahkan kode kode qr dari gambar hanya dengan menyediakan jalur seperti ini:
import sys, qrcode
d = qrcode.Decoder()
if d.decode('out.png'):
print 'result: ' + d.result
else:
print 'error: ' + d.error
Jadi saya hanya menginstalnya menggunakan sudo pip install pyqrcode
. Hal yang saya anggap aneh tentang contoh kode di atas, bagaimanapun, adalah bahwa itu hanya impor qrcode
(dan bukan pyqrcode
meskipun) Karena saya pikir qrcode
mengacu pada pustaka ini yang hanya dapat menghasilkan gambar kode qr itu agak membingungkan saya. Jadi saya mencoba kode di atas dengan pyqrcode
dan qrcode
, tetapi keduanya gagal pada baris kedua yang mengatakan AttributeError: 'module' object has no attribute 'Decoder'
. Selain itu, situs web mengacu pada Ubuntu 8.10 (yang keluar lebih dari 6 tahun yang lalu) dan saya tidak dapat menemukan repositori publik (git atau lainnya) untuk memeriksa komit terbaru. Jadi saya pindah ke perpustakaan berikutnya:
ZBar ( situs web di sini ) mengklaim sebagai "an open source software suite for reading bar codes from various sources, such as image files."
Jadi saya mencoba menginstalnya di Mac OSX yang sedang berjalan sudo pip install zbar
. Ini gagal dengan error: command 'cc' failed with exit status 1
. Saya mencoba memberikan saran dalam jawaban atas pertanyaan SO ini , tetapi sepertinya saya tidak dapat menyelesaikannya. Jadi saya memutuskan untuk pindah lagi:
QRTools , yang menurut blogpost ini dapat mendekode gambar dengan mudah menggunakan kode berikut:
from qrtools import QR
myCode = QR(filename=u"/home/psutton/Documents/Python/qrcodes/qrcode.png")
if myCode.decode():
print myCode.data
print myCode.data_type
print myCode.data_to_string()
Jadi saya mencoba menginstalnya menggunakan sudo pip install qrtools
, yang tidak dapat menemukan apa pun. Saya juga mencoba dengan python-qrtools
, qr-tools
, python-qrtools
dan beberapa lebih kombinasi, tapi sayangnya tidak berhasil. Saya kira itu mengacu pada repo ini yang mengatakan itu didasarkan pada ZBar (lihat di atas). Meskipun saya ingin menjalankan kode saya di Heroku (dan dengan demikian lebih memilih solusi Python murni), saya berhasil menginstalnya di kotak Linux (dengan sudo apt-get install python-qrtools
) dan mencoba menjalankannya:
from qrtools import QR
c = QR(filename='/home/kramer65/qrcode.jpg')
c.data # prints u'NULL'
c.data_type # prints u'text'
c.data_to_string() # prints '\xef\xbb\xbfNULL' where I expect an int (being `1234567890`)
Meskipun ini sepertinya memecahkan kodenya, Sepertinya ini tidak melakukannya dengan benar. Ini juga membutuhkan ZBar dan dengan demikian bukan Python murni. Jadi saya memutuskan untuk mencari perpustakaan lain.
PyXing ( situs web di sini ) seharusnya merupakan port Python dari pustaka Java ZXing yang populer , tetapi komit awal dan satu-satunya adalah 6 tahun dan proyek tersebut tidak memiliki readme atau dokumentasi sama sekali.
Selebihnya saya menemukan beberapa qr- en coders (tidak de coders) dan beberapa API endpoint yang dapat memecahkan kode untuk Anda. Karena saya tidak suka layanan ini bergantung pada endpoint API lain, saya ingin menjaga decoding tetap lokal.
Jadi untuk menyimpulkan; adakah yang tahu bagaimana saya bisa memecahkan kode QR-kode dari gambar di (lebih disukai murni) Python? Semua tips diterima!