Closed MayankFawkes closed 2 years ago
I have a fork here which is able to read the provided QR code (and later unzip it, as per guidance on this blog post).
My fork incorporates the changes from this PR and this PR. The second PR seems to be the important part - it adds a binary
parameter, which you can set to True
for these kinds of QR codes.
Something I've found with these QR codes, is that it seems to be important to keep the data in bytes
, when I convert it to a utf8 string and then back again (and I've tried a few different encodings), it results in corrupt data that can't be unzipped later.
Hopefully this helps.
This is helpful and yeah all of those binarys are important and shouldn't be decode unless it unziped, thanks a lot for your time and reply, you saved my alot time, now i am just hoping pyzbar to accept your pr and make a release on pypi. Thanks again
I will close this once your pr is accepted.
I just tried it, reading accuracy is low or some data is missing, i tried to read QR1 and with the data of QR1 i tried to make the same QR with https://github.com/lincolnloop/python-qrcode and both are not same, even i tried to DECODE the QR1 bytes with zip it failed,
this is QR1.
This QR i made from QR1 data.
@MayankFawkes I can confirm that the first QR code is readable and unzippable, while the second is readable but not unzippable (I get a "bad magic number" error). I've encountered something similar with Indian QR codes, I suspect that the QR Code creation library that they are using is doing something very particular that other libraries don't do. Specifically, they appear to be using this library: QRCode.react which internally is using this very old (and seemingly no longer supported) JS library: QR.js. I think there is something specific that the old library is doing that more modern ones wouldn't be doing.
Here is an example of the content of the two QR codes:
First (works)
b'PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00certificate.json\x8cT\xdbr\xea8\x10\xfc\x15j\x1e\xb7\x1c\xe2\x0b`\xf0\xcbn\x02Ip\xc25\x06\x12\xd8:\x95\x12\xf2\x18+\xb1%\x90d\x08I\xf1\xef[29\xb9l\x9d\xec\x1e\xde\xa4\xe9i\r\xdd\xedy\x85\xbf\xa8\xe0\x1a\x9f5\x04\x7fC\xaa\xf5Z\x05\xa7\xa7\xbb\xdd\xae\xba\xf3\xaaB\xaeN]\xdbi\x9eR\x891r\xcdH\xa6N\xb7\x0eX\xef@*v\x8cWWb[e\xfc+\x8aP\xca8\xd1Lp\xd3\xf1\xc3\x02\xbd_\xa3yc\x86\x92%\x8c,3l\xbf\xe3\xc1\x82\x91\x14"\x19&\xb3\x8f\xbeO\xe5\x1f\x16|\x90G\xc5\xf2\x11\xa9\x86\xe0\xf5\x8d\x13F(\x95\xe0`\x01\x8b!\x80\x98\xc5\xc1\x19\x89SBd\xa5Md\x1c\xfc\xf1\xf6\xf3\x9bu\x0f,\x90\x98\x84\x06\xe7\xda^\xddnx\x8e\xed\xf9\r\xbb\x01\x16p\x92\x1b\xb6\x01bF\xf2\xcaU\xb1\xd6\x04,(\xd2\x92\x15,X!\x8fQB\x00\x97\x98\x93\x0c\xc1\x02\xb22\r5\xbfl63\x93\x8c\xe9=\x04\x10\xf2\x98\x113\x11\x89c\x89J\x99a\x95\x96\x88\xfa\xec\xe7\x85a\xfcr\xe5\x1e\xefb\xa6\xb4d\xe6\xff\x99\x13=\xf2}0\xdd\xe2\x8a\t\xfe\xe5\xaa-\n\xaee\xf9\xec\x00,X\x0b\xa5I\xd6\x161BP\xf3\xeb\x8d\x86s8X\xc0\x94*\xca\xe1\x7fi\x1d\x1c\x01\x84S\xec\x10\x8d\xa5:\xaesb\xfb\'\xb63\xb1[\x81c\x075\xaf\xea\xd4[\x0b\xb0\x00\xb7,FN\x8d\x9b\xafG\xc9\x7f\xc9y\x8c\x00\x9e\xfav\xddn\xf9\x9e\xe79&9\tb\xbc$\xf4i*\xb3\xef\x1a\xff\xfc\xda\xc1x"~\x1fMQj\x960J4\x96.\x7f\xad\xbe\x87\xf0#f&\\K\xa2ij\x9ct\\g\xe18&%o\xd3C\x00\xed\xe1,\x8c\xba\xe1E\xaf\x03\x16\xe4\x84\x17\t\xa1\xba\x90\xa5\x98\x11\xca"\xaf\x84\\i\xa6\x0b\x8d\x15\x91TJ\xeb\x8d\x8f\xdf\xe9\xe8V]\xd7-uL\x12\xa4\x9am1\xd2D\xea/\xd8\xcf\xd5)\xd7,\xfbw5\x16\n!p-\xd0B\x93\xac#\x14\xaa\xf2\xb8-\xbf.3\xdb\xeb\xcf<Gd\xc94\xa9L\x98\\\x13\x9d28X\x90\x10\xca\x8eI\xfd\x84\x92\xa8vD\xb3JDS!\xb2\xff\xce\xee\xa8\x90\x84\xb3J[d\x19R-QWn\xb02B\xa4)\xfe\x7f\xac;D\x97\n}\x9f\xed>\x89\xd3=\xa9\x8c$\x89Q\xa5\xbf\x95t\x80\xc3\xe1\xf0\xc3\x02.\xf8D\x12\xae\x12\x94f\xc7@\x00Z\x16f\xa8\xb5Y0\x9f\x96\xc6\xad"\x11[qb\xac4K\x0e\xca\x1dC4\xc6\xbfN\xbfq\xec\xa8.-s\xd3G\x9d\x8a\x9f\xfb\x86\xbd\x99^>2*\xe4\xba\xb4\x07\x88R&\x8e\xef`\x0b\x1ewF>\xdc_\xa7\xcb+\xca\x86\xecz<}\t\x9d\x01\x0bU\x98\x87\xee\xa0\x1d6\x16\xf9\xa5\xa2\xeeT\x85\xf9`O\xee\xc7l\x98)6\x7f\x9c\xdba\xe6\xb4\xaa\xd5\xae\xda4\xf8\x00y\xebeY\x9b\xe9\x99\xdc\xbaw\xe3\xab\xf0E\xd3l>\xa6Y4\xbe\x15\xf3\x1eN\x16\x17\xf5\xbe\xff\xe8D=1\x8c\xf8\xd0\x11\x8b\xd9\xd6\xcb\x9f\xf2n\x9fN\xecfm\xb4f\xdd\xe2Ye\xce\x9a8q\xfd\x8a7\xc4\xb5?\xdd\xc4x6\x9b\x8c\xe6\xc5\xa2\xcb\x9e\x87\x8e\xdf\xbc|\xbe\xdcm\xe2\x8b\x19\xe6\xc9\xddK\xba\xb8q\xc9no7\xdc:\xb9\x1fz\xf3\xb0\xd5\xcc\xe5\xcbx\xe0\xdd\xef\x1f\x84\x9d.\xf4]\x83\\r{\x92\xde\xa5\xb7E3\xdf\xad\x99-\x9f\xe4\xdd\xed0\xec\xd1\x87h\xaa\xf7\xad\r\x1fv\xf0<z\x9c\xc7\xf5eQ\xdc\x9d\xf7Z[}\xe3\xf7{\xc5m[\xcd\xc6\xd1P=\xac\x1a\xed\xf9\xd6\xaf\xe9\xf3\xa6\xde\xd8\xbb\ro\xb5\x9ennpy6~(\n\xe6\xb5\xe3Q=Zgu\xe7eR\xd0\x93\xf3\xfe6;y\xb8\xe9\xcd/6+\xb7\xa3\xe3\xdcn?/\xfd\xe1<\xbd\xdc\xb3\xf9=\xbd~\xecy\xeet\x1aw\xead?+\xa6\x99\x87\xf6D$\xb55\x9d5\x8a\xae\xee.g\xb5\xc9\xf4\xac\xef\x9f\x0c\xcf\xf5|~>Y\xc1\xe1\xf0O\x00\x00\x00\xff\xffPK\x07\x08\xc3\xfc\xcb!\xef\x03\x00\x00\t\x07\x00\x00PK\x01\x02\x14\x00\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\xc3\xfc\xcb!\xef\x03\x00\x00\t\x07\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00certificate.jsonPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00>\x00\x00\x00-\x04\x00\x00\x00\x00'
Second (doesn't work)
b'PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00certificate.json\xc2\x8cT\xc3\x9br\xc3\xaa8\x10\xc3\xbc\x15j\x1e\xc2\xb7\x1c\xc3\xa2\x0b`\xc3\xb0\xc3\x8bn\x02Ip\xc3\x825\x06\x12\xc3\x98:\xc2\x95\x12\xc3\xb2\x18+\xc2\xb1%\xc2\x90d\x08I\xc3\xb1\xc3\xaf[29\xc2\xb9l\xc2\x9d\xc3\xac\x1e\xc3\x9e\xc2\xa4\xc3\xa9i\r\xc3\x9d\xc3\xady\xc2\x85\xc2\xbf\xc2\xa8\xc3\xa0\x1a\xc2\x9f5\x04\x7fC\xc2\xaa\xc3\xb5Z\x05\xc2\xa7\xc2\xa7\xc2\xbb\xc3\x9d\xc2\xae\xc2\xba\xc3\xb3\xc2\xaaB\xc2\xaeN]\xc3\x9bi\xc2\x9eR\xc2\x891r\xc3\x8dH\xc2\xa6N\xc2\xb7\x0eX\xc3\xaf@*v\xc2\x8cWWb[e\xc3\xbc+\xc2\x8aP\xc3\x8a8\xc3\x91Lp\xc3\x93\xc3\xb1\xc3\x83\x02\xc2\xbd_\xc2\xa3yc\xc2\x86\xc2\x92%\xc2\x8c,3l\xc2\xbf\xc3\xa3\xc3\x81\xc2\x82\xc2\x91\x14"\x19&\xc2\xb3\xc2\x8f\xc2\xbeO\xc3\xa5\x1f\x16|\xc2\x90G\xc3\x85\xc3\xb2\x11\xc2\xa9\xc2\x86\xc3\xa0\xc3\xb5\xc2\x8d\x13F(\xc2\x95\xc3\xa0`\x01\xc2\x8b!\xc2\x80\xc2\x98\xc3\x85\xc3\x81\x19\xc2\x89SBd\xc2\xa5Md\x1c\xc3\xbc\xc3\xb1\xc3\xb6\xc3\xb3\xc2\x9bu\x0f,\xc2\x90\xc2\x98\xc2\x84\x06\xc3\xa7\xc3\x9a^\xc3\x9dnx\xc2\x8e\xc3\xad\xc3\xb9\r\xc2\xbb\x01\x16p\xc2\x92\x1b\xc2\xb6\x01bF\xc3\xb2\xc3\x8aU\xc2\xb1\xc3\x96\x04,(\xc3\x92\xc2\x92\x15,X!\xc2\x8fQB\x00\xc2\x97\xc2\x98\xc2\x93\x0c\xc3\x81\x02\xc2\xb22\r5\xc2\xbfl63\xc2\x93\xc2\x8c\xc3\xa9=\x04\x10\xc3\xb2\xc2\x98\x113\x11\xc2\x89c\xc2\x89J\xc2\x99a\xc2\x95\xc2\x96\xc2\x88\xc3\xba\xc3\xac\xc3\xa7\xc2\x85a\xc3\xbcr\xc3\xa5\x1e\xc3\xafb\xc2\xa6\xc2\xb4d\xc3\xa6\xc3\xbf\xc2\x99\x13=\xc3\xb2}0\xc3\x9d\xc3\xa2\xc2\x8a\t\xc3\xbe\xc3\xa5\xc2\xaa-\n\xc2\xaee\xc3\xb9\xc3\xac\x00,X\x0b\xc2\xa5I\xc3\x96\x161BP\xc3\xb3\xc3\xab\xc2\x8d\xc2\x86s8X\xc3\x80\xc2\x94*\xc3\x8a\xc3\xa1\x7fi\x1d\x1c\x01\xc2\x84S\xc3\xac\x10\xc2\x8d\xc2\xa5:\xc2\xaesb\xc3\xbb\'\xc2\xb63\xc2\xb1[\xc2\x81c\x075\xc2\xaf\xc3\xaa\xc3\x94[\x0b\xc2\xb0\x00\xc2\xb7,FN\xc2\x8d\xc2\x9b\xc2\xafG\xc3\x89\x7f\xc3\x89y\xc2\x8c\x00\xc2\x9e\xc3\xbav\xc3\x9dn\xc3\xb9\xc2\x9e\xc3\xa79&9\tb\xc2\xbc$\xc3\xb4i*\xc2\xb3\xc3\xaf\x1a\xc3\xbf\xc3\xbc\xc3\x9a\xc3\x81x"~\x1fMQj\xc2\x960J4\xc2\x96.\x7f\xc2\xad\xc2\xbe\xc2\x87\xc3\xb0#f&\\K\xc2\xa2ij\xc2\x9ct\\g\xc3\xa18&%o\xc3\x93C\x00\xc3\xad\xc3\xa1,\xc2\x8c\xc2\xba\xc3\xa1E\xc2\xaf\x03\x16\xc3\xa4\xc2\x84\x17\t\xc2\xa1\xc2\xba\xc2\x90\xc2\xa5\xc2\x98\x11\xc3\x8a"\xc2\xaf\xc2\x84\\i\xc2\xa6\x0b\xc2\x8d\x15\xc2\x91TJ\xc3\xab\xc2\x8d\xc2\x8f\xc3\x9f\xc3\xa9\xc3\xa8V]\xc3\x97-uL\x12\xc2\xa4\xc2\x9am1\xc3\x92D\xc3\xaa/\xc3\x98\xc3\x8f\xc3\x95)\xc3\x97,\xc3\xbbw5\x16\n!p-\xc3\x90B\xc2\x93\xc2\xac#\x14\xc2\xaa\xc3\xb2\xc2\xb8-\xc2\xbf.3\xc3\x9b\xc3\xab\xc3\x8f<Gd\xc3\x894\xc2\xa9L\xc2\x98\\\x13\xc2\x9d28X\xc2\x90\x10\xc3\x8a\xc2\x8eI\xc3\xbd\xc2\x84\xc2\x92\xc2\xa8vD\xc2\xb3JDS!\xc2\xb2\xc3\xbf\xc3\x8e\xc3\xae\xc2\xa8\xc2\x90\xc2\x84\xc2\xb3J[d\x19R-QWn\xc2\xb02B\xc2\xa4)\xc3\xbe\x7f\xc2\xac;D\xc2\x97\n}\xc2\x9f\xc3\xad>\xc2\x89\xc3\x93=\xc2\xa9\xc2\x8c$\xc2\x89Q\xc2\xa5\xc2\xbf\xc2\x95t\xc2\x80\xc3\x83\xc3\xa1\xc3\xb0\xc3\x83\x02.\xc3\xb8D\x12\xc2\xae\x12\xc2\x94f\xc3\x87@\x00Z\x16f\xc2\xa8\xc2\xb5Y0\xc2\x9f\xc2\x96\xc3\x86\xc2\xad"\x11[qb\xc2\xac4K\x0e\xc3\x8a\x1dC4\xc3\x86\xc2\xbfN\xc2\xbfq\xc3\xac\xc2\xa8.-s\xc3\x93G\xc2\x9d\xc2\x8a\xc2\x9f\xc3\xbb\xc2\x86\xc2\xbd\xc2\x99^>2*\xc3\xa4\xc2\xba\xc2\xb4\x07\xc2\x88R&\xc2\x8e\xc3\xaf`\x0b\x1ewF>\xc3\x9c_\xc2\xa7\xc3\x8b+\xc3\x8a\xc2\x86\xc3\xacz<}\t\xc2\x9d\x01\x0bU\xc2\x98\xc2\x87\xc3\xae\xc2\xa0\x1d6\x16\xc3\xb9\xc2\xa5\xc2\xa2\xc3\xaeT\xc2\x85\xc3\xb9`O\xc3\xae\xc3\x87l\xc2\x98)6\x7f\xc2\x9c\xc3\x9ba\xc3\xa6\xc2\xb4\xc2\xaa\xc3\x95\xc2\xae\xc3\x9a4\xc3\xb8\x00y\xc3\xabeY\xc2\x9b\xc3\xa9\xc2\x99\xc3\x9c\xc2\xbaw\xc3\xa3\xc2\xab\xc3\xb0E\xc3\x93l>\xc2\xa6Y4\xc2\xbe\x15\xc3\xb3\x1eN\x16\x17\xc3\xb5\xc2\xbe\xc3\xbf\xc3\xa8D=1\xc2\x8c\xc3\xb8\xc3\x90\x11\xc2\x8b\xc3\x99\xc3\x96\xc3\x8b\xc2\x9f\xc3\xb2n\xc2\x9fN\xc3\xacfm\xc2\xb4f\xc3\x9d\xc3\xa2Ye\xc3\x8e\xc2\x9a8q\xc3\xbd\xc2\x8a7\xc3\x84\xc2\xb5?\xc3\x9d\xc3\x84x6\xc2\x9b\xc2\x8c\xc3\xa6\xc3\x85\xc2\xa2\xc3\x8b\xc2\x9e\xc2\x87\xc2\x8e\xc3\x9f\xc2\xbc|\xc2\xbe\xc3\x9cm\xc3\xa2\xc2\x8b\x19\xc3\xa6\xc3\x89\xc3\x9dK\xc2\xba\xc2\xb8q\xc3\x89no7\xc3\x9c:\xc2\xb9\x1fz\xc3\xb3\xc2\xb0\xc3\x95\xc3\x8c\xc3\xa5\xc3\x8bx\xc3\xa0\xc3\x9d\xc3\xaf\x1f\xc2\x84\xc2\x9d.\xc3\xb4]\xc2\x83\\r{\xc2\x92\xc3\x9e\xc2\xa5\xc2\xb7E3\xc3\x9f\xc2\xad\xc2\x99-\xc2\x9f\xc3\xa4\xc3\x9d\xc3\xad0\xc3\xac\xc3\x91\xc2\x87h\xc2\xaa\xc3\xb7\xc2\xad\r\x1fv\xc3\xb0<z\xc2\x9c\xc3\x87\xc3\xb5eQ\xc3\x9c\xc2\x9d\xc3\xb7Z[}\xc3\xa3\xc3\xb7{\xc3\x85m[\xc3\x8d\xc3\x86\xc3\x91P=\xc2\xac\x1a\xc3\xad\xc3\xb9\xc3\x96\xc2\xaf\xc3\xa9\xc3\xb3\xc2\xa6\xc3\x9e\xc3\x98\xc2\xbb\ro\xc2\xb5\xc2\x9ennpy6~(\n\xc3\xa6\xc2\xb5\xc3\xa3Q=Zgu\xc3\xa7eR\xc3\x90\xc2\x93\xc3\xb3\xc3\xbe6;y\xc2\xb8\xc3\xa9\xc3\x8d/6+\xc2\xb7\xc2\xa3\xc3\xa3\xc3\x9cn?/\xc3\xbd\xc3\xa1<\xc2\xbd\xc3\x9c\xc2\xb3\xc3\xb9=\xc2\xbd~\xc3\xacy\xc3\xaet\x1aw\xc3\xaad?+\xc2\xa6\xc2\x99\xc2\x87\xc3\xb6D$\xc2\xb55\xc2\x9d5\xc2\x8a\xc2\xae\xc3\xae.g\xc2\xb5\xc3\x89\xc3\xb4\xc2\xac\xc3\xaf\xc2\x9f\x0c\xc3\x8f\xc3\xb5|~>Y\xc3\x81\xc3\xa1\xc3\xb0O\x00\x00\x00\xc3\xbf\xc3\xbfPK\x07\x08\xc3\x83\xc3\xbc\xc3\x8b!\xc3\xaf\x03\x00\x00\t\x07\x00\x00PK\x01\x02\x14\x00\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\xc3\x83\xc3\xbc\xc3\x8b!\xc3\xaf\x03\x00\x00\t\x07\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00certificate.jsonPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00>\x00\x00\x00-\x04\x00\x00\x00\x00'
i would be lucky if you can tell me what wrong i am doing, for me nor first or second is unzipable.
here is how i am installing
from pyzbar.pyzbar import decode
from PIL import Image
import io
import zipfile, zlib
import base64
image = Image.open('qr.png')
data = decode(image, binary=True)
binary = data[0].data
d = zipfile.ZipFile(io.BytesIO(binary))
print(d.namelist())
Error
zipfile.BadZipFile: Bad magic number for central directory
[Finished in 281ms with exit code 1]
my binary data for your First (works)
b'PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00certificate.json\xc2\x8cT\xc3\x9br\xc3\xaa8\x10\xc3\xbc\x15j\x1e\xc2\xb7\x1c\xc3\xa2\x0b`\xc3\xb0\xc3\x8bn\x02Ip\xc3\x825\x06\x12\xc3\x98:\xc2\x95\x12\xc3\xb2\x18+\xc2\xb1%\xc2\x90d\x08I\xc3\xb1\xc3\xaf[29\xc2\xb9l\xc2\x9d\xc3\xac\x1e\xc3\x9e\xc2\xa4\xc3\xa9i\r\xc3\x9d\xc3\xady\xc2\x85\xc2\xbf\xc2\xa8\xc3\xa0\x1a\xc2\x9f5\x04\x7fC\xc2\xaa\xc3\xb5Z\x05\xc2\xa7\xc2\xa7\xc2\xbb\xc3\x9d\xc2\xae\xc2\xba\xc3\xb3\xc2\xaaB\xc2\xaeN]\xc3\x9bi\xc2\x9eR\xc2\x891r\xc3\x8dH\xc2\xa6N\xc2\xb7\x0eX\xc3\xaf@*v\xc2\x8cWWb[e\xc3\xbc+\xc2\x8aP\xc3\x8a8\xc3\x91Lp\xc3\x93\xc3\xb1\xc3\x83\x02\xc2\xbd_\xc2\xa3yc\xc2\x86\xc2\x92%\xc2\x8c,3l\xc2\xbf\xc3\xa3\xc3\x81\xc2\x82\xc2\x91\x14"\x19&\xc2\xb3\xc2\x8f\xc2\xbeO\xc3\xa5\x1f\x16|\xc2\x90G\xc3\x85\xc3\xb2\x11\xc2\xa9\xc2\x86\xc3\xa0\xc3\xb5\xc2\x8d\x13F(\xc2\x95\xc3\xa0`\x01\xc2\x8b!\xc2\x80\xc2\x98\xc3\x85\xc3\x81\x19\xc2\x89SBd\xc2\xa5Md\x1c\xc3\xbc\xc3\xb1\xc3\xb6\xc3\xb3\xc2\x9bu\x0f,\xc2\x90\xc2\x98\xc2\x84\x06\xc3\xa7\xc3\x9a^\xc3\x9dnx\xc2\x8e\xc3\xad\xc3\xb9\r\xc2\xbb\x01\x16p\xc2\x92\x1b\xc2\xb6\x01bF\xc3\xb2\xc3\x8aU\xc2\xb1\xc3\x96\x04,(\xc3\x92\xc2\x92\x15,X!\xc2\x8fQB\x00\xc2\x97\xc2\x98\xc2\x93\x0c\xc3\x81\x02\xc2\xb22\r5\xc2\xbfl63\xc2\x93\xc2\x8c\xc3\xa9=\x04\x10\xc3\xb2\xc2\x98\x113\x11\xc2\x89c\xc2\x89J\xc2\x99a\xc2\x95\xc2\x96\xc2\x88\xc3\xba\xc3\xac\xc3\xa7\xc2\x85a\xc3\xbcr\xc3\xa5\x1e\xc3\xafb\xc2\xa6\xc2\xb4d\xc3\xa6\xc3\xbf\xc2\x99\x13=\xc3\xb2}0\xc3\x9d\xc3\xa2\xc2\x8a\t\xc3\xbe\xc3\xa5\xc2\xaa-\n\xc2\xaee\xc3\xb9\xc3\xac\x00,X\x0b\xc2\xa5I\xc3\x96\x161BP\xc3\xb3\xc3\xab\xc2\x8d\xc2\x86s8X\xc3\x80\xc2\x94*\xc3\x8a\xc3\xa1\x7fi\x1d\x1c\x01\xc2\x84S\xc3\xac\x10\xc2\x8d\xc2\xa5:\xc2\xaesb\xc3\xbb\'\xc2\xb63\xc2\xb1[\xc2\x81c\x075\xc2\xaf\xc3\xaa\xc3\x94[\x0b\xc2\xb0\x00\xc2\xb7,FN\xc2\x8d\xc2\x9b\xc2\xafG\xc3\x89\x7f\xc3\x89y\xc2\x8c\x00\xc2\x9e\xc3\xbav\xc3\x9dn\xc3\xb9\xc2\x9e\xc3\xa79&9\tb\xc2\xbc$\xc3\xb4i*\xc2\xb3\xc3\xaf\x1a\xc3\xbf\xc3\xbc\xc3\x9a\xc3\x81x"~\x1fMQj\xc2\x960J4\xc2\x96.\x7f\xc2\xad\xc2\xbe\xc2\x87\xc3\xb0#f&\\K\xc2\xa2ij\xc2\x9ct\\g\xc3\xa18&%o\xc3\x93C\x00\xc3\xad\xc3\xa1,\xc2\x8c\xc2\xba\xc3\xa1E\xc2\xaf\x03\x16\xc3\xa4\xc2\x84\x17\t\xc2\xa1\xc2\xba\xc2\x90\xc2\xa5\xc2\x98\x11\xc3\x8a"\xc2\xaf\xc2\x84\\i\xc2\xa6\x0b\xc2\x8d\x15\xc2\x91TJ\xc3\xab\xc2\x8d\xc2\x8f\xc3\x9f\xc3\xa9\xc3\xa8V]\xc3\x97-uL\x12\xc2\xa4\xc2\x9am1\xc3\x92D\xc3\xaa/\xc3\x98\xc3\x8f\xc3\x95)\xc3\x97,\xc3\xbbw5\x16\n!p-\xc3\x90B\xc2\x93\xc2\xac#\x14\xc2\xaa\xc3\xb2\xc2\xb8-\xc2\xbf.3\xc3\x9b\xc3\xab\xc3\x8f<Gd\xc3\x894\xc2\xa9L\xc2\x98\\\x13\xc2\x9d28X\xc2\x90\x10\xc3\x8a\xc2\x8eI\xc3\xbd\xc2\x84\xc2\x92\xc2\xa8vD\xc2\xb3JDS!\xc2\xb2\xc3\xbf\xc3\x8e\xc3\xae\xc2\xa8\xc2\x90\xc2\x84\xc2\xb3J[d\x19R-QWn\xc2\xb02B\xc2\xa4)\xc3\xbe\x7f\xc2\xac;D\xc2\x97\n}\xc2\x9f\xc3\xad>\xc2\x89\xc3\x93=\xc2\xa9\xc2\x8c$\xc2\x89Q\xc2\xa5\xc2\xbf\xc2\x95t\xc2\x80\xc3\x83\xc3\xa1\xc3\xb0\xc3\x83\x02.\xc3\xb8D\x12\xc2\xae\x12\xc2\x94f\xc3\x87@\x00Z\x16f\xc2\xa8\xc2\xb5Y0\xc2\x9f\xc2\x96\xc3\x86\xc2\xad"\x11[qb\xc2\xac4K\x0e\xc3\x8a\x1dC4\xc3\x86\xc2\xbfN\xc2\xbfq\xc3\xac\xc2\xa8.-s\xc3\x93G\xc2\x9d\xc2\x8a\xc2\x9f\xc3\xbb\xc2\x86\xc2\xbd\xc2\x99^>2*\xc3\xa4\xc2\xba\xc2\xb4\x07\xc2\x88R&\xc2\x8e\xc3\xaf`\x0b\x1ewF>\xc3\x9c_\xc2\xa7\xc3\x8b+\xc3\x8a\xc2\x86\xc3\xacz<}\t\xc2\x9d\x01\x0bU\xc2\x98\xc2\x87\xc3\xae\xc2\xa0\x1d6\x16\xc3\xb9\xc2\xa5\xc2\xa2\xc3\xaeT\xc2\x85\xc3\xb9`O\xc3\xae\xc3\x87l\xc2\x98)6\x7f\xc2\x9c\xc3\x9ba\xc3\xa6\xc2\xb4\xc2\xaa\xc3\x95\xc2\xae\xc3\x9a4\xc3\xb8\x00y\xc3\xabeY\xc2\x9b\xc3\xa9\xc2\x99\xc3\x9c\xc2\xbaw\xc3\xa3\xc2\xab\xc3\xb0E\xc3\x93l>\xc2\xa6Y4\xc2\xbe\x15\xc3\xb3\x1eN\x16\x17\xc3\xb5\xc2\xbe\xc3\xbf\xc3\xa8D=1\xc2\x8c\xc3\xb8\xc3\x90\x11\xc2\x8b\xc3\x99\xc3\x96\xc3\x8b\xc2\x9f\xc3\xb2n\xc2\x9fN\xc3\xacfm\xc2\xb4f\xc3\x9d\xc3\xa2Ye\xc3\x8e\xc2\x9a8q\xc3\xbd\xc2\x8a7\xc3\x84\xc2\xb5?\xc3\x9d\xc3\x84x6\xc2\x9b\xc2\x8c\xc3\xa6\xc3\x85\xc2\xa2\xc3\x8b\xc2\x9e\xc2\x87\xc2\x8e\xc3\x9f\xc2\xbc|\xc2\xbe\xc3\x9cm\xc3\xa2\xc2\x8b\x19\xc3\xa6\xc3\x89\xc3\x9dK\xc2\xba\xc2\xb8q\xc3\x89no7\xc3\x9c:\xc2\xb9\x1fz\xc3\xb3\xc2\xb0\xc3\x95\xc3\x8c\xc3\xa5\xc3\x8bx\xc3\xa0\xc3\x9d\xc3\xaf\x1f\xc2\x84\xc2\x9d.\xc3\xb4]\xc2\x83\\r{\xc2\x92\xc3\x9e\xc2\xa5\xc2\xb7E3\xc3\x9f\xc2\xad\xc2\x99-\xc2\x9f\xc3\xa4\xc3\x9d\xc3\xad0\xc3\xac\xc3\x91\xc2\x87h\xc2\xaa\xc3\xb7\xc2\xad\r\x1fv\xc3\xb0<z\xc2\x9c\xc3\x87\xc3\xb5eQ\xc3\x9c\xc2\x9d\xc3\xb7Z[}\xc3\xa3\xc3\xb7{\xc3\x85m[\xc3\x8d\xc3\x86\xc3\x91P=\xc2\xac\x1a\xc3\xad\xc3\xb9\xc3\x96\xc2\xaf\xc3\xa9\xc3\xb3\xc2\xa6\xc3\x9e\xc3\x98\xc2\xbb\ro\xc2\xb5\xc2\x9ennpy6~(\n\xc3\xa6\xc2\xb5\xc3\xa3Q=Zgu\xc3\xa7eR\xc3\x90\xc2\x93\xc3\xb3\xc3\xbe6;y\xc2\xb8\xc3\xa9\xc3\x8d/6+\xc2\xb7\xc2\xa3\xc3\xa3\xc3\x9cn?/\xc3\xbd\xc3\xa1<\xc2\xbd\xc3\x9c\xc2\xb3\xc3\xb9=\xc2\xbd~\xc3\xacy\xc3\xaet\x1aw\xc3\xaad?+\xc2\xa6\xc2\x99\xc2\x87\xc3\xb6D$\xc2\xb55\xc2\x9d5\xc2\x8a\xc2\xae\xc3\xae.g\xc2\xb5\xc3\x89\xc3\xb4\xc2\xac\xc3\xaf\xc2\x9f\x0c\xc3\x8f\xc3\xb5|~>Y\xc3\x81\xc3\xa1\xc3\xb0O\x00\x00\x00\xc3\xbf\xc3\xbfPK\x07\x08\xc3\x83\xc3\xbc\xc3\x8b!\xc3\xaf\x03\x00\x00\t\x07\x00\x00PK\x01\x02\x14\x00\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\xc3\x83\xc3\xbc\xc3\x8b!\xc3\xaf\x03\x00\x00\t\x07\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00certificate.jsonPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00>\x00\x00\x00-\x04\x00\x00\x00\x00'
Which is different from you.
Something I missed is that in addition to the fork, you need to have at least v0.23.1 of ZBar which adds support for binary QR codes (pyzbar just wraps ZBar). See the release notes for that version here: https://github.com/mchehab/zbar/releases/tag/0.23.1
There have been other versions released since then, but I don’t think they’re specifically needed for this.
Yeah it worked after installing latest binary of zbar. Thanks
output in code:
[Decoded(data=b'PK\x03\x04\x14', type='QRCODE', rect=Rect(left=12, top=13, width=604, height=605), polygon=[Point(x=12, y=14), Point(x=12, y=618), Point(x=614, y=616), Point(x=616, y=13)])]
but this is incomplete data
when i am trying to decode on
https://zxing.org/w/decode.jspx
this is what i want in bytes in python. but code seems cant parse the all data.