package com.heyu.api.controller.common;


import com.heyu.api.baidu.handle.common.BDocAnalysisOfficeHandle;
import com.heyu.api.baidu.request.common.BDocAnalysisOfficeRequest;
import com.heyu.api.baidu.response.common.BDocAnalysisOfficeResp;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/***
 *
 *
 * https://console.bce.baidu.com/support/?_=1740219852952&timestamp=1742640527850#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E9%80%9A%E7%94%A8%E5%9C%BA%E6%99%AFOCR&api=rest%2F2.0%2Focr%2Fv1%2Fdoc_analysis_office&method=post
 *
 * 办公文档识别
 *
 *
 * 接口描述
 * 支持对各类办公文档进行版面分析和文字识别，输出图、表、印章、标题等元素及位置信息，并分版块输出文字识别结果。可支持中、英、日、韩、法等 20+ 语言类型，印刷、手写、混排等多种场景。
 *
 *
 */
@Slf4j
@RestController
@RequestMapping("/office/doc")
@NotIntercept
public class DocAnalysisOfficeController {


    @Autowired
    private BDocAnalysisOfficeHandle bDocAnalysisOfficeHandle;

    /**
     * 办公文档识别：调用百度办公文档 OCR，对版面做分析与文字识别。
     * <p>
     * 成功时返回每条识别结果的字类型、行置信度（均值/最低）及识别文本；失败返回错误信息。
     * </p>
     * GET/POST：{@code /office/doc/recognize}，示例：{@code http://localhost:8888/office/doc/recognize}
     *
     * @param request 百度办公文档识别请求参数（如图片、配置等，与 {@link BDocAnalysisOfficeHandle} 约定一致）
     * @return {@link R}，{@code data} 为 {@link DocAnalysisOfficeResp} 列表；错误时 {@code errorMsg} 说明原因
     */
    @RequestMapping("/recognize")
    @CacheResult
    public R recognize(BDocAnalysisOfficeRequest request) {

        ApiR<BDocAnalysisOfficeResp> br = bDocAnalysisOfficeHandle.handle(request);

        if (br.isSuccess()) {
            return R.ok().setData(br.getData());
        }


        return R.error(br.getErrorMsg());
    }
}
