TL; DR : Python kullanarak (tercihen saf) bir görüntü dosyasındaki QR kodunu çözmenin bir yoluna ihtiyacım var.
Python kullanarak kodunu çözmek istediğim QR kodlu bir jpg dosyam var. Bunu yaptığını iddia eden birkaç kitaplık buldum:
PyQRCode ( web sitesi burada ) basitçe aşağıdaki gibi bir yol sağlayarak resimlerden qr kodlarının kodunu çözebilir:
import sys, qrcode
d = qrcode.Decoder()
if d.decode('out.png'):
print 'result: ' + d.result
else:
print 'error: ' + d.error
Bu yüzden onu kullanarak basitçe kurdum sudo pip install pyqrcode
. Bununla birlikte, yukarıdaki örnek kodla ilgili garip bulduğum şey, yalnızca içe aktarıyor olması qrcode
( pyqrcode
ama değil ) Sanırım , yalnızca qr-kod görüntüleri oluşturabilen bu kitaplığaqrcode
atıfta bulunduğundan , kafamı karıştırdı. Bu yüzden yukarıdaki kodu ve ile denedim , ancak ikisi de ikinci satırda başarısız oluyor . Dahası, web sitesi Ubuntu 8.10'a (6 yıldan daha uzun bir süre önce çıktı) atıfta bulunuyor ve en son commit'i kontrol etmek için onun genel (git veya başka) bir deposu bulamıyorum. Bu yüzden bir sonraki kütüphaneye geçtim:pyqrcode
qrcode
AttributeError: 'module' object has no attribute 'Decoder'
ZBar ( web sitesi burada ) olduğunu iddia ediyor "an open source software suite for reading bar codes from various sources, such as image files."
Bu yüzden onu Mac OSX üzerinde çalıştırmayı denedim sudo pip install zbar
. Bu başarısız olur error: command 'cc' failed with exit status 1
. Bu SO sorusunun yanıtlarında önerilerde bulunmaya çalıştım , ancak çözemiyorum. Bu yüzden tekrar devam etmeye karar verdim:
Bu blog gönderisine göre aşağıdaki kodu kullanarak görüntüleri kolayca çözebilen QRTools :
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()
Bu yüzden sudo pip install qrtools
hiçbir şey bulamayan kullanarak yüklemeyi denedim . Ben de bunu denedi python-qrtools
, qr-tools
, python-qrtools
ama ne yazık ki boşuna, ve bir çift daha fazla kombinasyon. Sanırım ZBar'a dayandığını söyleyen bu repoya atıfta bulunuyor (yukarıya bakın). Kodumu Heroku'da çalıştırmak istememe rağmen (ve dolayısıyla saf bir Python çözümünü tercih etsem de) bir Linux kutusuna (ile sudo apt-get install python-qrtools
) başarıyla yükledim ve çalıştırmayı denedim:
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`)
Bu onu çözüyor gibi görünse de, doğru bir şekilde yapmıyor gibi görünüyor. Ayrıca ZBar'a ihtiyaç duyar ve bu nedenle saf Python değildir. Bu yüzden başka bir kütüphane bulmaya karar verdim.
PyXing ( buradaki web sitesi ), sözde popüler Java ZXing kitaplığının bir Python bağlantı noktasıdır , ancak ilk ve tek kayıt 6 yaşında ve projenin hiçbir şekilde benioku veya dokümantasyonu yok.
Geri kalanı için ben QR bir çift bulundu tr kodlayıcılar (değil de kodlayıcılar) ve sizin için deşifre bazı API uç noktaları. Bu hizmetin diğer API uç noktalarına bağımlı olmasını sevmediğim için, kod çözmeyi yerel olarak tutmak isterim.
Sonuç olarak; Python'da (tercihen saf) resimlerden QR kodlarını nasıl çözebileceğimi bilen var mı? Tüm ipuçları açığız!