Lua API函数
度大师OCR图像文字识别
通过屏幕截图区域识别文字内容,集成度大师OCR高精度文字识别API
函数定义
function 度大师ocr(x1, y1, x2, y2)
函数说明
该函数用于对屏幕指定区域进行截图并调用度大师OCR API进行文字识别,返回识别结果。适用于自动化脚本中需要识别屏幕文字的场景。
工作流程
- 对屏幕坐标(x1,y1)到(x2,y2)的区域进行截图,保存为1.png
- 将截图转换为Base64格式
- 调用度大师OCR API发送识别请求
- 解析API响应并返回识别结果
- 请求失败时返回"未知"
参数详解
参数名 | 类型 | 是否必填 | 说明 | 示例 |
---|---|---|---|---|
x1 | number | 必填 | 截图区域左上角x坐标 | 100 |
y1 | number | 必填 | 截图区域左上角y坐标 | 200 |
x2 | number | 必填 | 截图区域右下角x坐标 | 500 |
y2 | number | 必填 | 截图区域右下角y坐标 | 350 |
坐标说明
坐标系统以屏幕左上角为原点(0,0),x轴向右递增,y轴向下递增。
截图区域大小为 (x2 - x1) × (y2 - y1)
像素。
使用示例
懒人精灵调用示例
-- 引入必要的模块 local https = require("ssl.https") local ltn12 = require("ltn12") -- 度大师OCR函数定义 function 度大师OCR(x1, y1, x2, y2) -- 先截图并保存到指定路径 snapShot("/mnt/sdcard/test.png", x1, y1, x2, y2) -- 读取图片并转换为base64 local post_data = getFileBase64("/mnt/sdcard/test.png") -- 发送HTTP请求 local response_body = {} local headers = { ["Content-Type"] = "application/json", ["Content-Length"] = tostring(#post_data) } local res, code, response_headers = https.request{ url = "https://w.duds.cn/api/ocr_proxy.php?apikey=099ab58a13f036bfb710ab6bc172ef3f", method = "POST", headers = headers, source = ltn12.source.string(post_data), sink = ltn12.sink.table(response_body) } -- 处理响应 return table.concat(response_body) end -- 调用示例 local result = 度大师OCR(100, 200, 500, 350) dialog("识别结果: " .. result, 0)
触动精灵调用示例
function 度大师ocr(x1, y1, x2, y2) -- 屏幕截图 snapshot("1.png", x1, y1, x2, y2) -- 加载所需库 local sz = require("sz") local ts = require("ts") local http = require("szocket.http") local ltn12 = require("ltn12") -- 转换图片为Base64 local post_data = imageBase64(userPath() .. "/res/1.png") -- 准备HTTP请求 local response_body = {} local staus, code, header = http.request{ url = "https://w.duds.cn/api/ocr_proxy.php?apikey=e7f0ed01c3ccf84a6ee25db8da89ffc61", method = "POST", headers = { ["Content-Type"] = "application/json", ["Content-Length"] = #post_data, }, source = ltn12.source.string(post_data), sink = ltn12.sink.table(response_body), } -- 处理响应 local aaaa = table.concat(response_body) if aaaa ~= "" then return aaaa else return "未知" -- 所有 URL 都尝试失败后返回"未知" end end
函数调用示例
-- 调用度大师OCR函数识别屏幕区域(100,200)到(500,350)的文字 local result = 度大师ocr(100, 200, 500, 350) print("识别结果: " .. result)
响应解析
API成功响应示例
{ "code": 200, "data": { "text": "度大师OCR测试示例", "confidence": 0.98, "words_result": [ { "words": "度大师OCR", "location": { "left": 100, "top": 200, "width": 120, "height": 30 } }, { "words": "测试示例", "location": { "left": 230, "top": 200, "width": 100, "height": 30 } } ] }, "msg": "success" }
字段说明
-
code
状态码:200表示成功,其他值表示失败
-
data
识别结果数据
-
text
识别出的完整文本内容
-
confidence
整体识别置信度,范围0-1
-
words_result
按行识别的结果列表
-
words
单行识别的文本
-
location
文字在图片中的位置信息
-
msg
状态信息描述
错误处理
网络错误
当网络连接失败时,函数会返回"未知"字符串
API返回错误
当API返回非200状态码时,返回原始响应内容
建议处理方式
在调用函数后,建议检查返回结果格式是否符合预期
可以通过json解析判断是否包含"code"字段
计费说明
免费版
适合个人开发者测试使用
- 每月1000次调用
- 识别速度≤0.5秒/次
- 仅支持中文简体
- 无批量处理
- 无技术支持
¥0
/月
推荐
专业版
适合企业用户和专业开发者
- 每月50,000次调用
- 识别速度≤0.2秒/次
- 支持多语言
- 支持批量处理
- 工作日技术支持
¥199
/月
企业版
适合大型企业和高并发场景
- 每月1,000,000次调用
- 识别速度≤0.1秒/次
- 支持全语言
- 高级批量处理API
- 7×24小时技术支持
¥1999
/月