PaddleSharp的入门级使用记录【在WebApi里使用】(转)

PaddleSharp的入门级使用记录【在WebApi里使用】

 

1、下载源码

下载地址为:https://github.com/sdcb/PaddleSharp

2、打开项目

使用vs2020打开,打开后效果如下:

 

3、新建WebApi项目

新建.net 5.0的项目,如下图:

 

 

 

 建完后的效果如下图:

 

 4、添加引用

  (1)、添加项目“Sdcb.PaddleOCR”的引用

  (2)、添加项目“Sdcb.PaddleOCR.KnownModels”的引用

  (3)、添加项目“Sdcb.PaddleInference”的引用

  (4)、nuget添加“Sdcb.PaddleInference.runtime.win64.mkl”

  (5)、nuget添加“OpenCvSharp4”

  (6)、nuget添加“OpenCvSharp4.runtime.win”

  效果图如下:

  

 5、调试代码

  新建名为:OcrController的Controller,建完后效果如下:

  

 

  根据官方的例子,修改Controller的内容如下:

复制代码
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using OpenCvSharp;
using Sdcb.PaddleOCR;
using Sdcb.PaddleOCR.KnownModels;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;

namespace OcrServerAPI.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class OcrController : ControllerBase
    {
        private readonly ILogger<OcrController> _logger;
        public OcrController(ILogger<OcrController> logger)
        {
            _logger = logger;
        }
        [HttpGet]
        public string Get()
        {
            var ocrResult = DoOcr().Result;
            return ocrResult;
        }
        private async Task<string> DoOcr()
        {
            var strResult = string.Empty;
            OCRModel model = KnownOCRModel.PPOcrV2;
            await model.EnsureAll();

            byte[] sampleImageData;
            string sampleImageUrl = @"https://www.tp-link.com.cn/content/images/detail/2164/TL-XDR5450易展Turbo版-3840px_03.jpg";
            using (HttpClient http = new HttpClient())
            {
                Console.WriteLine("Download sample image from: " + sampleImageUrl);
                sampleImageData = await http.GetByteArrayAsync(sampleImageUrl);
            }

            using (PaddleOcrAll all = new PaddleOcrAll(model.RootDirectory, model.KeyPath)
            {
                AllowRotateDetection = true, /* 允许识别有角度的文字 */
                Enable180Classification = false, /* 允许识别旋转角度大于90度的文字 */
            })

            {
                // Load local file by following code:
                // using (Mat src2 = Cv2.ImRead(@"C:\test.jpg"))
                using (Mat src = Cv2.ImDecode(sampleImageData, ImreadModes.Color))
                {
                    PaddleOcrResult result = all.Run(src);
                    Console.WriteLine("Detected all texts: \n" + result.Text);
                    strResult = result.Text;
                    foreach (PaddleOcrResultRegion region in result.Regions)
                    {
                        Console.WriteLine($"Text: {region.Text}, Score: {region.Score}, RectCenter: {region.Rect.Center}, RectSize:    {region.Rect.Size}, Angle: {region.Rect.Angle}");
                    }
                }
            }
            return strResult;
        }
    }
}
复制代码

 

  直接执行会报错误如下:

  

 

  解决:

  找到原因:根据上面提示的路径:C:\Users\wjx\AppData\Roaming\paddleocr-models\ppocr-v2\key.txt文件缺失。

  下载文件:文件路径如下:https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.4/ppocr/utils/ppocr_keys_v1.txt

  复制文件:把上一步下载下来的文件改名为:key.txt,然后放到C:\Users\wjx\AppData\Roaming\paddleocr-models\ppocr-v2 目录下,如下图:

  

 6、过行效果

  

 

 

  输入地址如下:localhost:6409/ocr,显示效果如下图:

  

  上面demo的源码:https://download.csdn.net/download/jiancaixing/82371328

posted @ 2024-01-16 16:41  gds111789  阅读(333)  评论(0编辑  收藏  举报