函数:ocrText 本地光学字符识别

函数功能:将指定区域的图像转换为其显示出的文字

函数方法

text/array = ocrText(x1,y1,x2,y2,language,whitelist,flag)

text/array = ocrText(x1,y1,x2,y2,language,{whitelist,flag,imagepath})

参数 类型 必填 说明
x1 number 欲识别的区域左上角顶点屏幕横坐标
y1 number 欲识别的区域左上角顶点屏幕纵坐标
x2 number 欲识别的区域右下角顶点屏幕横坐标
y2 number 欲识别的区域右下角顶点屏幕纵坐标
language number 语言选择:不写默认 0 - 英文/数字;1 - 中文,
iOS 仅支持 0、1,请勿使用其他参数,具体使用方法详见下方注意事项
whitelist string 识别白名单,设置此参数后,不在白名单中的字符将被忽略,
引擎版本 iOSv2.2.7-3,Androidv1.3.0 以上支持,
如 "0123456789"
flag boolean 不填或者 flag = false 返回字符串,flag = true 返回坐标,
支持引擎 iOS3.0.0-126,Androidv2.4.1 以上版本
imagepath string 需要识别的图片路径,
引擎版本仅支持 iOSv3.1.4、Androidv3.1.9 及其以上版本
返回值 类型 说明
text string 识别结果
array table 坐标

返回值为 string 函数用例

-- OCR 英文识别,注意本函数仅对标准字体识别尚可,非标准字体请自行制作字库配合触动点阵识别函数效果更佳 
-- 创建一个全分辨率通用的浮动框 用来测试 ocrText
-- 使用 ocrText 函数可能会出现识别不准的问题推荐使用百度 AI 函数进行识别,使用方法详见下方注意事项。
fwShowWnd("wid",0,0,300,300,1)
fwShowTextView("wid","textid","2019-01-05 10:14","center","ffffff","000000",20,0,0,0,300,300,1)
mSleep(1000)
-- 识别区域
x,y,x1,y1 = 0, 100, 300, 300
text = ocrText(x,y,x1,y1,0)
-- 识别结果
dialog(text)

返回 table 坐标函数用例

-- 创建一个全分辨率通用的浮动框 用来测试 ocrText
fwShowWnd("wid",0,0,300,300,1)
fwShowTextView("wid","textid","abcd1234","center","ffffff","000000",20,0,0,0,300,300,1)
mSleep(1000)
-- 识别区域
x,y,x1,y1 = 0, 100, 300, 300
array = ocrText(x,y,x1,y1, 0,true)
-- 识别结果
text = "识别字符:"..array.text.."\ninfo长度:" .. #array.info
for var= 1, #array.info do
    text = text .. "\ninfo[" .. var .. "] x:" ..array.info[var].x+x .. 
    " y:"..array.info[var].y+y .. 
    " w:"..array.info[var].w+array.info[var].x+x .. 
    " h:"..array.info[var].h+array.info[var].y+y .. 
    " c:"..array.info[var].c .. 
    " char:"..array.info[var].char
end
dialog(text)

返回 table 坐标介绍

-- text 表示识别的字符串;
-- info 包含一个每个识别符号的信息;
-- x 代表相对识别完整图片的位置的左上角 x 坐标;
-- y 代表相对识别完整图片的位置的左上角 y 坐标;
-- w 代表识别符号的宽度;
-- h 代表识别符号的高度;
-- c 代表相似度;
{
   text = "ocr文字"
   info =
  {
      { x = 0, y= 1, w=5, h=10,  c = "90.01",  char="字符" }
      …. 
  }
}

返回识别图片中文字的坐标函数用例

--[[
本示例不可直接使用,需要修改正确的坐标及需要识别的图片存在
如果需要使用 imagepath 参数需要将第 6 个参数改成 table,如果同时需要使用 flag 及 whitelist 参数也需要将这两个参数写入 table 中
引擎版本:iOSv3.1.4 及其以上版本 table 格式中 flag 类型恢复为 boolean:false/true
imagepath 引擎版本仅支持 iOSv3.0.2、Androidv3.1.9 及其以上版本
]]
x,y,x1,y1 = 318, 50, 437, 113
array = ocrText(x,y,x1,y1,1,{flag = true,imagepath = userPath().."/res/tupian.png"})
text = "识别字符:"..array.text.."\ninfo长度:" .. #array.info
for var= 1, #array.info do
    text = text .. "\ninfo[" .. var .. "] x:" ..array.info[var].x+x .. 
    " y:"..array.info[var].y+y .. 
    " w:"..array.info[var].w+array.info[var].x+x .. 
    " h:"..array.info[var].h+array.info[var].y+y .. 
    " c:"..array.info[var].c .. 
    " char:"..array.info[var].char
end
dialog(text)

返回识别图片中文字函数用例

--[[
本示例不可直接使用,需要修改正确的坐标及需要识别的图片存在
如果需要使用 imagepath 参数需要将第 6 个参数改成 table,如果需要使用 flag 及 whitelist 参数也需要将这两个参数写入 table 中
imagepath 引擎版本仅支持 iOSv3.0.2、Androidv3.1.9 及其以上版本
]]
x,y,x1,y1 = 318, 50, 437, 113
text = ocrText(x,y,x1,y1,1,{flag = "false",imagepath=userPath().."/res/tupian.png"})
dialog(text)

注意事项

  • language 参数引擎版本 Android v3.1.8 及其以上版本已支持 0、1、10、20、21
  • language 参数 iOS 仅支持 0、1,不支持10、20、21
  • 引擎版本 Android v2.0 - 3.1.7.1 - v3.1.7版本仅支持 0、1
  • 引擎版本 Android v1.3.0 之前的版本 language 参数 10 或 20 是英文识别, 非 10 或 20 是中文识别。
  • language 参数介绍:
    • 0 - 数字/字母

    • 1 - 中文

    • 10 - 普通识别,适用于部分存在干扰线背景的文字识别

    • 20 - 适用于部分存在干扰线且深色背景的文字识别

    • 21 - 适用于部分深色背景的文字识别

  • 引擎版本 iOS v2.2.7-3,Android v1.3.0 以上中已集成英文字库,直接调用即可。
  • 白名单参数需引擎版本 iOS v2.2.7-3,Android v1.3.0 以上支持。
  • OCR 中文识别库下载地址:chi_sim.traineddata
  • OCR 英文数字识别库下载地址:eng.traineddata
  • 英文/中文字库点击下载无反应,请鼠标右键点击在隐身窗口中打开链接并在打开链接后刷新网页。
  • 触动精灵标准版/专业版如需使用中文字库,iOS 系统请将中文字库文件移至手机目录 /Applications/TouchSprite.app/tessdata,同时支持在 res 目录下 tessdata 目录中放置字库文件,但程序会先搜索 /Applications/TouchSprite.app/tessdata 中的文件,再到 res 目录下搜索,Android 系统移至 /sdcard/TouchSprite/res/tessdata 文件夹下方可正常使用。
  • 中文字库可以在 Android 标准版 v3.1.7.1 及其以上版本中点击我的账号 - 文件管理 - 插件中进行下载,会下载到 /sdcard/TouchSprite/res/tessdata 文件夹下,可以直接调用;v3.1.7.1 以下版本也可以下载但是会下载到data/data/com.touchsprite.android/files/plugin文件夹下,需要写代码进行移动。
  • 中文字库可以在标准版 iOS v3.0.4、专业版 iOS v3.1.1 及其以上版本中点击更多 - 文件管理 - 插件中进行下载,会下载到 var/mobile/Media/TouchSprite/res/tessdata 文件夹下可以直接调用,专业版 iOS v3.1.1 以下版本及标准版、iOS v3.0.4 以下版本也可以下载但是 iOS11 以下系统会下载到var/mobile/Media/TouchSprite/plugin文件夹下,iOS11 及其以上系统会下载到usr/bin/tsplugin/文件夹下,需要写代码进行移动。
  • iOS 企业版路径:/var/mobile/Media/TouchSpriteENT/res/tessdata/,安卓企业版路径:/mnt/sdcard/TouchSpriteENT/res/tessdata/,英文字库已内置,只需要导入中文字库。
  • 小精灵如果要使用中文字库可以使用函数:ts.tsDownload 下载文件下载中文字库导入到相应路径下,iOS 路径:/var/mobile/Media/小精灵包名/res/tessdata,安卓路径:/mnt/sdcard/小精灵包名/res/tessdata,英文字库已内置无需下载。
  • 该函数对非正规字体及有干扰的情况下识别效果不佳,推荐用来识别背景色相对单一的英文及数字。
  • 使用 ocrText 函数可能会出现识别不准的问题推荐使用 百度 AI函数 进行识别。
  • 安卓长时间调用 ocrText 函数可能会出现无法停止脚本的问题使用 collectgarbage("collect") 进行回收内存后可以临时解决这个问题,之后发新版本解决这个问题。
Copyright 北京帮你玩科技有限公司 2023 all right reserved,powered by Gitbook该文章修订时间: 2024-03-06 17:50:18

results matching ""

    No results matching ""