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

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

支持版本:仅支持 v1.1.0 及其以上版本

函数方法

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 - 中文,
具体使用方法详见下方注意事项
whitelist string 识别白名单,设置此参数后,不在白名单中的字符将被忽略,
如 "0123456789"
flag boolean 不填或者 flag = false 返回字符串,flag = true 返回坐标
imagepath string 需要识别的图片路径,只写图片默认为当前流程文件下的图片
返回值 类型 说明
text string 识别结果
array table 坐标

返回值为 string 函数用例

-- OCR 英文识别,注意本函数仅对标准字体识别尚可
-- 创建一个全分辨率通用的浮动框 用来测试 ocrText
showTextView("测试浮动窗口",100,100,400,400,"center","FFFFFF","B1D85C",20,0,1,1)
mSleep(1000)
-- 识别区域
--英文字库已内置,中文字库请在我的-中文字库插件中下载
x,y,x1,y1 = 100, 200,400, 500
text = ocrText(x,y,x1,y1,1)
-- 识别结果
dialog(text)

返回 table 坐标函数用例

showTextView("测试浮动窗口",100,100,400,400,"center","FFFFFF","B1D85C",20,0,1,1)
mSleep(1000)
-- 识别区域
--英文字库已内置,中文字库请在我的-中文字库插件中下载
x,y,x1,y1 = 100, 200,400, 500
array = ocrText(x,y,x1,y1, 1,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 时,x1,y1,x2,y2 是以图片左上角为原点得出的需要识别区域的范围 ,非屏幕范围
--识别范围不能超出图片尺寸否则会报错
x,y,x2,y2=8,4,228,67
--英文字库已内置,中文字库请在我的-中文字库插件中下载
array = ocrText(x,y,x2,y2,1,{flag=true,imagepath ="1.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 时,x1,y1,x2,y2 是以图片左上角为原点得出的需要识别区域的范围 ,非屏幕范围
]]
--识别范围不能超出图片尺寸否则会报错
--英文字库已内置,中文字库请在我的-中文字库插件中下载
x1,y1,x2,y2=8,4,228,67
text = ocrText(x1,y1,x2,y2,1,{imagepath = "1.png"})
dialog(text)

注意事项

  • language 参数介绍:

    • 0 - 数字/字母

    • 1 - 中文

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

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

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

  • OCR 中文识别库下载地址:chi_sim.traineddata
  • OCR 英文数字识别库下载地址:eng.traineddata
  • 英文字库已内置,中文字库请在我的-中文字库插件中下载。
  • 如果中文下载失败,请将字库文件导入到 /mnt/sdcard/LuaBox/tessdata/ 文件夹下。
  • 该函数对非正规字体及有干扰的情况下识别效果不佳,推荐用来识别背景色相对单一的英文及数字。
  • 如果提示参数传递错误,请查看识别范围是否超出实际范围,参数类型是否对。
Copyright 北京帮你玩科技有限公司 2024 all right reserved,powered by Gitbook该文章修订时间: 2025-06-16 10:21:47

results matching ""

    No results matching ""