From 3f2ac4e1a12ba49b5a37f2695ba1e9b5a7601260 Mon Sep 17 00:00:00 2001 From: zhanglb Date: Tue, 19 Sep 2023 14:04:52 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/handler/StartSegmentHandler.java | 75 +++++++++++------- .../handler/StartSegmentTestHandler.java | 77 +++++++++++++------ .../service/impl/OcrRuleServiceImpl.java | 18 ++--- .../service/impl/OcrRuleTestServiceImpl.java | 20 ++--- 4 files changed, 118 insertions(+), 72 deletions(-) diff --git a/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentHandler.java b/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentHandler.java index bad1b93..5bd5688 100644 --- a/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentHandler.java +++ b/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentHandler.java @@ -68,6 +68,12 @@ public class StartSegmentHandler { List files = new ArrayList<>(fileInfoList.size()); List fileDTOList = new ArrayList<>(fileInfoList.size()); for (OcrFileInfo fileInfo:fileInfoList) { + boolean assortFlag = false; + String assortId = null; + String assortName = null; + Long ruleId = null; + String hitKey = null; + Double rate = null; //遍历文件列表 获取ocr识别结果 List ocrTextList = ocrApi.getText(fileInfo.getPicCutUrl(),url); @@ -77,44 +83,57 @@ public class StartSegmentHandler { fileInfo.setOcrFinishTime(new Date()); //判断上次是否特殊文件开始 需要判断是否特殊文件结尾 if (isSpecialFile){ - fileInfo.setAssortId(lastSpecialResul.getAssortId()); - fileInfo.setAssortName(lastSpecialResul.getAssortName()); - fileInfo.setRuleId(lastSpecialResul.getRuleId()); + assortId = lastSpecialResul.getAssortId(); + assortName = lastSpecialResul.getAssortName(); + ruleId = lastSpecialResul.getRuleId(); + boolean b = iOcrSpecialRuleService.handleSpecialRuleEnd(lastSpecialResul, ocrTextList); if (b){ //当前分段为特殊分段结尾 isSpecialFile = false; lastSpecialResul = null; + assortFlag = true; } - continue; } //优先判断是否特殊规则开始 - OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleService.handleSpecialRule(ocrTextList,version); - //判断是否属于某个分段 - if (ocrSpecialResult!=null){ - fileInfo.setAssortId(ocrSpecialResult.getAssortId()); - fileInfo.setAssortName(ocrSpecialResult.getAssortName()); - fileInfo.setRuleId(ocrSpecialResult.getRuleId()); - fileInfo.setHitKey(ocrSpecialResult.getHitKey()); - fileInfo.setRate(ocrSpecialResult.getRate()); - - isSpecialFile = true; - lastSpecialResul = ocrSpecialResult; - continue; + if (!assortFlag){ + OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleService.handleSpecialRule(ocrTextList,version); + //判断是否属于某个分段 + if (ocrSpecialResult!=null){ + assortId = ocrSpecialResult.getAssortId(); + assortName = ocrSpecialResult.getAssortName(); + ruleId = ocrSpecialResult.getRuleId(); + hitKey = ocrSpecialResult.getHitKey(); + rate = ocrSpecialResult.getRate(); + + isSpecialFile = true; + lastSpecialResul = ocrSpecialResult; + assortFlag = true; + } } - OcrRuleResult ocrRuleResult = iOcrRuleService.handleRule(ocrTextList,version); - //更新文件数据的分段 - if (ocrRuleResult!=null){ - fileInfo.setAssortId(ocrRuleResult.getAssortId()); - fileInfo.setAssortName(ocrRuleResult.getAssortName()); - fileInfo.setRuleId(ocrRuleResult.getRuleId()); - fileInfo.setHitKey(ocrRuleResult.getHitKey()); - fileInfo.setRate(ocrRuleResult.getRate()); - }else { - fileInfo.setAssortId("-1"); - fileInfo.setAssortName("找不到分段"); + + if (!assortFlag){ + OcrRuleResult ocrRuleResult = iOcrRuleService.handleRule(ocrTextList,version); + //更新文件数据的分段 + if (ocrRuleResult!=null){ + assortId = ocrRuleResult.getAssortId(); + assortName = ocrRuleResult.getAssortName(); + ruleId = ocrRuleResult.getRuleId(); + hitKey = ocrRuleResult.getHitKey(); + rate = ocrRuleResult.getRate(); + }else { + assortId = "-1"; + assortName="其他"; + } } + fileInfo.setAssortId(assortId); + fileInfo.setAssortName(assortName); + fileInfo.setRuleId(ruleId); + fileInfo.setHitKey(hitKey); + fileInfo.setRate(rate); + + File file = new File(fileInfo.getPicUrl()); files.add(file); @@ -127,8 +146,6 @@ public class StartSegmentHandler { fileDTO.setSerialNumber(fileInfo.getSerialNumber()); fileDTOList.add(fileDTO); - - } //更新数据库表 List collect = ocrBasicList.stream().peek(p -> { diff --git a/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentTestHandler.java b/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentTestHandler.java index dddd5af..f8ddccf 100644 --- a/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentTestHandler.java +++ b/docus-segmentation/src/main/java/com/docus/server/service/handler/StartSegmentTestHandler.java @@ -49,6 +49,12 @@ public class StartSegmentTestHandler { List fileInfoTestList = iOcrFileInfoTestDao.findBy("patientId", patientId); String url = iOcrUrlConfigTestDao.findAll().get(0).getUrl(); for (OcrFileInfoTest fileInfoTest : fileInfoTestList) { + boolean assortFlag = false; + String assortId = null; + String assortName = null; + Long ruleId = null; + String hitKey = null; + Double rate = null; //遍历文件列表 获取ocr识别结果 List ocrTextList = ocrApi.getText(fileInfoTest.getPicCutUrl(),url); @@ -58,40 +64,61 @@ public class StartSegmentTestHandler { fileInfoTest.setOcrFinishTime(new Date()); //判断上次是否特殊文件开始 需要判断是否特殊文件结尾 if (isSpecialFile) { - fileInfoTest.setAssortId(lastSpecialResul.getAssortId()); - fileInfoTest.setAssortName(lastSpecialResul.getAssortName()); - fileInfoTest.setRuleId(lastSpecialResul.getRuleId()); + assortId = lastSpecialResul.getAssortId(); + assortName = lastSpecialResul.getAssortName(); + ruleId = lastSpecialResul.getRuleId(); + boolean b = iOcrSpecialRuleTestService.handleSpecialRuleEnd(lastSpecialResul, ocrTextList); if (b) { //当前分段为特殊分段结尾 isSpecialFile = false; lastSpecialResul = null; + assortFlag = true; } - continue; + } - //优先判断是否特殊规则开始 - OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleTestService.handleSpecialRule(ocrTextList); - //判断是否属于某个分段 - if (ocrSpecialResult != null) { - fileInfoTest.setAssortId(ocrSpecialResult.getAssortId()); - fileInfoTest.setAssortName(ocrSpecialResult.getAssortName()); - fileInfoTest.setRuleId(ocrSpecialResult.getRuleId()); - fileInfoTest.setHitKey(ocrSpecialResult.getHitKey()); - fileInfoTest.setRate(ocrSpecialResult.getRate()); - - isSpecialFile = true; - lastSpecialResul = ocrSpecialResult; - continue; + + + if (!assortFlag){ + //优先判断是否特殊规则开始 + OcrSpecialResult ocrSpecialResult = iOcrSpecialRuleTestService.handleSpecialRule(ocrTextList); + //判断是否属于某个分段 + if (ocrSpecialResult != null) { + assortId = ocrSpecialResult.getAssortId(); + assortName = ocrSpecialResult.getAssortName(); + ruleId = ocrSpecialResult.getRuleId(); + hitKey = ocrSpecialResult.getHitKey(); + rate = ocrSpecialResult.getRate(); + + assortFlag = true; + isSpecialFile = true; + lastSpecialResul = ocrSpecialResult; + + } + } - OcrRuleResult ocrRuleResult = iOcrRuleTestService.handleRule(ocrTextList); - //更新文件数据的分段 - if (ocrRuleResult != null) { - fileInfoTest.setAssortId(ocrRuleResult.getAssortId()); - fileInfoTest.setAssortName(ocrRuleResult.getAssortName()); - fileInfoTest.setRuleId(ocrRuleResult.getRuleId()); - fileInfoTest.setHitKey(ocrRuleResult.getHitKey()); - fileInfoTest.setRate(ocrRuleResult.getRate()); + + if (!assortFlag){ + OcrRuleResult ocrRuleResult = iOcrRuleTestService.handleRule(ocrTextList); + //更新文件数据的分段 + if (ocrRuleResult != null) { + assortId = ocrRuleResult.getAssortId(); + assortName = ocrRuleResult.getAssortName(); + ruleId = ocrRuleResult.getRuleId(); + hitKey = ocrRuleResult.getHitKey(); + rate = ocrRuleResult.getRate(); + }else { + assortId = "-1"; + assortName="其他"; + } } + + + fileInfoTest.setAssortId(assortId); + fileInfoTest.setAssortName(assortName); + fileInfoTest.setRuleId(ruleId); + fileInfoTest.setHitKey(hitKey); + fileInfoTest.setRate(rate); } //更新数据库表 List collect = ocrBasicTestList.stream().peek(p -> { diff --git a/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleServiceImpl.java b/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleServiceImpl.java index 98a5af7..a42cf9c 100644 --- a/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleServiceImpl.java +++ b/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleServiceImpl.java @@ -103,6 +103,13 @@ public class OcrRuleServiceImpl implements IOcrRuleService { double rate = keyWord.length() / (double) ocrText.length() * 100; //判断是否命中 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())) { List ocrRuleList = Func.parseJsonArray(ocrRule.getJson(), OcrRuleJson.class) @@ -125,7 +132,6 @@ public class OcrRuleServiceImpl implements IOcrRuleService { rate = keyWord.length() / (double) ocrText.length() * 100; //判断是否命中 if (rate >= score) { - OcrRuleResult ocrRuleResult = new OcrRuleResult(); ocrRuleResult.setRuleId(ocrRule.getId()); ocrRuleResult.setAssortId(assortId); 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; } } } diff --git a/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleTestServiceImpl.java b/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleTestServiceImpl.java index 7629716..ae1355e 100644 --- a/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleTestServiceImpl.java +++ b/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrRuleTestServiceImpl.java @@ -57,6 +57,15 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService { double rate = keyWord.length() / (double) ocrText.length() * 100; //判断是否命中 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())) { List ocrRuleList = Func.parseJsonArray(ocrRuleTest.getJson(), OcrRuleJson.class) @@ -79,7 +88,6 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService { rate = keyWord.length() / (double) ocrText.length() * 100; //判断是否命中 if (rate >= score) { - OcrRuleResult ocrRuleResult = new OcrRuleResult(); ocrRuleResult.setRuleId(ocrRuleTest.getId()); ocrRuleResult.setAssortId(assortId); 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; } } }