目的
易语言汉语编程环境是一个支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程工具环境;拥有简、繁汉语以及英语、日语等多语种版本;能与常用的编程语言互相调用;具有充分利用API,COM、DLL、OCX组件,各种主流数据库,各种实用程序等多种资源的接口和支撑工具。本篇文章主要讲解下更优秀的易语言平台TomatoOCR纯本地离线文字识别插件如何使用和集成。
准备工作
1、下载易语言可视编程工具
2、下载TomatoOCR纯本地离线文字识别插件:点击下载插件
- 目前插件支持中英文、繁体字、日语、韩语识别;
- 支持小图、区域图和单行文字识别,准确率高达99%;
- 支持多种返回格式,json\文本\数字\自定义;
- 支持增强版二值化;
- 支持多线程;
- 支持自定义截图桌面坐标;
- 支持大漠截图数据;
- 支持找字返回坐标并点击;
- 超高的稳定性,速度快;
- 不联网、不联网、不联网;
插件集成
1、下载插件后将名字改成TomatoOCR.ec,在项目的模块引用表中,右键添加模块引用。
2、文档中的代码
// ********************************************************************************************
// ********欢迎使用TomatoOCR文字识别插件,加入群【469843332】可获取最新版本!!!************
// ********************************************************************************************
tmo_init()
license = "" ' 设置license,见授权码获取
remark = "测试" ' 设置备注,可在控制台的列表中查看
flag = tmo_setLicense (license, remark)
输出调试文本 (flag)
' ------ 以上代码,只需要调用一次-----------
tmo_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":韩语
tmo_setDetBoxType (“rect”) ' 调整检测模型检测文本参数- 默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本
tmo_setDetUnclipRatio (2.0) ' 调整检测模型检测文本参数 - 默认1.9: 值范围1.6-2.5之间
tmo_setRecScoreThreshold (0.5) ' 识别得分过滤 - 默认0.1,值范围0.1-0.9之间
tmo_setReturnType (“json”)
' 返回类型 - 默认"json": 包含得分、坐标和文字;
' "text":纯文字;
' "num":纯数字;
' 自定义输入想要返回的文本:".¥1234567890",仅只返回这些内容
tmo_setRunMode (“slow”) ' 默认“slow”;“fast”:小图识别上会加速,但准确率会降低,推荐用默认值“slow”
tmo_setBinaryThresh (0)
' 二值化设定,非必须,默认为0,范围0-255
' -1 : 检测 + 方向分类 + 识别
' 0 : 只检测
' 1 : 方向分类 + 识别
' 2 : 只识别
' 3 : 检测 + 识别
' 只检测文字位置:0
' 全屏识别: 3或者不传
' 截取单行文字识别:1或者2
' 例子一,直接按路径去识别图片
result1 = tmo_ocrFile (“D:\\WorkSpaceProjects\\PycharmProjects\\TestLoadTomato\\test_dll\\images\\03.bmp”, 3)
输出调试文本 (result1)
' 例子二,传入截图区域
result2 = tmo_ocrScreen (10, 20, 100, 200, 3, “”) ' 最后一个参数,默认传“”空字符串,保存的是截图路径
输出调试文本 (result2)
' 例子三,传入图片base64
result3 = tmo_ocrBase64 (图片bease64字符串, 3)
输出调试文本 (result3)
' 例子四,传入大漠截图对象 char *
result4 = tmo_ocrDMImageData (大漠截图对象, 3)
输出调试文本 (result4)
point = tmo_findTapPoint (“队”) ' 找字返回中心点坐标,找不到返回“”空字符串
输出调试文本 (point)
points = tmo_findTapPoints (“队”) ' 找字返回所有相匹配的中心点坐标,找不到返回“”空字符串
输出调试文本 (points)
3、其中的方法说明如下
方法名 | 说明 |
init | 初始化 |
setLicense | 设置授权 |
setRecType | 设置识别语言,默认ch-3.0: ch、ch-2.0、ch-3.0版可切换使用,对部分场景可适当调整 |
setDetBoxType | 调整检测模型检测文本参数-,默认"rect": 由于手机上截图文本均为矩形文本,从该版本之后均改为rect,"quad":可准确检测倾斜文本 |
setDetUnclipRatio | 调整检测模型检测文本参数,默认1.9: 值范围1.6-2.5之间,如果文字的检测框太小,可调整改参数,一般往大调整 |
setRecScoreThreshold | 设置识别得分过滤,默认0.1: 值范围0.1-0.9之间 |
setReturnType | 设置返回类型,默认"json",包含得分、坐标和文字; "text":纯文字; "num":纯数字; 自定义输入想要返回的文本:".¥1234567890",仅只返回这些内容 |
setBinaryThresh | 默认值0,对图片进行二值化处理,非必须,正常情况下可以不用写 |
ocrFile/ocrBase64 | 两个参数,图片路径和类型,一般类型传3: type=-1 : 检测 + 方向分类 + 识别 type=0 : 只检测 type=1 : 方向分类 + 识别 type=2 : 只识别(单行识别) type=3 : 检测 + 识别 只检测文字位置:type=0 全屏识别: type=3或者不传type 截取单行文字识别:type=1或者type=2 如果识别为不到时,返回的数据为“”字符串 |
findTapPoint | 找字,返回传入字的中心点坐标,方便进行点击,找不到字时,返回“”空字符串 |
findTapPoints | 找字,找出所有相匹配的字,找不到字时,返回“”空字符串 |
end | 释放插件,只需要在停止脚本的时候调用 |
4、识别结果
以上就是所有的运行情况。
完毕
相对来说,在易语言进行插件开发还是比较困难的,需要会c++开发,本地识别全屏会相对较慢,区域识别还是非常快,相比部署在服务器上,还可以减少了很多资源占用情况,更加方便便捷。