身份证识别配置
This commit is contained in:
parent
e3261fe596
commit
f24804481f
@ -153,6 +153,6 @@
|
||||
"AliyunOCR": {
|
||||
"AccessKeyId": "LTAI5tLfbdZwBoA9bCZVjZkF",
|
||||
"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 YD_Event.Core.Options;
|
||||
using AlibabaCloud.OpenApiClient.Models;
|
||||
using AlibabaCloud.SDK.Ocr20191230;
|
||||
using AlibabaCloud.SDK.Ocr20191230.Models;
|
||||
using AlibabaCloud.SDK.Ocr_api20210707;
|
||||
using AlibabaCloud.SDK.Ocr_api20210707.Models;
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace YD_Event.Core.Infrastructure.Aliyun.Ocr;
|
||||
|
||||
@ -44,28 +45,38 @@ public class OcrService : ITransient
|
||||
};
|
||||
|
||||
var client = new Client(config);
|
||||
var request = new RecognizeIdentityCardRequest
|
||||
var request = new RecognizeIdcardRequest
|
||||
{
|
||||
ImageURL = imageUrl,
|
||||
Side = "face" // 默认正面
|
||||
Url = imageUrl
|
||||
};
|
||||
|
||||
// 使用 RuntimeOptions 可以自定义超时等配置,这里简单起见使用默认
|
||||
var response = await client.RecognizeIdentityCardAsync(request);
|
||||
var runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
|
||||
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;
|
||||
// 解析结果
|
||||
return new OcrResult
|
||||
// Data是一个JSON字符串,包含识别结果
|
||||
var json = JObject.Parse(response.Body.Data);
|
||||
|
||||
// 阿里云 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,
|
||||
Name = data.Name,
|
||||
Gender = data.Gender,
|
||||
IdCardNumber = data.IDNumber,
|
||||
BirthDate = data.BirthDate,
|
||||
Message = "识别成功"
|
||||
};
|
||||
return new OcrResult
|
||||
{
|
||||
Success = true,
|
||||
Name = name,
|
||||
Gender = sex,
|
||||
IdCardNumber = idNumber,
|
||||
BirthDate = birthDate,
|
||||
Message = "识别成功"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return new OcrResult { Success = false, Message = "未识别到有效身份证信息" };
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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="AspNetCoreRateLimit" Version="5.0.0" />
|
||||
<PackageReference Include="EasyCaching.CSRedis" Version="1.9.2" />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user