护照识别完善英文护照

This commit is contained in:
马梓彭 2026-07-23 21:02:14 +08:00
parent ffdcf88860
commit 09d5517f87

View File

@ -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))
{