asp.net 做网站好吗,如何制作网线,怎么在百度建立自己的网站,网络营销优化公司使用OpenVIN.CSharp.API在C#平台快速部署PP-OCRv5模型识别文本 PP-OCRv5是百度开源的高效OCR系统#xff0c;通过轻量化SLANet网络提速20%#xff0c;优化多尺度特征融合提升小文本识别#xff0c;支持80语言#xff0c;显著降低复杂场景错误率#xff0c;适用于移动端/服…使用OpenVIN.CSharp.API在C#平台快速部署PP-OCRv5模型识别文本 PP-OCRv5是百度开源的高效OCR系统通过轻量化SLANet网络提速20%优化多尺度特征融合提升小文本识别支持80语言显著降低复杂场景错误率适用于移动端/服务器端部署。 在本文中将演示如何使用的OpenVINO.CSharp.API.Extensions.PaddleOCR NuGet Package快速在Intel CPU平台落地PP-OCRv5模型 项目链接
#OpenVINO.CSharp.API
https://github.com/guojin-yan/OpenVINO-CSharp-API.git
#OpenVINO.CSharp.API.Extensions.PaddleOCR
https://github.com/guojin-yan/PaddleOCR-OpenVINO-CSharp.git文章目录 使用OpenVIN.CSharp.API在C#平台快速部署PP-OCRv5模型识别文本1. OpenVINO.CSharp.API.Extensions.PaddleOCR2.模型导出Step 1: 创建虚拟环境Step 2: 安装依赖项Step 3: 下载官方 PP-OCRv5 训练模型Step 4: 导出ONNX格式的 PP-OCRv5 模型 3.创建项目工程4.运行测试5.总结 1. OpenVINO.CSharp.API.Extensions.PaddleOCR 为了帮助各位开发者实现快速部署PaddleOCR模型前期我们推出了OpenVINO.CSharp.API.Extensions.PaddleOCR NuGet Package实现在英特尔任意CPU平台块数快速落地PaddleOCR并受到了大家广泛的关注和应用支持。在PP-OCRv5推出后我们也做了测试所推出的OpenVINO.CSharp.API.Extensions.PaddleOCR NuGet Package对PP-OCRv5也做到了完全支持通过切换模型和字典便可以实现PP-OCRv5的轻松部署。同时为了方便大家使用对当前主流框架做了支持如下所示 此次我们对OpenVINO.CSharp.API.Extensions.PaddleOCR NuGet Package作了进一步升级升级了对OpenVINO™和OpenCvsharp的最新支持并对 PP-OCRv5 部署作了进一步优化同时新增了PP-OCRv5 快速部署接口方便大家使用。
2.模型导出 PP-OCRv5使用的是PaddlePaddle 3.0目前PaddlePaddle 3.0 模型格式发生了显著变化静态图模型存储文件名由 xxx.pdmodel 改为 xxx.json同时模型整体适配飞桨 3.0 中间表示技术PIR拥有更加灵活的扩展能力和兼容性。目前OpenVINO™还在对PaddlePaddle 3.0做适配因此目前无法读取PaddlePaddle 3.0导出的模型需要将其转化为ONNX格式。
模型导出参考了大佬们的解决方案原文链接为
https://github.com/openvino-book/PP-OCRv5_OpenVINO/blob/main/How%20to%20export%20PP-OCRv5%20model.mdStep 1: 创建虚拟环境
conda create -n ppocrv5_ov python3.11
conda activate ppocrv5_ovStep 2: 安装依赖项
安装必要的依赖项
pip install paddlepaddle
pip install paddleocr
pip install onnx1.16.0
paddleocr install_hpi_deps cpu
paddlex --install paddle2onnx备注如果你使用的是Windows环境在安装paddlepaddle时请安装最新的编译版本安装指令如下 python -m pip install --pre paddlepaddle -i https://www.paddlepaddle.org.cn/packages/nightly/cpu/如果上述指令安装后依旧为PaddlePaddle 3.0.0版本请前往https://www.paddlepaddle.org.cn/packages/nightly/cpu/网站自行下载安装包安装。 Step 3: 下载官方 PP-OCRv5 训练模型 如果你的电脑安装了wget指令可以直接运行一下指令进行下载如果未安装可以直接在浏览器输入以下链接直接下载
# Download and unzip PP-OCRv5_server_det pre-trained model
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_det_infer.tar tar -xvf PP-OCRv5_server_det_infer.tar# Download and upzip PP-OCRv5_server_rec pre-trained model
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_rec_infer.tar tar -xvf PP-OCRv5_server_rec_infer.tar# Download and upzip PP-OCRv5_server_cls pre-trained model
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-LCNet_x1_0_doc_ori_infer.tar tar -xvf PP-LCNet_x1_0_doc_ori_infer.tarStep 4: 导出ONNX格式的 PP-OCRv5 模型 输入以下指令便可以实现模型格式转化
# Export PP-OCRv5_server_det to ONNX
paddlex --paddle2onnx --paddle_model_dir ./PP-OCRv5_server_det_infer --onnx_model_dir ./PP-OCRv5_server_det_onnx
# Export PP-OCRv5_server_rec to ONNX
paddlex --paddle2onnx --paddle_model_dir ./PP-OCRv5_server_rec_infer --onnx_model_dir ./PP-OCRv5_server_rec_onnx
# Export PP-OCRv5_server_cls to ONNX
paddlex --paddle2onnx --paddle_model_dir ./PP-LCNet_x1_0_doc_ori_infer --onnx_model_dir ./PP-OCRv5_server_cls_onnx如果大家觉得下载转换繁琐此处我已经给大家转换好并放在GitHub上链接为 https://github.com/guojin-yan/PaddleOCR-OpenVINO-CSharp/releases/tag/Modelv5大家可以根据自己需要自行下载或加入QQ交流群通过群文件进行下载QQ技术交流群为945057948 3.创建项目工程 在Windows平台开发者可以使用Visual Studio平台开发程序但无法跨平台实现为了实现跨平台此处采用dotnet指令进行项目的创建和配置。 首先使用dotnet创建一个测试项目在终端中输入一下指令
dotnet new console --framework net6.0 --use-program-main -o paddleocr项目框架此处可以根据需要自行选择支持多种框架。 此处以Windows平台为例安装项目依赖首先是安装最重要的项目依赖PaddleOCR部署接口OpenVINO.CSharp.API.Extensions.PaddleOCR NuGet Package在命令行中输入以下指令即可
dotnet add package OpenVINO.CSharp.API.Extensions.PaddleOCR同时还需要安装OpenVINO™ C# API运行时依赖和OpenCvSharp4运行时依赖
dotnet add package OpenVINO.runtime.win
dotnet add package OpenCvSharp4.runtime.win最后在主函数文件里添加以下代码即可
using OpenCvSharp;
using OpenVinoSharp.Extensions.model.PaddleOCR;
using System.Diagnostics;namespace paddleocrv5
{internal class Program{static async Task Main(string[] args){// 下面代码会自动下载模型直接运行即可// 模型存放在GitHub网络会影响下载速度如果无法下载可以在QQ交流群(945057948)中下载并运行test_ocr_v5()进行验证OnlineOcr ocr await Pipeline.GetOnlineOCR(Language.PP_OCRv5_mobile);TupleListOCRPredictResult, Mat ocr_result ocr.ocr_test();PaddleOcrUtility.print_result(ocr_result.Item1);Mat image PaddleOcrUtility.visualize_bboxes(ocr_result.Item2, ocr_result.Item1);Cv2.ImShow(Result, image);Cv2.WaitKey(0);}/// summary/// 下面代码可以通过手动下载模型进行测试/// /summarystatic void test_ocr_v5(){// 替换为自己的路径string image_path E:\Data\ocr\11.jpg;string det_model E:\Model\ocr\PP-OCRv5_mobile_det_onnx.onnx;string cls_model E:\Model\ocr\PP-OCRv5_mobile_cls_onnx.onnx;string rec_model E:\Model\ocr\PP-OCRv5_mobile_rec_onnx.onnx;Mat image Cv2.ImRead(image_path);RuntimeOption.RecOption.label_path E:\Model\ocr\ppocrv5_dict.txt;OCRPredictor ocr new OCRPredictor(det_model, cls_model, rec_model);ListOCRPredictResult ocr_result ocr.ocr(image, true, true, true);Stopwatch sw new Stopwatch();sw.Start();ocr_result ocr.ocr(image, true, true, true);sw.Stop();PaddleOcrUtility.print_result(ocr_result);Mat result PaddleOcrUtility.visualize_bboxes(image, ocr_result);Console.WriteLine(总推理时间 sw.ElapsedMilliseconds ms);Cv2.ImShow(result, result);string result_path Path.Combine(Path.GetDirectoryName(image_path), Path.GetFileNameWithoutExtension(image_path) _result.jpg);Cv2.ImWrite(result_path, result);Cv2.WaitKey(0);}}
}上面提供了两种测试方式一种是**Main()**方法里面运行的直接下载模型和测试文件并直接进行推理无需准备任何模型文件和图片即可进行体验。void test_ocr_v5() 方法里需要用户自行准备模型并修改路径即可运行测试。 为了防止大家配置出错同时提供了配置完整的项目工程大家可以加入技术交流群自行下载QQ技术交流群为945057948 4.运行测试 接下来输入项目编译指令进行项目编译输入以下指令即可
dotnet build接下来运行编译后的程序文件在CMD中输入以下指令运行编译后的项目文件
dotnet run --no-build运行后项目输出为 此外我们还给大家演示了更加复杂识别结果如下
手写字体识别 登机牌识别 5.总结 OpenVINO.CSharp.API.Extensions.PaddleOCR NuGet Package工具通过底层封装将PaddleOCR的推理和前后处理集成在了一起方便大家使用对于初学者十分友好。但是封装的接口可能无法满足更多开发者的需求因此建议有技术的开发者们下载源码根据自己需求自行修改配置使其更加灵活。 如果各位开发者在使用有任何疑问欢迎通过下面方式进行交流