|
@@ -1,5 +1,6 @@
|
|
|
using Aspose.Cells;
|
|
|
using Aspose.Words;
|
|
|
+using FluentValidation;
|
|
|
using Microsoft.EntityFrameworkCore.Internal;
|
|
|
using Microsoft.IdentityModel.Tokens;
|
|
|
using NPOI.OpenXmlFormats.Wordprocessing;
|
|
@@ -45,17 +46,16 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> GetGeneralBasic(GeneralBasicOCRDto dto)
|
|
|
{
|
|
|
- string[] picBase64Array = dto.picBase64.Split(';');
|
|
|
- string picFormat = picBase64Array[0].Split('/')[1];
|
|
|
- if (!TencentOCRTools.ImageType(picFormat))
|
|
|
- {
|
|
|
- return Ok(JsonView("图片格式不正确!只支持 PNG、JPG、JPEG、BMP 格式!"));
|
|
|
- }
|
|
|
-
|
|
|
- double strSize = 1024 * 1024 * 7;
|
|
|
- if (dto.picBase64.Length > strSize)
|
|
|
+ var validator = new GeneralBasicOCRDtoFoalidator();
|
|
|
+ var validatorRes = await validator.ValidateAsync(dto);
|
|
|
+ if (!validatorRes.IsValid)
|
|
|
{
|
|
|
- return Ok(JsonView("图片不能大于7M!"));
|
|
|
+ var errors = new StringBuilder();
|
|
|
+ foreach (var valid in validatorRes.Errors)
|
|
|
+ {
|
|
|
+ errors.AppendLine(valid.ErrorMessage);
|
|
|
+ }
|
|
|
+ return Ok(JsonView(false, errors.ToString()));
|
|
|
}
|
|
|
|
|
|
var gbData = await TencentOCRTools.GetOCR((int)TencentOCREnum.GeneralBasic, dto);
|
|
@@ -74,50 +74,22 @@ namespace OASystem.API.Controllers
|
|
|
|
|
|
GeneralBasicOCRResponse res = gbData.Data as GeneralBasicOCRResponse;
|
|
|
|
|
|
- // 创建文档对象
|
|
|
- XWPFDocument doc = new XWPFDocument();
|
|
|
-
|
|
|
- XWPFParagraph p1 = doc.CreateParagraph();
|
|
|
- XWPFRun runText = p1.CreateRun();
|
|
|
+ string fileName = "通用印刷体[CH]";
|
|
|
+ string content = $"";
|
|
|
|
|
|
- string fileName = "通用印刷体";
|
|
|
- string content = $"{fileName}\n";
|
|
|
- runText.SetText(content);
|
|
|
- runText.AddCarriageReturn();
|
|
|
foreach (var view in res.TextDetections)
|
|
|
{
|
|
|
- XWPFRun runText1 = p1.CreateRun();
|
|
|
- string content1 = $"Content:{view.DetectedText}\n";
|
|
|
-
|
|
|
- runText1.SetText(content1);
|
|
|
- runText1.AddCarriageReturn();
|
|
|
+ content += $"Content:{view.DetectedText} \n";
|
|
|
}
|
|
|
|
|
|
- runText.FontSize = 12;
|
|
|
- runText.SetFontFamily("宋体", FontCharRange.None); //设置宋体字体
|
|
|
-
|
|
|
- //工作流写入,通过流的方式进行创建生成文件
|
|
|
- MemoryStream stream = new MemoryStream();
|
|
|
- doc.Write(stream);
|
|
|
-
|
|
|
- string FilePath = $"{AppSettingsHelper.Get("WordBasePath")}/TencentOCR";
|
|
|
-
|
|
|
- if (!Directory.Exists(FilePath))
|
|
|
+ if (dto.language == 1) { }
|
|
|
+ else if (dto.language == 2)
|
|
|
{
|
|
|
- Directory.CreateDirectory(FilePath);
|
|
|
+ fileName = "通用印刷体[EN]";
|
|
|
+ content = await YouDaoApiTools.GetOCR_ReTrans(content);
|
|
|
}
|
|
|
|
|
|
- string outputFile = $"{fileName}{DateTime.Now.ToString("yyyyMMddHHmmss")}.docx";
|
|
|
-
|
|
|
- string sDate = DateTime.Now.ToString("yyyy年MM月dd日-HH时mm分ss秒-ffff");
|
|
|
- FilePath = FilePath + "/" + outputFile;
|
|
|
-
|
|
|
- FileStream Fs = new FileStream(FilePath, FileMode.OpenOrCreate);
|
|
|
- doc.Write(Fs);
|
|
|
- Fs.Close();
|
|
|
-
|
|
|
- string url = $"{AppSettingsHelper.Get("WordBaseUrl")}Office/Word/TencentOCR/{outputFile}";
|
|
|
-
|
|
|
+ string url = NPOICreateWord(fileName, content);
|
|
|
#endregion
|
|
|
|
|
|
return Ok(JsonView(true, "操作成功", new { dataSource = res, url = url }));
|
|
@@ -133,17 +105,13 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> GetIDCard(IDCardOCRDto dto)
|
|
|
{
|
|
|
- string[] picBase64Array = dto.picBase64.Split(';');
|
|
|
- string picFormat = picBase64Array[0].Split('/')[1];
|
|
|
- if (!TencentOCRTools.ImageType(picFormat))
|
|
|
- {
|
|
|
- return Ok(JsonView("图片格式不正确!只支持 PNG、JPG、JPEG、BMP 格式!"));
|
|
|
- }
|
|
|
-
|
|
|
- double strSize = 1024 * 1024 * 7;
|
|
|
- if (dto.picBase64.Length > strSize)
|
|
|
+ var validator = new IDCardOCRDtoFoalidator();
|
|
|
+ var validatorRes = await validator.ValidateAsync(dto);
|
|
|
+ if (!validatorRes.IsValid)
|
|
|
{
|
|
|
- return Ok(JsonView("图片不能大于7M!"));
|
|
|
+ var errors = new StringBuilder();
|
|
|
+ foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage);
|
|
|
+ return Ok(JsonView(false, errors.ToString()));
|
|
|
}
|
|
|
|
|
|
var idCardData = await TencentOCRTools.GetOCR((int)TencentOCREnum.IDCard, dto);
|
|
@@ -160,7 +128,6 @@ namespace OASystem.API.Controllers
|
|
|
|
|
|
IDCardOCRAndDownUrlView iDCardOCRView = new IDCardOCRAndDownUrlView() { };
|
|
|
|
|
|
-
|
|
|
if (dto.Language.ToLower() == "ch")
|
|
|
{
|
|
|
bool cerdStatus = await _visaDeleClientRepository.SetCrmUpdPassIdCardOCR(
|
|
@@ -184,17 +151,16 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
else if (dto.Language.ToLower() == "en")
|
|
|
{
|
|
|
- iDCardOCRView.Name = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Name);
|
|
|
- iDCardOCRView.Sex = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Sex);
|
|
|
- iDCardOCRView.Nation = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Nation);
|
|
|
- iDCardOCRView.Birth = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Birth);
|
|
|
- iDCardOCRView.Address = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Address);
|
|
|
+ iDCardOCRView.Name = !string.IsNullOrEmpty( idCardData.Data.Name) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Name) : "";
|
|
|
+ iDCardOCRView.Sex = !string.IsNullOrEmpty(idCardData.Data.Sex) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Sex) : "";
|
|
|
+ iDCardOCRView.Nation = !string.IsNullOrEmpty(idCardData.Data.Nation) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Nation) : "";
|
|
|
+ iDCardOCRView.Birth = !string.IsNullOrEmpty(idCardData.Data.Birth) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Birth) : "";
|
|
|
+ iDCardOCRView.Address = !string.IsNullOrEmpty(idCardData.Data.Address) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Address) : "";
|
|
|
iDCardOCRView.IdNum = idCardData.Data.IdNum;
|
|
|
- iDCardOCRView.Authority = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Authority);
|
|
|
- iDCardOCRView.ValidDate = await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.ValidDate);
|
|
|
+ iDCardOCRView.Authority = !string.IsNullOrEmpty(idCardData.Data.Authority) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.Authority) : "";
|
|
|
+ iDCardOCRView.ValidDate = !string.IsNullOrEmpty(idCardData.Data.ValidDate) ? await YouDaoApiTools.GetOCR_ReTrans(idCardData.Data.ValidDate) : "";
|
|
|
}
|
|
|
|
|
|
-
|
|
|
#region word生成 返回地址
|
|
|
Dictionary<string, object> dic = new Dictionary<string, object>();
|
|
|
dic.Add("Name", iDCardOCRView.Name);
|
|
@@ -235,10 +201,13 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> GetResidenceBookletOCR(ResidenceBookletOCRDto dto)
|
|
|
{
|
|
|
- double strSize = 1024 * 1024 * 7;
|
|
|
- if (dto.picBase64.Length > strSize)
|
|
|
+ var validator = new ResidenceBookletOCRDtoFoalidator();
|
|
|
+ var validatorRes = validator.Validate(dto);
|
|
|
+ if (!validatorRes.IsValid)
|
|
|
{
|
|
|
- return Ok(JsonView("图片不能大于7M!"));
|
|
|
+ var errors = new StringBuilder();
|
|
|
+ foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage);
|
|
|
+ return Ok(JsonView(false, errors.ToString()));
|
|
|
}
|
|
|
|
|
|
var residenceBookData = await TencentOCRTools.GetOCR((int)TencentOCREnum.ResidenceBooklet, dto);
|
|
@@ -263,7 +232,7 @@ namespace OASystem.API.Controllers
|
|
|
XWPFParagraph p = doc.CreateParagraph();
|
|
|
XWPFRun runText = p.CreateRun();
|
|
|
|
|
|
- string fileName = "户口簿识别";
|
|
|
+ string fileName = "户口簿识别[CH]";
|
|
|
string content = $"{fileName}\n";
|
|
|
|
|
|
if (res != null)
|
|
@@ -298,6 +267,12 @@ namespace OASystem.API.Controllers
|
|
|
content += $"登记日期:{res.RegistrationDate ?? "Unknown"}\n";
|
|
|
}
|
|
|
|
|
|
+ if (dto.language == 1) { }
|
|
|
+ else if (dto.language == 2) {
|
|
|
+ fileName = "户口簿识别[EN]";
|
|
|
+ content = await YouDaoApiTools.GetOCR_ReTrans(content);
|
|
|
+ }
|
|
|
+
|
|
|
setWrap(content,p, runText);
|
|
|
|
|
|
runText.FontSize = 12;
|
|
@@ -423,7 +398,6 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 营业执照识别
|
|
|
/// 文档下载
|
|
@@ -434,10 +408,13 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> GetBizLicenseOCR(BizLicenseOCRDto dto)
|
|
|
{
|
|
|
- double strSize = 1024 * 1024 * 7;
|
|
|
- if (dto.picBase64.Length > strSize)
|
|
|
+ var validator = new BizLicenseOCRDtoFoalidator();
|
|
|
+ var validatorRes = await validator.ValidateAsync(dto);
|
|
|
+ if (!validatorRes.IsValid)
|
|
|
{
|
|
|
- return Ok(JsonView("图片不能大于7M!"));
|
|
|
+ var errors = new StringBuilder();
|
|
|
+ foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage);
|
|
|
+ return Ok(JsonView(false, errors.ToString()));
|
|
|
}
|
|
|
|
|
|
var residenceBookData = await TencentOCRTools.GetOCR((int)TencentOCREnum.BizLicense, dto);
|
|
@@ -453,7 +430,7 @@ namespace OASystem.API.Controllers
|
|
|
}
|
|
|
|
|
|
BizLicenseOCRResponse dataInfo = residenceBookData.Data as BizLicenseOCRResponse;
|
|
|
- string fileName = "营业执照识别";
|
|
|
+ string fileName = "营业执照识别[CH]";
|
|
|
string content = "";
|
|
|
if (dataInfo != null)
|
|
|
{
|
|
@@ -469,6 +446,13 @@ namespace OASystem.API.Controllers
|
|
|
content += $"成立日期:{dataInfo.SetDate}\n";
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ if (dto.language == 2)
|
|
|
+ {
|
|
|
+ fileName = "营业执照识别[EN]";
|
|
|
+ content = await YouDaoApiTools.GetOCR_ReTrans(content);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
string url = NPOICreateWord(fileName, content);
|
|
|
var data = new
|
|
@@ -489,10 +473,13 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> GetOrgCodeCertOCR(OrgCodeCertOCRDto dto)
|
|
|
{
|
|
|
- double strSize = 1024 * 1024 * 7;
|
|
|
- if (dto.picBase64.Length > strSize)
|
|
|
+ var validator = new OrgCodeCertOCRDtoFoalidator();
|
|
|
+ var validatorRes = await validator.ValidateAsync(dto);
|
|
|
+ if (!validatorRes.IsValid)
|
|
|
{
|
|
|
- return Ok(JsonView("图片不能大于7M!"));
|
|
|
+ var errors = new StringBuilder();
|
|
|
+ foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage);
|
|
|
+ return Ok(JsonView(false, errors.ToString()));
|
|
|
}
|
|
|
|
|
|
var occData = await TencentOCRTools.GetOCR((int)TencentOCREnum.OrgCodeCert, dto);
|
|
@@ -507,7 +494,7 @@ namespace OASystem.API.Controllers
|
|
|
return Ok(JsonView(occData.Msg));
|
|
|
}
|
|
|
|
|
|
- string fileName = "组织结构识别";
|
|
|
+ string fileName = "组织结构识别[CH]";
|
|
|
string content = "";
|
|
|
OrgCodeCertOCRResponse occInfo = occData.Data as OrgCodeCertOCRResponse;
|
|
|
if (occInfo != null)
|
|
@@ -518,6 +505,8 @@ namespace OASystem.API.Controllers
|
|
|
content += $"有效期:{occInfo.ValidDate}\n";
|
|
|
}
|
|
|
|
|
|
+ if (dto.language == 2) content = await YouDaoApiTools.GetOCR_ReTrans(content);
|
|
|
+
|
|
|
string url = NPOICreateWord(fileName, content);
|
|
|
|
|
|
var data = new
|
|
@@ -539,10 +528,14 @@ namespace OASystem.API.Controllers
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
public async Task<IActionResult> GetVehicleLicense(VehicleLicenseOCRDto dto)
|
|
|
{
|
|
|
- double strSize = 1024 * 1024 * 7;
|
|
|
- if (dto.picBase64.Length > strSize)
|
|
|
+ var validator = new VehicleLicenseOCRDtoFoalidator();
|
|
|
+ var validatorRes = await validator.ValidateAsync(dto);
|
|
|
+
|
|
|
+ if (!validatorRes.IsValid)
|
|
|
{
|
|
|
- return Ok(JsonView("图片不能大于7M!"));
|
|
|
+ var errors = new StringBuilder();
|
|
|
+ foreach (var valid in validatorRes.Errors) errors.AppendLine(valid.ErrorMessage);
|
|
|
+ return Ok(JsonView(false, errors.ToString()));
|
|
|
}
|
|
|
|
|
|
var vehicleLicenseData = TencentOCRTools.GetOCR((int)TencentOCREnum.VehicleLicense, dto);
|
|
@@ -588,6 +581,9 @@ namespace OASystem.API.Controllers
|
|
|
content += $"发证日期:{frontInfo.IssueDate ?? "Unknown"}\n";
|
|
|
content += $"印章:{frontInfo.Seal ?? "Unknown"}\n";
|
|
|
}
|
|
|
+
|
|
|
+ if (dto.language == 2) content = await YouDaoApiTools.GetOCR_ReTrans(content);
|
|
|
+
|
|
|
url = NPOICreateWord(fileName, content);
|
|
|
}
|
|
|
else if (dto.CardSide == 1) //反面
|
|
@@ -610,13 +606,13 @@ namespace OASystem.API.Controllers
|
|
|
content += $"准牵引总质量:{backInfo.TotalQuasiMass ?? "Unknown"}\n";
|
|
|
}
|
|
|
|
|
|
+ if (dto.language == 2) content = await YouDaoApiTools.GetOCR_ReTrans(content);
|
|
|
+
|
|
|
url = NPOICreateWord(fileName, content);
|
|
|
}
|
|
|
-
|
|
|
#endregion
|
|
|
|
|
|
return Ok(JsonView(true, "操作成功", new { dataSource = data, url = url }));
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -921,7 +917,11 @@ namespace OASystem.API.Controllers
|
|
|
string picFormat = picBase64Array[0].Split('/')[1];
|
|
|
if (!TencentOCRTools.ImageType(picFormat))
|
|
|
{
|
|
|
- return Ok(JsonView("图片格式不正确!只支持 PNG、JPG、JPEG、BMP 格式!"));
|
|
|
+ if (!picFormat.ToLower().Equals("pdf"))
|
|
|
+ {
|
|
|
+ return Ok(JsonView("图片格式不正确!只支持 PDF、PNG、JPG、JPEG、BMP 格式!"));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
double strSize = 1024 * 1024 * 7;
|