From 09d5517f8702074993da796ce37cbc839f10ade4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=A2=93=E5=BD=AD?= Date: Thu, 23 Jul 2026 21:02:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A4=E7=85=A7=E8=AF=86=E5=88=AB=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E8=8B=B1=E6=96=87=E6=8A=A4=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Infrastructure/Aliyun/Ocr/OcrService.cs | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/YD_Event.Core/Infrastructure/Aliyun/Ocr/OcrService.cs b/YD_Event.Core/Infrastructure/Aliyun/Ocr/OcrService.cs index ccbf272..33b6e72 100644 --- a/YD_Event.Core/Infrastructure/Aliyun/Ocr/OcrService.cs +++ b/YD_Event.Core/Infrastructure/Aliyun/Ocr/OcrService.cs @@ -122,19 +122,41 @@ public class OcrService : ITransient // Data是一个JSON字符串,包含识别结果 var json = JObject.Parse(response.Body.Data); - // 解析护照信息字段 + // 解析护照信息字段(兼容中文护照和英文护照) var name = (string?)json.SelectToken("..data.name") ?? (string?)json.SelectToken("..name"); + var nameEn = (string?)json.SelectToken("..data.nameEn") ?? (string?)json.SelectToken("..nameEn"); + var surname = (string?)json.SelectToken("..data.surname") ?? (string?)json.SelectToken("..surname"); + var givenName = (string?)json.SelectToken("..data.givenName") ?? (string?)json.SelectToken("..givenName"); var passportNumber = (string?)json.SelectToken("..data.passportNumber") ?? (string?)json.SelectToken("..passportNumber"); var nationality = (string?)json.SelectToken("..data.nationality") ?? (string?)json.SelectToken("..nationality"); var gender = (string?)json.SelectToken("..data.sex") ?? (string?)json.SelectToken("..gender") ?? (string?)json.SelectToken("..sex"); var birthDate = (string?)json.SelectToken("..data.birthDate") ?? (string?)json.SelectToken("..birthDate"); - var issuingAuthority = (string?)json.SelectToken("..data.issuingAuthority") ?? (string?)json.SelectToken("..issuingAuthority"); - var issueDate = (string?)json.SelectToken("..data.issueDate") ?? (string?)json.SelectToken("..issueDate"); - var expiryDate = (string?)json.SelectToken("..data.expiryDate") ?? (string?)json.SelectToken("..expiryDate"); - // 新增字段 - var validToDate = (string?)json.SelectToken("..data.validToDate") ?? (string?)json.SelectToken("..validToDate"); var birthDateYmd = (string?)json.SelectToken("..data.birthDateYmd") ?? (string?)json.SelectToken("..birthDateYmd"); + var issuingAuthority = (string?)json.SelectToken("..data.issuingAuthority") ?? (string?)json.SelectToken("..issuingAuthority"); + var issueAuthorityEn = (string?)json.SelectToken("..data.issueAuthorityEn") ?? (string?)json.SelectToken("..issueAuthorityEn"); + var issueDate = (string?)json.SelectToken("..data.issueDate") ?? (string?)json.SelectToken("..issueDate"); var issueDateYmd = (string?)json.SelectToken("..data.issueDateYmd") ?? (string?)json.SelectToken("..issueDateYmd"); + var expiryDate = (string?)json.SelectToken("..data.expiryDate") ?? (string?)json.SelectToken("..expiryDate"); + var validToDate = (string?)json.SelectToken("..data.validToDate") ?? (string?)json.SelectToken("..validToDate"); + + // 英文护照时 name 为空,用 nameEn 或 surname+givenName 填充 + if (string.IsNullOrEmpty(name)) + { + if (!string.IsNullOrEmpty(nameEn)) + { + name = nameEn; + } + else if (!string.IsNullOrEmpty(surname) || !string.IsNullOrEmpty(givenName)) + { + name = $"{surname} {givenName}".Trim(); + } + } + + // 英文护照时 issuingAuthority 为空,用 issueAuthorityEn 填充 + if (string.IsNullOrEmpty(issuingAuthority)) + { + issuingAuthority = issueAuthorityEn; + } if (!string.IsNullOrEmpty(passportNumber)) {