easy click安卓版纯本地离线文字识别插件

目的

        easy click是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。easy click也包含图色功能,识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要讲解下更优秀的easy click平台TomatoOCR纯本地离线文字识别插件如何使用和集成。

准备工作

1、下载easy click的idea开发工具:IDEA 开发工具

        

2、下载TomatoOCR纯本地离线文字识别插件

  • 目前插件支持中英文、繁体字、日语、韩语识别;
  • 支持小图、区域图和单行文字识别,准确率高达99%;
  • 支持多种返回格式,json\文本\数字\自定义;
  • 支持增强版二值化;
  • 支持找字返回坐标并点击;
  • 超高的稳定性,速度快;
  • 不联网、不联网、不联网;

插件集成

1、打开idea开发工具,新建项目,在工程plugins目录下添加文字识别插件

下载插件后,先改名为TomatoOCR.apk

2、拷贝js中的代码

注意:loadDex("TomatoOCR.apk");  //该行必须写在main方法下,否则无非正常加载

// ********************************************************************************************
// ********欢迎使用TomatoOCR文字识别插件,加入群【469843332】可获取最新版本!!!************
// ********************************************************************************************

function main() {
    loadDex("TomatoOCR.apk");  //该行必须写在main方法下,否则无非正常加载

    let rec_type = "ch-3.0";
    // 注:ch、ch-2.0、ch-3.0版可切换使用,对部分场景可适当调整
    // "ch":普通中英文识别,1.0版模型
    // "ch-2.0":普通中英文识别,2.0版模型
    // "ch-3.0":普通中英文识别,3.0版模型
    // "cht":繁体,"japan":日语,"korean":韩语
    var ocr = new com.tomato.ocr.ec.OCRApi(context, rec_type);

    // 试用版license从群中获取或者网盘中获取
    let license = ""
    let flag = ocr.setLicense(license);
    // flag= -1: 无效license
    // flag= 0 : 过期license
    // flag= 1 或 到期日期 : 试用license或正式license

    // ----------------------注:以上代码全局只需写一次-------------------------------
    // ----------------------注:以上代码全局只需写一次-------------------------------
    // ----------------------注:以上代码全局只需写一次-------------------------------


    ocr.setRecType(rec_type) // 如果需要切换语言,直接在这里设置即可

    ocr.setDetBoxType("rect")  // 调整检测模型检测文本参数- 默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本
    ocr.setDetUnclipRatio(1.9)  // 调整检测模型检测文本参数 - 默认1.9: 值范围1.8-2.5之间,可调整文本检测框大小
    ocr.setRecScoreThreshold(0.3)  // 识别得分过滤 - 默认0.1,值范围0.1-0.9之间
    ocr.setReturnType("json")
    // 返回类型 - 默认"json": 包含得分、坐标和文字;
    //"text":纯文字;
    //"num":纯数字;
    //自定义输入想要返回的文本:".¥1234567890",仅只返回这些内容

    let type = 3;
    // type 可传可不传
    // type=0 : 只检测
    // type=1 : 方向分类 + 识别
    // type=2 : 只识别
    // type=3 : 检测 + 识别

    // 只检测文字位置:type=0
    // 全屏识别: type=3或者不传type
    // 截取单行文字识别:type=1或者type=2


    // 注意:注意:注意:识别不到时,返回的是""空字符串,请加上 if (result != "") 进行判断
    // returnType为“json”时,返回的是json字符串,需要使用JSON.parse进行解析

    // 例子一
    let result1 = ocr.ocrFile("/sdcard/0.jpg", type);
    logd(result1);

    // 例子二
    let x1 = 10
    let y1 = 10
    let bitmap = image.captureScreenBitmap("jpg", x1, y1, 300, 500, 95);
    let result2 = ocr.ocrBitmap(bitmap,type);
    logd(result2);

    // 找字返回坐标,没有找到字返回“”空字符串,返回的是“百度”的中心点坐标
    var point = ocr.findTapPoint("百度")
    if (point != "") {
        var json_point = JSON.parse(point)
        var center_x = json_point[0] + x1
        var center_y = json_point[1] + y1
    }

    //内存释放,释放插件,只需要在停止脚本的时候调用
    //正式开发中可以删除该行
    ocr.end()
}


main();

3、其中的方法说明如下

方法名说明
init初始化
setRecType

设置识别语言,默认ch-3.0:

ch、ch-2.0、ch-3.0版可切换使用,对部分场景可适当调整
"ch":普通中英文识别,1.0版模型
"ch-2.0":普通中英文识别,2.0版模型
 "ch-3.0":普通中英文识别,3.0版模型
 "cht":繁体,"japan":日语,"korean":韩语

setDetBoxType

调整检测模型检测文本参数-,默认"rect":

由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本

setDetUnclipRatio
调整检测模型检测文本参数,默认1.9:
值范围1.6-2.5之间,如果文字的检测框太小,可调整改参数,一般往大调整
setRecScoreThreshold
设置识别得分过滤,默认0.1:
值范围0.1-0.9之间
setReturnType
设置返回类型,默认"json",包含得分、坐标和文字;
"text":纯文字;
"num":纯数字;
自定义输入想要返回的文本:".¥1234567890",仅只返回这些内容
setBinaryThresh
对图片进行二值化处理,非必须,正常情况下可以不用写
ocrFile

两个参数,图片路径和类型,一般类型传3:

type=-1 : 检测 + 方向分类 + 识别
type=0 : 只检测
type=1 : 方向分类 + 识别
type=2 : 只识别(单行识别)
type=3 : 检测 + 识别
只检测文字位置:type=0
全屏识别: type=3或者不传type
截取单行文字识别:type=1或者type=2

如果识别为不到时,返回的数据为“”字符串

findTapPoint

找字,返回传入字的中心点坐标,方便进行点击,找不到字时,返回[-1,-1]

end释放插件,只需要在停止脚本的时候调用

4、识别结果

以上就是所有的运行情况。

完毕

        相对来说,在easy click进行插件开发还是比较困难的,需要会原生安卓开发,本地识别全屏会相对较慢,区域识别还是非常快,相比部署在服务器上,还可以减少了很多资源占用情况,更加方便便捷。

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
EasyAR 并不直接提供语音识别功能,但是你可以使用 Unity 的插件 SpeechRecognizer 实现安卓平台上的语音识别,并将识别结果与 EasyAR 中的 AR 应用进行交互。 以下是一个简单的示例代码,演示如何将语音识别结果与 EasyAR 中的 AR 应用进行交互: ```csharp using UnityEngine; using System.Collections; using UnityEngine.Android; using EasyAR; public class SpeechRecognition : MonoBehaviour { // EasyAR ARCamera 对象 public ARCamera arCamera; // 关键字 public string keyword = "hello"; // 识别结果 private string result = ""; void Start() { // 请求录音权限 #if UNITY_ANDROID if (!Permission.HasUserAuthorizedPermission(Permission.Microphone)) { Permission.RequestUserPermission(Permission.Microphone); } #endif // 创建 SpeechRecognizer 对象 AndroidJavaObject recognizer = new AndroidJavaObject("com.unity3d.player.UnitySpeechRecognizer"); // 开始识别 recognizer.Call("start", keyword); // 获取识别结果 result = recognizer.Call<string>("getResult"); } void Update() { // 如果识别结果为 "hello",则在 EasyAR 中显示一个 Cube if (result == "hello") { var obj = Instantiate(Resources.Load<GameObject>("Cube")); obj.transform.parent = arCamera.transform; obj.transform.localPosition = new Vector3(0, 0, 500); result = ""; } } void OnGUI() { // 显示识别结果 GUILayout.Label("Result: " + result); } } ``` 在上面的代码中,我们首先请求录音权限,然后创建 SpeechRecognizer 对象,并使用关键字 "hello" 开始识别。在 Update 函数中,如果识别结果为 "hello",则在 EasyAR 中显示一个 Cube。最后,我们获取识别结果,并在界面上显示出来。 需要注意的是,SpeechRecognizer 插件只能在 Android 平台上使用,而且需要在 AndroidManifest.xml 文件中添加相应的权限声明。 希望这个简单的示例能够帮助你实现 EasyAR 中的语音识别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番茄小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值