From 27627014b64aaee04d0820da91c37ee253b63c9d Mon Sep 17 00:00:00 2001 From: zhanglb Date: Tue, 5 Sep 2023 13:59:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/segmentation/OcrRuleTestApi.java | 5 ++++ .../entity/segmentation/OcrSpecialResult.java | 4 ++- .../controller/OcrRuleTestController.java | 11 ++++++++ .../service/handler/StartOcrTestHandler.java | 4 +++ .../service/impl/OcrRuleTestServiceImpl.java | 4 +++ .../impl/OcrSpecialRuleTestServiceImpl.java | 26 +++++++++++++------ 6 files changed, 45 insertions(+), 9 deletions(-) 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 79eac4f..14c5658 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 @@ -28,6 +28,11 @@ import java.util.List; @RequestMapping("/ocr/RuleTest") public interface OcrRuleTestApi { + + + @GetMapping("/start/{id}") + void start (@PathVariable(value = "id") String id); + /** * 按主键查询 * diff --git a/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrSpecialResult.java b/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrSpecialResult.java index 96405b2..83aa223 100644 --- a/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrSpecialResult.java +++ b/docus-client-interface/src/main/java/com/docus/server/entity/segmentation/OcrSpecialResult.java @@ -1,6 +1,7 @@ package com.docus.server.entity.segmentation; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -22,5 +23,6 @@ public class OcrSpecialResult { @ApiModelProperty(value = "命中占比") private Double rate; - + @ApiModelProperty(value = "结束规则") + private String endJson; } 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 ac84037..3d055a1 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 @@ -7,6 +7,7 @@ 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.service.IOcrRuleTestService; +import com.docus.server.service.handler.StartOcrTestHandler; import com.docus.server.vo.segmentation.ocrruletest.OcrRuleTestVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -26,6 +27,15 @@ import java.util.List; public class OcrRuleTestController implements OcrRuleTestApi { @Resource private IOcrRuleTestService iOcrRuleTestService; + @Resource + private StartOcrTestHandler startOcrTestHandler; + + + @ApiOperation("开始分类ocr") + @Override + public void start(String id) { + startOcrTestHandler.startOcr(id); + } /** * 按主键查询 @@ -84,6 +94,7 @@ public class OcrRuleTestController implements OcrRuleTestApi { iOcrRuleTestService.edit(editOcrRuleTestDTO); } + @ApiOperation("批量更新规则") @Override public void deleteAndAdd(List editOcrRuleTestDTOList) { iOcrRuleTestService.deleteAndAdd(editOcrRuleTestDTOList); 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 ee39f39..c16b264 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 @@ -66,6 +66,8 @@ public class StartOcrTestHandler { fileInfoTest.setAssortId(ocrSpecialResult.getAssortId()); fileInfoTest.setAssortName(ocrSpecialResult.getAssortName()); fileInfoTest.setRuleId(ocrSpecialResult.getRuleId()); + fileInfoTest.setHitKey(ocrSpecialResult.getHitKey()); + fileInfoTest.setRate(ocrSpecialResult.getRate()); isSpecialFile = true; lastSpecialResul = ocrSpecialResult; @@ -77,6 +79,8 @@ public class StartOcrTestHandler { fileInfoTest.setAssortId(ocrRuleResult.getAssortId()); fileInfoTest.setAssortName(ocrRuleResult.getAssortName()); fileInfoTest.setRuleId(ocrRuleResult.getRuleId()); + fileInfoTest.setHitKey(ocrRuleResult.getHitKey()); + fileInfoTest.setRate(ocrRuleResult.getRate()); } } //更新数据库表 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 b09d722..956df47 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 @@ -68,6 +68,8 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService { OcrRuleResult ocrRuleResult = new OcrRuleResult(); ocrRuleResult.setRuleId(ocrRuleTest.getId()); ocrRuleResult.setAssortId(assortId); + ocrRuleResult.setHitKey(keyWord); + ocrRuleResult.setRate(rate); return ocrRuleResult; } } @@ -77,6 +79,8 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService { OcrRuleResult ocrRuleResult = new OcrRuleResult(); ocrRuleResult.setRuleId(ocrRuleTest.getId()); ocrRuleResult.setAssortId(assortId); + ocrRuleResult.setHitKey(keyWord); + ocrRuleResult.setRate(rate); return ocrRuleResult; } } diff --git a/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrSpecialRuleTestServiceImpl.java b/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrSpecialRuleTestServiceImpl.java index 764d601..5831f88 100644 --- a/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrSpecialRuleTestServiceImpl.java +++ b/docus-segmentation/src/main/java/com/docus/server/service/impl/OcrSpecialRuleTestServiceImpl.java @@ -78,16 +78,26 @@ public class OcrSpecialRuleTestServiceImpl implements IOcrSpecialRuleTestService @Override public boolean handleSpecialRuleEnd(OcrSpecialResult result, List ocrTextList) { - //获取结束条件列表 - - + List ocrSpecialRuleJsons = Func.parseJsonArray(result.getEndJson(), OcrSpecialRuleJson.class); //判断得分占比 - - - //返回结束 - - + for (OcrSpecialRuleJson ocrSpecialRuleJson : ocrSpecialRuleJsons) { + double score = ocrSpecialRuleJson.getScore(); + String[] keyWordList = ocrSpecialRuleJson.getKeyWord().split("#"); + for (String ocrText : ocrTextList) { + for (int i = 0; i < keyWordList.length; i++) { + String keyWord = keyWordList[i]; + if (ocrText.contains(keyWord)){ + double rate = keyWord.length() / (double)ocrText.length() * 100; + //判断是否命中 + if (rate>=score) { + //返回结束 + return true; + } + } + } + } + } //默认返回没结束 return false; }