提交修改

This commit is contained in:
quyixiao 2025-03-23 17:18:26 +08:00
parent cc66a54bdc
commit f23833fa2c
5 changed files with 229 additions and 1 deletions

View File

@ -12,7 +12,6 @@ import java.util.List;
* https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1740583045120#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E6%95%99%E8%82%B2%E5%9C%BA%E6%99%AFOCR&api=rest%2F2.0%2Focr%2Fv1%2Fdoc_analysis&method=post
*
*试卷分析与识别
*
*/
@NoArgsConstructor
@Data

View File

@ -0,0 +1,90 @@
package com.heyu.api.controller.educational;
import com.heyu.api.baidu.handle.educational.BDocAnalysisHandle;
import com.heyu.api.baidu.request.educational.BDocAnalysisRequest;
import com.heyu.api.baidu.response.educational.BDocAnalysisResp;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.doc.DocAnalysisResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
* https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1742719522919#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E6%95%99%E8%82%B2%E5%9C%BA%E6%99%AFOCR&api=rest%2F2.0%2Focr%2Fv1%2Fdoc_analysis&method=post
*
* 试卷分析与识别
*
*
* 接口描述
* 可对文档版面进行分析输出图标题文本的位置并输出分版块内容的OCR识别结果支持中英两种语言手写印刷体混排多种场景支持公式识别手写竖式识别
*
*/
@Slf4j
@RestController
@RequestMapping("/doc")
@NotIntercept
public class DocAnalysisController {
@Autowired
private BDocAnalysisHandle bDocAnalysisHandle;
@RequestMapping("/analysis")
@CacheResult
public R analysis(BDocAnalysisRequest request) {
DocAnalysisResp resp = new DocAnalysisResp();
ApiR<BDocAnalysisResp> bR = bDocAnalysisHandle.handle(request);
if (bR.isSuccess()) {
BDocAnalysisResp bDocAnalysisResp = bR.getData();
resp.setResultsNum(bDocAnalysisResp.getResultsNum());
resp.setLayoutsNum(bDocAnalysisResp.getLayoutsNum());
resp.setImgDirection(bDocAnalysisResp.getImgDirection());
List<DocAnalysisResp.ResultsDTO> resultsDTOList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(bDocAnalysisResp.getResults())) {
for (BDocAnalysisResp.ResultsDTO result : bDocAnalysisResp.getResults()) {
DocAnalysisResp.ResultsDTO resultsDTO = new DocAnalysisResp.ResultsDTO();
resultsDTO.setWordsType(result.getWordsType());
resultsDTO.setWords(result.getWordsType());
resultsDTOList.add(resultsDTO);
}
}
resp.setResults(resultsDTOList);
if (CollectionUtils.isNotEmpty(resp.getFormWords())) {
List<String> formWords = new ArrayList<>();
for (String formWord : resp.getFormWords()) {
formWords.add(formWord);
}
resp.setFormWords(formWords);
}
if (CollectionUtils.isNotEmpty(resp.getWords())) {
List<String> words = new ArrayList<>();
for (String word : resp.getWords()) {
words.add(word);
}
resp.setWords(words);
}
}
return R.error();
}
}

View File

@ -0,0 +1,77 @@
package com.heyu.api.controller.educational;
import com.heyu.api.baidu.handle.educational.BPenHandle;
import com.heyu.api.baidu.request.educational.BPenRequest;
import com.heyu.api.baidu.response.educational.BPenResp;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.doc.PenResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
*
*
* https://console.bce.baidu.com/support/?_=1740575657628&timestamp=1742720986912#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E6%95%99%E8%82%B2%E5%9C%BA%E6%99%AFOCR&api=rest%2F2.0%2Focr%2Fv1%2Fpen&method=post
*
*
* 词典笔文字识别
*
*
*
接口描述
面向词典笔应用场景是词典笔的基本功能之一主要用于扫描文字并识别为字词查询和翻译提供文本信息支撑支持中英文识别印刷手写混排识别满足多种复杂背景下的文字扫描识别
*/
@Slf4j
@RestController
@RequestMapping("/doc")
@NotIntercept
public class PenController extends BaseController {
@Autowired
private BPenHandle bPenHandle;
@RequestMapping("/pen")
@CacheResult
public R pen(BPenRequest request) {
List<PenResp> respList = new ArrayList<>();
ApiR<BPenResp> bR = bPenHandle.handle(request);
if (bR.isSuccess()) {
BPenResp bPenResp = bR.getData();
for (BPenResp.WordsResultDTO wordsResultDTO : bPenResp.getWordsResult()) {
PenResp penResp = new PenResp();
penResp.setWords(wordsResultDTO.getWords());
PenResp.ProbabilityDTO probabilityDTO = new PenResp.ProbabilityDTO();
BPenResp.WordsResultDTO.ProbabilityDTO probability = wordsResultDTO.getProbability();
probabilityDTO.setAverage(probability.getAverage());
probabilityDTO.setVariance(probability.getVariance());
probabilityDTO.setMin(probability.getMin());
penResp.setProbability(probabilityDTO);
}
return R.ok().setData(respList);
}
return R.error(bR.getErrorMsg());
}
}

View File

@ -0,0 +1,38 @@
package com.heyu.api.resp.doc;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import java.util.List;
@Data
public class DocAnalysisResp extends BaseResp {
private Integer resultsNum; // 识别结果数表示results的元素个数
private Integer imgDirection; // detect_direction=true 时返回检测到的图像朝向0 正向 1逆时针旋转90度2逆时针旋转180度3逆时针旋转270度
private Integer layoutsNum; // 版面分析结果数表示layout的元素个数
private List<ResultsDTO> results; // 识别结果数组
private List<String> formWords; // 识别结果中的公式数组包括公式位置和公式内容recg_formula=true时返回
private List<String> words; // 将普通文字和公式融合后的识别结果数组recg_formula=true时返回
@Data
public static class ResultsDTO {
/**
* 文字类型
* 默认印刷文字识别
* = handwring_only手写文字识别
* = handprint_mix 手写印刷混排识别
*/
private String wordsType;
/***
* 文字
*/
private String words;
}
}

View File

@ -0,0 +1,24 @@
package com.heyu.api.resp.doc;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
public class PenResp extends BaseResp {
private ProbabilityDTO probability;
// 识别结果字符串
private String words;
@NoArgsConstructor
@Data
public static class ProbabilityDTO {
// 识别结果中每一行的置信度值包含average行置信度平均值variance行置信度方差min行置信度最小值 probability=true 时返回该字段
private Double average;
private Double min;
private Double variance;
}
}