Wie dekodiert man ein QR-Code Bild in (vorzugsweise reinem) Python?
TL;DR: ich brauche eine Weise zu decodieren, die einen QR-code aus image-Datei verwenden (vorzugsweise rein) Python.
Habe ich eine jpg-Datei mit einem QR-code, den ich entschlüsseln will, mit Python. Ich habe ein paar Bibliotheken, die behaupten, dies zu tun:
PyQRCode ( website hier ), die angeblich Dekodieren von qr-codes aus Bildern, indem Sie einfach die Bereitstellung ein Pfad wie diesem:
import sys, qrcode
d = qrcode.Decoder()
if d.decode('out.png'):
print 'result: ' + d.result
else:
print 'error: ' + d.error
Also habe ich einfach installiert, es mit sudo pip install pyqrcode
. Die Sache finde ich seltsam über den Beispiel-code oben ist jedoch, dass es nur Importe qrcode
(und nicht pyqrcode
wenn) Da ich denke, dass qrcode
bezieht sich auf diese Bibliothek die nur generieren qr-code-Bilder, die es irgendwie verwirrt mich. Also habe ich versucht den code von oben mit beiden pyqrcode
und qrcode
aber beide scheitern an der zweiten Zeile mit dem Inhalt AttributeError: 'module' object has no attribute 'Decoder'
. Darüber hinaus die website bezieht sich auf Ubuntu 8.10 (das kam mehr als 6 Jahren) und ich kann nicht finden, eine öffentliche (git oder andere) - repository, um zu überprüfen, die neueste verpflichten. Also ging ich auf die nächste Bibliothek:
ZBar (website hier) Ansprüche "an open source software suite for reading bar codes from various sources, such as image files."
Also versuchte ich die Installation auf Mac OSX läuft sudo pip install zbar
. Dieser schlägt mit error: command 'cc' failed with exit status 1
. Ich habe versucht, die Anregungen in den Antworten auf diese Frage ALSOaber ich kann nicht scheinen, um es zu lösen. Also habe ich beschlossen, weiter zu gehen:
QRToolsdie nach dieser Beitrag entschlüsseln können Bilder einfach mit dem folgenden code:
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()
Also versuchte ich es bei der Installation mit sudo pip install qrtools
die können nichts finden. Ich habe auch versucht es mit python-qrtools
qr-tools
python-qrtools
und ein paar mehr Kombinationen, aber leider ohne Erfolg. Ich nehme an, es bezieht sich auf diese repodie sagt, es basiert auf ZBar (siehe oben). Obwohl ich will mit meinen code auf Heroku (und so lieber eine Reine Python-Lösung) habe ich erfolgreich installiert es auf einer Linux-box (mit sudo apt-get install python-qrtools
) und versuchte es läuft:
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`)
Obwohl dies scheint zu entschlüsseln, es wird nicht scheinen, um es richtig zu tun. Darüber hinaus muss ZBar und ist somit kein reines Python. Also habe ich beschlossen noch eine weitere Bibliothek.
PyXing (website hier) ist angeblich eine Python-Portierung der populären Java -ZXing Bibliothekaber die erste und einzige commit ist 6 Jahre alt und das Projekt hat keine readme-Datei oder Dokumentation zu löschen.
Den rest fand ich ein paar qr-en - Programmierer (nicht deProgrammierer) und einige API-Endpunkte, die Sie entschlüsseln für Sie. Da ich nicht gerne diesen service angewiesen zu sein auf andere API-Endpunkte, die würde ich behalten wollen die Dekodierung eine lokale Angelegenheit.
So zu schließen; würde jemand wissen, wie kann ich Dekodieren von QR-codes aus Bildern in (bevorzugt Reine) Python? Alle Tipps sind willkommen!
InformationsquelleAutor der Frage kramer65 | 2014-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, die folgenden Schritte und den code, mit
qrtools
:Erstellen Sie eine
qrcode
- Datei, wenn nicht bereits vorhandenpyqrcode
dies zu tun, die installiert werden können mitpip install pyqrcode
Und verwenden Sie den code:
Dekodieren von bestehenden
qrcode
- Datei mitqrtools
qrtools
mitsudo apt-get install python-qrtools
Nun verwenden Sie den folgenden code in Ihre python-prompt
Hier ist der komplette code in einer einzigen Ausführung:
Vorbehalte
PyPNG
mitpip install pypng
für die Verwendungpyqrcode
In den Fall, Sie haben
PIL
installiert ist, erhalten Sie möglicherweiseIOError: decoder zip not available
. In diesem Fall versuchen Sie deinstallieren und neu zu installierenPIL
mit:Wenn das nicht funktioniert, versuchen Sie es mit
Pillow
stattInformationsquelleAutor der Antwort mu 無
Verbrachte ich fast eine halbe Stunde, damit es funktioniert auf Windows + Python 2.7 64-bit), so dass hier zusätzliche Anmerkungen zu der akzeptierten Antwort:
Download https://github.com/NaturalHistoryMuseum/ZBarWin64/releases/download/v0.10/zbar-0.10-cp27-none-win_amd64.whl
Installieren Sie es mit
pip install zbar-0.10-cp27-none-win_amd64.whl
Wenn Python meldet einen
ImportError: DLL load failed: The specified module could not be found.
wenn dabeiimport zbar
dann werden Sie nur installieren, müssen Visual C++ Redistributable Packages für VS 2013 (ich verbrachte viel Zeit hier, versuchen zu kompilieren, erfolglos...)Dann tun
und den code aus der main Antwort sollte funktionieren:
InformationsquelleAutor der Antwort Basj