Service.cs 2.9 KB
using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Reflection;
using paddleOCR;
using static log4net.Appender.RollingFileAppender;

namespace DeviceLibrary
{
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single, IncludeExceptionDetailInFaults = true)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    internal class WebService : IService
    {
        public Result Readocr(string ver, string imgPath)
        {
            Result result = new Result();
            DateTime dateTime = DateTime.Now;
            result.data = PaddleHelper.StartCPlusOcr(imgPath);
            //if (string.IsNullOrEmpty(ver))
            //{
            //    result.data = PaddleOCRHelper.StartCPlusOcr(imgPath);
            //}
            //else
            //if (ver.ToLower().Equals("python"))
            //{
            // result.data = PaddleOCRHelper.StartPythonOcr(imgPath);

            //}
            //else if(ver.ToLower().Equals("cplus"))
            //{
            //    result.data = PaddleOCRHelper.StartCPlusOcr(imgPath);
            //}
            //else
            //{
            //    result.data = PaddleOCRHelper.StartCPlusOcr(imgPath);
            //}
            result.ver = ver;
            result.msg = $"Paddle Ocr elapsed:{(DateTime.Now-dateTime).TotalSeconds.ToString("f2")}s";
            return result;
        }

        public Result SelectOcrMethod(string ver,string imgPath)
        {
            Result result = new Result();
            DateTime dateTime = DateTime.Now;          
            result.data = PaddleHelper.StartCPlusOcrRewrite(imgPath);
            result.msg = $"Paddle StartCPlusOcrRewrite elapsed:{(DateTime.Now - dateTime).TotalSeconds.ToString("f2")}s";           
            return result;
        }
    }

    public class Service
    {
        private WebServiceHost _serviceHost;
        public bool State = false;
        public void Open(string url)
        {
            try
            {
                WebService service = new WebService();
                _serviceHost = new WebServiceHost(service, new Uri(url));//service, new Uri(url)
                _serviceHost.Open();
                State = true;
            }
            catch (Exception ex)
            {
                VisionAPI.log.Info($"启动OCR服务失败:{ex.Message}");
                State = false;             
            }
        }

        public void Close()
        {
            try
            {
                if (_serviceHost != null)//判断服务是否关闭
                    _serviceHost.Close();//关闭服务
                State = false;
            }
            catch (Exception ex)
            {
                VisionAPI.log.Info($"关闭OCR服务失败:{ex.Message}");
            }

        }

    }



}