uni-app 扫描code128条形码识别错误

uni-app 扫描code128条形码识别错误

示例代码:

goScanCode() {
    const that = this
    that.entryMode = ''
    uni.scanCode({
        scanType: ['barCode'],
        success: function(res) {
            that.formData.fnsku = res.result
        }
    });
}

操作步骤:

编码中带有字符的 code128 条形码 正常扫描时有几率识别错误 稳定触发BUG的方法是 调用扫描时将相机斜过来扫描

预期结果:

准确扫描出条形码的信息 (带有字母的字符串)

实际结果:

返回了一串数字 且每次扫描返回的数字还不一样

项目属性
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
手机系统 Android
手机系统版本号 Android 10
手机厂商 华为
手机机型 华为 meta20
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX


更多关于uni-app 扫描code128条形码识别错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

相关问题帖子https://ask.dcloud.net.cn/question/132289

更多关于uni-app 扫描code128条形码识别错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的条形码识别精度问题,主要与uni-app底层调用的原生扫码模块和相机对焦有关。

问题分析:

  1. 斜扫导致识别错误:当相机倾斜扫描时,条形码图像会产生透视畸变,影响识别算法的准确性。Code128码包含字母和数字,识别算法需要精确解析条空宽度,倾斜容易导致误判为纯数字码(如EAN-13)。

  2. 返回数字不一致:每次倾斜角度不同,识别模块可能截取到条码的不同部分或误识别为其他编码格式,导致返回随机数字。

  3. 硬件/环境因素:华为Meta20相机在特定光线、对焦不准或镜头污渍时,可能加剧识别错误。

解决方案:

  1. 优化扫描参数

    uni.scanCode({
        scanType: ['barCode', 'qrCode'], // 增加类型容错
        onlyFromCamera: true,
        success(res) {
            // 添加校验逻辑
            if (res.scanType && res.scanType === 'barCode') {
                that.formData.fnsku = res.result;
            }
        },
        fail(err) {
            console.error('扫码失败:', err);
        }
    });
    
  2. 添加用户引导

    • 在扫码界面提示“请保持手机与条形码平行”
    • 添加对准框和距离提示
  3. 启用自动连续识别(如有需要):

    // 部分原生插件支持连续扫描
    const scanner = uni.requireNativePlugin('扫码插件名');
    scanner.startScan({ interval: 500 }); // 500ms间隔连续识别
回到顶部