From 5c45bc53e2c18e45130c21048df4af4896455c6d Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 12 九月 2025 15:58:48 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs | 105 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 96 insertions(+), 9 deletions(-) diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs index 51439b2..e5970de 100644 --- a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs +++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs @@ -42,7 +42,7 @@ } else { - var upload = AliyunOSSUtils.Upload(scene, url); + var upload = AliyunOSSUtils.Upload(scene, url, null); url = upload.Url; value = ocr.BusinessLicense(upload.Buffer); } @@ -54,17 +54,104 @@ } result.Model = new BaiduOcrBusinessLicenseResultModel { - EnterpriseName = result.WordsResult["鍗曚綅鍚嶇О"].Words, - SocietyCreditCode = result.WordsResult["绀句細淇$敤浠g爜"].Words, - LegalPerson = result.WordsResult["娉曚汉"].Words, - EnterpriseType = result.WordsResult["绫诲瀷"].Words, - RegisteredCapital = result.WordsResult["娉ㄥ唽璧勬湰"].Words, - EstablishmentDate = result.WordsResult["鎴愮珛鏃ユ湡"].Words, - Address = result.WordsResult["鍦板潃"].Words, - MainBusiness = result.WordsResult["缁忚惀鑼冨洿"].Words, + EnterpriseName = result.WordsResult.GetWords("鍗曚綅鍚嶇О"), + SocietyCreditCode = result.WordsResult.GetWords("绀句細淇$敤浠g爜"), + LegalPerson = result.WordsResult.GetWords("娉曚汉"), + EnterpriseType = result.WordsResult.GetWords("绫诲瀷"), + RegisteredCapital = result.WordsResult.GetWords("娉ㄥ唽璧勬湰"), + EstablishmentDate = result.WordsResult.GetWords("鎴愮珛鏃ユ湡"), + Address = result.WordsResult.GetWords("鍦板潃"), + MainBusiness = result.WordsResult.GetWords("缁忚惀鑼冨洿"), }; return result; } + /// <summary> + /// 韬唤璇佹闈CR + /// </summary> + /// <param name="url"></param> + /// <param name="scene"></param> + /// <param name="isOssUrl"></param> + public static async Task<BaiduOcrIdentityFrontResult> OcrIdentityFront(this string url, string scene = null, bool isOssUrl = true) + { + var options = App.GetOptions<BaiduOptions>(); + var ocr = new Ocr(options.Ocr.Key, options.Ocr.Secret); + ocr.Timeout = 60000; + JObject value; + if (isOssUrl) + { + var downloadUrl = AliyunOSSUtils.GetUrl(url); + var buffer = await App.GetRequiredService<IHttpRemoteService>().GetAsByteArrayAsync(downloadUrl); + value = ocr.Idcard(buffer, "front"); + } + else + { + var upload = AliyunOSSUtils.Upload(scene, url, null); + url = upload.Url; + value = ocr.Idcard(upload.Buffer, "front"); + } + var result = value.ToObject<BaiduOcrIdentityFrontResult>(); + result.Url = url; + if (result.ErrorCode.IsNotNull()) + { + return result; + } + + result.Model = new BaiduOcrIdentityFrontResultModel + { + Address = result.WordsResult.GetWords("浣忓潃"), + Identity = result.WordsResult.GetWords("鍏皯韬唤鍙风爜"), + BirthdayText = result.WordsResult.GetWords("鍑虹敓"), + Name = result.WordsResult.GetWords("濮撳悕"), + GenderText = result.WordsResult.GetWords("鎬у埆"), + Nation = result.WordsResult.GetWords("姘戞棌"), + }; + return result; + } + + /// <summary> + /// 韬唤璇佽儗闈CR + /// </summary> + /// <param name="url"></param> + /// <param name="scene"></param> + /// <param name="isOssUrl"></param> + public static async Task<BaiduOcrIdentityBackResult> OcrIdentityBack(this string url, string scene = null, bool isOssUrl = true) + { + var options = App.GetOptions<BaiduOptions>(); + var ocr = new Ocr(options.Ocr.Key, options.Ocr.Secret); + ocr.Timeout = 60000; + JObject value; + if (isOssUrl) + { + var downloadUrl = AliyunOSSUtils.GetUrl(url); + var buffer = await App.GetRequiredService<IHttpRemoteService>().GetAsByteArrayAsync(downloadUrl); + value = ocr.Idcard(buffer, "back"); + } + else + { + var upload = AliyunOSSUtils.Upload(scene, url, null); + url = upload.Url; + value = ocr.Idcard(upload.Buffer, "back"); + } + var result = value.ToObject<BaiduOcrIdentityBackResult>(); + result.Url = url; + if (result.ErrorCode.IsNotNull()) + { + return result; + } + + result.Model = new BaiduOcrIdentityBackResultModel + { + ExpiryDateText = result.WordsResult.GetWords("澶辨晥鏃ユ湡"), + IssueAuthority = result.WordsResult.GetWords("绛惧彂鏈哄叧"), + IssueDateText = result.WordsResult.GetWords("绛惧彂鏃ユ湡"), + }; + return result; + } + + public static string GetWords(this Dictionary<string, BaiduOcrResultWord> result, string name) + { + return result.ContainsKey(name) ? result[name].Words : null; + } } } -- Gitblit v1.9.1