bugfix:
1. 移到common路径下
This commit is contained in:
@@ -99,7 +99,6 @@ public class ShiroConfig {
|
||||
filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token
|
||||
filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
|
||||
filterChainDefinitionMap.put("/crawler/**", "anon");//pdf预览
|
||||
filterChainDefinitionMap.put("/database/experimentFile/uploadAll", "anon");//pdf批量上传接口
|
||||
|
||||
//filterChainDefinitionMap.put("/sys/common/view/**", "anon");//图片预览不限制token
|
||||
//filterChainDefinitionMap.put("/sys/common/download/**", "anon");//文件下载不限制token
|
||||
|
||||
@@ -245,84 +245,4 @@ public class ExperimentFileController extends JeecgController<ExperimentFile, IE
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 试验文件上传识别入口
|
||||
*
|
||||
* @param request 文件上传对象
|
||||
* @return 上面结果
|
||||
*/
|
||||
@PostMapping(value = "/uploadAll")
|
||||
public Result<?> uploadAll(HttpServletRequest request) throws Exception {
|
||||
Result<OssFile> result = new Result<>();
|
||||
String savePath = "123";
|
||||
String bizPath = "";
|
||||
|
||||
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
||||
// 获取上传文件对象
|
||||
MultipartFile file = multipartRequest.getFile("file");
|
||||
|
||||
extractExperimentFile(file);
|
||||
|
||||
// 获取是否包含必填的文件类型
|
||||
//savePath = CommonUtils.upload(file, bizPath, uploadType);
|
||||
|
||||
OssFile ossFile = new OssFile();
|
||||
ossFile.setFileName(file.getOriginalFilename());
|
||||
ossFile.setUrl("测试路径.txt");
|
||||
// ossFile.setUrl(savePath);
|
||||
// ossFileService.save(ossFile);
|
||||
result.setResult(ossFile);
|
||||
|
||||
|
||||
|
||||
|
||||
if (oConvertUtils.isNotEmpty(savePath)) {
|
||||
result.setMessage(savePath);
|
||||
result.setSuccess(true);
|
||||
} else {
|
||||
result.setMessage("上传失败!");
|
||||
result.setSuccess(false);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<Map<String, String>> extractExperimentFile(MultipartFile file) throws Exception {
|
||||
List<Map<String, String>> allFileResult = new ArrayList<>();
|
||||
PDDocument document = PDDocument.load(file.getInputStream());
|
||||
PDFRenderer renderer = new PDFRenderer(document);
|
||||
Tesseract tesseract = new Tesseract();
|
||||
|
||||
// 设置Tesseract数据路径(tessdata文件夹路径)
|
||||
tesseract.setDatapath("/usr/share/tesseract-ocr/5/tessdata");
|
||||
tesseract.setLanguage("chi_sim");
|
||||
|
||||
StringBuilder fullText = new StringBuilder();
|
||||
|
||||
Map map = new HashMap<String, String>();
|
||||
for (int i = 0; i < document.getNumberOfPages(); i++) {
|
||||
BufferedImage image = renderer.renderImageWithDPI(i, 300); // 高分辨率
|
||||
File tempImage = new File("page_" + i + ".png");
|
||||
ImageIO.write(image, "png", tempImage);
|
||||
|
||||
String result = tesseract.doOCR(tempImage);
|
||||
fullText.append(result).append("\n");
|
||||
}
|
||||
|
||||
if (fullText.length() > 0) {
|
||||
if (fullText.toString().contains("辐照试验委托书")){
|
||||
map.put("fzsywts", "1");
|
||||
allFileResult.add(map);
|
||||
}
|
||||
}
|
||||
|
||||
document.close();
|
||||
System.out.println("解析结果: " + allFileResult);
|
||||
System.out.println("所有文本: " + fullText);
|
||||
|
||||
return allFileResult;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,10 @@ package org.jeecg.modules.system.controller;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.sourceforge.tess4j.Tesseract;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.rendering.PDFRenderer;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.jeecg.common.constant.SymbolConstant;
|
||||
@@ -22,10 +25,14 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.servlet.HandlerMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.*;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -197,43 +204,82 @@ public class CommonController {
|
||||
return result;
|
||||
}
|
||||
|
||||
// @PostMapping(value = "/upload2")
|
||||
// public Result<?> upload2(HttpServletRequest request, HttpServletResponse response) {
|
||||
// Result<?> result = new Result<>();
|
||||
// try {
|
||||
// String ctxPath = uploadpath;
|
||||
// String fileName = null;
|
||||
// String bizPath = "files";
|
||||
// String tempBizPath = request.getParameter("biz");
|
||||
// if(oConvertUtils.isNotEmpty(tempBizPath)){
|
||||
// bizPath = tempBizPath;
|
||||
// }
|
||||
// String nowday = new SimpleDateFormat("yyyyMMdd").format(new Date());
|
||||
// File file = new File(ctxPath + File.separator + bizPath + File.separator + nowday);
|
||||
// if (!file.exists()) {
|
||||
// file.mkdirs();// 创建文件根目录
|
||||
// }
|
||||
// MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
||||
// MultipartFile mf = multipartRequest.getFile("file");// 获取上传文件对象
|
||||
// String orgName = mf.getOriginalFilename();// 获取文件名
|
||||
// fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName
|
||||
// .indexOf("."));
|
||||
// String savePath = file.getPath() + File.separator + fileName;
|
||||
// File savefile = new File(savePath);
|
||||
// FileCopyUtils.copy(mf.getBytes(), savefile);
|
||||
// String dbpath = bizPath + File.separator + nowday + File.separator + fileName;
|
||||
// if (dbpath.contains("\\")) {
|
||||
// dbpath = dbpath.replace("\\", "/");
|
||||
// }
|
||||
// result.setMessage(dbpath);
|
||||
// result.setSuccess(true);
|
||||
// } catch (IOException e) {
|
||||
// result.setSuccess(false);
|
||||
// result.setMessage(e.getMessage());
|
||||
// log.error(e.getMessage(), e);
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
/**
|
||||
* 试验文件上传识别入口
|
||||
*
|
||||
* @param request 文件上传对象
|
||||
* @return 上面结果
|
||||
*/
|
||||
@PostMapping(value = "/uploadAll")
|
||||
public Result<?> uploadAll(HttpServletRequest request) throws Exception {
|
||||
Result<OssFile> result = new Result<>();
|
||||
String savePath = "123";
|
||||
String bizPath = "";
|
||||
|
||||
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
||||
// 获取上传文件对象
|
||||
MultipartFile file = multipartRequest.getFile("file");
|
||||
|
||||
extractExperimentFile(file);
|
||||
|
||||
// 获取是否包含必填的文件类型
|
||||
//savePath = CommonUtils.upload(file, bizPath, uploadType);
|
||||
|
||||
OssFile ossFile = new OssFile();
|
||||
ossFile.setFileName(file.getOriginalFilename());
|
||||
ossFile.setUrl("测试路径.txt");
|
||||
// ossFile.setUrl(savePath);
|
||||
// ossFileService.save(ossFile);
|
||||
result.setResult(ossFile);
|
||||
|
||||
|
||||
|
||||
|
||||
if (oConvertUtils.isNotEmpty(savePath)) {
|
||||
result.setMessage(savePath);
|
||||
result.setSuccess(true);
|
||||
} else {
|
||||
result.setMessage("上传失败!");
|
||||
result.setSuccess(false);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<Map<String, String>> extractExperimentFile(MultipartFile file) throws Exception {
|
||||
List<Map<String, String>> allFileResult = new ArrayList<>();
|
||||
PDDocument document = PDDocument.load(file.getInputStream());
|
||||
PDFRenderer renderer = new PDFRenderer(document);
|
||||
Tesseract tesseract = new Tesseract();
|
||||
|
||||
// 设置Tesseract数据路径(tessdata文件夹路径)
|
||||
tesseract.setDatapath("/usr/share/tesseract-ocr/5/tessdata");
|
||||
tesseract.setLanguage("chi_sim");
|
||||
|
||||
StringBuilder fullText = new StringBuilder();
|
||||
|
||||
Map map = new HashMap<String, String>();
|
||||
for (int i = 0; i < document.getNumberOfPages(); i++) {
|
||||
BufferedImage image = renderer.renderImageWithDPI(i, 300); // 高分辨率
|
||||
File tempImage = new File("page_" + i + ".png");
|
||||
ImageIO.write(image, "png", tempImage);
|
||||
|
||||
String result = tesseract.doOCR(tempImage);
|
||||
fullText.append(result).append("\n");
|
||||
}
|
||||
|
||||
if (fullText.length() > 0) {
|
||||
if (fullText.toString().contains("辐照试验委托书")){
|
||||
map.put("fzsywts", "1");
|
||||
allFileResult.add(map);
|
||||
}
|
||||
}
|
||||
|
||||
document.close();
|
||||
System.out.println("解析结果: " + allFileResult);
|
||||
System.out.println("所有文本: " + fullText);
|
||||
|
||||
return allFileResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 本地文件上传
|
||||
|
||||
Reference in New Issue
Block a user