【官方框架地址】
https://github.com/PaddlePaddle/PaddleOCR
【算法介绍】
OpenVINO和PaddleOCR都是用于计算机视觉应用的工具,但它们有不同的特点和用途。OpenVINO是一个由Intel开发的开源工具套件,主要用于加速深度学习推理,而PaddleOCR是PaddlePaddle框架的一个组件,主要用于光学字符识别(OCR)。
下面将介绍如何使用OpenVINO调用PaddleOCR,主要分为以下步骤:
- 安装OpenVINO和PaddleOCR:首先需要安装OpenVINO和PaddleOCR。可以从它们的官方网站上下载并按照说明进行安装。
- 准备数据:需要准备一组训练好的模型和输入数据。这些模型应该是在PaddleOCR上训练的,并且是ONNX格式。输入数据可以是图像或视频。
- 转换模型:使用OpenVINO的Model Optimizer工具将ONNX格式的模型转换为OpenVINO可以使用的格式。这一步将生成一个IR(Intermediate Representation)文件和一个XML文件。
- 配置推理引擎:创建一个XML文件来配置推理引擎。这个文件描述了如何加载模型,以及如何处理输入和输出数据。
- 调用推理引擎:使用OpenVINO的推理引擎来执行推理。推理引擎将从配置文件中读取模型和输入数据,并执行推理,然后返回结果。
- 处理结果:最后,需要对推理结果进行处理,例如将文本转换为字符串,或者将结果可视化。
需要注意的是,由于OpenVINO和PaddleOCR都是深度学习工具,因此需要一定的计算机视觉和深度学习知识才能正确使用它们。此外,由于它们都是大型工具套件,因此安装和配置可能需要一些时间和经验。
【效果展示】
【实现部分代码】
string detectionModelDir = Application.StartupPath + "\\weights\\ch_PP-OCRv4_det_infer";
string classificationModelDir = Application.StartupPath + "\\weights\\ch_ppocr_mobile_v2.0_cls_infer";
string recognitionModelDir = Application.StartupPath + "\\weights\\ch_PP-OCRv4_rec_infer";
string labelFilePath = Application.StartupPath + "\\weights\\ppocr_keys_v1.txt";
FullOcrModel model = FullOcrModel.FromDirectory(detectionModelDir, classificationModelDir, recognitionModelDir, labelFilePath, ModelVersion.V4);
PaddleOcrAll all = new PaddleOcrAll(model);
all.AllowRotateDetection = true; /* 允许识别有角度的文字 */
all.Enable180Classification = false; /* 允许识别旋转角度大于90度的文字 */
Stopwatch sw = new Stopwatch();
sw.Start();
PaddleOcrResult result = all.Run(src);
sw.Stop();
Console.WriteLine("总耗时是:" + sw.Elapsed.TotalSeconds + "秒");
tb_res.Text = result.Text;
foreach (PaddleOcrResultRegion item in result.Regions)
{
Cv2.Rectangle(src, item.Rect.BoundingRect(), new Scalar(255, 0, 0));
}
pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);
【视频演示】
https://www.bilibili.com/video/BV1iK4y1q7kk/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee
【源码下载】
【测试环境】
vs2019,netframework4.7.2