翻譯|使用教程|編輯:莫成敏|2020-03-13 11:57:38.277|閱讀 464 次
概述:在本文中,我將向您展示如何在Python中使用Dynamsoft Barcode Reader,并將其性能與ZXing和ZBar進行比較。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Dynamsoft Barcode Reader SDK一款多功能的條碼讀取控件,只需要幾行代碼就可以將條碼讀取功能嵌入到Web或桌面應用程序。這可以節省數月的開發時間和成本。能支持多種圖像文件格式以及從攝像機或掃描儀獲取的DIB格式。使用Dynamsoft Barcode Reader SDK,你可以創建強大且實用的條形碼掃描儀軟件,以滿足你的業務需求。
在StackOverflow上,您可能會看到這樣的問題:為什么某些開源條形碼SDK無法解碼某些條形碼?通常,有三種可選的解決方法:提高輸入圖像質量、改進條形碼算法或找到更好的條形碼SDK。ZXing和ZBar可能是最受歡迎的開源條形碼SDK,但在過去的幾年中,它們的算法很少得到改進。如果免費SDK不理想,為什么不使用商業條形碼SDK?在本文中,我將向您展示如何在Python中使用Dynamsoft Barcode Reader,并將其性能與ZXing和ZBar進行比較。在Python中使用Dynamsoft Barcode Reader
安裝Python包:
pip install dbr==7.2.2.3
下面是一些簡單用法:
from dbr import DynamsoftBarcodeReader dbr_reader = DynamsoftBarcodeReader() dbr_reader.InitLicense('LICENSE-KEY') # Get the license from //www.dynamsoft.com/CustomerPortal/Portal/Triallicense.aspx try: params = dbr_reader.GetRuntimeSettings() params["BarcodeFormatIds"] = dbr_reader.BF_ALL ret = dbr_reader.UpdataRuntimeSettings(params) start = time.time() dbr_results = dbr_reader.DecodeFile(filename) elapsed_time = time.time() - start textResults = dbr_results["TextResults"] resultsLength = len(textResults) if resultsLength > 0: for textResult in textResults: print(textResult["BarcodeFormatString"]) print('Dynamsoft Barcode Reader: {}. Elapsed time: {}ms'.format(textResult["BarcodeText"], int(elapsed_time * 1000))) return textResults else: print("DBR failed to decode {}".format(filename)) except Exception as err: print("DBR failed to decode {}".format(filename))
要使用該條形碼SDK,您必須下載免費試用版。
如何基于數據集獲得識別率
下載公共圖像數據集。
檢查圖像數據集,您會發現條形碼結果在文件名中,我們可以使用它們來驗證解碼結果是否正確。
從目錄獲取文件列表:
import os files = os.listdir(directory)
通過檢查后綴來過濾圖像文件:
files = [f for f in files if f.endswith('.jpg') or f.endswith('.png')]
分割文件名以獲得預期的結果:
expected_result = filename.split('_')[0]
當條形碼結果與預期結果相符時增加計數:
if r1 == expected_result: zbar_count += 1 if r2 == expected_result: dbr_count += 1 if r3 == expected_result: zxing_count += 1
計算ZBar,Dynamsoft Barcode Reader和ZXing的識別率:
total_count = len(files) zbar_rate = zbar_count * 100 / total_count print('ZBar recognition rate: {0:.2f}%'.format(zbar_rate)) dbr_rate = dbr_count * 100 / total_count print('DBR recognition rate: {0:.2f}%'.format(dbr_rate)) zxing_rate = zxing_count * 100 / total_count print('ZXing recognition rate: {0:.2f}%'.format(zxing_rate))
如何在Python中讀取和寫入Excel文件
在對條形碼SDK性能進行基準測試之后,最后一步是將結果保存到Excel文件中。您可以從這個中選擇一個Python包。
我選擇了openpyxl:
pip install openpyxl
創建一個新的工作簿或從現有的Excel文件中加載工作簿:
from openpyxl import utils from openpyxl import Workbook from openpyxl import load_workbook from openpyxl.styles import Color, PatternFill import os def get_workbook(wb_name): if os.path.isfile(wb_name): wb = load_workbook(wb_name) else: wb = Workbook() ws = wb.active ws.title = 'Recognition Rate' ws['A1'] = 'File Name' # Set column width ws.column_dimensions[utils.get_column_letter(1)].width = 25 ws['B1'] = 'Expected Results' ws.column_dimensions[utils.get_column_letter(2)].width = 20 ws['C1'] = 'ZBar' ws.column_dimensions[utils.get_column_letter(3)].width = 20 ws['D1'] = 'DBR' ws.column_dimensions[utils.get_column_letter(4)].width = 20 ws['E1'] = 'ZXing' ws.column_dimensions[utils.get_column_letter(5)].width = 20 return wb
設置值并更改工作表單元格的填充顏色:
red = PatternFill(start_color='FFFF0000', end_color='FFFF0000', fill_type='solid') green = PatternFill(start_color='FF00FF00', end_color='FF00FF00', fill_type='solid') def update_row(wb, row_index, filename=None, expected_results=None, zbar_results=None, dbr_results=None, ZXing_results=None): ws = wb.active row = ws[row_index] row[0].value = filename row[1].value = expected_results if zbar_results != None: row[2].value = zbar_results if zbar_results == expected_results: row[2].fill = green else: row[2].fill = red if dbr_results != None: row[3].value = dbr_results if dbr_results == expected_results: row[3].fill = green else: row[3].fill = red if ZXing_results != None: row[4].value = ZXing_results if ZXing_results == expected_results: row[4].fill = green else: row[4].fill = red
將工作簿保存到一個.xlsx文件:
def save_workbook(wb, wb_name): if wb != None: wb.save(wb_name)
現在運行Python應用程序以生成基準文件:
python app.py -d D:\python-zxing-zbar-dbr\dataset
本教程內容就是這樣了,希望對您所有幫助!想要了解更多產品資訊請繼續關注我們慧都網,您可以下載Dynamsoft Barcode Reader試用版免費評估~
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: