TL; DR : ฉันต้องการวิธีถอดรหัส QR-code จากไฟล์รูปภาพโดยใช้ Python (ดีกว่า)
ฉันมีไฟล์ jpg ที่มีรหัส QR ซึ่งฉันต้องการถอดรหัสโดยใช้ Python ฉันพบห้องสมุดสองแห่งที่อ้างว่าทำสิ่งนี้:
PyQRCode ( เว็บไซต์ที่นี่ ) ซึ่งคาดว่าจะสามารถถอดรหัสรหัส qr จากภาพได้โดยเพียงแค่ระบุเส้นทางดังนี้:
import sys, qrcode
d = qrcode.Decoder()
if d.decode('out.png'):
print 'result: ' + d.result
else:
print 'error: ' + d.error
ดังนั้นฉันจึงติดตั้งโดยใช้sudo pip install pyqrcode
ไฟล์. อย่างไรก็ตามสิ่งที่ฉันพบว่าแปลกเกี่ยวกับโค้ดตัวอย่างด้านบนก็คือมันเป็นเพียงการนำเข้าqrcode
( pyqrcode
แต่ไม่ใช่) เนื่องจากฉันคิดว่าqrcode
หมายถึงไลบรารีนี้ซึ่งสามารถสร้างภาพรหัส QR ได้เท่านั้นจึงทำให้ฉันสับสน ดังนั้นผมจึงพยายามโค้ดข้างต้นมีทั้งpyqrcode
และแต่ทั้งสองล้มเหลวในบรรทัดที่สองบอกว่าqrcode
AttributeError: 'module' object has no attribute 'Decoder'
นอกจากนี้เว็บไซต์ยังอ้างถึง Ubuntu 8.10 (ซึ่งออกมาเมื่อ 6 ปีที่แล้ว) และฉันไม่พบที่เก็บข้อมูลสาธารณะ (git หรืออื่น ๆ ) เพื่อตรวจสอบการกระทำล่าสุด ดังนั้นฉันจึงย้ายไปที่ห้องสมุดถัดไป:
ZBar ( เว็บไซต์ที่นี่ ) อ้างว่าเป็น"an open source software suite for reading bar codes from various sources, such as image files."
ดังนั้นฉันจึงลองติดตั้งบน Mac OSX ที่ทำงานsudo pip install zbar
อยู่ error: command 'cc' failed with exit status 1
นี้ล้มเหลวด้วย ฉันพยายามให้คำแนะนำในคำตอบของคำถาม SO นี้แต่ดูเหมือนจะแก้ไม่ได้ ดังนั้นฉันจึงตัดสินใจที่จะดำเนินการต่ออีกครั้ง:
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()
ผมเลยลองติดตั้งโดยใช้sudo pip install qrtools
ซึ่งไม่พบอะไรเลย ฉันยังพยายามกับpython-qrtools
, qr-tools
, python-qrtools
และคู่มากขึ้นรวมกัน แต่โชคร้ายที่ไม่มีประโยชน์ ฉันคิดว่ามันหมายถึงrepo นี้ซึ่งบอกว่ามันขึ้นอยู่กับ ZBar (ดูด้านบน) แม้ว่าฉันต้องการเรียกใช้โค้ดของฉันบน Heroku (และด้วยเหตุนี้จึงต้องการโซลูชัน Python บริสุทธิ์) ฉันติดตั้งบนกล่อง Linux (ด้วยsudo apt-get install python-qrtools
) สำเร็จแล้วและลองรัน:
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`)
แม้ว่าจะดูเหมือนว่าจะถอดรหัสได้ แต่ดูเหมือนจะทำไม่ถูกต้อง นอกจากนี้ยังต้องการ ZBar และไม่ใช่ Python ที่บริสุทธิ์ ดังนั้นฉันจึงตัดสินใจที่จะหาห้องสมุดอื่น
PyXing ( เว็บไซต์ที่นี่ ) ควรจะเป็นพอร์ต Python ของไลบรารี Java ZXingยอดนิยมแต่การกระทำเริ่มต้นและมีอายุเพียง 6 ปีและโครงการไม่มีการอ่านหรือเอกสารใด ๆ
สำหรับส่วนที่เหลือฉันพบโค้ด qr -enสองสามตัว(ไม่ใช่โค้ดเดอร์ ) และปลายทาง API บางตัวที่สามารถถอดรหัสให้คุณได้ เนื่องจากฉันไม่ต้องการให้บริการนี้ขึ้นอยู่กับจุดสิ้นสุด API อื่นฉันจึงต้องการให้การถอดรหัสอยู่ในเครื่อง
เพื่อสรุป; มีใครรู้บ้างว่าฉันจะถอดรหัส QR-code จากรูปภาพใน Python ได้อย่างไร ยินดีต้อนรับทุกคำแนะนำ!