namespace AgriculturalPlatform.Api.Services; /// 身份证 OCR 识别结果(未识别成功时 Success=false 并给出原因) public record IdCardOcrResult( string Name = "", string IdCard = "", string Gender = "", string Address = "", string BankName = "", string BankAccount = "", bool Success = false, string Message = ""); /// /// OCR 识别服务抽象。当前默认实现为 DisabledOcrService(仅占位); /// 后续接入阿里云/百度 OCR 时,实现本接口并在 Program.cs 替换注册即可,调用方无需改动。 /// public interface IOcrService { /// 识别身份证图片,side: front(正面)/ back(反面) Task RecognizeAsync(Stream image, string side, string fileName = "idcard.jpg"); } /// 默认 OCR 实现:未配置凭证时给出友好提示,图片仍会正常保存为附件 public sealed class DisabledOcrService(IConfiguration cfg) : IOcrService { public Task RecognizeAsync(Stream image, string side, string fileName = "idcard.jpg") { var message = cfg["Ocr:DisabledMessage"] ?? "未配置 OCR 识别服务(待接入阿里云/百度 OCR 凭证),图片已保存为附件,识别字段请手动填写"; return Task.FromResult(new IdCardOcrResult(Success: false, Message: message)); } }