首页 > 解决方案 > 将 Pharmacode 添加到 PyZbar

问题描述

我有一个制药业的检验申请。我需要使用 OpenCV 检查标签上的批号和 Pharmacode。我想过使用 PyZbar,但它不支持 Pharmacode。如何向 PyZbar 添加更多代码,例如 Pharmacode?

非常感谢

标签: barcode

解决方案


Pharmacode(也称为 code32)使用 radix-32“压缩方案”实现为 code39。因此,您可以使用 PyZbar,前提是您将从库中获得 code39 解码,然后必须将值从 base-32 转换为 base-10。

请注意,无法知道“读取”的 code39 实际上是 code32 还是纯 code39。

这是一些将 code39 值转换为其原始 code32 字符串的 javascript:

// code32 radix set (missing the vowels AEIO)
const code32set = '0123456789BCDFGHJKLMNPQRSTUVWXYZ';
function code39toCode32(val) {
    if (/[^0-9BCDFGHJKLMNPQRSTUVWXYZ]/.test(val)) {
        throw new Error("Not code32");
    }
    let res = 0;
    for (let i = 0; i < val.length; i++) {
        res = res * 32 + code32set.indexOf(val[i]);
    }
    let code32 = '' + res;
    if (code32.length < 9) {
        code32 = ('000000000' + code32).slice(-9);
    }
    return code32;
}

该函数应该很容易转换为 python。


推荐阅读