Browse Source

修改bug

ptos
lucky 4 years ago
parent
commit
eebc40e1d4
  1. 27
      src/main/java/com/ccsens/ptccsens/api/OcrController.java
  2. 2
      src/main/java/com/ccsens/ptccsens/bean/vo/OcrVo.java
  3. 3
      src/main/java/com/ccsens/ptccsens/service/IOcrService.java
  4. 4
      src/main/java/com/ccsens/ptccsens/service/OcrService.java
  5. 2
      src/main/resources/mapper_dao/FinanceDao.xml

27
src/main/java/com/ccsens/ptccsens/api/OcrController.java

@ -1,14 +1,17 @@
package com.ccsens.ptccsens.api;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ImageUtil;
import cn.hutool.extra.servlet.ServletUtil;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto;
import com.ccsens.ptccsens.bean.vo.OcrVo;
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo;
import com.ccsens.ptccsens.service.IOcrService;
import com.ccsens.ptccsens.util.BasicsConstant;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.*;
import com.ccsens.util.baidu.BaiDuDto;
import com.ccsens.util.baidu.BaiDuUtil;
import com.ccsens.util.baidu.BaiDuVo;
@ -25,8 +28,10 @@ import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.Part;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
/**
@ -49,7 +54,25 @@ public class OcrController {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageUtil.scale(ImageIO.read(part.getInputStream()), out, 1f);
String img = Base64.encode(out.toByteArray());
OcrVo.BillInfo billInfo = ocrService.identifyBill(img);
//保存文件
// String extName = FileUtil.extName(part.getSubmittedFileName());
// String dir = PropUtil.path + File.separator + Constant.OrcImg.FILE_DIR;
// String extraPath = DateUtil.format(new Date(), "yyyyMMdd");
// String path = extraPath + File.separator+firstAidInfo.getId()+firstAidInfo.getName()+File.separator+ IdUtil.simpleUUID() + "." + extName;
// //转成file
// File saveFile = new File(dir + extraPath);
// if (!saveFile.exists()) {
// saveFile.mkdirs();
// }
// String fullPath = dir + File.separator + path;
// FileUtil.writeFromStream(file.getInputStream(), fullPath);
//1.上传文件
String allowedExts = BasicsConstant.FILE_TYPE_IMG;
String dir = PropUtil.path;
String path = UploadFileUtil_Servlet3.uploadFile(part, allowedExts, dir);
String realPath = PropUtil.imgDomain+""+path;
log.info("文件保存路径:{}",realPath);
OcrVo.BillInfo billInfo = ocrService.identifyBill(img,realPath);
log.info("图像识别结束:{}", billInfo);
return JsonResponse.newInstance().ok(billInfo);
}

2
src/main/java/com/ccsens/ptccsens/bean/vo/OcrVo.java

@ -21,5 +21,7 @@ public class OcrVo {
private Long totalTax;
@ApiModelProperty("开票时间")
private Long invoiceDate;
@ApiModelProperty("发票url")
private String url;
}
}

3
src/main/java/com/ccsens/ptccsens/service/IOcrService.java

@ -8,7 +8,8 @@ public interface IOcrService {
/**
* 发票识别
* @param img 发表base64
* @param realPath 文件路径
* @return 识别结果
*/
OcrVo.BillInfo identifyBill(String img) throws ParseException;
OcrVo.BillInfo identifyBill(String img,String realPath) throws ParseException;
}

4
src/main/java/com/ccsens/ptccsens/service/OcrService.java

@ -25,7 +25,7 @@ import java.text.SimpleDateFormat;
public class OcrService implements IOcrService{
@Override
public OcrVo.BillInfo identifyBill(String img) throws ParseException {
public OcrVo.BillInfo identifyBill(String img, String realPath) throws ParseException {
// 图像识别
BaiDuDto.GeneralBasic basic = new BaiDuDto.GeneralBasic();
basic.setImage(img);
@ -44,7 +44,7 @@ public class OcrService implements IOcrService{
billInfo.setTotalAmount(new BigDecimal(words.getWordsResult().get(0).getTotalAmount()).multiply(BigDecimal.valueOf(100)).longValue());
billInfo.setTotalTax(new BigDecimal(words.getWordsResult().get(0).getTotalTax()).multiply(BigDecimal.valueOf(100)).longValue());
billInfo.setInvoiceDate(sdf.parse(words.getWordsResult().get(0).getInvoiceDate()).getTime());
billInfo.setUrl(realPath);
}
// personMsg.toMsg(words.getWordsResult());
return billInfo;

2
src/main/resources/mapper_dao/FinanceDao.xml

@ -145,7 +145,7 @@
AND t.NAME = '奖金'
</when>
<otherwise>
AND t.NAME != '奖金'
AND (t.NAME != '奖金' OR t.`name` is NULL)
</otherwise>
</choose>
AND a.rec_status = 0

Loading…
Cancel
Save