度大师OCR API文档

Lua API函数

度大师OCR图像文字识别

通过屏幕截图区域识别文字内容,集成度大师OCR高精度文字识别API

函数定义

function 度大师ocr(x1, y1, x2, y2)

函数说明

该函数用于对屏幕指定区域进行截图并调用度大师OCR API进行文字识别,返回识别结果。适用于自动化脚本中需要识别屏幕文字的场景。

工作流程

  1. 对屏幕坐标(x1,y1)到(x2,y2)的区域进行截图,保存为1.png
  2. 将截图转换为Base64格式
  3. 调用度大师OCR API发送识别请求
  4. 解析API响应并返回识别结果
  5. 请求失败时返回"未知"

参数详解

参数名 类型 是否必填 说明 示例
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 /月

识别精度统计