diff --git a/physical-module-system/physical-system-biz/pom.xml b/physical-module-system/physical-system-biz/pom.xml index bb8d956..1798e3c 100644 --- a/physical-module-system/physical-system-biz/pom.xml +++ b/physical-module-system/physical-system-biz/pom.xml @@ -77,11 +77,16 @@ jsoup 1.18.1 - + + org.apache.pdfbox + pdfbox + 2.0.24 + + + net.sourceforge.tess4j + tess4j + 5.4.0 + diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java index 0a06732..5f995f4 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java @@ -8,7 +8,10 @@ import io.swagger.v3.oas.annotations.tags.Tag; 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.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; @@ -19,6 +22,8 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.database.constant.ExperimentFileType; import org.jeecg.modules.database.entity.ExperimentFile; import org.jeecg.modules.database.service.IExperimentFileService; +import org.jeecg.modules.oss.entity.OssFile; +import org.jeecg.modules.oss.service.IOssFileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; @@ -26,6 +31,9 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.File; import java.util.*; /** @@ -46,6 +54,9 @@ public class ExperimentFileController extends JeecgController uploadAll(HttpServletRequest request) throws Exception { + Result 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> extractExperimentFile(MultipartFile file) throws Exception { + List> 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(); + 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); + + return allFileResult; + } + + + }