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

news2024/11/23 8:10:30

目的

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EasyExcel_通过模板导出(多sheet、列表、图片)

文章目录 前言一、EasyExcel是什么?二、模板样式调整三、使用步骤1.引入jar包2.方法示例2.1 Controller:2.2 Service:2.3 ServiceImpl:2.4 合并策略:2.5 对应DTO 总结 前言 产品今天提了个需求,大概是这样的&#xff…

中秋节月饼销售利用106短信群发平台业绩翻倍案例分析

在中秋节这一传统佳节,月饼作为节日的标志性食品,其销售市场竞争尤为激烈。为了在众多品牌中脱颖而出,不少月饼销售企业开始探索创新的营销方式。其中,利用106短信群发平台进行精准营销,成为众多企业实现业绩翻倍的有效…

C\C++ Sqlite3使用详解

C\C++ Sqlite3使用详解 一、源码下载二、sqlite3接口说明C++2.1 项目创建以及sqlite3使用2.1 连接数据库2.2 sqlite创建表2.2.1 示例代码2.2.2 注意事项2.3 sqlite插入数据2.3.1 示例代码2.3.2 注意事项2.4 sqlite数据删除2.5 sqlite数据查询一、源码下载 下载地址: https://…

思科设备静态路由实验

拓扑及需求 网络拓扑及 IP 编址如图所示;PC1 及 PC2 使用路由器模拟;在 R1、R2、R3 上配置静态路由,保证全网可达;在 R1、R3 上删掉上一步配置的静态路由,改用默认路由,仍然要求全网可达。 各设备具体配置…

UE5.4 - 内容浏览器

目录 一. 简介 二. 打开方式 1.顶部菜单栏打开 2.工具栏创建 3.底部工具栏按钮 三.界面详细介绍 1.导航栏 2.源面板 3.集合 4.筛选器 ​编辑 5.搜索栏 6.资产视图 7.设置按钮 四. 开发者内容 一. 简介 一种你可以用于查看、管理和处理项目中所有资产的工具。 二…

java 变量 基础类型及其转换

为什么需要变量 一个程序就是一个世界 变量是程序的基本组成单位 //不论是使用那种高级程序语言编写程序,变量都是其程序的基本组成单位,比如 //变量有三个基本要素(类型名称值) class Test{public static void main(String[] args) {//定义了一个变量,类型int整型,名称a,值…

哈工大 | 乐聚人形机器人 | 最新演讲

笔者是清华在读研究生,主要关注人形机器人、具身智能。将持续分享行业前沿动态、学者观点整理、论文阅读笔记、知识学习路线等。欢迎交流 最近听了乐聚的最新进展演讲,以下是学习整理。部分图截自直播,若模糊望见谅 基本信息: 【…

光影漫游者:创新球形设计,重新定义移动空间—轻空间

在现代城市中,空间的灵活性和视觉吸引力变得越来越重要。为满足多样化的需求,“光影漫游者”以其独特的球形设计和引人注目的视觉效果,成为了移动空间解决方案的新标杆。无论是商业活动、文化展览,还是沉浸式体验,“光…

文档翻译软件哪个好?这5款文档翻译器还不错

相信大家都有过看着大量外文文档资料而无从下手的经历,曾几何时,我也和大家一样深深困于这种烦恼之中。 好在后来,被我发现了5款趁手的文档翻译器,这才从根本上解决了不少麻烦~今天借此机会也将它们一并整理出来分享给大家&#…

仪器校准周期建议多长时间一次?仪器无校准后果怎么样?

自从国内建立计量以来,仪器计量校准就一直是企业定期进行的一种设备维护工作。定期进行校准已经是企业墨守成规的习惯,但是对于仪器校准周期是多久,具体多久校准一次,大家却不是很清楚,那么仪器校准周期建议多长时间一…

以简单的例子从头开始建spring boot web多模块项目(五)-thymeleaf引擎

继续向里面加,这次是引入thymeleaf渲染引擎。 使用这个引擎的很多,主要是以下几个优点: Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显…

华普微邀您共聚 2024 elexcon 深圳国际电子展!

elexcon2024深圳国际电子展将于2024年8月27日至29日在深圳会展中心(福田)开幕。汇聚全球优质品牌厂商齐聚现场,打造电子全产业链创新展示、一站式采购及技术交流平台。集中展示集成电路、嵌入式系统、电源管理/功率器件、电子元件与供应链、O…

气膜馆:亲子乐园中的新兴娱乐空间—轻空间

在亲子乐园中,气膜馆作为一种新兴的娱乐空间,凭借其独特的设计和灵活的功能,成为了孩子和家长们的理想去处。这个轻盈而充满趣味的空间,不仅让孩子们尽情玩耍,也为家长提供了舒适的陪伴环境。 全天候的舒适体验 气膜馆…

AOP+ 自定义注解 +SpringElExpress自研缓存组件

AOP 自定义注解 SpringElExpress自研缓存组件 背景前置知识改造代码 背景 思考下这段代码,想想项目中是不是到处存在 先查缓存,缓存里面有,直接返回;缓存没有,查数据库,并更新到缓存 思考:如何…

你遇到过哪些触发NPE的代码场景?

你遇到过哪些触发NPE的代码场景? NPE如何处理NPE 在Java编程实践中,空指针异常(NPE)是开发过程中常见的障碍,它不仅阻碍了代码的正常运行,还常常成为系统不稳定性的根源。那么如何识别那些潜藏于代码深处的…

6个你应该尝试Lens.org的理由:一个免费的文献可视化和专利网站

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 最近发现的一个免费的文献检索工具Lens.org介绍给大家,相比其他文献检索工具web of science、Scopus等,独到之处在于它对于搜索结果全面的可视化呈现效…

ubuntu右上角没有小键盘图标

这个比较奇怪,一开始好好的,用着用着就不行了。网上解决方案比较多,大多数能解决一部分问题。 1.设置“输入法系统” 2.在终端运行 sudo killall ibus-daemon(结束进程) bus-daemon -d(重启ibus&#xff0…

Go之函数

一、函数基本使用 一)函数概述 1、函数定义 对特定的功能进行提取,形成一个代码片段 2、函数的作用 提高代码的复用性,减少代码的冗余,代码的维护性也提高了 3、函数中间的关系 函数与函数是并列关系,所以定义的函数不…

Secure Coding in C and C ++ (四)局部静态构造函数 虚函数

前言 上一章节我们讲解了 关于C静态和指针与引用的部分 我们先来回顾一下相关的内容: 指针说白了就是地址, int a; int * ptr &a这里的整形指针 就是存放的整数变量的地址 静态 static 有两种层面: 第一种层面就是在其他的文件里&…

Ansys Zemax|如何自定义优化操作数

虽然Zemax OpticStudio有300多个内建优化操作数,但是还是会有一些特殊情况是这300多个操作数无法涵盖的。这就要求使用者根据要求计算出某些特定的数值,将这些数值返回到某个操作数,再对此操作数进行优化。 Zemax OpticStudio支持用户编程&a…