当前位置: 首页 > news >正文

Android文字识别-阿里云OCR调用

0,阿里云OCR有在线识别接口,直接用httpPOST调用就能实现,开发起来很快捷。识别率还蛮好,摄像头斜着拍也能识别出来。实测识别时间单次在2s左右,普通使用使能满足需求的。

1,在阿里云页面先注册申请免费试用测试,后续可以购买产品增加使用次数。

【通用OCR文字识别】- 通用文字识别/文字识别OCR/图像识别/图片识别文字/OCR识别【最新版】_OCR_人工智能_API-云市场-阿里云

2,申请完成后可以在服务页面找到自己的AppCode,这个代码要配置使用的,很重要。

3,上送的图片要求是BASE64编码的,bitmap的base64编码函数

    public static String bitmapToBase64(Bitmap bitmap) {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);byte[] byteArray = byteArrayOutputStream.toByteArray();return Base64.encodeToString(byteArray, Base64.DEFAULT);}

4,OCR调用

public static void ocrOnline(String strPictureBase64) {String strRet = "";String host = "https://tysbgpu.market.alicloudapi.com";String path = "/api/predict/ocr_general";String method = "POST";String appcode = "自己的code";String bodys = "{\"image\":\"" + strPictureBase64 + "\",\"configure\":{\"output_prob\":true,\"output_keypoints\":false,\"skip_detection\":false,\"without_predicting_direction\":false}}";//Log.i("OCR", "bodys:" + bodys);String strURL = host + path; //请求地址Log.i("OCR", "strURL:" + strURL);try {// 创建URL对象URL url = new URL(strURL);// 创建HttpURLConnection对象HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 设置请求方法为POSTconn.setRequestMethod(method);// 设置请求属性conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");conn.setRequestProperty("Authorization", "APPCODE " + appcode);// 发送请求OutputStream os = conn.getOutputStream();os.write(bodys.getBytes(StandardCharsets.UTF_8));os.flush();os.close();// 处理服务器响应BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {strRet += line;}in.close();/*{"request_id": "7879F05E-28F7-427B-8147-BB6A3957E9B4","ret": [{"prob": 0.99,"rect": {"angle": 0,"height": 121,"left": 756,"top": 1830,"width": 1295},"word": "QZ729202308300001"}],"success": true}}*/Log.i("OCR", "ret :" + strRet);JSONObject jsonObject = JSON.parseObject(strRet);if(jsonObject.getBooleanValue("success")){JSONArray jsonArray = jsonObject.getJSONArray("ret");String str = jsonArray.getJSONObject(0).getString("word");Log.i("OCR", "str:" + str);}} catch (Exception e) {e.printStackTrace();}}

5,在按钮响应函数不能直接调用ocrOnline,需要加个线程来调用,所以可以直接调用的接口是

    public static void callOCROnline(Bitmap bitmap){new Thread(new Runnable() {@Overridepublic void run() {ocrOnline(bitmapToBase64(bitmap));}}).start();}

5,结合手机后摄像头调用识别效果

摄像头调用请看下下篇。

新人入行,经验分享,如有所误,欢迎指出~

版权归属:深圳市琪智科技有限公司-花花

http://www.lryc.cn/news/157977.html

相关文章:

  • 度矩阵、邻接矩阵
  • 20个经典巧妙电路合集
  • 2023全国大学生数学建模ABCDE选题建议,思路模型,小白要怎么选?难度怎么样
  • 【力扣每日一题】2023.9.5 从两个数字数组里生成最小数字
  • 跳出Lambda表达式forEach()循环解决思路
  • 2023年度AWS SAP直冲云霄训练营学习分享
  • 2023高教社杯 国赛数学建模E题思路 - 黄河水沙监测数据分析
  • 06_快速入门案例实战之电商网站商品管理:集群健康检查,文档CRUD
  • 机车整备场数字孪生 | 图扑智慧铁路
  • Fair|Fur —— Geometry Nodes
  • java八股文面试[设计模式]——行为型模式
  • 【送书活动】网络安全(黑客)自学
  • 如何让数据成为企业的生产力?
  • 监控 -- linux中的一些系统性能状态指令、Prometheus
  • 跳槽面试:如何转换工作场所而不失去优势
  • TINA如何导入spice模型
  • C. MEX Repetition Pinely Round 2 (Div. 1 + Div. 2)
  • C++ 运算符
  • 数据结构day07(栈和队列)
  • 八、Linux中的用户与文件权限
  • 岛屿数量 -- 二维矩阵的dfs算法
  • JDBC学习汇总
  • HarmonyOS—UI开发性能提升的推荐方法
  • 英文科技论文写作与发表-常见英语写作困扰(第3章)
  • video标签自动播放音视频并绘制波形图
  • Netty—EventLoop
  • [极客大挑战 2019]FinalSQL(bypass盲注)
  • 如何实现小程序与h5页面间的跳转
  • 企业架构LNMP学习笔记9
  • 华为OD机试 - 二维伞的雨滴效应(Java JS Python)