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 |  109 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 76 insertions(+), 33 deletions(-)

diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs
index 49bec7f..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,25 +54,25 @@
             }
             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>
-        /// 钀ヤ笟鎵х収OCR
+        /// 韬唤璇佹闈CR
         /// </summary>
         /// <param name="url"></param>
         /// <param name="scene"></param>
         /// <param name="isOssUrl"></param>
-        public static async Task<BaiduOcrIdentityResultModel> OcrIdentity(this string url, string scene = null, bool isOssUrl = true)
+        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);
@@ -82,33 +82,76 @@
             {
                 var downloadUrl = AliyunOSSUtils.GetUrl(url);
                 var buffer = await App.GetRequiredService<IHttpRemoteService>().GetAsByteArrayAsync(downloadUrl);
-                value = ocr.Idcard(buffer, "1");
+                value = ocr.Idcard(buffer, "front");
             }
             else
             {
-                var upload = AliyunOSSUtils.Upload(scene, url);
+                var upload = AliyunOSSUtils.Upload(scene, url, null);
                 url = upload.Url;
-                //value = ocr.Idcard(upload.Buffer);
+                value = ocr.Idcard(upload.Buffer, "front");
             }
-            //var result = value.ToObject<BaiduOcrIdentityResult>();
-            //result.Url = url;
-            //if (result.ErrorCode.IsNotNull())
-            //{
-            //    return result;
-            //}
-            //result.Model = new BaiduOcrIdentityResultModel
-            //{
-            //    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,
-            //};
-            //return result;
-            throw new Exception();
+            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