由于公司的产品中用了百度AI开发平台中的一系列技术,所以我也尝试了一下百度的通用文字识别功能
继承了百度提供的jar包之后,进行编码测试,我这里使用的是本地图片,百度还提供了远程图片的识别,以及二进制的图片的识别,废话不多说,上代码
public class AITest {
public static final String APP_ID = "*******";//申请的appid,以下API_KEY ,SECRET_KEY 也是申请之后百度提供的。
public static final String API_KEY = "********";
public static final String SECRET_KEY = "yGf50gV8nGhnIz2kfdObzUOG4LBWhEZ2";
public static void main(String[] args) {
AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
// 可选:设置网络连接参数
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
sample(client);
}
public static void sample(AipOcr client) {
// 传入可选参数调用接口
HashMap options = new HashMap();
options.put("detect_direction", "true");
options.put("probability", "true");
// 参数为本地图片路径
String image = "D:/2.png";
JSONObject res = client.basicAccurateGeneral(image, options);
System.out.println(res.toString(2));
}
}
识别的结果
{
"log_id": 8276199698400034841,
"words_result": [
{
"probability": {
"average": 0.963491,
"min": 0.819669,
"variance": 0.005171
},
"words": "中国联通令"
},
{
"probability": {
"average": 0.962868,
"min": 0.906059,
"variance": 0.001393
},
"words": "上午9:00"
},
{
"probability": {
"average": 0.868985,
"min": 0.619956,
"variance": 0.026323
},
"words": "0192%"
},
{
"probability": {
"average": 0.91514,
"min": 0.75512,
"variance": 0.012818
},
"words": "〈返回"
},
{
"probability": {
"average": 0.967133,
"min": 0.935881,
"variance": 9.77E-4
},
"words": "日☆"
},
{
"probability": {
"average": 0.999747,
"min": 0.998067,
"variance": 0
},
"words": "定义了一个本地方法栈,本地方法栈是为J"
},
{
"probability": {
"average": 0.994057,
"min": 0.914793,
"variance": 3.54E-4
},
"words": "ava调用本地方法【这些本地方法是由其他"
},
{
"probability": {
"average": 0.999347,
"min": 0.996551,
"variance": 1.0E-6
},
"words": "语言编写的】服务的。"
},
{
"probability": {
"average": 0.995554,
"min": 0.964879,
"variance": 1.03E-4
},
"words": "JVM中栈有两个,但是堆只有一个,每一"
},
{
"probability": {
"average": 0.990195,
"min": 0.833454,
"variance": 0.001446
},
"words": "个线程都有自已的线程栈【线程栈的大小"
},
{
"probability": {
"average": 0.95802,
"min": 0.690014,
"variance": 0.008664
},
"words": "可以通过设置JVM的-xss参数进行配置,3"
},
{
"probability": {
"average": 0.988059,
"min": 0.779977,
"variance": 0.002113
},
"words": "2位系统下,JDK5.0以后每个线程堆栈大小"
},
{
"probability": {
"average": 0.989349,
"min": 0.838009,
"variance": 0.001284
},
"words": "为1M,以前每个线程堆栈大小为256K】"
},
{
"probability": {
"average": 0.999788,
"min": 0.998177,
"variance": 0
},
"words": "线程栈里面的数据属于该线程私有,但是"
},
{
"probability": {
"average": 0.977734,
"min": 0.599704,
"variance": 0.007953
},
"words": "所有的线程都共享一个堆空间,堆中存放的"
},
{
"probability": {
"average": 0.999879,
"min": 0.999062,
"variance": 0
},
"words": "是对象数据,什么是对象数据,排除法"
},
{
"probability": {
"average": 0.999821,
"min": 0.997783,
"variance": 0
},
"words": "排除基本类型以及引用类型以外的数据都"
},
{
"probability": {
"average": 0.999476,
"min": 0.994033,
"variance": 2.0E-6
},
"words": "将放在堆空间中。其中方法区和堆是所有"
},
{
"probability": {
"average": 0.999488,
"min": 0.997233,
"variance": 1.0E-6
},
"words": "线程共享的数据区。"
},
{
"probability": {
"average": 0.981931,
"min": 0.88812,
"variance": 0.00115
},
"words": "涉及Java虚拟机"
},
{
"probability": {
"average": 0.966891,
"min": 0.837628,
"variance": 0.00295
},
"words": "类加载安全机制"
},
{
"probability": {
"average": 0.909838,
"min": 0.909838,
"variance": 0
},
"words": " Extclassl"
},
{
"probability": {
"average": 0.965188,
"min": 0.767047,
"variance": 0.005132
},
"words": "cass字节码文件"
},
{
"probability": {
"average": 0.995935,
"min": 0.97491,
"variance": 7.4E-5
},
"words": "类装载器子系统"
},
{
"probability": {
"average": 0.856935,
"min": 0.856935,
"variance": 0
},
"words": " Appclassloader"
},
{
"probability": {
"average": 0.996638,
"min": 0.991415,
"variance": 1.0E-5
},
"words": "自定义类加载器"
},
{
"probability": {
"average": 0.970085,
"min": 0.754652,
"variance": 0.005809
},
"words": "ava运行时数据区"
},
{
"probability": {
"average": 0.992058,
"min": 0.992058,
"variance": 0
},
"words": "方"
},
{
"probability": {
"average": 0.96612,
"min": 0.96612,
"variance": 0
},
"words": "P"
},
{
"probability": {
"average": 0.999949,
"min": 0.999949,
"variance": 0
},
"words": "法"
},
{
"probability": {
"average": 0.998302,
"min": 0.998302,
"variance": 0
},
"words": "堆"
},
{
"probability": {
"average": 0.539466,
"min": 0.539466,
"variance": 0
},
"words": " Jai"
},
{
"probability": {
"average": 0.998882,
"min": 0.997407,
"variance": 1.0E-6
},
"words": "本地方法"
},
{
"probability": {
"average": 0.999722,
"min": 0.999722,
"variance": 0
},
"words": "区"
},
{
"probability": {
"average": 0.981747,
"min": 0.981747,
"variance": 0
},
"words": "栈"
},
{
"probability": {
"average": 0.968881,
"min": 0.909387,
"variance": 0.001771
},
"words": "寄存器"
},
{
"probability": {
"average": 0.983657,
"min": 0.983657,
"variance": 0
},
"words": "栈"
},
{
"probability": {
"average": 0.997917,
"min": 0.996419,
"variance": 2.0E-6
},
"words": "纠错"
},
{
"probability": {
"average": 0.999761,
"min": 0.999573,
"variance": 0
},
"words": "讨论"
}
],
"words_result_num": 39,
"direction": 0
}
几乎图片上的信息都被是被出来了,但是截屏的上的电量也都被识别出来了,可以说是精度很高了。