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)
像素。
使用示例
以下是不同平台/语言调用度大师OCR API的示例代码,所有示例均遵循"截图→Base64编码→API请求→解析结果"的流程,可根据实际开发环境选择对应版本。
Lua
触动精灵调用示例
require("TSLib") -- 度大师OCR函数定义 function 度大师ocr(x1, y1, x2, y2) -- 1. 截取屏幕指定区域并保存 snapshot("1.png", x1, y1, x2, y2) -- 2. 加载所需库 local sz = require("sz") local ts = require("ts") local http = require("szocket.http") local ltn12 = require("ltn12") -- 3. 将图片转换为Base64编码 local post_data = imageBase64(userPath() .. "/res/1.png") -- 4. 发送HTTP请求到OCR API local response_body = {} local staus, code, header = http.request{ url = "https://w.duds.cn/api/ocr_proxy.php?apikey=e7f0ed01c3ccf84a6ee25db8da89ffc61&mode=1", method = "POST", headers = { ["Content-Type"] = "application/json", ["Content-Length"] = #post_data, }, source = ltn12.source.string(post_data), sink = ltn12.sink.table(response_body), } -- 5. 处理并返回识别结果 local result = table.concat(response_body) if result ~= "" then return result else return "未知" -- 请求失败时返回默认值 end end -- 调用示例:识别屏幕(100,200)到(500,350)区域的文字 local result = 度大师ocr(100, 200, 500, 350) nLog("识别结果: " .. result)
Lua
懒人精灵调用示例
-- 度大师OCR函数定义 function 度大师OCR(x1, y1, x2, y2) -- 1. 截取屏幕指定区域并保存 snapShot("/mnt/sdcard/test.png", x1, y1, x2, y2) -- 2. 加载所需库 local https = require("ssl.https") local ltn12 = require("ltn12") -- 3. 将图片转换为Base64编码 local post_data = getFileBase64("/mnt/sdcard/test.png") -- 4. 发送HTTP请求到OCR API 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=3dbded15a9d5b35f550b50480a93bf1e&mode=1", method = "POST", headers = headers, source = ltn12.source.string(post_data), sink = ltn12.sink.table(response_body) } -- 5. 处理并返回识别结果 local result = table.concat(response_body) if result ~= "" then return result else return "未知" -- 请求失败时返回默认值 end end -- 调用示例:识别屏幕(100,200)到(500,350)区域的文字 local result = 度大师OCR(100, 200, 500, 350) print("识别结果: " .. result, 0)
易
易语言调用示例
.版本 2 .支持库 spec .子程序 度大师OCR, 文本型, 公开 .参数 文件路径, 文本型, , 待识别的图片路径 .局部变量 网址, 文本型 .局部变量 方式, 整数型 .局部变量 结果, 文本型 .局部变量 提交数据, 文本型 .局部变量 协议头, 文本型 .局部变量 body_base64, 文本型 ' 1. 将图片文件转换为Base64编码 body_base64 = 编码_BASE64编码 (读入文件 (文件路径)) ' 2. 配置API请求参数 网址 = “https://w.duds.cn/api/ocr_proxy.php?apikey=3ad5df2297231478f4c251f90d3741cd&mode=1” 方式 = 1 ' 1表示POST请求 协议头 = “Content-Type: application/json” 提交数据 = body_base64 ' 3. 发送请求并获取结果 结果 = UTF8到文本 (网页_访问 (网址, 方式, 提交数据, , , 协议头, )) ' 4. 返回处理结果 .如果 (结果 ≠ “”) 调试输出 (结果) ' 调试模式下输出结果 返回 (结果) .否则 返回 (“没有识别内容”) .如果结束 ' 调用示例(在其他子程序中): ' 局部变量 识别结果, 文本型 ' 识别结果 = 度大师OCR (“C:\test.png”) ' 信息框 (识别结果, 0, )
响应解析
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.1秒/次
- 仅支持中文简体
- 无批量处理
- 无技术支持
¥0 /月
推荐
专业版
适合企业用户和专业开发者
- 每月50,000次调用
- 识别速度≤0.05秒/次
- 支持多语言
- 支持批量处理
- 工作日技术支持
¥39 /月
企业版
适合大型企业和高并发场景
- 每月1,000,000次调用
- 识别速度≤0.03秒/次
- 支持全语言
- 高级批量处理API
- 7×24小时技术支持
¥299 /月