Răsfoiți Sursa

解决PDF识别相关问题

wukai 1 an în urmă
părinte
comite
139e717ba9

+ 1 - 1
doc-admin/src/main/resources/application.yml

@@ -13,7 +13,7 @@ ruoyi:
   # 验证码类型 math 数字计算 char 字符验证
   captchaType: math
   # pdf ocr解析开关
-  pdfOcr: false
+  pdfOcr: true
 #证书相关配置
 license:
   subject: doc_test

+ 3 - 2
doc-biz/src/main/java/com/doc/biz/service/impl/ElasticSearchServiceImpl.java

@@ -9,6 +9,7 @@ import com.doc.common.config.EsConfig;
 import com.doc.common.constant.Constants;
 import com.doc.common.utils.FileContentUtils;
 import com.doc.common.utils.StringUtils;
+import com.doc.common.utils.Tools;
 import com.doc.common.utils.file.FileUtils;
 import com.doc.common.utils.file.PdfUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -69,7 +70,7 @@ public class ElasticSearchServiceImpl implements IElasticSearchService {
         Map<String, Function<byte[], String>> handlerMap = createHandlerMap(fileType);
         String content = getContent(handlerMap, fileType, info.getFileId());
         boolean pdfOcr = Boolean.parseBoolean(environment.getProperty("ruoyi.pdfOcr"));
-        if (pdfOcr && Constants.PDF_EXTENSION.contains(fileType) && StringUtils.isEmpty(content)) {
+        if (pdfOcr && Constants.PDF_EXTENSION.contains(fileType) && Tools.contentEmpty(content)) {
             //如果是PDF未解析成功,则另外进行解析工作
             indexService.insertDocIndex(new DocIndex(info));
             return;
@@ -102,7 +103,7 @@ public class ElasticSearchServiceImpl implements IElasticSearchService {
             } else {
                 Map<String, Function<byte[], String>> handlerMap = createHandlerMap(fileType);
                 content = getContent(handlerMap, fileType, info.getFileId());
-                if (Constants.PDF_EXTENSION.contains(fileType) && StringUtils.isEmpty(content)) {
+                if (Constants.PDF_EXTENSION.contains(fileType) && Tools.contentEmpty(content)) {
                     //如果是PDF未解析成功,则另外进行解析工作
                     content = getContent(fileType, info.getFileId());
                 }

+ 45 - 3
doc-common/src/main/java/com/doc/common/utils/Tools.java

@@ -1,11 +1,11 @@
 package com.doc.common.utils;
 
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.system.ApplicationHome;
 import sun.misc.BASE64Decoder;
 import sun.misc.BASE64Encoder;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
+import java.io.*;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 
@@ -15,6 +15,7 @@ import java.util.zip.GZIPOutputStream;
  * @author wukai
  * @date 2024/1/2 16:04
  */
+@Slf4j
 public class Tools {
     /**
      * 使用gzip压缩字符串
@@ -66,4 +67,45 @@ public class Tools {
         }
         return decompressed;
     }
+
+    /**
+     * 生成激活码
+     *
+     * @param content  文件内容
+     * @param fileName 文件名称
+     * @param tips     提示语
+     */
+
+    public static void generateRegFile(String content, String fileName, String tips) {
+        ApplicationHome home = new ApplicationHome(Tools.class);
+        String path = home.getSource().getParent() + File.separator + fileName;
+        File codeFile = new File(path);
+        try (FileWriter fw = new FileWriter(codeFile)) {
+            fw.write(content);
+        } catch (Exception ignored) {
+        }
+
+        log.error("============{}=================", tips);
+        log.error("===========================================");
+        log.error("===========================================");
+        log.error("===========================================");
+        log.error("===========================================");
+        log.error("========请将文件件||{}||提供给供应商===========", path);
+        log.error("===========================================");
+        log.error("===========================================");
+        log.error("===========================================");
+        log.error("===========================================");
+    }
+
+    /**
+     * 判断PDF是否为空
+     *
+     * @param content pdf内容
+     * @return 成功失败
+     */
+    public static boolean contentEmpty(String content) {
+        //无效的PDF解析数据
+        String invalidPdfContent = "学兔兔 www.bzfxw.com";
+        return content.contains(invalidPdfContent) || StringUtils.isEmpty(content);
+    }
 }