用"pyzbar"解码二维码的德语"Umlaute"时出现问题



我编写了一个Python(V3.9.9(程序(Windows 10(来解码类型为";EPC QR"->请参阅维基百科

一切都很好,除了,如果有德国人;元音变音符";(ÖÖÜäü(。以下是一个示例程序,用于演示/隔离问题:

import cv2 # Read image / camera/video input
from pyzbar.pyzbar import decode
img = cv2.imread ("GiroCodeUmlaute.PNG")
print (decode (img))

for code in decode (img):
print (code.type)
print (code.data.decode ("UTF-8"))

这是用于测试的二维码:GiroCodeUmlaute.PNG->参见二维码生成器

编码的QR码文本的第6行包含">Érzte ohne Grenzen">
但是当用";UTF-8";(这是正确的字符集(テвzte ohne Grenzen"显示。

我认为,解码读取的十六进制数据看起来也有点奇怪:

[解码(数据=b'BCD\n002\n1\nSCT\nRLNWAWW\n\xef\xbe\x83\xd0\xb2zte ohne Grenzen…

4(!(个十六进制字节来自哪里\xef\xbe\x83\xd0\xb2zte
原文的'r'在哪里?

如果这个测试程序在复盆子电脑下运行,也会出现同样的问题。如果这个样本二维码被安卓移动应用程序扫描;元音变音符";显示正确
在我看来,这似乎是一个";pyzbar";单元但也许我做错了什么
我们非常感谢您的帮助和建议!感谢

我在Linux上使用python3 qrtools使用Swiss Bill QR码时遇到了同样的问题——我猜这个模块也在使用zbar库。解决方法是替换解码字符串中的错误字符。根据你用print (code.data.decode ("UTF-8"))为元音变音符输出的结果,我得到了以下符号,我需要用ä,öresp替换。ü:

string = string.replace('瓣', 'ä')
string = string.replace('繹', 'ö')
string = string.replace('羹', 'ü')

这不是一个非常优雅的解决方案,因为它不会处理所有被错误解码的特殊字符。

当我从Pascal/Delphi/lazarus程序中调用python程序时,我希望在某个地方找到一个其他工具,可以从网络摄像头读取二维码并正确解码…

最新更新