百度文字识别OCR

1.注册账号,获取必要参数

官方文档地址在这里插入图片描述

2.单例模式初始化Java客户端AipOcr

/**
 * @author byChen
 * @date 2021/9/29
 */
public class SingAipocr {
    /**
     * 将构造方法私有化,保证其他地方new不出来
     */
    private SingAipocr(){}

    /**
     * 在内部使用静态修饰,new一个该对象,该对象就是唯一单例(私有化方法在内部可以使用)
     */
    private static final AipOcr one = new AipOcr("AppID", "API Key", "Secret Key");


    /**
     * 使用静态修饰,可以用方法名直接点出来方法,而不需要新建对象(实际上因为单例,也新建不出来)
     * @return
     */
    public static AipOcr getAipocr(){
        // 可选:设置网络连接参数
        one.setConnectionTimeoutInMillis(2000);
        one.setSocketTimeoutInMillis(60000);
        return one;
    }
}

3.项目启动即创建

/**
 * @author byChen
 * @date 2021/9/29
 */
@Component
@Order(value = 1)
public class AipocrRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        AipOcr aipocr = SingAipocr.getAipocr();
        System.out.println("百度识别客户端创建成功!!!  "+aipocr);
    }
}

4.具体使用

接口说明地址
代码如下:

/**
 * 百度文字识别
 */
@GetMapping("/baiduRead")
public R baiduRead() {
    AipOcr aipocr = SingAipocr.getAipocr();
    // 传入可选参数调用接口
    HashMap<String, String> options = new HashMap<String, String>();
    options.put("language_type", "CHN_ENG");
    options.put("detect_direction", "true");
    options.put("detect_language", "true");
    options.put("probability", "true");
    String url = "https://chen-chong.oss-cn-beijing.aliyuncs.com/test/yawen/6327ae74-70f5-46da-acf2-de092abb4fd6.jpg";
    // 通用文字识别, 图片参数为远程url图片
    JSONObject res = aipocr.basicGeneralUrl(url, options);

    //利用JSON工具,将json数据压成实体类
    AipResault aipResault = JSON.parseObject(res.toString(), AipResault.class);
    return R.ok(aipResault);
}

4.1特殊说明:处理转换返回json格式数据为实体

具体可参考《常用编程思路》-13来进行格式转换


/**
 * @author byChen
 * @date 2021/9/29
 */
@Getter
@Setter
@Data
public class AipResault {
    /**
     * 唯一的log id,用于问题定位
     */
    @SerializedName("log_id")
    private Object logId;
    /**
     * 识别结果数,表示words_result的元素个数
     */
    @SerializedName("words_result_num")
    private Object wordsResultNum;
    /**
     *
     */
    @SerializedName("language")
    private Object language;
    /**
     * 图像方向,当detect_direction=true时存在。
     * - -1:未定义,- 0:正向,- 1: 逆时针90度,- 2:逆时针180度,- 3:逆时针270度
     */
    @SerializedName("direction")
    private Object direction;
    /**
     * 定位和识别结果数组
     */
    @SerializedName("words_result")
    private List<WordsResult> wordsResult;

    @Data
    public static class WordsResult implements Serializable {
        /**
         * 识别结果字符串
         */
        @SerializedName("words")
        private Object words;
        /**
         * 行置信度信息;如果输入参数 probability = true 则输出
         */
        @SerializedName("probability")
        private Probability probability;

        @Data
        public static class Probability implements Serializable {
            /**
             * 行置信度平均值
             */
            @SerializedName("average")
            private Object average;
            /**
             * 行置信度最小值
             */
            @SerializedName("min")
            private Object min;
            /**
             *行置信度方差
             */
            @SerializedName("variance")
            private Object variance;
        }
    }
}

5.返回结果

在这里插入图片描述

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值