| 
					
				 | 
			
			
				@@ -1,5 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Aspose.Cells; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Aspose.Words; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using FluentValidation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Microsoft.EntityFrameworkCore.Internal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using Microsoft.IdentityModel.Tokens; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using NPOI.OpenXmlFormats.Wordprocessing; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -45,17 +46,16 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<IActionResult> GetGeneralBasic(GeneralBasicOCRDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string[] picBase64Array = dto.picBase64.Split(';'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string picFormat = picBase64Array[0].Split('/')[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!TencentOCRTools.ImageType(picFormat)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片格式不正确!只支持 PNG、JPG、JPEG、BMP 格式!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double strSize = 1024 * 1024 * 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (dto.picBase64.Length > strSize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validator = new GeneralBasicOCRDtoFoalidator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validatorRes =  await validator.ValidateAsync(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!validatorRes.IsValid)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片不能大于7M!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var errors = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var valid in validatorRes.Errors) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    errors.AppendLine(valid.ErrorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return Ok(JsonView(false, errors.ToString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var gbData = await TencentOCRTools.GetOCR((int)TencentOCREnum.GeneralBasic, dto); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -74,50 +74,22 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             GeneralBasicOCRResponse res = gbData.Data as GeneralBasicOCRResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 创建文档对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            XWPFDocument doc = new XWPFDocument(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            XWPFParagraph p1 = doc.CreateParagraph(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            XWPFRun runText = p1.CreateRun(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            string fileName = "通用印刷体[CH]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            string content = $""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string fileName = "通用印刷体"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string content = $"{fileName}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            runText.SetText(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            runText.AddCarriageReturn(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             foreach (var view in res.TextDetections) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                XWPFRun runText1 = p1.CreateRun(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                string content1 = $"Content:{view.DetectedText}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                runText1.SetText(content1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                runText1.AddCarriageReturn(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                content += $"Content:{view.DetectedText} \n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            runText.FontSize = 12; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            runText.SetFontFamily("宋体", FontCharRange.None); //设置宋体字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //工作流写入,通过流的方式进行创建生成文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            MemoryStream stream = new MemoryStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            doc.Write(stream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string FilePath = $"{AppSettingsHelper.Get("WordBasePath")}/TencentOCR"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!Directory.Exists(FilePath)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (dto.language == 1) { } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (dto.language == 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Directory.CreateDirectory(FilePath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fileName = "通用印刷体[EN]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                content = await YouDaoApiTools.GetOCR_ReTrans(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string outputFile = $"{fileName}{DateTime.Now.ToString("yyyyMMddHHmmss")}.docx"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string sDate = DateTime.Now.ToString("yyyy年MM月dd日-HH时mm分ss秒-ffff"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            FilePath = FilePath + "/" + outputFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            FileStream Fs = new FileStream(FilePath, FileMode.OpenOrCreate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            doc.Write(Fs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Fs.Close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string url = $"{AppSettingsHelper.Get("WordBaseUrl")}Office/Word/TencentOCR/{outputFile}"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            string url = NPOICreateWord(fileName, content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             #endregion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return Ok(JsonView(true, "操作成功", new { dataSource = res, url = url })); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -133,17 +105,13 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<IActionResult> GetIDCard(IDCardOCRDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string[] picBase64Array = dto.picBase64.Split(';'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string picFormat = picBase64Array[0].Split('/')[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!TencentOCRTools.ImageType(picFormat)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片格式不正确!只支持 PNG、JPG、JPEG、BMP 格式!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double strSize = 1024 * 1024 * 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (dto.picBase64.Length > strSize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validator = new IDCardOCRDtoFoalidator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validatorRes = await validator.ValidateAsync(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!validatorRes.IsValid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片不能大于7M!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var errors = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return Ok(JsonView(false, errors.ToString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var idCardData = await TencentOCRTools.GetOCR((int)TencentOCREnum.IDCard, dto); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,7 +128,6 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             IDCardOCRAndDownUrlView iDCardOCRView = new IDCardOCRAndDownUrlView() { }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (dto.Language.ToLower() == "ch") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bool cerdStatus = await _visaDeleClientRepository.SetCrmUpdPassIdCardOCR( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -184,17 +151,16 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else if (dto.Language.ToLower() == "en") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iDCardOCRView.Name = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iDCardOCRView.Sex = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Sex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iDCardOCRView.Nation = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Nation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iDCardOCRView.Birth = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Birth); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iDCardOCRView.Address = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Address); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iDCardOCRView.Name = !string.IsNullOrEmpty( idCardData.Data.Name) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Name) : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iDCardOCRView.Sex = !string.IsNullOrEmpty(idCardData.Data.Sex) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Sex) : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iDCardOCRView.Nation = !string.IsNullOrEmpty(idCardData.Data.Nation) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Nation) : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iDCardOCRView.Birth = !string.IsNullOrEmpty(idCardData.Data.Birth) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Birth) : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iDCardOCRView.Address = !string.IsNullOrEmpty(idCardData.Data.Address) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Address) : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 iDCardOCRView.IdNum = idCardData.Data.IdNum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iDCardOCRView.Authority = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Authority); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iDCardOCRView.ValidDate = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.ValidDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iDCardOCRView.Authority = !string.IsNullOrEmpty(idCardData.Data.Authority) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Authority) : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iDCardOCRView.ValidDate = !string.IsNullOrEmpty(idCardData.Data.ValidDate) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.ValidDate) : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             #region word生成 返回地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Dictionary<string, object> dic = new Dictionary<string, object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dic.Add("Name", iDCardOCRView.Name); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -235,10 +201,13 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<IActionResult> GetResidenceBookletOCR(ResidenceBookletOCRDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double strSize = 1024 * 1024 * 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (dto.picBase64.Length > strSize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validator = new ResidenceBookletOCRDtoFoalidator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validatorRes = validator.Validate(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!validatorRes.IsValid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片不能大于7M!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var errors = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return Ok(JsonView(false, errors.ToString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var residenceBookData = await TencentOCRTools.GetOCR((int)TencentOCREnum.ResidenceBooklet, dto); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -263,7 +232,7 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             XWPFParagraph p = doc.CreateParagraph(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             XWPFRun runText = p.CreateRun(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string fileName = "户口簿识别"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            string fileName = "户口簿识别[CH]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string content = $"{fileName}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (res != null) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -298,6 +267,12 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 content += $"登记日期:{res.RegistrationDate ?? "Unknown"}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (dto.language == 1) { } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (dto.language == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fileName = "户口簿识别[EN]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                content = await YouDaoApiTools.GetOCR_ReTrans(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             setWrap(content,p, runText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             runText.FontSize = 12; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -423,7 +398,6 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// 营业执照识别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// 文档下载  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -434,10 +408,13 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<IActionResult> GetBizLicenseOCR(BizLicenseOCRDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double strSize = 1024 * 1024 * 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (dto.picBase64.Length > strSize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validator = new BizLicenseOCRDtoFoalidator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validatorRes = await validator.ValidateAsync(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!validatorRes.IsValid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片不能大于7M!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var errors = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return Ok(JsonView(false, errors.ToString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var residenceBookData = await TencentOCRTools.GetOCR((int)TencentOCREnum.BizLicense, dto); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -453,7 +430,7 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BizLicenseOCRResponse dataInfo = residenceBookData.Data as BizLicenseOCRResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string fileName = "营业执照识别"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            string fileName = "营业执照识别[CH]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string content = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (dataInfo != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -469,6 +446,13 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 content += $"成立日期:{dataInfo.SetDate}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (dto.language == 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fileName = "营业执照识别[EN]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                content = await YouDaoApiTools.GetOCR_ReTrans(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string url = NPOICreateWord(fileName, content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -489,10 +473,13 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<IActionResult> GetOrgCodeCertOCR(OrgCodeCertOCRDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double strSize = 1024 * 1024 * 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (dto.picBase64.Length > strSize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validator = new OrgCodeCertOCRDtoFoalidator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validatorRes = await validator.ValidateAsync(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!validatorRes.IsValid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片不能大于7M!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var errors = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return Ok(JsonView(false, errors.ToString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var occData = await TencentOCRTools.GetOCR((int)TencentOCREnum.OrgCodeCert, dto); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -507,7 +494,7 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return Ok(JsonView(occData.Msg)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            string fileName = "组织结构识别"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            string fileName = "组织结构识别[CH]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string content = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             OrgCodeCertOCRResponse occInfo = occData.Data as OrgCodeCertOCRResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (occInfo != null) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -518,6 +505,8 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 content += $"有效期:{occInfo.ValidDate}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (dto.language == 2) content = await YouDaoApiTools.GetOCR_ReTrans(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string url = NPOICreateWord(fileName, content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var data = new 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -539,10 +528,14 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<IActionResult> GetVehicleLicense(VehicleLicenseOCRDto dto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double strSize = 1024 * 1024 * 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (dto.picBase64.Length > strSize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validator = new VehicleLicenseOCRDtoFoalidator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var validatorRes = await validator.ValidateAsync(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!validatorRes.IsValid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片不能大于7M!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var errors = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return Ok(JsonView(false, errors.ToString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var vehicleLicenseData = TencentOCRTools.GetOCR((int)TencentOCREnum.VehicleLicense, dto); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -588,6 +581,9 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     content += $"发证日期:{frontInfo.IssueDate ?? "Unknown"}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     content += $"印章:{frontInfo.Seal ?? "Unknown"}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (dto.language == 2) content = await YouDaoApiTools.GetOCR_ReTrans(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 url = NPOICreateWord(fileName, content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else if (dto.CardSide == 1) //反面 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -610,13 +606,13 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     content += $"准牵引总质量:{backInfo.TotalQuasiMass ?? "Unknown"}\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (dto.language == 2) content = await YouDaoApiTools.GetOCR_ReTrans(content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 url = NPOICreateWord(fileName, content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             #endregion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return Ok(JsonView(true, "操作成功", new { dataSource = data, url = url })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -921,7 +917,11 @@ namespace OASystem.API.Controllers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string picFormat = picBase64Array[0].Split('/')[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!TencentOCRTools.ImageType(picFormat)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Ok(JsonView("图片格式不正确!只支持 PNG、JPG、JPEG、BMP 格式!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!picFormat.ToLower().Equals("pdf")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return Ok(JsonView("图片格式不正确!只支持 PDF、PNG、JPG、JPEG、BMP 格式!")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             double strSize = 1024 * 1024 * 7; 
			 |