调用百度ai接口实现图片文字识别详解「建议收藏」

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

大家好,又见面了,我是你们的朋友全栈君。

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

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

一、下载项目

        1、在浏览器输入网址http://ai.baidu.com/或者百度搜索‘百度ai’点击第一个。点击主页的产品服务,看到通用文字识别。如下图所示:
在这里插入图片描述

2、点击技术文档,里面有SDK。
在这里插入图片描述

3、可以看到在文字识别在的api文档有多个接口,你可以根据你的需求来选择对应的接口。
在这里插入图片描述

4、重点是现在这里,看到SDK文档的java语言,因为我用的是java,所以这里就介绍这个了,其他语言也一样选择对应的文档查看就行了。
在这里插入图片描述

5、在官方网站下载所需的jar包,你会看到下图所示,选择文字识别,然后下载右边的java SDK的jar包。
在这里插入图片描述

6、下载的jar包如图所示:
在这里插入图片描述

二、部署项目

1、先将项目导入到你的ide,我这里用的是eclispe。然后去下个jar包,叫做aip-java-sdk-version.jar。version对应的是你之前下载的项目的版本,这里下载aip-java-sdk-4.11.0.zip就好了。你可以直接百度搜索jar包名称,会发现有很多c站的资源可以下,我这里为了方便大家已经上传到了百度网盘,链接https://pan.baidu.com/s/1OWyE3s4d9MUWuC8dIbTMSQ、提取码mjiq。将包下下来以后回到项目这里,直接将包复制到你的项目下面,然后右键add build path,或者右键项目Build Path -> Add JARs选择其也可以。
在这里插入图片描述

2、因为项目中有用到json-20160810.jar和log4j-1.2.17.jar,所以在pom.xml文件加入如下两个依赖:
其中json包是在接收百度ai文字识别接口返回值时用的,log4j是输出日志时用的。如果你不想用这两个依赖。比如想用阿里的fastjson,将代码中的相应部分改掉就好了。

	<!-- 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>

3、你可以看到项目的结构,没错,这是一个springboot项目。
在这里插入图片描述

三、调用接口

1、在真正使用百度ai图片文字识别的接口前还需要一个东西,继续回到百度ai的主页。点击下图中的控制台中的文字识别。
在这里插入图片描述

2、选择应用列表,点击创建应用,然后填写一些相应的信息就可以创建了,这里我就不一一概述了。
在这里插入图片描述

3、创建好了会如下图所示,其中AppId、API Key、Secret Key都是有值的。在这里先说声恭喜啦,你离成功越来越近了。
在这里插入图片描述

4、在你的ide中打开之前的项目,在项目中随意建一个文件夹,在文件夹下随意建一个java类。我这里是run文件夹下建的Sample类。
在这里插入图片描述

5、然后将以下代码复制到你的Sample类中,我简单做一下说明。APP_ID 、API_KEY 、SECRET_KEY是你之前在控制台创建的,复制过来就可以了。options是设置可以识别的语言,path是你图片的路径,如果你不想设置语言类型,直接传new HashMap<String,String>()就可以了。现在你可以弄张图片测试下了。

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 = "1632656666";
	public static final String API_KEY = "SuIze0vOa1BQX9KhooKgtK311Q";
	public static final String SECRET_KEY = "kXQe85iSiv7TuamRXqbkdSyohIBSdCl227";
	
	// 初始化用户对象
    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));

    }
}

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

好了,结束咯!有什么不明白或者博文中有不对的地方欢迎留言,我会及时回复的,谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131424.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Python-matplotlib画图(莫烦笔记)

    https://www.zhihu.com/collection/260736383&lt;此处就不自己写了,看了遍,照着写了一边,作者写的不错。不过有些有些偷懒,我只做了常见的功能&gt;作者:触摸壹缕阳光链接:https://zhuanlan.zhihu.com/p/33270402来源:知乎著作权归作者所有,转载请联系作者获得授权。1.前言Matplotlib是一个python的2D绘图库…

  • idea打开不了项目_idea为什么打不开

    idea打开不了项目_idea为什么打不开最近做项目的时候发现一个有趣的事情。公司以前的项目代码拉取下来之后用idea没法打开。如上图open之后没反应。打不开。找了很多资料没发现是什么原因导致的,只有这一个项目打不开,其他项目都能正常打开、编译,同时idea无任何提示。这个解决办法呢我尝试是在下图这个页面直接将项目拖进去,确实解决了问题,能够正常打开编译了。此方法目前来看2019.3.4和2020.2版本试过是可以的,但是在2017.12版本上此方法不行。如有大神知道原因请留言,小弟感激不尽…

  • 七、分发脚本xsync报错

    七、分发脚本xsync报错一、报错问题Badownerorpermissionson/home/pcz/.ssh/configBadownerorpermissionson/home/pcz/.ssh/configrsync:connectionunexpectedlyclosed(0bytesreceivedsofar)[sender]rsyncerror:unexplainederror(code255)atio.c(226)[sender=3.1.2]Badow

  • 小米手机1亿像素跟相机(2020相机新品)

    小米集团旗下品牌Redmi再度发布多款“性价比之王”手机新品。11月26日,小米发布RedmiNote9系列的Note9Pro、Note95G和Note94G三款手机新品,三款手机价格均位于“千元档”甚至低于千元,再度成为市场上同价位机型中的“性价比之王”。对此,小米集团副总裁、中国区总裁、Redmi品牌总经理卢伟冰重申,“Redmi的想法很简单,就是为用户做好产品,然后价格卖的尽量厚道,坚持高端产品大众化,大众产品品质化。”此次小米推出的Note9Pro沿袭了之前的Note8Pro在超清

  • window.location.href的使用方法

    window.location.href的使用方法

  • Android常用对话框大全——Dialog「建议收藏」

    Android常用对话框大全——Dialog「建议收藏」唉!最近一直忙碌着写项目以至于都没有空出点时间来总结近期的学习,记录学习到的东西…现在正好有时间了就该好好记录一下学习的过程了。今天就来谈谈开发中经常用的到的一个控件——Dialog,对话框一般我们就用来提示一些信息给用户,让用户自主选择,或者在一些操作不可逆的情况下我们提示用户是否继续操作,下面就让我们一起来学习吧。老司机发车啦…一:最简单的对话框AlertDialogdialog=new

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号