using Baidu.Aip.Ocr; using Furion; using Furion.DistributedIDGenerator; using Furion.FriendlyException; using Furion.HttpRemote; using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.Options; using NetTopologySuite.Operation.Buffer; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// /// 百度文字识别工具 /// public static class BaiduOcrUtils { /// /// 营业执照OCR /// /// /// /// public static async Task OcrBusinessLicense(this string url, string scene, bool isOssUrl = true) { var options = App.GetOptions(); var ocr = new Ocr(options.Ocr.Key, options.Ocr.Secret); ocr.Timeout = 60000; JObject value; if (isOssUrl) { var downloadUrl = AliyunOSSUtils.GetUrl(url); var buffer = await App.GetRequiredService().GetAsByteArrayAsync(downloadUrl); value = ocr.BusinessLicense(buffer); } else { var upload = AliyunOSSUtils.Upload(scene, url); url = upload.Url; value = ocr.BusinessLicense(upload.Buffer); } var result = value.ToObject(); result.Url = url; if (result.ErrorCode.IsNotNull()) { return result; } result.Model = new BaiduOcrBusinessLicenseResultModel { EnterpriseName = result.WordsResult["单位名称"].Words, SocietyCreditCode = result.WordsResult["社会信用代码"].Words, LegalPerson = result.WordsResult["法人"].Words, EnterpriseType = result.WordsResult["类型"].Words, RegisteredCapital = result.WordsResult["注册资本"].Words, EstablishmentDate = result.WordsResult["成立日期"].Words, Address = result.WordsResult["地址"].Words, MainBusiness = result.WordsResult["经营范围"].Words, }; return result; } } }