微信对接百度实现文字识别OCR

微信对接百度实现文字识别OCR

前置基础条件:
①注册测试账号
②开通自己的测试公众号
③完成与微信互发消息
④完成自定义菜单栏
详细步骤:https://blog.csdn.net/weixin_45565886/category_12059118.html

1 获取到百度文字识别API

①注册百度智能云账号:https://ai.baidu.com/
②开通文字识别应用【个人测试是免费的,申请即可】
在这里插入图片描述

③在控制台拿到相关参数
在这里插入图片描述

接口文档:https://cloud.baidu.com/doc/OCR/s/Nkibizxlf#%E9%80%9A%E7%94%A8%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB

2 定义上传图片按钮

官方文档:https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html

定义图片按钮:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PicButton extends AbstractButton{
    private String type = "pic_photo_or_album";
    private String key;
    private List<AbstractButton> sub_button = new ArrayList<>();

    public PicButton(String name){
        super(name);
    }
}

3 定义service处理图片消息

@Service
public class WxService {

	/**
     * 测试图片文字识别
     * @param requestMap
     * @return
     */
    public String testOCR(Map<String, String> requestMap){
        // 初始化一个AipOcr
        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

        // 传入可选参数调用接口
        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 image = "test.jpg";
//        org.json.JSONObject res = client.basicGeneral(image, options);
//        System.out.println(res.toString(2));

        // 通用文字识别, 图片参数为远程url图片
        String url = requestMap.get("PicUrl");
        System.out.println("picUrl:" + url);
        org.json.JSONObject res = client.basicGeneralUrl(url, options);
        System.out.println("res===" + res.toString());
        JSONArray jsonArray = res.getJSONArray("words_result");
        Iterator<Object> iterator = jsonArray.iterator();
        //拼接识别的文字结果
        StringBuilder stb = new StringBuilder();
        while(iterator.hasNext()){
            org.json.JSONObject next = (org.json.JSONObject) iterator.next();
            stb.append(next.get("words"));
        }
        return stb.toString();
    }


	/**
     * 返回的消息
     *
     * @param requestMap
     * @return
     */
    public String getResponse(Map<String, String> requestMap) {
        String msgType = requestMap.get("MsgType");
        //要返回的消息
        BaseMessage rtnMsg = null;
        switch (msgType) {
            //根据消息类型,处理不同消息
            case "text":
                rtnMsg = dealTextMessage(requestMap);
            case "image":
                //TODO
                rtnMsg = dealPicMessage(requestMap);
                break;
            case "voice":

                break;
            case "video":

                break;
            case "shortvideo":

                break;
            case "location":

                break;
            case "link":

                break;
            default:
                break;
        }
        return beanToXML(rtnMsg);
    }

    //处理图片消息
    private BaseMessage dealPicMessage(Map<String, String> requestMap) {
        //测试百度文字识别【OCR】
        String rtnMsg = testOCR(requestMap);
//        String returnMsg = "收到图片!!!";
        TextMessage tm = new TextMessage(requestMap, rtnMsg);
        return tm;
    }

4 测试

自定义菜单页面:
在这里插入图片描述

发送图片结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值