接口返回文件信息参数、二级json更改

segment2.0
zhanglb 2 years ago
parent 27627014b6
commit cefb8077ed

@ -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.AddOcrRuleTestDTO;
import com.docus.server.dto.segmentation.ocrruletest.DeleteOcrRuleTestDTO; import com.docus.server.dto.segmentation.ocrruletest.DeleteOcrRuleTestDTO;
import com.docus.server.dto.segmentation.ocrruletest.EditOcrRuleTestDTO; import com.docus.server.dto.segmentation.ocrruletest.EditOcrRuleTestDTO;
import com.docus.server.entity.segmentation.OcrFileInfoTest;
import com.docus.server.vo.segmentation.ocrruletest.OcrRuleTestVO; import com.docus.server.vo.segmentation.ocrruletest.OcrRuleTestVO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
@ -31,7 +32,7 @@ public interface OcrRuleTestApi {
@GetMapping("/start/{id}") @GetMapping("/start/{id}")
void start (@PathVariable(value = "id") String id); List<OcrFileInfoTest> start (@PathVariable(value = "id") String id);
/** /**
* *

@ -3,6 +3,8 @@ package com.docus.server.entity.segmentation;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.*; import lombok.*;
import java.util.List;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@ -16,13 +18,12 @@ public class OcrRuleJson {
@ApiModelProperty(value = "分段名称") @ApiModelProperty(value = "分段名称")
private String assortName; private String assortName;
@ApiModelProperty(value = "占比分") @ApiModelProperty(value = "关键词列表")
private Double matchRatio; private List<OcrRuleSecondJson> keyWordList ;
@ApiModelProperty(value = "匹配关键词 多个#分割")
private String keyWord;
@ApiModelProperty(value = "排序") @ApiModelProperty(value = "排序")
private Integer sort; private Integer sort;
} }

@ -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;
}

@ -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.AddOcrRuleTestDTO;
import com.docus.server.dto.segmentation.ocrruletest.DeleteOcrRuleTestDTO; import com.docus.server.dto.segmentation.ocrruletest.DeleteOcrRuleTestDTO;
import com.docus.server.dto.segmentation.ocrruletest.EditOcrRuleTestDTO; 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.IOcrRuleTestService;
import com.docus.server.service.handler.StartOcrTestHandler; import com.docus.server.service.handler.StartOcrTestHandler;
import com.docus.server.vo.segmentation.ocrruletest.OcrRuleTestVO; import com.docus.server.vo.segmentation.ocrruletest.OcrRuleTestVO;
@ -33,8 +34,8 @@ public class OcrRuleTestController implements OcrRuleTestApi {
@ApiOperation("开始分类ocr") @ApiOperation("开始分类ocr")
@Override @Override
public void start(String id) { public List<OcrFileInfoTest> start(String id) {
startOcrTestHandler.startOcr(id); return startOcrTestHandler.startOcr(id);
} }
/** /**

@ -32,7 +32,7 @@ public class StartOcrTestHandler {
@TrackRetryListener("START_OCR_TEST") @TrackRetryListener("START_OCR_TEST")
public void startOcr(String patientId) { public List<OcrFileInfoTest> startOcr(String patientId) {
boolean isSpecialFile = false; boolean isSpecialFile = false;
OcrSpecialResult lastSpecialResul = null; OcrSpecialResult lastSpecialResul = null;
@ -86,5 +86,6 @@ public class StartOcrTestHandler {
//更新数据库表 //更新数据库表
iOcrFileInfoTestDao.updateBatchById(fileInfoTestList,1000); iOcrFileInfoTestDao.updateBatchById(fileInfoTestList,1000);
return fileInfoTestList;
} }
} }

@ -56,21 +56,25 @@ public class OcrRuleTestServiceImpl implements IOcrRuleTestService {
.stream().sorted(Comparator.comparing(OcrRuleJson::getSort)) .stream().sorted(Comparator.comparing(OcrRuleJson::getSort))
.collect(Collectors.toList()); .collect(Collectors.toList());
for (OcrRuleJson ruleJson : ocrRuleList) { for (OcrRuleJson ruleJson : ocrRuleList) {
//匹配二级的关键词列表
assortId = ruleJson.getAssortId(); assortId = ruleJson.getAssortId();
keyWordList = ruleJson.getKeyWord().split("#"); List<OcrRuleSecondJson> ocrRuleSecondJsonList = ruleJson.getKeyWordList();
score = ruleJson.getMatchRatio(); for (OcrRuleSecondJson ocrRuleSecondJson:ocrRuleSecondJsonList) {
for (int j = 0; j < keyWordList.length; j++) { keyWordList = ocrRuleSecondJson.getKeyWord().split("#");
keyWord = keyWordList[i]; score = ocrRuleSecondJson.getMatchRatio();
if (ocrText.contains(keyWord)) { for (int j = 0; j < keyWordList.length; j++) {
rate = keyWord.length() / (double) ocrText.length() * 100; keyWord = keyWordList[i];
//判断是否命中 if (ocrText.contains(keyWord)) {
if (rate >= score) { rate = keyWord.length() / (double) ocrText.length() * 100;
OcrRuleResult ocrRuleResult = new OcrRuleResult(); //判断是否命中
ocrRuleResult.setRuleId(ocrRuleTest.getId()); if (rate >= score) {
ocrRuleResult.setAssortId(assortId); OcrRuleResult ocrRuleResult = new OcrRuleResult();
ocrRuleResult.setHitKey(keyWord); ocrRuleResult.setRuleId(ocrRuleTest.getId());
ocrRuleResult.setRate(rate); ocrRuleResult.setAssortId(assortId);
return ocrRuleResult; ocrRuleResult.setHitKey(keyWord);
ocrRuleResult.setRate(rate);
return ocrRuleResult;
}
} }
} }
} }

Loading…
Cancel
Save