简介
本篇介绍Sdcb.PaddleOCR的使用,原文介绍请转至 https://github.com/sdcb/PaddleSharp 查看
#下面先贴源码
//系统引用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//Sdcb引用
using Sdcb.PaddleOCR;
using Sdcb.PaddleInference;
using Sdcb.PaddleOCR.Models;
using OpenCvSharp;
namespace winForm_OCR
{
public partial class Form1 : Form
{
PaddleOcrAll all;
//以下是模型和字典路径
string det = @"C:\Users\SpesTech\Desktop\飞桨SDBC开发测试\1test\model\ch_PP-OCRv4_det_infer";
string rec = @"C:\Users\SpesTech\Desktop\飞桨SDBC开发测试\1test\model\ch_PP-OCRv4_rec_infer";
string cls = @"C:\Users\SpesTech\Desktop\飞桨SDBC开发测试\1test\model\ch_ppocr_mobile_v2.0_cls_infer";
string key = @"C:\Users\SpesTech\Desktop\飞桨SDBC开发测试\1test\model\ppocr_keys_v1.txt";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//模型初始化
FullOcrModel model = FullOcrModel.FromDirectory(det, cls, rec, key, ModelVersion.V4);
//加载模型,同时设置用什么推理,我这里用的GPU,后面的说明里介绍如何使用GPU或CPU
all = new PaddleOcrAll(model, PaddleDevice.Gpu())
{
AllowRotateDetection = true,
Enable180Classification = false
};
}
private void button1_Click(object sender, EventArgs e)
{
//使用OpenCV读取图像并检测
Mat srcImg = Cv2.ImRead("1.bmp");
DateTime star = DateTime.Now;
//获取结果,result 结果包含置信度,文本框坐标,文本内容
PaddleOcrResult result = all.Run(srcImg);
DateTime end = DateTime.Now;
label1.Text = (end - star).ToString();
textBox1.Text = result.Text;
pictureBox1.BackgroundImage = new Bitmap(srcImg.ToMemoryStream())as Image;
}
}
}
说明
使用CPU推理
cpu推理较为简单,在vs的NuGet里安装下面几个包
代码里需要改的地方就是模型加载那块把
all = new PaddleOcrAll(model, PaddleDevice.Gpu())
∨
all = new PaddleOcrAll(model, PaddleDevice.Mkldnn())
PaddleDevice还有好多选项,大概意思是用什么进行加速推理,Mkldnn和Openblas是cpu加速推理的C++库吧,我记得是这样。
选用什么要根据你用的什么模型,什么设备进行同时也要看你下载的那个包使用,我用cpu推理的时候用的
Sdcb.PaddleInference.runtime.win64.mkl
所以我的代码里就是 PaddleDevice.Mkldnn()
使用GPU推理
在vs的NuGet里安装下图所示的几个包
注意:使用GPU需要将支持CPU的包卸载掉,二者只能存其一
Sdcb.PaddleInference.runtime.win64.mkl
同时还要下载cuda、cudnn、TensorRT
我的显卡是NVIDIA GeForce RTX3060Ti
最高支持Cuda11.8
安装显卡驱动之后在cmd中 输入 nvidia-smi 进行查看
这几个工具我安装的版本是
Cuda 11.2.0
cudnn 8.9.7
TensorRT 7.2.3
cuda安装最好比显卡支持的最高版本低一点,我一开始装的11.8没运行起来。当然爱折腾的可以试试
官方也有支持其他版本cuda的NuGet里也可以看到,不过这几个工具的大版本一定按照其标的下载
关于Cuda 和cudnn的下载安装
Cuda的安装比较简单,网上也有很多教程大家随便搜一下就会有一大堆出来,这里我稍微提一下 cudnn和TensorRT的安装,他们的安装其实并不叫安装,相当于添加了一些文件到Cuda的安装路径下,同时也要添加一些系统变量。网上也有很多教程,东西下载下来照猫画虎的操作下来也就OK了。还有就是这两需要注册账号才能下载
其他
引用这块直接看图
主要就是这些,如果你在NuGet中下载的那么在debug文件夹中还会生成一个dll文件夹
里面是一些必要的dll,我想应该是Sdcb其他的依赖,也有可能是对飞桨官方C++的一些封装。
OK!文章到这基本也就结束了,如有问题可以留言,看到一定会回复,即使不知道也会回复:不知道!!(理直气壮)(手动狗头)