美文网首页
调用百度ai接口实现图片文字识别详解

调用百度ai接口实现图片文字识别详解

作者: 森森deHOME | 来源:发表于2020-07-08 13:56 被阅读0次

    调用百度ai接口实现图片文字识别详解
    首先先介绍一下这篇博文是干嘛的,为了不浪费大家时间。公司最近和短视频公司合作,需要监控app的截图上的文字是否符合规范,也就是确保其没有违规的文字。到网上找了一些资料发现百度ai提供这个功能,这篇文章主要就是介绍怎么获取到图片上的文字。接下来进入正题,look down,man:

    一、下载项目

    微信截图_20200708134031.png

    二、创建应用

    微信截图_20200708134116.png

    三、pom.xml里面加入依赖

        <!-- json依赖 -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20160810</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    
    

    下面是代码Sample3类的代码

    import java.util.HashMap;
    import org.json.JSONObject;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import com.baidu.aip.ocr.AipOcr;
    import com.baidu.aip.run.mapper.KeyWordMapper;
    
    @Component
    public class Sample{
        
        @Autowired
        private KeyWordMapper keyWordMapper;
        
        // 设置APPID/AK/SK
        public static final String APP_ID = "自己申请的APP_ID";
        public static final String API_KEY = "自己申请的API_KEY";
        public static final String SECRET_KEY = "自己申请的SECRET_KEY ";
        
        // 初始化用户对象
        public static AipOcr init() {
            // 初始化一个AipOcr
            AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
            // 可选:设置网络连接参数
            client.setConnectionTimeoutInMillis(2000);
            client.setSocketTimeoutInMillis(60000);
            
            return client;
        }
    
        public void sample() {
            // 传入可选参数调用接口
            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");
    
            AipOcr client = init();
            
            // 参数为本地图片路径
            String image = "test.jpg";
            String path = "C:\\Users\\Lenovo\\Desktop\\图片\\aaa.jpg";
            JSONObject res = client.basicGeneral(path, options);
            System.out.println(res.toString());
    
    //        // 参数为本地图片二进制数组
    //        byte[] file = readImageFile(image);
    //        res = client.basicGeneral(file, options);
    //        System.out.println(res.toString(2));
    
    
            // 通用文字识别, 图片参数为远程url图片
    //        JSONObject res = client.basicGeneralUrl(url, options);
    //        System.out.println(res.toString(2));
    
        }
    }
    
    

    然后main方法运行下:

    package com.example.demo.controller.sign;
    
    import com.example.demo.controller.Sample3;
    
    public class test {
        public static void main(String[] args) {
            Sample3 sample3 = new Sample3();
            sample3.sample();
        }
    }
    
    

    接口的返回值。返回值是以json格式返回的。经过我的测试发现一共有三种可能的返回值。
    一、图片上有字并识别成功:这种情况在json返回值中会包含一个words_result键名,值就是识别到的文字,它是一行一行识别的,所以在words_result里面可能有多个值,键名是words。
    二、图片上有字但不出:这种情况是图片上是有字的,但是没有识别出来,返回的words_result里面是空的。比如艺术字。
    三、图片格式错误:这种情况是图片上根本就没字或者没有可识别的文字,返回值会包含一个error_code键名,你可以直接通过返回值是否包含其来判断格式是否错误。

    相关文章

      网友评论

          本文标题:调用百度ai接口实现图片文字识别详解

          本文链接:https://www.haomeiwen.com/subject/mtfccktx.html