From cefb8077edf22dbfe820168585b559bcbf4e003f Mon Sep 17 00:00:00 2001 From: zhanglb Date: Tue, 5 Sep 2023 16:36:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BF=A1=E6=81=AF=E5=8F=82=E6=95=B0=E3=80=81=E4=BA=8C?= =?UTF-8?q?=E7=BA=A7json=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/segmentation/OcrRuleTestApi.java | 3 +- .../entity/segmentation/OcrRuleJson.java | 11 ++++--- .../segmentation/OcrRuleSecondJson.java | 23 +++++++++++++ .../controller/OcrRuleTestController.java | 5 +-- .../service/handler/StartOcrTestHandler.java | 3 +- .../service/impl/OcrRuleTestServiceImpl.java | 32 +++++++++++-------- 6 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleSecondJson.java diff --git a/docus-client-interface/src/main/java/com/docus/server/api/segmentation/OcrRuleTestApi.java b/docus-client-interface/src/main/java/com/docus/server/api/segmentation/OcrRuleTestApi.java index 14c5658..d9cfd7f 100644 --- a/docus-client-interface/src/main/java/com/docus/server/api/segmentation/OcrRuleTestApi.java +++ b/docus-client-interface/src/main/java/com/docus/server/api/segmentation/OcrRuleTestApi.java @@ -5,6 +5,7 @@ import com.docus.infrastructure.web.response.PageResult; import com.docus.server.dto.segmentation.ocrruletest.AddOcrRuleTestDTO; import com.docus.server.dto.segmentation.ocrruletest.DeleteOcrRuleTestDTO; import com.docus.server.dto.segmentation.ocrruletest.EditOcrRuleTestDTO; +import com.docus.server.entity.segmentation.OcrFileInfoTest; import com.docus.server.vo.segmentation.ocrruletest.OcrRuleTestVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.DeleteMapping; @@ -31,7 +32,7 @@ public interface OcrRuleTestApi { @GetMapping("/start/{id}") - void start (@PathVariable(value = "id") String id); + List start (@PathVariable(value = "id") String id); /** * 按主键查询 diff --git a/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleJson.java b/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleJson.java index f7eca9f..8a49136 100644 --- a/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleJson.java +++ b/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleJson.java @@ -3,6 +3,8 @@ package com.docus.server.entity.segmentation; import io.swagger.annotations.ApiModelProperty; import lombok.*; +import java.util.List; + @Data @Builder @NoArgsConstructor @@ -16,13 +18,12 @@ public class OcrRuleJson { @ApiModelProperty(value = "分段名称") private String assortName; - @ApiModelProperty(value = "占比分") - private Double matchRatio; - - @ApiModelProperty(value = "匹配关键词 多个#分割") - private String keyWord; + @ApiModelProperty(value = "关键词列表") + private List keyWordList ; @ApiModelProperty(value = "排序") private Integer sort; + + } diff --git a/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleSecondJson.java b/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleSecondJson.java new file mode 100644 index 0000000..d5f3804 --- /dev/null +++ b/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrRuleSecondJson.java @@ -0,0 +1,23 @@ +package com.docus.server.entity.segmentation; + +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class OcrRuleSecondJson { + + + @ApiModelProperty(value = "占比分") + private Double matchRatio; + + @ApiModelProperty(value = "匹配关键词 多个#分割") + private String keyWord; + + +} diff --git a/docus-segmentation/src/main/java/com/docus/server/controller/OcrRuleTestController.java b/docus-segmentation/src/main/java/com/docus/server/controller/OcrRuleTestController.java index 3d055a1..dba26a6 100644 --- a/docus-segmentation/src/main/java/com/docus/server/controller/OcrRuleTestController.java +++ b/docus-segmentation/src/main/java/com/docus/server/controller/OcrRuleTestController.java @@ -6,6 +6,7 @@ import com.docus.server.api.segmentation.OcrRuleTestApi; import com.docus.server.dto.segmentation.ocrruletest.AddOcrRuleTestDTO; import com.docus.server.dto.segmentation.ocrruletest.DeleteOcrRuleTestDTO; import com.docus.server.dto.segmentation.ocrruletest.EditOcrRuleTestDTO; +import com.docus.server.entity.segmentation.OcrFileInfoTest; import com.docus.server.service.IOcrRuleTestService; import com.docus.server.service.handler.StartOcrTestHandler; import com.docus.server.vo.segmentation.ocrruletest.OcrRuleTestVO; @@ -33,8 +34,8 @@ public class OcrRuleTestController implements OcrRuleTestApi { @ApiOperation("开始分类ocr") @Override - public void start(String id) { - startOcrTestHandler.startOcr(id); + public List start(String id) { + return startOcrTestHandler.startOcr(id); } /** diff --git a/docus-segmentation/src/main/java/com/docus/server/service/handler/StartOcrTestHandler.java b/docus-segmentation/src/main/java/com/docus/server/service/handler/StartOcrTestHandler.java index c16b264..365b783 100644 --- a/docus-segmentation/src/main/java/com/docus/server/service/handler/StartOcrTestHandler.java +++ b/docus-segmentation/src/main/java/com/docus/server/service/handler/StartOcrTestHandler.java @@ -32,7 +32,7 @@ public class StartOcrTestHandler { @TrackRetryListener("START_OCR_TEST") - public void startOcr(String patientId) { + public List startOcr(String patientId) { boolean isSpecialFile = false; OcrSpecialResult lastSpecialResul = null; @@ -86,5 +86,6 @@ public class StartOcrTestHandler { //更新数据库表 iOcrFileInfoTestDao.updateBatchById(fileInfoTestList,1000); + return fileInfoTestList; } } 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 956df47..8b55e2c 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 @@ -56,21 +56,25 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService { .stream().sorted(Comparator.comparing(OcrRuleJson::getSort)) .collect(Collectors.toList()); for (OcrRuleJson ruleJson : ocrRuleList) { + //匹配二级的关键词列表 assortId = ruleJson.getAssortId(); - keyWordList = ruleJson.getKeyWord().split("#"); - score = ruleJson.getMatchRatio(); - for (int j = 0; j < keyWordList.length; j++) { - keyWord = keyWordList[i]; - if (ocrText.contains(keyWord)) { - rate = keyWord.length() / (double) ocrText.length() * 100; - //判断是否命中 - if (rate >= score) { - OcrRuleResult ocrRuleResult = new OcrRuleResult(); - ocrRuleResult.setRuleId(ocrRuleTest.getId()); - ocrRuleResult.setAssortId(assortId); - ocrRuleResult.setHitKey(keyWord); - ocrRuleResult.setRate(rate); - return ocrRuleResult; + List ocrRuleSecondJsonList = ruleJson.getKeyWordList(); + for (OcrRuleSecondJson ocrRuleSecondJson:ocrRuleSecondJsonList) { + keyWordList = ocrRuleSecondJson.getKeyWord().split("#"); + score = ocrRuleSecondJson.getMatchRatio(); + for (int j = 0; j < keyWordList.length; j++) { + keyWord = keyWordList[i]; + if (ocrText.contains(keyWord)) { + rate = keyWord.length() / (double) ocrText.length() * 100; + //判断是否命中 + if (rate >= score) { + OcrRuleResult ocrRuleResult = new OcrRuleResult(); + ocrRuleResult.setRuleId(ocrRuleTest.getId()); + ocrRuleResult.setAssortId(assortId); + ocrRuleResult.setHitKey(keyWord); + ocrRuleResult.setRate(rate); + return ocrRuleResult; + } } } }