接口返回文件信息参数、二级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.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<OcrFileInfoTest> start (@PathVariable(value = "id") String id);
/**
*

@ -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<OcrRuleSecondJson> keyWordList ;
@ApiModelProperty(value = "排序")
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.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<OcrFileInfoTest> start(String id) {
return startOcrTestHandler.startOcr(id);
}
/**

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

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

Loading…
Cancel
Save