zbar
, который выполняет некоторую предварительную обработку, не обнаруживает QR-код, который можно протестировать, выполняя zbarimg image.jpg
.
Хорошо Бинаризация полезна здесь. Я заставил это работать, используя функцию kraken.binarization.nlbin()
библиотеки Кракена. Библиотека предназначена для распознавания текста, но очень хорошо работает и для QR-кодов, используя нелинейную обработку. Код бинаризации Кракена здесь .
Вот код для образца:
from kraken import binarization
from PIL import Image
from pyzbar.pyzbar import decode
from pyzbar.pyzbar import ZBarSymbol
image_path = "image.jpg"
# binarization using kraken
im = Image.open(image_path)
bw_im = binarization.nlbin(im)
# zbar
decode(bw_im, symbols=[ZBarSymbol.QRCODE])
[Decoded(data=b'DE-AAA002065', type='QRCODE', rect=Rect(left=1429, top=361, width=300, height=306), polygon=[Point(x=1429, y=361), Point(x=1429, y=667), Point(x=1729, y=667), Point(x=1723, y=365)])]
На следующем рисунке показан четкое изображение QR-кода после бинаризации: