彩票走势图

如何使用Dynamsoft Barcode Reader SDK读取非标准一维条码

翻译|使用教程|编辑:莫成敏|2020-06-12 15:29:42.417|阅读 200 次

概述:在本文中,将以Code39为例,演示如何使用Dynamsoft Barcode Reader SDK解码非标准一维条形码。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Dynamsoft Barcode Reader SDK一款多功能的条码读取控件,只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序。这可以节省数月的开发时间和成本。能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。使用Dynamsoft Barcode Reader SDK,你可以创建强大且实用的条形码扫描仪软件,以满足你的业务需求。

点击下载Dynamsoft Barcode Reader最新版

起始字符和终止字符被定义为线性条形码(一维条形码)标准的一部分。但是,您可能会遇到一些非标准的一维条码符号,其中开始和结束字符有所更改。在本文中,我将以Code39为例,演示如何使用Dynamsoft Barcode Reader SDK解码非标准一维条形码。

开发环境

  • Python 3.x

Python条码SDK安装

Dynamsoft条形码阅读器SDK仅支持Python3.x。

pip install dbr

非标准一维条形码识别

为了进行比较,我准备了三个Code39图像,它们的起始和终止字符不同。

标准代码39符号(*)


非标准Code39符号体系(+)


非标准Code39符号体系(-)


以下是用于解码标准一维条形码图像的代码段:

from dbr import *
 
license_key = "LICENSE-KEY" # 
//www.dynamsoft.com/CustomerPortal/Portal/Triallicense.aspx
reader = BarcodeReader()
reader.init_license(license_key)
try:
    text_results = reader.decode_file(filename)
    if text_results != None:
        for text_result in text_results:
            print('Barcode Format:')
            print(text_result.barcode_format_string)
            print('')
            print('Barcode Text:')
            print(text_result.barcode_text)
            print('')
            print('Localization Points:')
            print(text_result.localization_result.localization_points)
            print('------------------------------------------------')
            print('')
except BarcodeReaderError as bre:
    print(bre)

运行代码之前,您需要获得免费的试用许可证。

如果您使用非标准的1D条形码符号符号运行代码,则没有结果。根据在线文档,非标准条形码在EnumBarcodeFormat_2中定义为扩展格式。


因此,您需要对上面的代码进行一些更改:

print(text_result.barcode_format_string_2)

另外,您必须设置与条形码类型相关的开始和结束字符。一种简单的方法是加载JSON格式的参数模板文件:

{
  "ImageParameter": {
    "BarcodeFormatIds_2": [ "BF2_NONSTANDARD_BARCODE" ],
    "FormatSpecificationNameArray": [ "FormatSpecification1" ],
    "DeblurLevel": 9,
    "Description": "",
    "ExpectedBarcodesCount": 0,
    "LocalizationModes": [
      {
        "Mode": "LM_CONNECTED_BLOCKS"
      },
      {
        "Mode": "LM_SCAN_DIRECTLY",
        "ScanStride": 0
      },
      {
        "Mode": "LM_STATISTICS"
      },
      {
        "Mode": "LM_LINES"
      }
    ],
    "Name": "Test",
    "Timeout": 1000000
  },
  "FormatSpecification": {
    "Name": "FormatSpecification1",
    "BarcodeFormatIds_2": [ "BF2_NONSTANDARD_BARCODE" ],
    "StandardFormat": "BF_CODE_39",
    "HeadModuleRatio": "131113131",
    "TailModuleRatio": "131113131"
  },
  "Version": "3.0"
}

对于非标准条形码,您只需要修改以下部分:

"StandardFormat": "BF_CODE_39",
"HeadModuleRatio": "131113131",
"TailModuleRatio": "131113131"
  • StandardFormat:条形码符号
  • HeadModuleRatio:起始字符
  • TailModuleRatio:停止符

通过引用Code39字符表,“ 131113131”代表“ +”,“ 131111313”代表“ -”。

现在,您可以创建一个自定义模板文件并以Python代码加载它:

json_file = None
 
if special_character == '+':
    json_file = r"template_plus.json"
 
if special_character == '-':
    json_file = r"template_minus.json"
 
if json_file == None:
    return
 
error = reader.init_runtime_settings_with_file(json_file)
if error[0] != EnumErrorCode.DBR_OK:
    print(error[1])

运行我的Python代码以读取标准和非标准Code39条形码:



想要购买Dynamsoft Barcode Reader正版授权,或了解更多产品信息请点击



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP