通用识别 网络图片报错
flayidea 发布于2020-04 浏览:1359 回复:1
0
收藏

使用java sdk开发,同样的图片,保存在本地,进行识别正常。如果是网络图片,就报错,请教一下是什么原因造成的?

java.io.FileNotFoundException: https://aip.bdstatic.com/portal-pc-node/dist/1587554701859/images/technology/ocr/general/commontext/5.png

at com.baidu.aip.util.Util.readFileByBytes(Util.java:129)

at com.baidu.aip.ocr.AipOcr.basicGeneral(AipOcr.java:75)

////////////// code ////////////////////////////

       // 调用接口

        String url = "https://aip.bdstatic.com/portal-pc-node/dist/1587554701859/images/technology/ocr/general/commontext/5.png";

        //String url = "/Users/apple/Desktop/5.png";

        String ocrContent = "";

        JSONObject ocrData = client.basicGeneral(url, options);

        JSONArray jsonArray = ocrData.getJSONArray("words_result");

        for(int j=0;j

            JSONObject jObject=jsonArray.getJSONObject(j);

            ocrContent += jObject.getString("words");

        }

        System.out.println(ocrContent);

 

     

收藏
点赞
0
个赞
共1条回复 最后由用户已被禁言回复于2022-04
#2用户已被禁言回复于2020-04

你的问题错误很明显哦。文件找不到。为什么呢?

1.如果你看过源码 肯定就不会错了
2.建议使用maven引入百度SDK。maven会帮你下载源码
3.不用maven也可以直接看源码 https://github.com/Baidu-AIP/java-sdk/blob/master/src/main/java/com/baidu/aip/ocr/AipOcr.java

可以看出。如果想用图片URL识别 是basicGeneralUrl方法 而不是 basicGeneral方法

basicGeneral方法只支持传递图片本地路径   或   图片的byte[]
basicGeneralUrl方法 只支持传递图片公网地址 

由于这个参数都是String类型。所以就导致了你以为你调用对了方法

解决方法

JSONObject ocrData = client.basicGeneral(url, options);

改成

JSONObject ocrData = client.basicGeneralUrl(url, options);

不建议直接

JSONArray jsonArray = ocrData.getJSONArray("words_result");

这一步操作。

JSONObject ocrData = client.basicGeneral(url, options);

这一步返回的建议先获取code确保接口是否成功。是否识别出文字再进行后续操作。

 

1
TOP
切换版块