|
|
|
@ -68,6 +68,12 @@ public class StartSegmentHandler {
|
|
|
|
|
List<File> files = new ArrayList<>(fileInfoList.size());
|
|
|
|
|
List<FileDTO> 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<String> 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<OcrBasic> collect = ocrBasicList.stream().peek(p -> {
|
|
|
|
|