autojs之ocr-腾讯

使用情景

安卓手机调用腾讯ocr识别文字

效果展示

在这里插入图片描述
在这里插入图片描述

难点

签名方法 v3 (TC3-HMAC-SHA256)

代码讲解

  1. 导入java类
importClass(java.nio.charset.Charset);
importClass(java.nio.charset.StandardCharsets);
importClass(java.security.MessageDigest);
importClass(java.text.SimpleDateFormat);
importClass(java.util.TimeZone);
importClass(javax.crypto.Mac);
importClass(javax.crypto.spec.SecretKeySpec);
  1. 初始化所有的参数, SECRET_IDSECRET_KEY请改为自己的.
let SECRET_ID = "XXX";
let SECRET_KEY = "XXX";
let service = "ocr";
let host = "ocr.tencentcloudapi.com";
let region = "ap-guangzhou";
let action = "GeneralAccurateOCR";
let version = "2018-11-19";
let algorithm = "TC3-HMAC-SHA256";
let UTF8 = StandardCharsets.UTF_8;
const timestamp = getTime();
  1. 识别文字
let dataList = ocr(imgPath);
  1. 显示识别的数据
showData(dataList, imgPath, "腾讯");

签名计算过程

  1. 拼接规范请求串
let hashedRequestPayload = sha256Hex(payload);
let canonicalRequest =
  httpRequestMethod +
  "\n" +
  canonicalUri +
  "\n" +
  canonicalQueryString +
  "\n" +
  canonicalHeaders +
  "\n" +
  signedHeaders +
  "\n" +
  hashedRequestPayload;
  1. 拼接待签名字符串
let credentialScope = date + "/" + service + "/" + "tc3_request";
let hashedCanonicalRequest = sha256Hex(canonicalRequest);
let stringToSign = algorithm + "\n" + timestamp + "\n" + credentialScope + "\n" + hashedCanonicalRequest;
  1. 计算签名
let secretDate = hmac256(java.lang.String("TC3" + SECRET_KEY).getBytes(UTF8), date);
let secretService = hmac256(secretDate, service);
let secretSigning = hmac256(secretService, "tc3_request");
let signature = byteArrayToHexString(secretSigning);
signature = hmac256(secretSigning, stringToSign);
signature = byteArrayToHexString(signature);
  1. 拼接 Authorization
let authorization =
algorithm +
" " +
"Credential=" +
SECRET_ID +
"/" +
credentialScope +
", " +
"SignedHeaders=" +
signedHeaders +
", " +
"Signature=" +
signature;

完整项目

点击查看完整代码

微信公众号 AutoJsPro教程

在这里插入图片描述

QQ群

747748653

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/snailuncle2/article/details/114106584