bug修复

segment2.0
zhanglb 2 years ago
parent 9a3d3dd4b9
commit 3f2ac4e1a1

@ -68,6 +68,12 @@ public class StartSegmentHandler {
List<File> files = new ArrayList<>(fileInfoList.size()); List<File> files = new ArrayList<>(fileInfoList.size());
List<FileDTO> fileDTOList = new ArrayList<>(fileInfoList.size()); List<FileDTO> fileDTOList = new ArrayList<>(fileInfoList.size());
for (OcrFileInfo fileInfo:fileInfoList) { for (OcrFileInfo fileInfo:fileInfoList) {
boolean assortFlag = false;
String assortId = null;
String assortName = null;
Long ruleId = null;
String hitKey = null;
Double rate = null;
//遍历文件列表 获取ocr识别结果 //遍历文件列表 获取ocr识别结果
List<String> ocrTextList = ocrApi.getText(fileInfo.getPicCutUrl(),url); List<String> ocrTextList = ocrApi.getText(fileInfo.getPicCutUrl(),url);
@ -77,44 +83,57 @@ public class StartSegmentHandler {
fileInfo.setOcrFinishTime(new Date()); fileInfo.setOcrFinishTime(new Date());
//判断上次是否特殊文件开始 需要判断是否特殊文件结尾 //判断上次是否特殊文件开始 需要判断是否特殊文件结尾
if (isSpecialFile){ if (isSpecialFile){
fileInfo.setAssortId(lastSpecialResul.getAssortId()); assortId = lastSpecialResul.getAssortId();
fileInfo.setAssortName(lastSpecialResul.getAssortName()); assortName = lastSpecialResul.getAssortName();
fileInfo.setRuleId(lastSpecialResul.getRuleId()); ruleId = lastSpecialResul.getRuleId();
boolean b = iOcrSpecialRuleService.handleSpecialRuleEnd(lastSpecialResul, ocrTextList); boolean b = iOcrSpecialRuleService.handleSpecialRuleEnd(lastSpecialResul, ocrTextList);
if (b){ if (b){
//当前分段为特殊分段结尾 //当前分段为特殊分段结尾
isSpecialFile = false; isSpecialFile = false;
lastSpecialResul = null; lastSpecialResul = null;
assortFlag = true;
} }
continue;
} }
//优先判断是否特殊规则开始 //优先判断是否特殊规则开始
if (!assortFlag){
OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleService.handleSpecialRule(ocrTextList,version); OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleService.handleSpecialRule(ocrTextList,version);
//判断是否属于某个分段 //判断是否属于某个分段
if (ocrSpecialResult!=null){ if (ocrSpecialResult!=null){
fileInfo.setAssortId(ocrSpecialResult.getAssortId()); assortId = ocrSpecialResult.getAssortId();
fileInfo.setAssortName(ocrSpecialResult.getAssortName()); assortName = ocrSpecialResult.getAssortName();
fileInfo.setRuleId(ocrSpecialResult.getRuleId()); ruleId = ocrSpecialResult.getRuleId();
fileInfo.setHitKey(ocrSpecialResult.getHitKey()); hitKey = ocrSpecialResult.getHitKey();
fileInfo.setRate(ocrSpecialResult.getRate()); rate = ocrSpecialResult.getRate();
isSpecialFile = true; isSpecialFile = true;
lastSpecialResul = ocrSpecialResult; lastSpecialResul = ocrSpecialResult;
continue; assortFlag = true;
}
} }
if (!assortFlag){
OcrRuleResult ocrRuleResult = iOcrRuleService.handleRule(ocrTextList,version); OcrRuleResult ocrRuleResult = iOcrRuleService.handleRule(ocrTextList,version);
//更新文件数据的分段 //更新文件数据的分段
if (ocrRuleResult!=null){ if (ocrRuleResult!=null){
fileInfo.setAssortId(ocrRuleResult.getAssortId()); assortId = ocrRuleResult.getAssortId();
fileInfo.setAssortName(ocrRuleResult.getAssortName()); assortName = ocrRuleResult.getAssortName();
fileInfo.setRuleId(ocrRuleResult.getRuleId()); ruleId = ocrRuleResult.getRuleId();
fileInfo.setHitKey(ocrRuleResult.getHitKey()); hitKey = ocrRuleResult.getHitKey();
fileInfo.setRate(ocrRuleResult.getRate()); rate = ocrRuleResult.getRate();
}else { }else {
fileInfo.setAssortId("-1"); assortId = "-1";
fileInfo.setAssortName("找不到分段"); assortName="其他";
}
} }
fileInfo.setAssortId(assortId);
fileInfo.setAssortName(assortName);
fileInfo.setRuleId(ruleId);
fileInfo.setHitKey(hitKey);
fileInfo.setRate(rate);
File file = new File(fileInfo.getPicUrl()); File file = new File(fileInfo.getPicUrl());
files.add(file); files.add(file);
@ -127,8 +146,6 @@ public class StartSegmentHandler {
fileDTO.setSerialNumber(fileInfo.getSerialNumber()); fileDTO.setSerialNumber(fileInfo.getSerialNumber());
fileDTOList.add(fileDTO); fileDTOList.add(fileDTO);
} }
//更新数据库表 //更新数据库表
List<OcrBasic> collect = ocrBasicList.stream().peek(p -> { List<OcrBasic> collect = ocrBasicList.stream().peek(p -> {

@ -49,6 +49,12 @@ public class StartSegmentTestHandler {
List<OcrFileInfoTest> fileInfoTestList = iOcrFileInfoTestDao.findBy("patientId", patientId); List<OcrFileInfoTest> fileInfoTestList = iOcrFileInfoTestDao.findBy("patientId", patientId);
String url = iOcrUrlConfigTestDao.findAll().get(0).getUrl(); String url = iOcrUrlConfigTestDao.findAll().get(0).getUrl();
for (OcrFileInfoTest fileInfoTest : fileInfoTestList) { for (OcrFileInfoTest fileInfoTest : fileInfoTestList) {
boolean assortFlag = false;
String assortId = null;
String assortName = null;
Long ruleId = null;
String hitKey = null;
Double rate = null;
//遍历文件列表 获取ocr识别结果 //遍历文件列表 获取ocr识别结果
List<String> ocrTextList = ocrApi.getText(fileInfoTest.getPicCutUrl(),url); List<String> ocrTextList = ocrApi.getText(fileInfoTest.getPicCutUrl(),url);
@ -58,40 +64,61 @@ public class StartSegmentTestHandler {
fileInfoTest.setOcrFinishTime(new Date()); fileInfoTest.setOcrFinishTime(new Date());
//判断上次是否特殊文件开始 需要判断是否特殊文件结尾 //判断上次是否特殊文件开始 需要判断是否特殊文件结尾
if (isSpecialFile) { if (isSpecialFile) {
fileInfoTest.setAssortId(lastSpecialResul.getAssortId()); assortId = lastSpecialResul.getAssortId();
fileInfoTest.setAssortName(lastSpecialResul.getAssortName()); assortName = lastSpecialResul.getAssortName();
fileInfoTest.setRuleId(lastSpecialResul.getRuleId()); ruleId = lastSpecialResul.getRuleId();
boolean b = iOcrSpecialRuleTestService.handleSpecialRuleEnd(lastSpecialResul, ocrTextList); boolean b = iOcrSpecialRuleTestService.handleSpecialRuleEnd(lastSpecialResul, ocrTextList);
if (b) { if (b) {
//当前分段为特殊分段结尾 //当前分段为特殊分段结尾
isSpecialFile = false; isSpecialFile = false;
lastSpecialResul = null; lastSpecialResul = null;
assortFlag = true;
} }
continue;
} }
if (!assortFlag){
//优先判断是否特殊规则开始 //优先判断是否特殊规则开始
OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleTestService.handleSpecialRule(ocrTextList); OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleTestService.handleSpecialRule(ocrTextList);
//判断是否属于某个分段 //判断是否属于某个分段
if (ocrSpecialResult != null) { if (ocrSpecialResult != null) {
fileInfoTest.setAssortId(ocrSpecialResult.getAssortId()); assortId = ocrSpecialResult.getAssortId();
fileInfoTest.setAssortName(ocrSpecialResult.getAssortName()); assortName = ocrSpecialResult.getAssortName();
fileInfoTest.setRuleId(ocrSpecialResult.getRuleId()); ruleId = ocrSpecialResult.getRuleId();
fileInfoTest.setHitKey(ocrSpecialResult.getHitKey()); hitKey = ocrSpecialResult.getHitKey();
fileInfoTest.setRate(ocrSpecialResult.getRate()); rate = ocrSpecialResult.getRate();
assortFlag = true;
isSpecialFile = true; isSpecialFile = true;
lastSpecialResul = ocrSpecialResult; lastSpecialResul = ocrSpecialResult;
continue;
} }
}
if (!assortFlag){
OcrRuleResult ocrRuleResult = iOcrRuleTestService.handleRule(ocrTextList); OcrRuleResult ocrRuleResult = iOcrRuleTestService.handleRule(ocrTextList);
//更新文件数据的分段 //更新文件数据的分段
if (ocrRuleResult != null) { if (ocrRuleResult != null) {
fileInfoTest.setAssortId(ocrRuleResult.getAssortId()); assortId = ocrRuleResult.getAssortId();
fileInfoTest.setAssortName(ocrRuleResult.getAssortName()); assortName = ocrRuleResult.getAssortName();
fileInfoTest.setRuleId(ocrRuleResult.getRuleId()); ruleId = ocrRuleResult.getRuleId();
fileInfoTest.setHitKey(ocrRuleResult.getHitKey()); hitKey = ocrRuleResult.getHitKey();
fileInfoTest.setRate(ocrRuleResult.getRate()); rate = ocrRuleResult.getRate();
}else {
assortId = "-1";
assortName="其他";
}
} }
fileInfoTest.setAssortId(assortId);
fileInfoTest.setAssortName(assortName);
fileInfoTest.setRuleId(ruleId);
fileInfoTest.setHitKey(hitKey);
fileInfoTest.setRate(rate);
} }
//更新数据库表 //更新数据库表
List<OcrBasicTest> collect = ocrBasicTestList.stream().peek(p -> { List<OcrBasicTest> collect = ocrBasicTestList.stream().peek(p -> {

@ -103,6 +103,13 @@ public class OcrRuleServiceImpl implements IOcrRuleService {
double rate = keyWord.length() / (double) ocrText.length() * 100; double rate = keyWord.length() / (double) ocrText.length() * 100;
//判断是否命中 //判断是否命中
if (rate >= score) { if (rate >= score) {
OcrRuleResult ocrRuleResult = new OcrRuleResult();
ocrRuleResult.setRuleId(ocrRule.getId());
ocrRuleResult.setAssortId(assortId);
ocrRuleResult.setAssortName(assortName);
ocrRuleResult.setHitKey(keyWord);
ocrRuleResult.setRate(rate);
//判断二级是否启用 //判断二级是否启用
if (ocrRule.getIsUseSecond() && Func.isNotEmpty(ocrRule.getJson())) { if (ocrRule.getIsUseSecond() && Func.isNotEmpty(ocrRule.getJson())) {
List<OcrRuleJson> ocrRuleList = Func.parseJsonArray(ocrRule.getJson(), OcrRuleJson.class) List<OcrRuleJson> ocrRuleList = Func.parseJsonArray(ocrRule.getJson(), OcrRuleJson.class)
@ -125,7 +132,6 @@ public class OcrRuleServiceImpl implements IOcrRuleService {
rate = keyWord.length() / (double) ocrText.length() * 100; rate = keyWord.length() / (double) ocrText.length() * 100;
//判断是否命中 //判断是否命中
if (rate >= score) { if (rate >= score) {
OcrRuleResult ocrRuleResult = new OcrRuleResult();
ocrRuleResult.setRuleId(ocrRule.getId()); ocrRuleResult.setRuleId(ocrRule.getId());
ocrRuleResult.setAssortId(assortId); ocrRuleResult.setAssortId(assortId);
ocrRuleResult.setAssortName(assortName); ocrRuleResult.setAssortName(assortName);
@ -137,15 +143,9 @@ public class OcrRuleServiceImpl implements IOcrRuleService {
} }
} }
} }
} else {
OcrRuleResult ocrRuleResult = new OcrRuleResult();
ocrRuleResult.setRuleId(ocrRule.getId());
ocrRuleResult.setAssortId(assortId);
ocrRuleResult.setAssortName(assortName);
ocrRuleResult.setHitKey(keyWord);
ocrRuleResult.setRate(rate);
return ocrRuleResult;
} }
return ocrRuleResult;
} }
} }
} }

@ -57,6 +57,15 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService {
double rate = keyWord.length() / (double) ocrText.length() * 100; double rate = keyWord.length() / (double) ocrText.length() * 100;
//判断是否命中 //判断是否命中
if (rate >= score) { if (rate >= score) {
OcrRuleResult ocrRuleResult = new OcrRuleResult();
ocrRuleResult.setRuleId(ocrRuleTest.getId());
ocrRuleResult.setAssortName(assortName);
ocrRuleResult.setAssortId(assortId);
ocrRuleResult.setHitKey(keyWord);
ocrRuleResult.setRate(rate);
//判断二级是否启用 //判断二级是否启用
if (ocrRuleTest.getIsUseSecond() && Func.isNotEmpty(ocrRuleTest.getJson())) { if (ocrRuleTest.getIsUseSecond() && Func.isNotEmpty(ocrRuleTest.getJson())) {
List<OcrRuleJson> ocrRuleList = Func.parseJsonArray(ocrRuleTest.getJson(), OcrRuleJson.class) List<OcrRuleJson> ocrRuleList = Func.parseJsonArray(ocrRuleTest.getJson(), OcrRuleJson.class)
@ -79,7 +88,6 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService {
rate = keyWord.length() / (double) ocrText.length() * 100; rate = keyWord.length() / (double) ocrText.length() * 100;
//判断是否命中 //判断是否命中
if (rate >= score) { if (rate >= score) {
OcrRuleResult ocrRuleResult = new OcrRuleResult();
ocrRuleResult.setRuleId(ocrRuleTest.getId()); ocrRuleResult.setRuleId(ocrRuleTest.getId());
ocrRuleResult.setAssortId(assortId); ocrRuleResult.setAssortId(assortId);
ocrRuleResult.setAssortName(assortName); ocrRuleResult.setAssortName(assortName);
@ -91,15 +99,9 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService {
} }
} }
} }
} else {
OcrRuleResult ocrRuleResult = new OcrRuleResult();
ocrRuleResult.setRuleId(ocrRuleTest.getId());
ocrRuleResult.setAssortName(assortName);
ocrRuleResult.setAssortId(assortId);
ocrRuleResult.setHitKey(keyWord);
ocrRuleResult.setRate(rate);
return ocrRuleResult;
} }
return ocrRuleResult;
} }
} }
} }

Loading…
Cancel
Save