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

news2024/11/20 13:17:06

目的

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

准备工作

1、搭建cheese的idea开发环境:

        

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

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

插件集成

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

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

2、拷贝js中的代码

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

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

import core from 'cheese-core';

const base = core.base;
const assets = core.assets;
const recordscreen = core.recordScreen;
const plugins = core.plugins;
const cls = core.cls;

var tomato_ocr;
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":韩语

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

    tomato_ocr.setDetBoxType("rect")  // 调整检测模型检测文本参数- 默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本
    tomato_ocr.setDetUnclipRatio(1.9)  // 调整检测模型检测文本参数 - 默认1.9: 值范围1.8-2.5之间,可调整文本检测框大小
    tomato_ocr.setRecScoreThreshold(0.3)  // 识别得分过滤 - 默认0.1,值范围0.1-0.9之间
    tomato_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 = tomato_ocr.ocrFile("/storage/emulated/0/test.png", type);
    console.log(result1);

    // 例子二
    let bitmap = recordscreen.captureScreen(3, 0, 0, 300, 300)
    let result2 = tomato_ocr.ocrBitmap(bitmap, type);
    console.log(result2);

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

function run() {
    if (recordscreen.requestPermission(3)) {
        console.log("请求成功")
    }

    if (assets.copy("TomatoOCR.apk", "/storage/emulated/0/TomatoOCR.apk")) {
        console.log("复制成功");
    } else {
        console.log("复制失败");
    }

    if (plugins.install("/storage/emulated/0/TomatoOCR.apk")) {
        plugins.loadLibrary("ocr")
        var tmo = cls.findClass("com.tomato.ocr.cheese.OCRApi")
        tomato_ocr = tmo.new().obj
        tomato_ocr.init(plugins.createContext(), rec_type)
        // 试用版license从群中获取或者网盘中获取
        var flag = tomato_ocr.setLicense("")
        // flag= -1: 无效license
        // flag= 0 : 过期license
        // flag= 1 或 到期日期 : 试用license或正式license
        console.log(flag);
        console.log("插件加载成功")
    }

    ocr_image();
}

run()

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

找字,返回传入字的中心点坐标,方便进行点击,找不到字时,返回“”空字符串

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

4、识别结果

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

完毕

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

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

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

相关文章

山东大学操作系统学习笔记:第3.1讲程序的结构-简单的程序

第3.1讲:程序的结构-简单的程序 可执行文件 & 程序的装入 .rwdata(读写数据段): 存放程序中的含初值常量。这些常量在程序运行可以修改。 零初始化数据段(.zidata/.bss - Block Started by Symbol):存放程序中的不含初值&am…

《自控原理》最小相位系统

在复平面右半平面既没有零点,也没有极点的系统,称为最小相位系统,其余均为非最小相位系统。 从知乎看了一篇答案: https://www.zhihu.com/question/24163919 证明过程大概率比较难,我翻了两本自控的教材,…

【中间件】fastDFS的相关知识

一、分布式文件系统 1.1 传统的文件系统 我们在Linux中学习的文件系统就是传统的文件系统: 传统的文件系统格式: ntfs/fat32/ext3/ext4 可以被挂载和卸载,就是一般一个盘可以分成多个盘,每一盘都可以挂载到不同的目录路径中。…

实时语音交互,打造更加智能便捷的应用

随着人工智能和自然语言处理技术的进步,用户对智能化和便捷化应用的需求不断增加。语音交互技术以其直观的语音指令,革新了传统的手动输入方式,简化了用户操作,让应用变得更加易用和高效。 通过语音交互,用户可以在不…

考研笔记之操作系统(三)- 存储管理

操作系统(三)- 存储管理 1. 内存的基础知识1.1 存储单元与内存地址1.2 按字节编址和按字编址1.3 指令1.4 物理地址和逻辑地址1.5 从写程序到程序运行1.6 链接1.6.1 静态链接1.6.2 装入时动态链接1.6.3 运行时动态链接 1.7 装入1.7.1 概念1.7.2 绝对装入1…

算法-汉诺塔问题(Hanoi tower)

介绍 汉诺塔是源于印度的一个古老传说的小游戏,简单来说就是有三根柱子,开始的时候,第一根柱子上圆盘由大到小,自下往上排列。这个小游戏要实现的目的呢,就是要把第一根柱子上的圆盘移到第三根的柱子上去;…

【重学 MySQL】四十四、相关子查询

【重学 MySQL】四十四、相关子查询 相关子查询执行流程示例使用相关子查询进行过滤使用相关子查询进行存在性检查使用相关子查询进行计算 在 select,from,where,having,order by 中使用相关子查询举例SELECT 子句中使用相关子查询…

带你0到1之QT编程:二十二、QChart类图表及折线图、直方图、饼图的三大可视化图表实战!

此为QT编程的第二十二谈!关注我,带你快速学习QT编程的学习路线! 每一篇的技术点都是很很重要!很重要!很重要!但不冗余! 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点!…

09_OpenCV彩色图片直方图

import cv2 import numpy as np import matplotlib.pyplot as plt %matplotlib inlineimg cv2.imread(computer.jpeg, 1) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img) plt.show()plot绘制直方图 plt.hist(img.ravel(), 256) #ravel() 二维降一维 256灰度级…

【JavaEE】http/https 超级详解

🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🦊一.定义 HTTP(HyperText Transfer Protocol)即超文本传输协议,他是应用非常广泛的应用层协议,是…

《PMI-PBA认证与商业分析实战精析》 第3章 需要评估

本章涵盖的考试重点: 需要评估的四项活动 需要评估四项活动的可交付成果 需要评估相关活动的技术 商业论证的内容 情境说明书的格式 目的、目标和商业论证的层次结构 成本收益分析的四种财务计价方法 需要评估领域就是聚焦在目标定义上。 商业分析师所需要…

ZenStack全栈开发工具(一)快速使用指南

简介 ZenStack是一个TypeScript工具,通过灵活的授权和自动生成的类型安全的 API/钩子来增强 Prisma ORM,从而简化全栈开发 数据库-》应用接口 数据库-》前端 参考官方网站:https://zenstack.dev/ 如果我们想做一个全栈开发的web应用程序&am…

目标检测技术的发展:从R-CNN、YOLO到DETR、DINO

“深度人工智能”是成都深度智谷科技旗下的人工智能教育机构订阅号,主要分享人工智能的基础知识、技术发展、学习经验等。此外,订阅号还为大家提供了人工智能的培训学习服务和人工智能证书的报考服务,欢迎大家前来咨询,实现自己的…

[FlareOn3]Challenge11

载入PE. 32 bit,无壳. 载入IDA(32bit). 寻找main函数. int __cdecl main(int argc, const char **argv, const char **envp) {char Buffer[128]; // [esp0h] [ebp-94h] BYREFchar *Str1; // [esp80h] [ebp-14h]char *Str2; // [esp84h] [eb…

ROS理论与实践学习笔记——2 ROS通信机制之常用API

"API" 是 "Application Programming Interface" 的缩写,指的是应用程序编程接口。API是一组定义了不同软件组件如何互相通信的规范。它允许不同的软件系统之间共享功能,提供一种标准的方式来访问某个软件组件的功能或数据。 详细内…

JavaScript模块化-CommonJS规范和ESM规范

1 ES6模块化 1.1 ES6基本介绍 ES6 模块是 ECMAScript 2015(ES6)引入的标准模块系统,广泛应用于浏览器环境下的前端开发。Node.js环境主要使用CommonJS规范。ESM使用import和export来实现模块化开发从而解决了以下问题: 全局作用…

《安富莱嵌入式周报》第343期:雷电USB4开源示波器正式发布,卓越的模拟前端低噪便携示波器,自带100W电源的便携智能烙铁,NASA航空航天锂电池设计

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 【授人以渔】CMSIS-RTOS V2封装层专题视频,一期视频将常用配置和用法梳理清楚&#xff0…

Win10系统插入带有麦克风的耳机_麦克风不起作用_解决方法_亲测成功---Windows运维工作笔记054

今天我在使用讯飞输入法的时候,想通过讯飞的语音输入法来提高自己的输入效率。 但是这个时候发现一个问题就是我插入我的台式机的是一个带有麦克风的耳机。 但是发现我这个耳机没有办法被电脑识别出麦克风来,所以说就没办法使用讯飞输入法的语音输入功能来直接输入文字了。…

Qt 窗口中鼠标点击事件的坐标探讨

// 鼠标点击事件 void Widget::mousePressEvent(QMouseEvent *event) {/*event->pos()、event->windowPos()和event->localPos()都表示鼠标点击位置在窗口中的位置,它们的值都是一样的,区别在于event->pos()是QPoint类型,event-&…

操作系统-磁盘管理

存储管理中的磁盘管理涉及到几个核心概念:磁道、扇区、磁头、盘面。 磁道:磁盘表面的同心圆,用于记录数据。每个磁道可以存储相同量的信息。 扇区:磁道被进一步划分的更小单元,通常是磁道的最小存储单位。一个常见的扇…