master
周文涛 2 years ago
parent d789fdc880
commit 835b1be4f8

@ -132,6 +132,7 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
} }
OcrRuleCheckVo ocrRuleCheckVo = ocrRuleCheckMap.get(record.getRuleCheck()); OcrRuleCheckVo ocrRuleCheckVo = ocrRuleCheckMap.get(record.getRuleCheck());
if (ocrRuleCheckVo!=null && StringUtils.isNotBlank(ocrRuleCheckVo.getMetadataConfigId())) { if (ocrRuleCheckVo!=null && StringUtils.isNotBlank(ocrRuleCheckVo.getMetadataConfigId())) {
record.setOcrRuleCheckInfoConfigRule(ocrRuleCheckVo.getConfigRule());
record.setMetadataConfigId(ocrRuleCheckVo.getMetadataConfigId()); record.setMetadataConfigId(ocrRuleCheckVo.getMetadataConfigId());
OcrMetadataConfigVo ocrMetadataConfigVo = metadataConfigMap.get(ocrRuleCheckVo.getMetadataConfigId()); OcrMetadataConfigVo ocrMetadataConfigVo = metadataConfigMap.get(ocrRuleCheckVo.getMetadataConfigId());
if (ocrMetadataConfigVo!=null) { if (ocrMetadataConfigVo!=null) {
@ -141,12 +142,6 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
} }
} }
} }
/*for (OcrIdentify record : pageList.getRecords()) {
if (StringUtils.isBlank(record.getRequestId())) {
continue;
}
System.out.println(record.getTaskResult().equals("1")?"匹配成功":"匹配失败");
}*/
return Result.OK(pageList); return Result.OK(pageList);
} }
@ -271,22 +266,8 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
Map<String, OcrRuleCheckVo> ocrRuleCheckMap = ocrRuleCheckService.listToMap(null); Map<String, OcrRuleCheckVo> ocrRuleCheckMap = ocrRuleCheckService.listToMap(null);
Map<String, OcrMetadataConfigVo> metadataConfigMap = ocrMetadataConfigService.listToMap(null); Map<String, OcrMetadataConfigVo> metadataConfigMap = ocrMetadataConfigService.listToMap(null);
Map<String, String> taskNameMap = ocrTaskTypeService.listNameToMap(null); Map<String, String> taskNameMap = ocrTaskTypeService.listNameToMap(null);
/*List<OcrIdentifyDetail> ocrIdentifyDetailList = ocrIdentifyDetailService.list(new LambdaQueryWrapper<OcrIdentifyDetail>().eq(OcrIdentifyDetail::getIdentifyId, id));
List<OcrIdentifyDetail> identifyDetailList = new ArrayList<>();*/
/* if ("1".equals(ocrIdentify.getStatus()) &&ocrIdentifyDetailList!=null&&ocrIdentifyDetailList.size()>0) {
//判断明细是否识别成功
identifyDetailList = ocrIdentifyDetailList.stream().filter(o -> o.getIdentifyId().equals(ocrIdentify.getId())).collect(Collectors.toList());
if (identifyDetailList.size()>0) {
long errorCount = identifyDetailList.stream().filter(i -> i.getStatus().equals("1")).count();
//errorCount>0,说明有失败的明细
ocrIdentify.setTaskResult(errorCount>0?"0":"1");
}else{
//失败
ocrIdentify.setTaskResult("0");
}
}*/
List<OcrIdentifyDetail> identifyDetailList = ocrIdentifyDetailService.list(new LambdaQueryWrapper<OcrIdentifyDetail>().eq(OcrIdentifyDetail::getIdentifyId,id)); List<OcrIdentifyDetail> identifyDetailList = ocrIdentifyDetailService.list(new LambdaQueryWrapper<OcrIdentifyDetail>().eq(OcrIdentifyDetail::getIdentifyId,id));
ocrIdentify.setImgNum((long)identifyDetailList.size()); ocrIdentify.setImgNum((long)identifyDetailList.size());
if (StringUtils.isNotBlank(ocrIdentify.getTaskResultInfo())) { if (StringUtils.isNotBlank(ocrIdentify.getTaskResultInfo())) {
List<OcrResult2> ocrResult2s = JSONObject.parseArray(ocrIdentify.getTaskResultInfo()).toJavaList(OcrResult2.class); List<OcrResult2> ocrResult2s = JSONObject.parseArray(ocrIdentify.getTaskResultInfo()).toJavaList(OcrResult2.class);
int tagNum = ocrResult2s.size(); int tagNum = ocrResult2s.size();
@ -299,6 +280,7 @@ public class OcrIdentifyController extends JeecgController<OcrIdentify, IOcrIden
OcrRuleCheckVo ocrRuleCheckVo = ocrRuleCheckMap.get(ocrIdentify.getRuleCheck()); OcrRuleCheckVo ocrRuleCheckVo = ocrRuleCheckMap.get(ocrIdentify.getRuleCheck());
if (ocrRuleCheckVo!=null && StringUtils.isNotBlank(ocrRuleCheckVo.getMetadataConfigId())) { if (ocrRuleCheckVo!=null && StringUtils.isNotBlank(ocrRuleCheckVo.getMetadataConfigId())) {
ocrIdentify.setOcrRuleCheckInfoConfigRule(ocrRuleCheckVo.getConfigRule());
ocrIdentify.setRuleCheck_dictText(ocrRuleCheckVo.getConfigName()); ocrIdentify.setRuleCheck_dictText(ocrRuleCheckVo.getConfigName());
ocrIdentify.setMetadataConfigId(ocrRuleCheckVo.getMetadataConfigId()); ocrIdentify.setMetadataConfigId(ocrRuleCheckVo.getMetadataConfigId());
ocrIdentify.setMetadataConfigId_dictText(ocrRuleCheckVo.getMetadataConfigName()); ocrIdentify.setMetadataConfigId_dictText(ocrRuleCheckVo.getMetadataConfigName());

@ -1,5 +1,6 @@
package org.jeecg.modules.ocr.controller; package org.jeecg.modules.ocr.controller;
import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -23,6 +24,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.ocr.utils.ImageUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ExportParams;
@ -87,7 +89,25 @@ public class OcrIdentifyDetailController extends JeecgController<OcrIdentifyDeta
if (StringUtils.isNotBlank(record.getImageUrl())&&"customer_test".equals(systemProjectEnv)) { if (StringUtils.isNotBlank(record.getImageUrl())&&"customer_test".equals(systemProjectEnv)) {
//客户测试服务器 //客户测试服务器
if (!record.getImageUrl().contains("http:")&&!record.getImageUrl().contains("https:")) { if (!record.getImageUrl().contains("http:")&&!record.getImageUrl().contains("https:")) {
record.setImagePreviewUrl("http://47.103.213.109:8072/files"+record.getImageUrl()); //压缩图片
File file=new File(record.getImageUrl());
//当原图片存在时.
if (file.exists()) {
int maxWidth = 800;// 压缩后图片的最大宽度
int maxHeight = 600;// 压缩后图片的最大高度
int i = record.getImageUrl().lastIndexOf("/");
String fileUrl= "/data/thumbnail"+record.getImageUrl().substring(0,i);
//判断新目录是否存在,不存在则新建
ImageUtils.folderCreate(fileUrl);
String outputImagePath=fileUrl+record.getImageUrl().substring(i + 1, record.getImageUrl().length());
File thumbnailFile = new File(outputImagePath);
//如果上次生成过缩率图,就不生成了
if (!thumbnailFile.exists()) {
ImageUtils.compressImage(file.getAbsolutePath(), outputImagePath, maxWidth, maxHeight);
}
String imagePreviewUrl="http://47.103.213.109:8072/files"+record.getImageUrl()+","+"http://47.103.213.109:8072/files"+outputImagePath;
record.setImagePreviewUrl(imagePreviewUrl);
}
}else{ }else{
record.setImagePreviewUrl(record.getImageUrl()); record.setImagePreviewUrl(record.getImageUrl());
} }

@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.modules.ocr.model.OcrResult2; import org.jeecg.modules.ocr.model.OcrResult2;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict; import org.jeecg.common.aspect.annotation.Dict;
@ -21,6 +22,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.persistence.Table;
/** /**
* @Description: ocr * @Description: ocr
* @Author: jeecg-boot * @Author: jeecg-boot
@ -132,6 +135,9 @@ public class OcrIdentify implements Serializable {
private String taskResultInfo; private String taskResultInfo;
//======================非数据库映射 //======================非数据库映射
/**规则检查配置信息*/
@TableField(exist = false)
private String ocrRuleCheckInfoConfigRule;
/**任务类型_字段中文*/ /**任务类型_字段中文*/
@TableField(exist = false) @TableField(exist = false)
private String metadataConfigId_dictText; private String metadataConfigId_dictText;

@ -5,6 +5,7 @@ import java.io.UnsupportedEncodingException;
import java.util.Date; import java.util.Date;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;

@ -0,0 +1,80 @@
package org.jeecg.modules.ocr.utils;
import org.apache.commons.lang.StringUtils;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
/**
* @Description
* @Author ZhouWenTao
* @Date 2023/8/16 12:06
*/
public class ImageUtils {
/*
Java使ImageIOThumbnailsJava Advanced Imaging APIJAI使ImageIO
*/
public static void main(String[] args) {
String inputImagePath = "C:\\Users\\Denim\\Desktop\\385cb7b31e14c05c1aa1613170118772.jpeg"; // 输入图片的路径
String outputImagePath = "C:\\Users\\Denim\\Desktop\\thumbnail\\sl-385cb7b31e14c05c1aa1613170118772.jpeg"; // 压缩后图片的保存路径
int maxWidth = 800; // 压缩后图片的最大宽度
int maxHeight = 600; // 压缩后图片的最大高度
compressImage(inputImagePath, outputImagePath, maxWidth, maxHeight);
}
/**
*
* @param inputImagePath
* @param outputImagePath
* @param maxWidth
* @param maxHeight
*/
public static void compressImage(String inputImagePath, String outputImagePath, int maxWidth, int maxHeight) {
try {
// 读取原始图片
File inputFile = new File(inputImagePath);
BufferedImage inputImage = ImageIO.read(inputFile);
// 计算压缩比例,并确定输出图片的大小
double widthRatio = (double) maxWidth / inputImage.getWidth();
double heightRatio = (double) maxHeight / inputImage.getHeight();
double ratio = Math.min(widthRatio, heightRatio);
int newWidth = (int) (inputImage.getWidth() * ratio);
int newHeight = (int) (inputImage.getHeight() * ratio);
// 创建缩放后的图片对象
BufferedImage outputImage = new BufferedImage(newWidth, newHeight, inputImage.getType());
// 绘制缩放后的图像
Graphics2D graphics2D = outputImage.createGraphics();
graphics2D.drawImage(inputImage, 0, 0, newWidth, newHeight, null);
graphics2D.dispose();
// 写入压缩后的图片到输出路径
ImageIO.write(outputImage, "jpg", new File(outputImagePath));
System.out.println("图片压缩完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
/*
`compressImage`使`ImageIO``BufferedImage`使`Graphics2D`
JPEGJPEG
*/
public static void folderCreate(String folder){
if (StringUtils.isNotBlank(folder)) {
File file =new File(folder);
if (file.exists()) {
if (file.isDirectory()) {/*System.out.println("dir exists");*/}
else {
System.out.println("the same name file exists, can not create dir");
}
} else {
//System.out.println("目录不存在,创建");
file.mkdirs();
}
}
}
}
Loading…
Cancel
Save