autojs9.0.18合并EasyEdge, 实现离线OCR

本文涉及的产品
个人证照识别,个人证照识别 200次/月
OCR统一识别,每月200次
文档理解,结构化解析 100页
简介: 牙叔教程 简单易学

牙叔教程 简单易学


声明

本教程仅用于学习, 禁止用于其他用途


使用场景

autojs打包后的app合并百度EasyEdge的功能


百度EasyEdge包括

  • ocr
  • 目标检测
  • 人脸检测
  • 野生动物分类
  • 菜品识别
  • 动物识别
  • 车辆检测
  • ......


识别文字, 效果展示


autojs版本

9.0.18

公众号回复      9018     获取下载链接

最好使用该版本合并, 20220318最新版9.1.8截图有bug,

经测试9.0.18, 截图没有bug


合并简介

把百度EasyEdge app里面的

  • classes.dex
  • so
  • assets

添加到autojs打包后的app里面

就可以在autojs中使用百度EasyEdge了


合并详细步骤

1. 去百度EasyEdge官网下载ocr demo体验app


2. 用autojs打包一个用于调试的app
"ui";
ui.layout(
  <vertical>
    <text gravity="center" textStyle="bold" textSize="30sp">
      牙叔教程 简单易学
    </text>
    <input id="代码内容" w="*"></input>
    <button id="执行代码">执行代码</button>
    <input id="脚本文件路径" w="*"></input>
    <button id="执行脚本文件">执行脚本文件</button>
    <input id="项目入口文件路径" w="*"></input>
    <button id="执行项目">执行项目</button>
    <button id="日志">日志</button>
    <button id="停止脚本" text="停止脚本"></button>
  </vertical>
);
ui.代码内容.setText('toastLog("hello");');
ui.脚本文件路径.setText("/sdcard/脚本/main.js");
ui.项目入口文件路径.setText("/sdcard/脚本/测试/main.js");
ui.执行代码.click(function () {
  eval(ui.代码内容.text());
});
ui.执行脚本文件.click(function () {
  engines.execScriptFile(ui.脚本文件路径.text().trim());
});
ui.执行项目.click(function () {
  let entryFilePath = ui.项目入口文件路径.text().trim();
  engines.execScriptFile(entryFilePath, { path: entryFilePath.replace(/\/[\w.]+?$/, "") });
});
ui.日志.click(function () {
  app.startActivity("console");
});
ui.停止脚本.click(function () {
  engines.all().map((ScriptEngine) => {
    if (engines.myEngine().toString() !== ScriptEngine.toString()) {
      ScriptEngine.forceStop();
    }
  });
});


3. 用mt提取牙叔debug和EasyEdge, 两个app



4. 左边查看牙叔

5. 右边查看EasyEdge



6. 右侧的classes.dex改名为classes3.dex, 然后添加到左边


7. 右侧的assets文件夹里面的文件, 全部添加到左边的assets里面


8. 右侧的lib/arm64-v8a/里面的所有文件都添加到左侧lib/arm64-v8a/里面, 除了libc++_shared.so

添加前


添加后


9. 返回, 并对修改后的牙叔.apk签名, 卸载原先的牙叔app, 安装刚刚修改完的牙叔.apk,

小米安装, 可能要用自带的应用市场安装app, 否则报错


10. 修改 TestInferOcrTask.java 为js文件, 放到 /sdcard/脚本/main.js
requestScreenCapture();
sleep(1000);
/* -------------------------------------------------------------------------- */
importClass(android.content.Context);
importClass(android.graphics.Bitmap);
importClass(android.graphics.BitmapFactory);
importClass(android.graphics.Point);
importClass(android.widget.TextView);
importClass(com.baidu.ai.edge.core.infer.InferConfig);
importClass(com.baidu.ai.edge.core.infer.InferManager);
importClass(com.baidu.ai.edge.core.ocr.OcrResultModel);
importClass(java.io.InputStream);
importClass(java.util.List);
/* -------------------------------------------------------------------------- */
/**
 * 通用arm 开源OCR模型
 */
let CONFIDENCE = 0.3;
/* 1. 准备配置类,初始化Manager类。可以在onCreate或onResume中触发,请在非UI线程里调用 */
let config = new InferConfig(context.getAssets(), "infer-ocr/config.json");
let manager = new InferManager(context, config, "");
events.on("exit", function () {
  try {
    manager.destroy();
  } catch (e) {
    log(e);
  }
});
// 2. 截图
var image = captureScreen();
image = image.getBitmap();
log("image = " + image);
log("Image size: " + image.getWidth() + "*" + image.getHeight());
/* 3. 识别文字 */
// 在模型销毁前可以不断调用。但是不支持多线程
console.time("识别文字时间");
let results = manager.ocr(image, CONFIDENCE);
console.timeEnd("识别文字时间");
// 解析结果
log("results.size() = " + results.size());
if (results != null && results.size() > 0) {
  var len = results.size();
  for (var i = 0; i < len; i++) {
    let item = results.get(i);
    let data = {
      confidence: item.getConfidence(),
      label: item.getLabel(),
      labelIndex: item.getLabelIndex(),
      points: item.getPoints(),
      wordIndex: item.getWordIndex(),
    };
    log(JSON.stringify(data, null, 2));
  }
} else {
  log("未识别到文字");
}
/* 3. 销毁模型。可以在onDestroy或onPause中触发,请在非UI线程里调用 */
!image.isRecycled() && image.recycle();
manager.destroy();
log("Finish running\n");


11.保存上面的文件到 /sdcard/脚本/main.js


12. 在牙叔app中, 点击执行脚本文件, 点击同意截图


其他注意事项

manager只允许实例化一个, 如果代码出错, 请重启app


相关资料

百度EasyEdge官网

https://www.yuque.com/go/doc/44961245


名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程


声明


部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

相关文章
|
5月前
|
存储 人工智能 文字识别
印刷文字识别使用问题之离线识别车牌识别效果如何
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
7月前
|
文字识别 负载均衡 安全
文字识别OCR常见问题之通用识别和手写体识别直接合并调用如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
201 4
|
文字识别 JavaScript Go
|
机器学习/深度学习 人工智能 文字识别
公告:人脸,文字识别,分割抠图离线SDK正式上线
阿里云视觉智能开放平台正式开放了离线SDK的下载,可部署在Android,iOS,Windows,Osx等系统,并且支持根据上层业务需求进行定制开发,完全离网,欢迎使用~
|
5月前
|
文字识别
印刷文字识别使用问题之是否支持非标发票的识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
存储 文字识别 运维
印刷文字识别使用问题之如何开通统一识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
文字识别 容器
印刷文字识别使用问题之是否支持医疗检测报告识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
人工智能 文字识别 开发工具
印刷文字识别使用问题之是否支持识别并返回文字在图片中的位置信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
人工智能 JSON 文字识别
印刷文字识别使用问题之如何数电发票进行识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
文字识别 数据安全/隐私保护 iOS开发
印刷文字识别使用问题之如何识别礼品册上的卡号、密码信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
下一篇
DataWorks