Jelajahi Sumber

core-ai parseDoc api

deason 1 bulan lalu
induk
melakukan
dbe5403354

+ 27 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/client/OcrApiClient.java

@@ -3,6 +3,8 @@ package com.qmth.boot.core.ai.client;
 import com.qmth.boot.core.ai.config.OcrApiConfiguration;
 import com.qmth.boot.core.ai.model.AiConstants;
 import com.qmth.boot.core.ai.model.ocr.OcrType;
+import com.qmth.boot.core.ai.model.ocr.ParseDocTask;
+import com.qmth.boot.core.ai.model.ocr.ParseDocTaskResult;
 import com.qmth.boot.core.retrofit.annotatioin.RetrofitClient;
 import com.qmth.boot.core.retrofit.utils.SignatureInfo;
 import okhttp3.MultipartBody;
@@ -28,4 +30,29 @@ public interface OcrApiClient {
     String forImage(@Header(AiConstants.BASE_URL) String baseUrl, @Tag SignatureInfo signature,
                     @Query("type") OcrType type, @Part MultipartBody.Part image);
 
+    /**
+     * 文档解析任务
+     *
+     * @param baseUrl   接口前缀地址,默认取配置文件的值(选填)
+     * @param signature 使用机构AK构造Secret类型签名
+     * @param file      待解析文件(如:pdf、word等)
+     * @return
+     */
+    @Multipart
+    @POST(AiConstants.OCR_DOC_TASK_PATH)
+    ParseDocTask parseDocTask(@Header(AiConstants.BASE_URL) String baseUrl, @Tag SignatureInfo signature,
+                              @Part MultipartBody.Part file);
+
+    /**
+     * 文档解析任务结果查询
+     *
+     * @param baseUrl   接口前缀地址,默认取配置文件的值(选填)
+     * @param signature 使用机构AK构造Secret类型签名
+     * @param taskId    文档解析任务ID
+     * @return
+     */
+    @POST(AiConstants.OCR_DOC_TASK_QUERY_PATH)
+    ParseDocTaskResult parseDocTaskQuery(@Header(AiConstants.BASE_URL) String baseUrl, @Tag SignatureInfo signature,
+                                         @Query("taskId") String taskId);
+
 }

+ 4 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/AiConstants.java

@@ -20,4 +20,8 @@ public interface AiConstants {
 
     String OCR_IMAGE_PATH = API_PREFIX + "/ocr/image";
 
+    String OCR_DOC_TASK_PATH = API_PREFIX + "/ocr/doc_task";
+
+    String OCR_DOC_TASK_QUERY_PATH = API_PREFIX + "/ocr/doc_task_query";
+
 }

+ 25 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/ocr/ParseDocTask.java

@@ -0,0 +1,25 @@
+package com.qmth.boot.core.ai.model.ocr;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ParseDocTask {
+
+    private String taskId;
+
+    public ParseDocTask() {
+    }
+
+    public ParseDocTask(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+}

+ 28 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/ocr/ParseDocTaskResult.java

@@ -0,0 +1,28 @@
+package com.qmth.boot.core.ai.model.ocr;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ParseDocTaskResult {
+
+    private ParseDocTaskStatus status;
+
+    private String content;
+
+    public ParseDocTaskStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(ParseDocTaskStatus status) {
+        this.status = status;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+}

+ 32 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/ocr/ParseDocTaskStatus.java

@@ -0,0 +1,32 @@
+package com.qmth.boot.core.ai.model.ocr;
+
+public enum ParseDocTaskStatus {
+
+    PENDING("排队中"),
+
+    PROCESSING("运行中"),
+
+    SUCCESS("成功"),
+
+    FAILED("失败");
+
+    private String title;
+
+    ParseDocTaskStatus(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public static ParseDocTaskStatus find(String name) {
+        for (ParseDocTaskStatus status : values()) {
+            if (status.name().equalsIgnoreCase(name)) {
+                return status;
+            }
+        }
+        return null;
+    }
+
+}