瀏覽代碼

修改core-ai,增加OCR相关数据与API接口定义

Signed-off-by: luoshi <luoshi@qmth.com.cn>
luoshi 1 年之前
父節點
當前提交
588117274a

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

@@ -0,0 +1,29 @@
+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.retrofit.annotatioin.RetrofitClient;
+import com.qmth.boot.core.retrofit.utils.SignatureInfo;
+import okhttp3.MultipartBody;
+import retrofit2.http.*;
+
+/**
+ * OCR应用服务接口
+ */
+@RetrofitClient(configuration = OcrApiConfiguration.class)
+public interface OcrApiClient {
+
+    /**
+     * OCR识别图片
+     *
+     * @param signature 使用机构AK构造Secret类型签名
+     * @param type      识别类型
+     * @param image     待识别图片
+     * @return
+     */
+    @Multipart
+    @POST(AiConstants.OCR_GENERAL_PATH)
+    String image(@Tag SignatureInfo signature, @Query("type") OcrType type, @Part MultipartBody.Part image);
+
+}

+ 6 - 1
core-ai/src/main/java/com/qmth/boot/core/ai/config/AiAutoConfiguration.java

@@ -7,11 +7,16 @@ import org.springframework.context.annotation.Configuration;
 
 @Configuration
 @ComponentScan("com.qmth.boot.core.ai")
-@RetrofitScan("com.qmth.boot.core.ai.api")
+@RetrofitScan("com.qmth.boot.core.ai.client")
 public class AiAutoConfiguration {
 
     @Bean
     public LlmApiConfiguration llmApiConfiguration(LlmProperties llmProperties) {
         return new LlmApiConfiguration(llmProperties);
     }
+
+    @Bean
+    public OcrApiConfiguration ocrApiConfiguration(OcrProperties ocrProperties) {
+        return new OcrApiConfiguration(ocrProperties);
+    }
 }

+ 26 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/config/OcrApiConfiguration.java

@@ -0,0 +1,26 @@
+package com.qmth.boot.core.ai.config;
+
+import com.qmth.boot.core.retrofit.interfaces.CustomizeRetrofitConfiguration;
+import com.qmth.boot.core.retrofit.interfaces.SignatureProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OcrApiConfiguration implements CustomizeRetrofitConfiguration {
+
+    private static final Logger log = LoggerFactory.getLogger(OcrApiConfiguration.class);
+
+    private OcrProperties ocrProperties;
+
+    public OcrApiConfiguration(OcrProperties ocrProperties) {
+        this.ocrProperties = ocrProperties;
+        log.info("OCR api configuration inited, server=" + ocrProperties.getServer());
+    }
+
+    public String getBaseUrl() {
+        return ocrProperties.getServer();
+    }
+
+    public SignatureProvider getSignature() {
+        return null;
+    }
+}

+ 28 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/config/OcrProperties.java

@@ -0,0 +1,28 @@
+package com.qmth.boot.core.ai.config;
+
+import com.qmth.boot.core.constant.CoreConstant;
+import com.qmth.boot.core.solar.model.SolarConstants;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import javax.validation.constraints.NotNull;
+
+@Component
+@ConfigurationProperties(prefix = CoreConstant.CONFIG_PREFIX + ".ocr")
+public class OcrProperties {
+
+    /**
+     * 默认直接访问solar地址
+     */
+    @NotNull
+    private String server = SolarConstants.DEFAULT_SERVER;
+
+    public String getServer() {
+        return server;
+    }
+
+    public void setServer(String server) {
+        this.server = server;
+    }
+
+}

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

@@ -13,4 +13,8 @@ public interface AiConstants {
     String LLM_CHAT_TEMPLATE_PATH = API_PREFIX + "/llm/chat_template";
 
     String LLM_PROMPT_TEMPLATE_PATH = API_PREFIX + "/llm/prompt_template";
+
+    String OCR_GENERAL_PATH = API_PREFIX + "/ocr/general";
+
+    String OCR_HANDWRITING_PATH = API_PREFIX + "/ocr/handwriting";
 }

+ 26 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/ocr/OcrType.java

@@ -0,0 +1,26 @@
+package com.qmth.boot.core.ai.model.ocr;
+
+/**
+ * OCR识别类型
+ */
+public enum OcrType {
+
+    /**
+     * 通用文字识别
+     */
+    GENARAL,
+
+    /**
+     * 手写文字识别
+     */
+    HANDWRITING;
+
+    public static OcrType find(String text) {
+        for (OcrType type : values()) {
+            if (type.toString().equalsIgnoreCase(text)) {
+                return type;
+            }
+        }
+        return null;
+    }
+}