TL; DR : Мені потрібен спосіб декодування QR-коду з файлу зображення за допомогою (бажано чистого) 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
. Я намагався дати пропозиції у відповідях на це ТАКЕ питання , але, здається, не можу це вирішити. Тому я вирішив рухатися далі:
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
і ще пару комбінацій, але , до жаль , безрезультатно. Припускаю, що це посилання на це репо, яке говорить, що воно базується на 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 років, і проект не має жодної readme чи документації.
В іншому я знайшов пару qr- ан кодеров (НЕ де - кодеров) і деякі API кінцевих точок , які можуть розшифрувати для вас. Оскільки мені не подобається, щоб ця служба залежала від інших кінцевих точок API, я хотів би продовжувати декодування локальним.
Отже, на закінчення; хтось знає, як я можу декодувати QR-коди із зображень у (бажано чистому) Python? Всі поради вітаються!