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
. Я попробовал предложения в ответах на этот вопрос SO, но я не могу его решить. Поэтому я решил снова продолжить:
QRTools, который согласно этот blogpost может легко декодировать изображения, используя следующий код:
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- ru (не de) и некоторые конечные точки API, которые могут декодироваться для вас. Поскольку мне не нравится, что эта служба зависит от других конечных точек API, я бы хотел сохранить локальное декодирование.
Итак, чтобы заключить; Кто-нибудь знает, как я могу декодировать QR-коды из изображений в (предпочтительном чистом) Python? Все советы приветствуются!