|
|
@@ -1,10 +1,12 @@
|
|
|
package com.doc.biz.service.impl;
|
|
|
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
import com.doc.biz.service.IMongoService;
|
|
|
import com.doc.biz.service.IOcrService;
|
|
|
import com.doc.biz.vo.DocumentVO;
|
|
|
import com.doc.system.service.ISysConfigService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
import org.springframework.context.ConfigurableApplicationContext;
|
|
|
import org.springframework.data.DataVerify;
|
|
|
@@ -17,6 +19,7 @@ import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.nio.file.Files;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* ElasticSearch 索引接口
|
|
|
@@ -25,6 +28,7 @@ import java.util.HashMap;
|
|
|
* @date 2023-08-15
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class OcrServiceImpl implements IOcrService {
|
|
|
@Resource
|
|
|
private ISysConfigService configService;
|
|
|
@@ -38,9 +42,9 @@ public class OcrServiceImpl implements IOcrService {
|
|
|
* @return 识别结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public String recognition(String fileId) throws Exception {
|
|
|
+ public Map<String, Object> recognition(String fileId) throws Exception {
|
|
|
DocumentVO vo = mongoService.downloadFile(fileId);
|
|
|
- File upFile = File.createTempFile(vo.getFileName(), vo.getSuffix() + ".");
|
|
|
+ File upFile = File.createTempFile(vo.getFileName() + System.currentTimeMillis(), "." + vo.getSuffix());
|
|
|
Files.write(upFile.toPath(), vo.getData());
|
|
|
return callPythonOcrApi(upFile);
|
|
|
}
|
|
|
@@ -52,11 +56,11 @@ public class OcrServiceImpl implements IOcrService {
|
|
|
* @return 识别结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public String recognition(MultipartFile file) throws Exception {
|
|
|
+ public Map<String, Object> recognition(MultipartFile file) throws Exception {
|
|
|
//选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。
|
|
|
String originalFilename = file.getOriginalFilename();
|
|
|
String[] filename = originalFilename.split("\\.");
|
|
|
- File upFile = File.createTempFile(filename[0], filename[1] + ".");
|
|
|
+ File upFile = File.createTempFile(filename[0] + System.currentTimeMillis(), "." + filename[1]);
|
|
|
file.transferTo(upFile);
|
|
|
return callPythonOcrApi(upFile);
|
|
|
}
|
|
|
@@ -67,16 +71,17 @@ public class OcrServiceImpl implements IOcrService {
|
|
|
* @param file 文件
|
|
|
* @return 识别结果
|
|
|
*/
|
|
|
- private String callPythonOcrApi(File file) {
|
|
|
+ private Map<String, Object> callPythonOcrApi(File file) {
|
|
|
HashMap<String, Object> map = new HashMap<>(3);
|
|
|
map.put("file", file);
|
|
|
String uri = configService.selectConfigByKey("api.ocr.uri");
|
|
|
- String result = HttpUtil.post(uri, map);
|
|
|
+ String response = HttpUtil.post(uri, map);
|
|
|
try {
|
|
|
Files.delete(file.toPath());
|
|
|
} catch (IOException ignored) {
|
|
|
}
|
|
|
- return result;
|
|
|
+ return JSON.parseObject(response);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Resource
|