首页 > 解决方案 > python - Pyzxing 解码 pdf417 代码的原始数据

问题描述

我正在使用pyzxing解码图像中的 pdf417 代码,我现在的代码工作正常并且正在返回 pdf417 代码的原始数据,所以我的问题是是否有一个 python 模块可以将原始数据解析给人类可读数据。

我的代码是:

import numpy as np
import cv2
from PIL import Image as PIL
from pdf417decoder import PDF417Decoder

img=PIL.fromarray(img)

reader = BarCodeReader()
results = reader.decode('path to image')

print(results,"\n")

结果是:

[{'filename': b'file:/path to image', 'format': b'PDF_417', 'type': b'TEXT', 'raw': b'0357534559\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PubDSK_1\x00\x00\x00\x00\x00\x00\x00\x004x00\x00\x00\x00\2\x8aa\xc2\xab\xc2\xb5\xc3\x8d\xc2\x8e\xc2xc2\xb8\xc2\xafRckCXi`VpYkao\xc2\xadn\xc2\x86\x08U,\x7f_\xc2\x8a\xc3\x84(\xc2\x82\x11\xc2\x9df\xc3\xbf\x007\x02C\x00\xc2\x9f]\xc3\xbf\xc2\x80\xc2\x80uX{\xc2\xa6|Qrml\xc2\x92\xc2\x88`\xc2\x97Rw\xc2\xaad\xc2\x94k\xc2\xa9s\xc2\xb1\xc2\x8epa\xc2\x9dc\xc2\xb1U\xc2\x9cI\xc2\x95S\xc2\xa1zuD\xc2\x9c\xc2\xafSM\xc2\x89\xc3\x8di\xc3\x88s\xc3\x95[\xc2\xb3GMz\xc3\x9e\xc2\xa1\xc2\xbd\xc2\xb1\xc2\x97\xc2\x8f\xc2\xb2\xc2\xac\xc3\x9a\xc2\xa1{~\xc2\xadI\xc2\xaa\xc2\x9f\xc2\x94\xc2\xb4\xc2\x83\xc2\x95\xc2\x89\xc2\xa0\xc2\x92\xc2\xae\xc2\x88\xc2\x9e\xc2\x8em\xc2\x9f\\Y\xc2\xb8p\xc3\x87\xc2\x9bk\xc2\xa0y\xc2\xa5n\xc3\xa0d7\xc2\xa3\xc3\x88\\\xc2\x99\xc3\x93\xc3\xa6x\xc2\xbc\xc2\x88\xc3\x9b\xc2\x96\xc2\xafp\xc2\x82\xc2\x8b\xc2\x90\xc2\x8e]\xc2\x85\xc2\xa5\xc3\x91\xc3\x86\xc2\xbeNi|\xc2\x9b\xc2\x89C\xc2\x9bQa6\xc2\x89\xc2\xb8cNz\xc2\xa0(6J\xc2\x91TY\xc2\xa4;\xc3\xba\xc3\x9d\xc2\xb1$\xc2\xa9\xc3\x92?\xc2\xa4\xc3\xbd\x00L)|\xc3\xaam\xc3\xb7k\xc3\x9d\xc2\xbb\xc2\x9e\t\xc3\xbe\xc2\x96\xc2\xac\xc2\x99\xc3\xac\x05<08"\xc3\x86o\xc2\xb4\xc3\x9c\xc2\x85\x0em\x13\xc3\x8d\x7fk\x11\xc3\xaa\xc3\xb90)\xc2\x8b\xc2\x86\x0c', 'parsed': b'0357534559\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00PubDSK_1\x00\x00\x00\x00\x00\x00bf\xc2\x80\xc2\x80W\xc2\x92N\xc2\xa0J\xc2\x93x~<\xc2\x87o\xc2\x81g\xc2\x84\xc2\xa1c\xc2\xb6U\xc2\x98[\xc2\xabP\xc2\xabz\xc2\xac>\xc2\x8aa\xc2\xab\xc2\xb5\xc3\x8d\xc2\x8e\xc2\xa1I\xc2\xa6\xc2\x9d\xc3\x85\xc2\x8e\xc3\x87\xc2\x9b\xc2\x93X\x94\xc3\x86\xc2\xa5\xc2\x95\xc2\xa9~\xc2\x98\xc3\x8e\xc2\xa5\xc2\xa9\xc2\xb4\xc2\xba\xc22\x8epa\xc2\x9dc\xc2\xb1U\xc2\x9cI\xc2\x95S\xc2\xa1zuD\xc2\x9c\xc2\xafSM\xc2\x89\xc3\x8di\xc3\x88s\xc3\x95[\xc2\xb3GMz\xc3\x9e\xc2\xa1\xc2\xbd\xc2\xb1\xc2\x97\xc2\x8f\xc2\xb2\xc2\xac\xc3\x9a\xc2\xa1{~\xc2\xadI\xc2\xaa\xc2\x9f\xc2\x94\xc2\xb4\xc2\x83\xc2\x95\xc2\x89\xc2\xa0\xc2\x92\xc2\xae\xc2\x88\xc2\x9e\xc2\x8em\xc2\x9f\\Y\xc2\xb8p\xc3\x87\xc2\x9bk\xc2\xa0y\xc2\xa5n\xc3\xa0d7\xc2\xa3\xc3\x88\\\xc2\x99\xc3\x93\xc3\xa6x\xc2\xbc\xc2\x88\xc3\x9b\xc2\x96\xc2\xafp\xc2\x82\xc2\x8b\xc2\x90\xc2\x8e]\xc2\x85\xc2\xa5\xc3\x91\xc3\x86\xc2\xbeNi|\xc2\x9b\xc2\x89C\xc2\x9bQa6\xc2\x89\xc2\xb8cNz\xc2\xa0(6J\xc2\x91TY\xc2\xa4;\xc3\xba\xc3\x9d\xc2\xb1$\xc2\xa9\xc3\x92?\xc2\xa4\xc3\xbd\x00L)|\xc3\xaam\xc3\xb7k\xc3\x9d\xc2\xbb\xc2\x9e\t\xc3\xbe\xc2\x96\xc2\xac\xc2\x99\xc3\xac\x05<08"\xc3\x86o\xc2\xb4\xc3\x9c\xc2\x85\x0em\x13\xc3\x8d\x7fk\x11\xc3\xaa\xc3\xb90)\xc2\x8b\xc2\x86\x0c', 'points': [(316.0, 1475.0), (324.0, 2017.0), (3488.0, 1463.0), (3475.0, 1998.0), (441.0, 1475.0), (450.0, 2017.0), (3366.0, 1463.0), (3353.0, 1998.0)]}] 

我已经损坏了原始数据,因为它是个人身份证,但它似乎很好。

如输出所示,被识别为 pdf417 代码。

标签: pythonopencvpython-imaging-libraryzxing

解决方案


你会得到一个字典列表。因此,通过字典(即使在这种情况下只有一个),然后解码似乎以 utf-16 编码的“raw”的值:

for res in results:
    print(res['raw'].decode('utf-16'))

如果结果与预期不符,请尝试其他编码。

编辑:有关可用编码的列表,请参阅 Python文档。例如,如果语言是泰语,ISO-8859-11 可能会提供更好的输出:

for res in results:
    print(res['raw'].decode('ISO-8859-11'))

推荐阅读