package shop.alien.store.util.ali.ocr;

import shop.alien.entity.result.R;
import shop.alien.entity.store.OcrImageUpload;

import java.util.Map;

/**
 * OCR识别策略接口
 *
 * @author lyx
 * @date 2025/11/18
 */
public interface OcrStrategy {

    /**
     * 执行OCR识别
     *
     * @param imageId 图片id
     * @return OCR识别结果（JSON格式）
     * @throws Exception 识别异常
     */
    R recognize(String imageId) throws Exception;

    /**
     * 执行OCR识别
     *
     * @param imageUrl 图片url
     * @return OCR识别结果（JSON格式）
     * @throws Exception 识别异常
     */
    R recognizeUrl(String imageUrl) throws Exception;

    /**
     * 执行OCR识别（参数方式）
     *
     * @param params 识别参数
     * @return OCR识别结果（JSON格式）
     * @throws Exception 识别异常
     */
    R recognizeParams(Map<String, String> params) throws Exception;

    /**
     * 执行OCR识别（Base64方式）
     *
     * @param imageBase64 图片Base64编码
     * @return OCR识别结果（JSON格式）
     * @throws Exception 识别异常
     */
    R recognizeByBase64(String imageBase64) throws Exception;

     /**
     * 保存OCR识别结果
     *
     * @param ocrImageUpload OCR识别结果上传实体
     */
    void saveOcrImage(OcrImageUpload ocrImageUpload);

    /**
     * 获取策略类型字符串
     *
     * @return 策略类型字符串
     */
    String getType();
}



