bug修复

segment2.0
zhanglb 2 years ago
parent bf6afa3711
commit d228bbb3fc

@ -20,17 +20,17 @@ public interface OcrApi {
/**
* ocrtext
*/
List<String> getText(String path);
List<String> getText(String path,String ocrHttpUrl);
/**
* ocr
*/
OcrResponse ocr(String path);
OcrResponse ocr(String path,String ocrHttpUrl);
/**
* ocr
*/
@ApiOperation("ocr文件上传识别")
OcrResponse uploadFile(Map<String, Object> params);
OcrResponse uploadFile(Map<String, Object> params,String ocrHttpUrl);
}

@ -23,12 +23,12 @@ public class OcrController {
@Resource
private OcrApi ocrApi;
@ApiOperation("ocr")
@GetMapping("/ocr")
public void ocr() throws Exception {
List<String> text = ocrApi.getText("D:\\docus\\cut\\segmentation\\20230822\\c6b03e5767814895a2c155c32f174051\\麻醉.jpg");
}
// @ApiOperation("ocr")
// @GetMapping("/ocr")
// public void ocr() throws Exception {
// List<String> text = ocrApi.getText("D:\\docus\\cut\\segmentation\\20230822\\c6b03e5767814895a2c155c32f174051\\麻醉.jpg");
//
// }
}

@ -2,10 +2,12 @@ package com.docus.server.infrastructure.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.db.dao.impl.BaseDaoImpl;
import com.docus.infrastructure.web.request.SearchDTO;
import com.docus.infrastructure.web.response.PageResult;
import com.docus.server.entity.segmentation.OcrBasic;
import com.docus.server.entity.segmentation.OcrBasicTest;
import com.docus.server.infrastructure.dao.IOcrBasicDao;
import com.docus.server.infrastructure.mapper.OcrBasicMapper;
import com.github.pagehelper.PageHelper;
@ -78,25 +80,25 @@ public class OcrBasicDaoImpl extends BaseDaoImpl<OcrBasicMapper, OcrBasic> imple
//分页
PageHelper.startPage(searchDTO.getPageNum(), searchDTO.getPageSize());
LambdaQueryWrapper<OcrBasic> query = Wrappers.lambdaQuery();
//时间范围默认按createTime
if (searchDTO.getBeginTime() != null) {
query.ge(OcrBasic::getCreateTime, searchDTO.getBeginTime());
Object patientId = searchDTO.getParams("patientId");
Object inpatientNo = searchDTO.getParams("inpatientNo");
Object name = searchDTO.getParams("name");
Object ocrStatue = searchDTO.getParams("ocrStatue");
if (Func.isNotEmpty(patientId)) {
query.like(OcrBasic::getPatientId,String.format("%s%s%s","%", patientId,"%"));
}
if (searchDTO.getEndTime() != null) {
Date endTime = searchDTO.getEndTime();
query.le(OcrBasic::getCreateTime, endTime);
if (Func.isNotEmpty(inpatientNo)) {
query.like(OcrBasic::getInpatientNo, String.format("%s%s%s","%", inpatientNo,"%"));
}
//关键字比较多个列or
//if (!StringUtils.isEmpty(searchDTO.getKeyword())) {
//单个列用like
//query. like(OcrBasic::getxxx, searchDTO.getKeyword());
//多个列用like
//query. and(sub -> sub.like(OcrBasic::getxx1, searchDTO.getKeyword())
// оr(). like(OcrBasic::getXX2, searchDTO.getKeyword()))
//);
//}
//默认createTime倒序排序
query.orderByDesc(OcrBasic::getCreateTime);
if (Func.isNotEmpty(name)) {
query.like(OcrBasic::getName, String.format("%s%s%s","%", name,"%"));
}
if (Func.isNotEmpty(ocrStatue)) {
query.eq(OcrBasic::getOcrStatue, ocrStatue);
}
List<OcrBasic> list = super.find(query);
return new PageResult<>(list);
}

@ -18,6 +18,6 @@ public class StartOcrHandler {
@TrackRetryListener("START_OCR")
public void startOcr(String patientId) {
System.out.println(patientId);
List<String> text = ocrApi.getText("D:\\docus\\cut\\segmentation\\20230822\\c6b03e5767814895a2c155c32f174051\\麻醉.jpg");
// List<String> text = ocrApi.getText("D:\\docus\\cut\\segmentation\\20230822\\c6b03e5767814895a2c155c32f174051\\麻醉.jpg");
}
}

@ -3,13 +3,11 @@ package com.docus.server.service.handler;
import com.docus.core.util.Func;
import com.docus.log.annotation.TrackRetryListener;
import com.docus.server.api.ocr.OcrApi;
import com.docus.server.entity.segmentation.OcrBasicTest;
import com.docus.server.entity.segmentation.OcrFileInfoTest;
import com.docus.server.entity.segmentation.OcrRuleResult;
import com.docus.server.entity.segmentation.OcrSpecialResult;
import com.docus.server.entity.segmentation.*;
import com.docus.server.enums.OcrStatusEnum;
import com.docus.server.infrastructure.dao.IOcrBasicTestDao;
import com.docus.server.infrastructure.dao.IOcrFileInfoTestDao;
import com.docus.server.infrastructure.dao.IOcrUrlConfigTestDao;
import com.docus.server.service.IOcrBasicTestService;
import com.docus.server.service.IOcrRuleTestService;
import com.docus.server.service.IOcrSpecialRuleTestService;
@ -18,6 +16,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* OCR
@ -34,6 +33,8 @@ public class StartOcrTestHandler {
private IOcrRuleTestService iOcrRuleTestService;
@Resource
private IOcrBasicTestDao iOcrBasicTestDao;
@Resource
private IOcrUrlConfigTestDao iOcrUrlConfigTestDao;
@TrackRetryListener("START_OCR_TEST")
@ -42,12 +43,13 @@ public class StartOcrTestHandler {
OcrSpecialResult lastSpecialResul = null;
//根据病案号查询文件列表
OcrBasicTest ocrBasicTest = iOcrBasicTestDao.findBy("patientId",patientId).get(0);
List<OcrBasicTest> ocrBasicTestList = iOcrBasicTestDao.findBy("patientId",patientId);
List<OcrFileInfoTest> fileInfoTestList = iOcrFileInfoTestDao.findBy("patientId", patientId);
String url = iOcrUrlConfigTestDao.findAll().get(0).getUrl();
for (OcrFileInfoTest fileInfoTest : fileInfoTestList) {
//遍历文件列表 获取ocr识别结果
List<String> ocrTextList = ocrApi.getText(fileInfoTest.getPicCutUrl());
List<String> ocrTextList = ocrApi.getText(fileInfoTest.getPicCutUrl(),url);
fileInfoTest.setOcrText(Func.toJson(ocrTextList));
fileInfoTest.setOcrStatus(OcrStatusEnum.COMPLETE);
@ -90,11 +92,13 @@ public class StartOcrTestHandler {
}
}
//更新数据库表
ocrBasicTest.setOcrFinishTime(new Date());
ocrBasicTest.setOcrStatue(OcrStatusEnum.COMPLETE);
List<OcrBasicTest> collect = ocrBasicTestList.stream().peek(p -> {
p.setOcrFinishTime(new Date());
p.setOcrStatue(OcrStatusEnum.COMPLETE);
}).collect(Collectors.toList());
iOcrFileInfoTestDao.updateBatchById(fileInfoTestList, 1000);
iOcrBasicTestDao.updateById(ocrBasicTest);
iOcrBasicTestDao.updateBatchById(collect,1000);
return fileInfoTestList;
}

@ -9,6 +9,7 @@ import com.docus.server.entity.segmentation.OcrSpecialResult;
import com.docus.server.entity.segmentation.OcrVersion;
import com.docus.server.enums.OcrStatusEnum;
import com.docus.server.infrastructure.dao.IOcrFileInfoDao;
import com.docus.server.infrastructure.dao.IOcrUrlConfigDao;
import com.docus.server.infrastructure.dao.IOcrVersionDao;
import com.docus.server.service.IOcrRuleService;
import com.docus.server.service.IOcrSpecialRuleService;
@ -34,6 +35,8 @@ public class StartSegmentHandler {
private IOcrRuleService iOcrRuleService;
@Resource
private IOcrVersionDao iOcrVersionDao;
@Resource
private IOcrUrlConfigDao iOcrUrlConfigDao;
@TrackRetryListener("START_SEGMENT")
public void startSegment(String patientId) {
@ -48,11 +51,12 @@ public class StartSegmentHandler {
Integer version = ocrVersion.getVersion();
//根据病案号查询文件列表
String url = iOcrUrlConfigDao.findAll().get(0).getUrl();
List<OcrFileInfo> fileInfoList = iOcrFileInfoDao.findBy("patientId",patientId);
for (OcrFileInfo fileInfo:fileInfoList) {
//遍历文件列表 获取ocr识别结果
List<String> ocrTextList = ocrApi.getText(fileInfo.getPicCutUrl());
List<String> ocrTextList = ocrApi.getText(fileInfo.getPicCutUrl(),url);
fileInfo.setOcrText(Func.toJson(ocrTextList));
fileInfo.setOcrStatus(OcrStatusEnum.COMPLETE);

@ -10,6 +10,7 @@ import com.docus.server.vo.ocr.Datas;
import com.docus.server.vo.ocr.OcrResponse;
import com.docus.server.vo.ocr.Sort;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -29,15 +30,16 @@ public class OcrServiceImpl implements OcrApi {
@Value("${ocr.api-url:http://192.168.16.85:9999/uploadfile}")
private String ocrHttpUrl;
private final static Lock HTTP_POST_LOCK = new ReentrantLock();
@Override
public List<String> getText(String path) {
public List<String> getText(String path,String ocrHttpUrl) {
try {
StopWatch watch = new StopWatch();
OcrResponse response = ocr(path);
OcrResponse response = ocr(path,ocrHttpUrl);
log.info("ocr请求截图耗时:{}ms请求图片地址:{}", watch.elapsedTime(), path);
@ -73,16 +75,16 @@ public class OcrServiceImpl implements OcrApi {
}
@Override
public OcrResponse ocr(String path) {
public OcrResponse ocr(String path,String ocrHttpUrl) {
File file = new File(path);
Map<String, Object> data = new HashMap<>();
data.put("file", file);
data.put("filetype", "jpg");
return uploadFile(data);
return uploadFile(data,ocrHttpUrl);
}
@Override
public OcrResponse uploadFile(Map<String, Object> params) {
public OcrResponse uploadFile(Map<String, Object> params,String ocrHttpUrl) {
HTTP_POST_LOCK.lock();
try {

@ -13,8 +13,8 @@
<packaging>pom</packaging>
<modules>
<!-- <module>docus-collector-update</module>-->
<!-- <module>docus-segmentation</module>-->
<module>docus-recovery</module>
<module>docus-segmentation</module>
<!-- <module>docus-recovery</module>-->
<module>docus-api-common</module>
<module>docus-client-interface</module>
</modules>

Loading…
Cancel
Save