身份证识别配置
This commit is contained in:
parent
e3261fe596
commit
f24804481f
@ -153,6 +153,6 @@
|
|||||||
"AliyunOCR": {
|
"AliyunOCR": {
|
||||||
"AccessKeyId": "LTAI5tLfbdZwBoA9bCZVjZkF",
|
"AccessKeyId": "LTAI5tLfbdZwBoA9bCZVjZkF",
|
||||||
"AccessKeySecret": "4DmFIY77zwdp1gaRUTmBMf7WfdsNsC",
|
"AccessKeySecret": "4DmFIY77zwdp1gaRUTmBMf7WfdsNsC",
|
||||||
"Endpoint": "ocr.cn-shanghai.aliyuncs.com"
|
"Endpoint": "ocr-api.cn-hangzhou.aliyuncs.com"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3,10 +3,11 @@ using Furion.DependencyInjection;
|
|||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using YD_Event.Core.Options;
|
using YD_Event.Core.Options;
|
||||||
using AlibabaCloud.OpenApiClient.Models;
|
using AlibabaCloud.OpenApiClient.Models;
|
||||||
using AlibabaCloud.SDK.Ocr20191230;
|
using AlibabaCloud.SDK.Ocr_api20210707;
|
||||||
using AlibabaCloud.SDK.Ocr20191230.Models;
|
using AlibabaCloud.SDK.Ocr_api20210707.Models;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System;
|
using System;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace YD_Event.Core.Infrastructure.Aliyun.Ocr;
|
namespace YD_Event.Core.Infrastructure.Aliyun.Ocr;
|
||||||
|
|
||||||
@ -44,28 +45,38 @@ public class OcrService : ITransient
|
|||||||
};
|
};
|
||||||
|
|
||||||
var client = new Client(config);
|
var client = new Client(config);
|
||||||
var request = new RecognizeIdentityCardRequest
|
var request = new RecognizeIdcardRequest
|
||||||
{
|
{
|
||||||
ImageURL = imageUrl,
|
Url = imageUrl
|
||||||
Side = "face" // 默认正面
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// 使用 RuntimeOptions 可以自定义超时等配置,这里简单起见使用默认
|
var runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
|
||||||
var response = await client.RecognizeIdentityCardAsync(request);
|
var response = await client.RecognizeIdcardWithOptionsAsync(request, runtime);
|
||||||
|
|
||||||
if (response.Body != null && response.Body.Data != null && response.Body.Data.FrontResult != null)
|
if (response.Body != null && !string.IsNullOrEmpty(response.Body.Data))
|
||||||
{
|
{
|
||||||
var data = response.Body.Data.FrontResult;
|
// Data是一个JSON字符串,包含识别结果
|
||||||
// 解析结果
|
var json = JObject.Parse(response.Body.Data);
|
||||||
return new OcrResult
|
|
||||||
|
// 阿里云 OCR 统一识别 API 身份证返回的结构一般在 data.face.data 下或者直接是平铺的属性
|
||||||
|
// 我们直接使用 SelectToken 来兼容获取
|
||||||
|
var name = (string?)json.SelectToken("..data.name") ?? (string?)json.SelectToken("..name") ?? (string?)json.SelectToken("..data.face.data.name");
|
||||||
|
var sex = (string?)json.SelectToken("..data.sex") ?? (string?)json.SelectToken("..sex") ?? (string?)json.SelectToken("..data.gender");
|
||||||
|
var idNumber = (string?)json.SelectToken("..data.idNumber") ?? (string?)json.SelectToken("..idNumber");
|
||||||
|
var birthDate = (string?)json.SelectToken("..data.birthDate") ?? (string?)json.SelectToken("..birthDate");
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(idNumber))
|
||||||
{
|
{
|
||||||
Success = true,
|
return new OcrResult
|
||||||
Name = data.Name,
|
{
|
||||||
Gender = data.Gender,
|
Success = true,
|
||||||
IdCardNumber = data.IDNumber,
|
Name = name,
|
||||||
BirthDate = data.BirthDate,
|
Gender = sex,
|
||||||
Message = "识别成功"
|
IdCardNumber = idNumber,
|
||||||
};
|
BirthDate = birthDate,
|
||||||
|
Message = "识别成功"
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OcrResult { Success = false, Message = "未识别到有效身份证信息" };
|
return new OcrResult { Success = false, Message = "未识别到有效身份证信息" };
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="4.3.0" />
|
<PackageReference Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="4.3.0" />
|
||||||
<PackageReference Include="AlibabaCloud.SDK.Ocr20191230" Version="4.0.2" />
|
<PackageReference Include="AlibabaCloud.SDK.Ocr-api20210707" Version="3.1.3" />
|
||||||
<PackageReference Include="Aliyun.OSS.SDK.Core" Version="2.5.3" />
|
<PackageReference Include="Aliyun.OSS.SDK.Core" Version="2.5.3" />
|
||||||
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
|
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
|
||||||
<PackageReference Include="EasyCaching.CSRedis" Version="1.9.2" />
|
<PackageReference Include="EasyCaching.CSRedis" Version="1.9.2" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user