当前位置:   article > 正文

Android在线文字识别-阿里云OCR调用_android 阿里云ocr识别

android 阿里云ocr识别

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

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

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

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

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

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

4,OCR调用

  1. public static void ocrOnline(String strPictureBase64) {
  2. String strRet = "";
  3. String host = "https://tysbgpu.market.alicloudapi.com";
  4. String path = "/api/predict/ocr_general";
  5. String method = "POST";
  6. String appcode = "自己的code";
  7. String bodys = "{\"image\":\"" + strPictureBase64 + "\",\"configure\":{\"output_prob\":true,\"output_keypoints\":false,\"skip_detection\":false,\"without_predicting_direction\":false}}";
  8. //Log.i("OCR", "bodys:" + bodys);
  9. String strURL = host + path; //请求地址
  10. Log.i("OCR", "strURL:" + strURL);
  11. try {
  12. // 创建URL对象
  13. URL url = new URL(strURL);
  14. // 创建HttpURLConnection对象
  15. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  16. // 设置请求方法为POST
  17. conn.setRequestMethod(method);
  18. // 设置请求属性
  19. conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
  20. conn.setRequestProperty("Authorization", "APPCODE " + appcode);
  21. // 发送请求
  22. OutputStream os = conn.getOutputStream();
  23. os.write(bodys.getBytes(StandardCharsets.UTF_8));
  24. os.flush();
  25. os.close();
  26. // 处理服务器响应
  27. BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  28. String line;
  29. while ((line = in.readLine()) != null) {
  30. strRet += line;
  31. }
  32. in.close();
  33. /*
  34. {
  35. "request_id": "7879F05E-28F7-427B-8147-BB6A3957E9B4",
  36. "ret": [{
  37. "prob": 0.99,
  38. "rect": {
  39. "angle": 0,
  40. "height": 121,
  41. "left": 756,
  42. "top": 1830,
  43. "width": 1295
  44. },
  45. "word": "QZ729202308300001"
  46. }],
  47. "success": true
  48. }
  49. }
  50. */
  51. Log.i("OCR", "ret :" + strRet);
  52. JSONObject jsonObject = JSON.parseObject(strRet);
  53. if(jsonObject.getBooleanValue("success"))
  54. {
  55. JSONArray jsonArray = jsonObject.getJSONArray("ret");
  56. String str = jsonArray.getJSONObject(0).getString("word");
  57. Log.i("OCR", "str:" + str);
  58. }
  59. } catch (Exception e) {
  60. e.printStackTrace();
  61. }
  62. }

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

  1. public static void callOCROnline(Bitmap bitmap)
  2. {
  3. new Thread(new Runnable() {
  4. @Override
  5. public void run() {
  6. ocrOnline(bitmapToBase64(bitmap));
  7. }
  8. }).start();
  9. }

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

摄像头调用请看下下篇。

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/771306
推荐阅读
相关标签
  

闽ICP备14008679号