在药品生产线上,药品三期的喷码与条形码识别是保证药品追溯和安全管理的重要环节。传统的识别方法依赖于人工操作,不仅效率低下且容易出错。随着深度学习技术的不断发展,基于OCR(Optical Character Recognition,光学字符识别)的自动化识别系统逐渐成为主流。本文将以哪吒开发板为核心,介绍一种基于深度学习的药品三期OCR字符识别方案,并通过实际代码演示其实现过程。

 
1 哪吒开发板简介

哪吒开发套件以信用卡大小的哪吒开发板为核心,采用英特尔®处理器N97(Alder Lake-N),支持四核SoC,时钟频率高达3.60GHz,TDP仅为12W。内置GPU支持高分辨率显示,并具备强大的AI推理能力,是进行深度学习模型推理的理想平台。哪吒开发板还配备了高达8GB的LPDDR5系统内存和64GB的eMMC存储,支持Windows和Linux操作系统,为开发者提供了灵活的开发环境。

 
2 构建识别系统

深度学习,尤其是卷积神经网络(CNN)和循环神经网络(RNN)及其变体(如LSTM、GRU),在OCR领域取得了显著成效。这些模型能够自动学习图像中的特征表示,有效识别并提取文本信息。在药品三期OCR项目中,我们可以采用以下步骤构建并优化识别系统:

- 数据集准备: 收集并标注大量药品包装、说明书及试验报告的图片作为训练集和测试集。标注工作需确保字符位置的精确性,以便模型能够准确学习字符的排列与形状特征,本文累积搜集5000张药盒数据并标注。

 


- 模型选择与训练:根据任务需求选择合适的深度学习模型,如PaddleOCR。PaddleOCR是百度基于PaddlePaddle深度学习框架开发的开源OCR工具库,具备高效、准确的文字识别能力。PaddleOCR采用深度学习技术,特别是卷积神经网络(CNN)和循环神经网络(RNN),对图像中的文字进行高效识别。通过预处理、特征提取、字符解码等步骤,PaddleOCR能够识别出图像中的文字内容,并输出文字的位置、置信度等信息。同时利用哪吒开发板强大的计算能力进行模型训练,通过调整- 网络结构、优化算法等策略提升识别准确率。
- 模型部署与优化:将训练好的模型借助openvino部署到哪吒开发板上,利用开发板提供的深度学习加速引擎进行模型推理加速。同时,针对实际应用场景进行模型优化,如裁剪不必要的网络层、量化模型参数等,以减小模型体积、提高推理速度。
- 系统集成与测试:将OCR模块集成到药品三期数据管理系统中,进行全面的功能测试与性能测试,确保系统稳定运行,满足实际应用需求。

3 实现步骤(仅包含部分核心代码)
3-1 环境搭建

首先,需要在哪吒开发板上搭建PaddleOCR和OpenVINO的运行环境。安装PaddlePaddle深度学习框架和PaddleOCR库,并配置好OpenVINO的环境。

# 安装PaddlePaddle  
pip install paddlepaddle-gpu==2.1.2.post101 -f https://paddleocr.bj.bcebos.com/dygraph/python/whl/production  
  
# 安装PaddleOCR  
pip install paddleocr  
  
# 安装OpenVINO  
# 通常OpenVINO的安装包需要从Intel官网下载并解压到指定目录  
# 配置环境变量等(具体步骤根据OpenVINO的文档进行)

3-2 模型部署

将训练好的PaddleOCR模型部署到哪吒开发板上。使用OpenVINO的Model Optimizer工具将PaddleOCR的模型转换为OpenVINO的中间表示(IR)格式,以便在开发板上进行高效的推理。

# 假设模型文件为model.pdmodel和model.pdiparams  
# 使用Model Optimizer转换模型  
python mo.py --input_model model.pdmodel --input_params model.pdiparams --output_dir ./openvino_models

3-3 编写推理代码


在哪吒开发板上编写基于OpenVINO的推理代码,加载转换后的模型,并对输入的药品三期信息进行OCR识别。
 

python
from openvino.runtime import Core, get_version  
import cv2  
from paddleocr import PaddleOCR, draw_ocr  
  
# 初始化OpenVINO推理引擎  
ie = Core()  
net = ie.read_network("./openvino_models/model.xml")  
exec_net = ie.load_network(net, "CPU")  
  
# 读取图像  
img = cv2.imread("drug_label.jpg")  
  
# 预处理图像(根据模型需求进行)  
# ...  
  
# 使用OpenVINO进行推理  
inputs = {input_blob: img for input_blob in net.input_info}  
outputs = exec_net.infer(inputs)  
  
# 解析推理结果(这里需要根据模型输出的具体格式进行解析)  
# ...  
  
# 如果需要,可以使用PaddleOCR进行后处理或结果展示  
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  
result = ocr.ocr("drug_label.jpg", cls=True)  
  
# 显示结果  
# ...

3-4 调试与优化


对模型进行调试,确保在哪吒开发板上能够正确运行并识别药品三期信息。根据实际需求调整模型参数、优化代码逻辑,提高识别的准确率和效率。

 
注:python代码仅为本示例使用,算法最终落地使用c++优化版本,500W彩色相机可以达到20帧率的速度,精度在99.99%以上。

4 结论

基于哪吒开发板和深度学习的药品三期OCR字符识别系统,实现了药品包装上喷码和条形码的自动化识别,大大提高了生产效率和识别准确率。通过图像预处理、文本检测和字符识别等步骤,系统能够准确判断药品三期的喷码是否完整、内容是否正确,并给出及时的反馈信号。未来,随着深度学习技术的不断进步和硬件性能的提升,该系统的识别能力和稳定性将得到进一步提升。

Logo

为开发者提供丰富的英特尔开发套件资源、创新技术、解决方案与行业活动。欢迎关注!

更多推荐