#barcode
#штрих-код
Вопрос:
У меня есть приложение для проверки в фармацевтике. Мне нужно проверить номера партий и фармакоды на этикетках с помощью OpenCV. Я думал об использовании PyZbar, но он не поддерживает фармакод. Как я могу добавить больше кодов, таких как фармакод, в PyZbar?
Большое спасибо
Ответ №1:
Фармакод (также известный как code32) реализован как code39 с использованием «схемы сжатия» radix-32. Таким образом, вы можете использовать PyZbar, понимая, что вы получите декодирование code39 из библиотеки, а затем должны преобразовать значение из base-32 в base-10.
Обратите внимание, что нет способа узнать, является ли code39 «прочитанным» на самом деле code32 или просто code39.
Это некоторый javascript, который преобразует значение code39 в исходную строку code32:
// 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.
Комментарии:
1. Большое вам спасибо за ваш ответ. На самом деле, Code32 — это итальянский фармацевтический код, и он особого типа и отличается от общего фармакода. Возможно ли добавить новые коды в Zbar?