TL; DR: Tôi cần một cách để giải mã mã QR từ tệp hình ảnh bằng cách sử dụng Python (thích hợp hơn).Làm thế nào để giải mã một hình ảnh mã QR trong (tốt hơn là thuần túy) Python?
Tôi có tệp jpg có mã QR mà tôi muốn giải mã bằng Python. Tôi đã tìm thấy một vài thư viện mà tuyên bố để làm điều này:
PyQRCode (website here) được cho là có thể giải mã mã qr từ hình ảnh bằng cách đơn giản cung cấp một con đường như thế này:
import sys, qrcode
d = qrcode.Decoder()
if d.decode('out.png'):
print 'result: ' + d.result
else:
print 'error: ' + d.error
Vì vậy, tôi chỉ đơn giản là cài đặt nó sử dụng sudo pip install pyqrcode
. Tuy nhiên, điều tôi thấy lạ về mã ví dụ ở trên là nó chỉ nhập qrcode
(và không phải pyqrcode
) Vì tôi nghĩ qrcode
đề cập đến this library chỉ có thể tạo ra hình ảnh mã QR. Vì vậy, tôi đã thử mã ở trên với cả hai số pyqrcode
và qrcode
, nhưng cả hai đều không thành công ở dòng thứ hai là AttributeError: 'module' object has no attribute 'Decoder'
. Hơn nữa, the website đề cập đến Ubuntu 8.10 (xuất hiện cách đây hơn 6 năm) và tôi không thể tìm thấy kho lưu trữ công cộng (git hoặc khác) để kiểm tra cam kết mới nhất. Vì vậy, tôi chuyển sang thư viện tiếp theo:
ZBar (website here) tuyên bố là "an open source software suite for reading bar codes from various sources, such as image files."
Vì vậy, tôi đã cố gắng cài đặt nó trên Mac OSX chạy sudo pip install zbar
. Điều này không thành công với error: command 'cc' failed with exit status 1
. Tôi đã cố gắng để đề xuất trong các câu trả lời cho this SO question, nhưng tôi dường như không thể giải quyết nó. Vì vậy, tôi quyết định ra đi một lần nữa:
QRTools, mà theo this blogpost có thể giải mã hình ảnh một cách dễ dàng bằng cách sử dụng đoạn mã sau:
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()
Vì vậy, tôi đã cố gắng cài đặt nó bằng cách sử sudo pip install qrtools
, mà không thể tìm thấy bất cứ điều gì. Tôi cũng đã thử nó với python-qrtools
, qr-tools
, python-qrtools
và một vài kết hợp khác, nhưng rất tiếc là không có kết quả. Tôi cho rằng nó đề cập đến this repo mà nói nó được dựa trên ZBar (xem ở trên). Mặc dù tôi muốn chạy mã của tôi trên Heroku (và do đó muốn có một giải pháp Python tinh khiết) Tôi thành công cài đặt nó trên một hộp Linux (với sudo apt-get install python-qrtools
) và cố gắng chạy nó:
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`)
Mặc dù điều này dường như để giải mã nó, Nó dường như không làm điều đó một cách chính xác. Nó cũng cần ZBar và do đó không phải là Python thuần túy. Vì vậy, tôi quyết định tìm một thư viện khác.
PyXing (website here) được cho là một cổng Python trong những phổ biến Java ZXing library, nhưng ban đầu và chỉ cam kết là 6 tuổi và dự án không có readme hoặc tài liệu nào.
Đối với phần còn lại tôi tìm thấy một vài qr- en lập trình (không de lập trình) và một số điểm cuối API mà có thể giải mã cho bạn. Vì tôi không thích dịch vụ này phụ thuộc vào các thiết bị đầu cuối API khác, nên tôi muốn giữ địa chỉ giải mã mặc dù.
Vì vậy, để kết luận; ai sẽ biết làm thế nào tôi có thể giải mã QR-mã từ hình ảnh trong (thích hợp tinh khiết) Python? Tất cả các mẹo đều được chào đón!
Nó nên là: 'nếu myCode.decode ("/ home/kramer65 /qrcode.jpg ")" và không phải là 'QR (tên tệp ='/home/kramer65/qrcode.jpg ')' –
Tôi cảm thấy điều đáng nói đến là một câu hỏi tiếp theo được đặt ra bởi ** @ kramer65 ** về cách cài đặt ' zbar' với 'pip': http://stackoverflow.com/questions/27406641/how-to-install-python-bindings-originating-from-an-a pt-package – Nez