Просмотр исходного кода

联调bug修改,增加ocr识别接口

xiaof 2 лет назад
Родитель
Сommit
531a75a9c3

+ 14 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperLibrary.java

@@ -52,6 +52,12 @@ public class PaperLibrary extends BaseEntity implements Serializable {
     @TableField("sequence")
     private Integer sequence;
 
+    /**
+     * OCR识别结果
+     */
+    @TableField("words_result")
+    private String wordsResult;
+
 
     public Long getSchoolId() {
         return schoolId;
@@ -100,4 +106,12 @@ public class PaperLibrary extends BaseEntity implements Serializable {
     public void setSequence(Integer sequence) {
         this.sequence = sequence;
     }
+
+    public String getWordsResult() {
+        return wordsResult;
+    }
+
+    public void setWordsResult(String wordsResult) {
+        this.wordsResult = wordsResult;
+    }
 }

+ 5 - 17
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryCommonService.java

@@ -1,5 +1,6 @@
 package com.qmth.paper.library.business.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.qmth.paper.library.common.entity.BasicAttachment;
 import com.qmth.paper.library.common.entity.SysOrg;
 import com.qmth.paper.library.common.enums.TaskTypeEnum;
@@ -7,6 +8,8 @@ import com.qmth.paper.library.common.enums.UploadFileEnum;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.Map;
 
@@ -65,24 +68,9 @@ public interface PaperLibraryCommonService {
      */
     public Map<String, Object> saveTask(MultipartFile file, TaskTypeEnum taskTypeEnum);
 
-    /**
-     * 保存任务(导出)
-     *
-     * @param taskTypeEnum
-     * @return
-     */
-    public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum);
-
-    /**
-     * 保存任务附件(导出)
-     *
-     * @param fos
-     * @param oss
-     * @return
-     */
-    public String saveTaskAttachment(ByteArrayOutputStream fos, boolean oss) throws IOException;
-
     String saveLibraryFile(UploadFileEnum uploadFileEnum, MultipartFile... files);
 
     String preViewPath(String path, String uploadType, String type, Boolean isExpire);
+
+    File downloadFile(String rootPath, String path, String uploadType, String type) throws FileNotFoundException;
 }

+ 2 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryService.java

@@ -34,4 +34,6 @@ public interface PaperLibraryService extends IService<PaperLibrary> {
     int countScanCount(Long paperScanTaskId);
 
     IPage<TaskStudentResult> pageStudent(Long paperScanTaskId, String param, Integer pageNumber, Integer pageSize);
+
+    String ocr(Long paperLibraryId, Integer index, Integer x, Integer y, Integer width, Integer height);
 }

+ 49 - 64
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryCommonServiceImpl.java

@@ -24,6 +24,7 @@ import com.qmth.paper.library.common.util.RedisUtil;
 import com.qmth.paper.library.common.util.ResultUtil;
 import com.qmth.paper.library.common.util.ServletUtil;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -282,70 +283,6 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
         return map;
     }
 
-
-    @Override
-    @Transactional
-    public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum) {
-        Map<String, Object> map = null;
-        try {
-            map = new HashMap<>();
-            TBTask tbTask = tbTaskService.saveTaskCommon(null, taskTypeEnum, map, null);
-            tbTaskService.save(tbTask);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-            if (e instanceof ApiException) {
-                ResultUtil.error((ApiException) e, e.getMessage());
-            } else {
-                ResultUtil.error(e.getMessage());
-            }
-        }
-        return map;
-    }
-
-    /**
-     * 保存任务附件(导出)
-     *
-     * @param fos
-     * @param oss
-     * @return
-     */
-    @Override
-    public String saveTaskAttachment(ByteArrayOutputStream fos, boolean oss) throws IOException {
-        InputStream inputStream = null;
-        JSONObject jsonObject = null;
-        try {
-            inputStream = new ByteArrayInputStream(fos.toByteArray());
-            LocalDateTime nowTime = LocalDateTime.now();
-            StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-            }
-            stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
-            stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getDayOfMonth()))
-                    .add(File.separator).add(SystemConstant.getUuid()).add(".").add(SystemConstant.XLSX);
-            jsonObject = new JSONObject();
-            String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
-            if (oss) {//上传至oss
-                fileStoreUtil.ossUpload(dirName, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), UploadFileEnum.FILE.getFssType());
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-            } else {
-                fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), LocalCatalogEnum.LOCAL_FILE);
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-            }
-            jsonObject.put(SystemConstant.PATH, dirName);
-            jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        } finally {
-            if (Objects.nonNull(inputStream)) {
-                inputStream.close();
-            }
-        }
-        return Objects.nonNull(jsonObject) ? jsonObject.toJSONString() : null;
-    }
-
     @Override
     public String saveLibraryFile(UploadFileEnum uploadFileEnum, MultipartFile... files) {
         boolean oss = dictionaryConfig.sysDomain().isOss();
@@ -425,4 +362,52 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
         return pathUrl;
     }
 
+    @Override
+    public File downloadFile(String rootPath, String filePath, String uploadType, String type) {
+        UploadFileEnum uploadTypeEnum = Enum.valueOf(UploadFileEnum.class, uploadType);
+
+        File localFile = new File(rootPath, SystemConstant.getUuid() + subFileSuffix(filePath));
+        if (type.equals(SystemConstant.OSS)) {
+            try {
+                return fileStoreUtil.ossDownload(filePath, localFile.getPath(), uploadTypeEnum.getFssType());
+            } catch (Exception e) {
+                throw ExceptionResultEnum.ERROR.exception("从OSS上下载文件失败");
+            }
+        } else {
+            File file = new File(filePath);
+            if (!file.exists()) {
+                throw ExceptionResultEnum.ERROR.exception("本地文件不存在");
+            }
+            try {
+                if (!localFile.exists()) {
+                    localFile.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
+                    localFile.createNewFile();
+                }
+                IOUtils.copy(new FileInputStream(file), new FileOutputStream(localFile));
+                return file;
+            } catch (IOException e) {
+                throw ExceptionResultEnum.ERROR.exception("本地复制文件失败");
+            }
+        }
+    }
+
+    /**
+     * 截取文件名
+     *
+     * @param path 文件路径
+     */
+    public String subFileName(String path) {
+        path = path.replaceAll("\\\\", "/");
+        return path.substring(0, path.lastIndexOf("/") + 1);
+    }
+
+    /**
+     * 截取文件名后缀
+     *
+     * @param path 文件路径
+     */
+    public String subFileSuffix(String path) {
+        return path.substring(path.lastIndexOf("."));
+    }
+
 }

+ 66 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryServiceImpl.java

@@ -17,19 +17,27 @@ import com.qmth.paper.library.business.service.PaperLibraryCommonService;
 import com.qmth.paper.library.business.service.PaperLibraryService;
 import com.qmth.paper.library.business.service.PaperScanTaskDetailService;
 import com.qmth.paper.library.business.service.PaperScanTaskService;
+import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.lock.LockService;
 import com.qmth.paper.library.common.lock.LockType;
+import com.qmth.paper.library.common.util.ImageUtil;
+import com.qmth.paper.library.common.util.OcrUtil;
 import com.qmth.paper.library.common.util.ServletUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.json.JSONException;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.StringJoiner;
 
 /**
  * <p>
@@ -39,6 +47,9 @@ import java.util.List;
 @Service
 public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, PaperLibrary> implements PaperLibraryService {
 
+    @Resource
+    private DictionaryConfig dictionaryConfig;
+
     @Resource
     PaperScanTaskService paperScanTaskService;
 
@@ -48,6 +59,9 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
     @Resource
     PaperLibraryCommonService paperLibraryCommonService;
 
+    @Resource
+    OcrUtil ocrUtil;
+
     @Resource
     LockService lockService;
 
@@ -182,6 +196,58 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
         return this.baseMapper.pageStudent(new Page<>(pageNumber, pageSize), schoolId, paperScanTaskId, param);
     }
 
+    @Override
+    public String ocr(Long paperLibraryId, Integer index, Integer x, Integer y, Integer width, Integer height) {
+        QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(PaperLibrary::getId, paperLibraryId);
+        PaperLibrary paperLibrary = this.getOne(queryWrapper);
+        List<JSONObject> objectList = JSON.parseArray(paperLibrary.getPath(), JSONObject.class);
+        JSONObject jsonObject = objectList.get(index);
+
+
+        StringJoiner stringJoiner = new StringJoiner("");
+        stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+        LocalDateTime nowTime = LocalDateTime.now();
+        stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
+                .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
+                .add(String.format("%02d", nowTime.getDayOfMonth())).add(File.separator);
+        String rootPath = stringJoiner.toString();
+        File file;
+        try {
+            file = paperLibraryCommonService.downloadFile(rootPath, jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE));
+        } catch (FileNotFoundException e) {
+            throw ExceptionResultEnum.ERROR.exception("下载图片失败:" + e.getMessage());
+        }
+        File outFile = new File(rootPath, "sub" + file.getName());
+        File subFile = ImageUtil.subImg(file, x, y, width, height, outFile);
+        if (subFile == null) {
+            throw ExceptionResultEnum.ERROR.exception("识别区域图片生成失败");
+        }
+        try {
+            org.json.JSONObject callHandwriting = ocrUtil.callHandwriting(subFile.getPath());
+            String wordsResult = callHandwriting.getString(SystemConstant.OCR_WORDS_RESULT);
+            if (StringUtils.isNotBlank(wordsResult)) {
+                List<JSONObject> wordsResultList = JSON.parseArray(wordsResult, JSONObject.class);
+                if (wordsResultList.isEmpty()) {
+                    throw ExceptionResultEnum.ERROR.exception("未正确识别出内容");
+                } else if (wordsResultList.size() != 1) {
+                    throw ExceptionResultEnum.ERROR.exception("检测出多条数据,请重新设置识别区");
+                } else {
+                    JSONObject object = wordsResultList.get(0);
+                    if (object.containsKey(SystemConstant.OCR_WORDS)) {
+                        return object.getString(SystemConstant.OCR_WORDS);
+                    }
+                }
+            }
+        } catch (JSONException e) {
+            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
+        } finally {
+            file.deleteOnExit();
+            subFile.deleteOnExit();
+        }
+        return null;
+    }
+
     private List<PaperLibrary> createBindData(Long userId, Long schoolId) {
         try {
             lockService.waitlock(LockType.BIND_PAPER_TASK, schoolId);

+ 5 - 14
paper-library-common/src/main/java/com/qmth/paper/library/common/contant/SystemConstant.java

@@ -42,14 +42,12 @@ public class SystemConstant {
     public static final String SYS_PDF_SIZE_LIST = "sys.pdf.size.list";
     public static final String PDF_SIZE_LIST = "pdf.size.list";
     public static final String CHARSET_NAME = "UTF-8";
-    //    public static final String CHARSET_GB2312 = "gb2312";
     public static final String CHARSET_GBK = "gbk";
     public static final Charset CHARSET = Charset.forName(CHARSET_NAME);
     public static final String MD5 = "MD5";
     public static final String SUCCESS = "success";
     public static final String EXTEND_COLUMN = "extendColumn";
-    public static final String PDF_TEMP = "pdf-temp";
-    public static final String FILE_TEMP = "file-temp";
+    public static final String IMAGE_TEMP = "image-temp";
     public static final String SESSION = "session:";
     public static final String TASK = "task";
     public static final String TB_TASK_ID = "tbTaskId";
@@ -61,6 +59,8 @@ public class SystemConstant {
     public static final String ERROR = "/error";
     public static final String DEFAULT_PASSWORD = "MTIzNDU2";
     public static final String UPDATE_TIME = "updateTime";
+    public static final String OCR_WORDS_RESULT = "words_result";
+    public static final String OCR_WORDS = "words";
     public static final String PATH = "path";
     public static final String PDF_PATH = "pdfPath";
     public static final String TYPE = "type";
@@ -70,28 +70,21 @@ public class SystemConstant {
     public static final String UPLOAD_TYPE = "uploadType";
     public static final String ID = "id";
     public static final String FILE = "file";
-    public static final String HTML_PREFIX = ".html";
-    public static final String PDF_PREFIX = ".pdf";
-    public static final String FTL_PREFIX = ".ftl";
     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
     public static final int PAGE_SIZE_MIN = 10;
     public static final int PAGE_SIZE_MAX = 500;
     public static final int PAGE_NUMBER_MIN = 1;
     public static final int IN_SIZE_MAX = 1000;
-    public static final String MANUAL = "manual";
     public static final String COMMA = ",";
-    public static final String PARENT_ORG = "教务处";
     public static final String ADMIN_CODE = "admin";
     public static final String AUTH = "auth";//命题老师id
     //    public static final int MAX_RETRY_CREATE_PDF_COUNT = 5;
     //英文字母、数字、中文括号、英文括号、下划线(_)、减号(-)、中文横线(—)
     public static final String SYS_USER = "sysUser";
     public static final List<Long> MENU_MANAGE = Arrays.asList(507L, 508L, 530L, 531L, 675L, 676L);
-    public static final float PAPER_DEVIATION = 2;
     public static final String ORG_SPLIT = "/";
     public static final String EXCEL_PROTECT_KEY = "Qmth87863577";
     public static final String ZIP_ENCRYPT_PWD = "qmthzip";
-    //    public static final int MAX_RETRY_CREATE_PDF_COUNT = 5;
     //英文字母、数字、中文括号、英文括号、下划线(_)、减号(-)、中文横线(—)
     public static final String REGULAR_EXPRESSION_OF_CODE = "[a-zA-Z0-9](\\w+)?-?(\\w+)?—?(\\w+)?(\\((\\w+)?-?(\\w+)?—?(\\w+)?\\))?(\\((\\w+)?-?(\\w+)?—?(\\w+)?\\))?(\\w+)?";
     public static final String REGULAR_EXPRESSION_OF_PHONE = "((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8}";
@@ -473,10 +466,8 @@ public class SystemConstant {
     public static String getLocalFilePath(String hostUrl, String filePath) {
         Optional.ofNullable(hostUrl).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置hostUrl"));
         String[] hostArray = hostUrl.split(":");
-        if (hostArray.length == 2 && filePath.contains(SystemConstant.FILE_TEMP)) {
-            filePath = filePath.substring(filePath.indexOf(SystemConstant.FILE_TEMP), filePath.length());
-        } else if (hostArray.length == 2 && filePath.contains(SystemConstant.PDF_TEMP)) {
-            filePath = filePath.substring(filePath.indexOf(SystemConstant.PDF_TEMP), filePath.length());
+        if (hostArray.length == 2 && filePath.contains(SystemConstant.IMAGE_TEMP)) {
+            filePath = filePath.substring(filePath.indexOf(SystemConstant.IMAGE_TEMP), filePath.length());
         }
         return filePath;
     }

+ 71 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/util/ImageUtil.java

@@ -0,0 +1,71 @@
+package com.qmth.paper.library.common.util;
+
+
+import org.json.JSONObject;
+
+import javax.imageio.ImageIO;
+import javax.imageio.ImageReadParam;
+import javax.imageio.ImageReader;
+import javax.imageio.stream.ImageInputStream;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+
+/**
+ * 图片工具类
+ */
+public class ImageUtil {
+
+    /**
+     * 裁剪图片
+     *
+     * @param sourceFile 源文件
+     * @param x          x起点
+     * @param y          y起点
+     * @param width      宽度
+     * @param height     调试
+     * @param outFile    输出文件
+     */
+    public static File subImg(File sourceFile, int x, int y, int width, int height, File outFile) {//图片路径,截取位置坐标,输出新突破路径
+        try {
+            if (outFile.exists()) {
+                outFile.delete();
+            }
+            //图片输入流
+            ImageInputStream iis = ImageIO.createImageInputStream(sourceFile);
+            //图片读取器
+            Iterator<ImageReader> it = ImageIO.getImageReaders(iis);
+
+            if (it.hasNext()) {
+                ImageReader r = it.next();
+                //设置输入流
+                r.setInput(iis, true);
+                //读取参数
+                ImageReadParam param = r.getDefaultReadParam();
+                //创建要截取的矩形范围
+                Rectangle rect = new Rectangle(x, y, width, height);
+                //设置截取范围参数
+                param.setSourceRegion(rect);
+                //读取截图数据
+                BufferedImage bi = r.read(0, param);
+                // 保存图片
+                ImageIO.write(bi, "jpg", outFile);
+            }
+            return outFile;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static void main(String[] args) throws IOException {
+        File file = subImg(new File("D://1.png"), 50, 20, 200, 70, new File("D://3.png"));
+        OcrUtil ocrUtil = new OcrUtil();
+        JSONObject jsonObject = ocrUtil.callHandwriting(file.getPath());
+        System.out.println(jsonObject.toString());
+    }
+
+
+}

+ 14 - 4
paper-library/src/main/java/com/qmth/paper/library/api/PaperLibraryController.java

@@ -10,11 +10,9 @@ import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import io.swagger.annotations.*;
+import org.json.JSONObject;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.constraints.Max;
@@ -104,4 +102,16 @@ public class PaperLibraryController {
     public Result listByStudentCode(@ApiParam(value = "学号") @RequestParam String studentCode) {
         return ResultUtil.ok(paperLibraryService.listByStudentCode(studentCode));
     }
+
+    @ApiOperation(value = "OCR识别")
+    @PostMapping("/ocr")
+    @ApiResponses({@ApiResponse(code = 200, message = "识别成功", response = Result.class)})
+    public Result ocr(@ApiParam(value = "图片id") @RequestParam Long paperLibraryId,
+                      @ApiParam(value = "图片正反面") @RequestParam Integer index,
+                      @ApiParam(value = "x") @RequestParam Integer x,
+                      @ApiParam(value = "y") @RequestParam Integer y,
+                      @ApiParam(value = "width") @RequestParam Integer width,
+                      @ApiParam(value = "height") @RequestParam Integer height){
+        return ResultUtil.ok(paperLibraryService.ocr(paperLibraryId, index, x, y, width, height));
+    }
 }

+ 4 - 12
paper-library/src/main/java/com/qmth/paper/library/api/SysController.java

@@ -6,9 +6,7 @@ import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.paper.library.business.bean.params.LoginParam;
-import com.qmth.paper.library.business.bean.result.DictionaryResult;
 import com.qmth.paper.library.business.bean.result.EditResult;
-import com.qmth.paper.library.business.enums.DictionaryEnum;
 import com.qmth.paper.library.business.enums.LoginTypeEnum;
 import com.qmth.paper.library.business.service.PaperLibraryCommonService;
 import com.qmth.paper.library.common.bean.auth.AuthBean;
@@ -16,7 +14,10 @@ import com.qmth.paper.library.common.bean.result.LoginResult;
 import com.qmth.paper.library.common.bean.result.UserLoginCheckResult;
 import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.*;
+import com.qmth.paper.library.common.entity.BasicAttachment;
+import com.qmth.paper.library.common.entity.BasicSchool;
+import com.qmth.paper.library.common.entity.SysRole;
+import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.enums.*;
 import com.qmth.paper.library.common.service.*;
 import com.qmth.paper.library.common.util.Result;
@@ -62,9 +63,6 @@ public class SysController {
     @Resource
     PaperLibraryCommonService paperLibraryCommonService;
 
-    @Resource
-    TBTaskService tbTaskService;
-
     @Resource
     BasicAttachmentService basicAttachmentService;
 
@@ -74,12 +72,6 @@ public class SysController {
     @Resource
     LibraryCommonService libraryCommonService;
 
-    @Resource
-    BasicStudentService basicStudentService;
-
-    @Resource
-    BasicSemesterService basicSemesterService;
-
     @Resource
     AuthInfoService authInfoService;
 

+ 3 - 1
sql/paper-library-1.0.0.sql

@@ -231,6 +231,7 @@ CREATE TABLE `paper_library`  (
   `paper_scan_task_detail_id` bigint(20) NULL DEFAULT NULL COMMENT '扫描任务详情表id',
   `user_id` bigint(20) NULL DEFAULT NULL COMMENT '数据检验员id',
   `sequence` int(11) NULL DEFAULT NULL COMMENT '图片序号',
+  `words_result` MEDIUMTEXT NULL DEFAULT NULL COMMENT 'OCR识别结果',
   `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
   `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
   `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
@@ -380,7 +381,7 @@ INSERT INTO `sys_privilege` VALUES (18, '删除接口', '/api/admin/paper/archiv
 INSERT INTO `sys_privilege` VALUES (19, '数据检查', 'library', 'MENU', 1, 4, NULL, NULL, 1, 0, 1);
 INSERT INTO `sys_privilege` VALUES (20, '数据检查', 'LibraryManage', 'MENU', 19, 1, NULL, NULL, 1, 0, 1);
 INSERT INTO `sys_privilege` VALUES (21, '列表', 'List', 'LIST', 20, 1, 'AUTH', '23,24,25,26,29', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (22, '开始处理', 'Deal', 'BUTTON', 20, 2, 'AUTH', '27,28,34', 1, 0, 1);
+INSERT INTO `sys_privilege` VALUES (22, '开始处理', 'Deal', 'BUTTON', 20, 2, 'AUTH', '27,28,34,35', 1, 0, 1);
 INSERT INTO `sys_privilege` VALUES (23, '未处理接口', '/api/admin/paper/library/page_unbind', 'URL', 20, 1, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` VALUES (24, '未处理数量接口', '/api/admin/paper/library/count_unbind', 'URL', 20, 2, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` VALUES (25, '已处理接口', '/api/admin/paper/library/page_bind', 'URL', 20, 3, 'AUTH', NULL, 1, 1, 1);
@@ -393,6 +394,7 @@ INSERT INTO `sys_privilege` VALUES (31, '查询条件', 'Condition', 'CONDITION'
 INSERT INTO `sys_privilege` VALUES (32, '查询', 'Select', 'BUTTON', 9, 1, 'AUTH', '15', 1, 0, 1);
 INSERT INTO `sys_privilege` VALUES (33, '查询', 'Select', 'BUTTON', 20, 1, 'AUTH', '23,24,25,26', 1, 0, 1);
 INSERT INTO `sys_privilege` VALUES (34, '根据扫描任务ID查询学生', '/api/admin/paper/library/page_student', 'URL', 20, 7, 'AUTH', NULL, 1, 1, 1);
+INSERT INTO `sys_privilege` VALUES (35, 'ocr识别', '/api/admin/paper/library/ocr', 'URL', 20, 8, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` VALUES (50, '查询条件-学期', '/api/admin/common/semester/query', 'URL', 149, 8, 'SYS', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` VALUES (51, '查询条件-档案', '/api/admin/common/archives/query', 'URL', 149, 8, 'SYS', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` VALUES (52, '查询条件-档案管理部门', '/api/admin/common/manager_org/query', 'URL', 149, 10, 'SYS', NULL, 1, 1, 1);