Lua请求文字识别ocr api

1,安装Lua

下载 LuaForWindows_v5.1.5-52.exe

按默认安装

安装完毕,打开cmd可以运行Lua:

C:\projects>lua

Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio

>

2,安装dkjson

dkjson - JSON Module for Lua

下载dkjson.lua

获取Lua的加载模块的目录

C:\projects>lua -e "print(package.path)"

;.\?.lua;C:\Program Files (x86)\Lua\5.1\lua\?.lua;C:\Program Files (x86)\Lua\5.1\lua\?\init.lua;C:\Program Files (x86)\Lua\5.1\?.lua;C:\Program Files (x86)\Lua\5.1\?\init.lua;C:\Program Files (x86)\Lua\5.1\lua\?.luac

选择其中一个,所以把dkjson.lua复制到:

C:\Program Files (x86)\Lua\5.1\lua\

请求代码如下:

Lua 复制代码
-- ==============================================================================
-- API文档:https://market.shiliuai.com/doc/advanced-general-ocr
-- 支持免费在线体验
-- API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
-- ==============================================================================


local http = require("socket.http")
local ltn12 = require("ltn12")
local base64 = require("base64")
local json = require("dkjson")


-- 设置UTF-8编码输出
if package.config:sub(1,1) == "\\" then
    os.execute("chcp 65001 > nul")
    io.stdout:setvbuf("no")
end


-- 请求接口
local URL = "http://ocr-api.shiliuai.com/api/general_ocr/v1"


-- 图片转base64
local function get_base64(file_path)
    local file = io.open(file_path, "rb")
    if not file then
        return nil, "Unable to open file"
    end
    local data = file:read("*all")
    file:close()
    local b64 = base64.encode(data)
    return b64
end


local function demo(appcode, file_path)
    -- 请求头
    local headers = {
        ["Authorization"] = "APPCODE " .. appcode,
        ["Content-Type"] = "application/json",
        ["Accept"] = "application/json",
        ["Connection"] = "close"  -- 明确关闭连接
    }


    -- 请求体
    local b64, err = get_base64(file_path)
    if not b64 then
        print("Error:", err)
        return
    end


    local data = {
        ["image_base64"] = b64
    }
    local json_data = json.encode(data, {indent=false})


    -- 打印完整的请求数据(调试用)
    -- print("[DEBUG] Request Headers:", json.encode(headers))
    -- print("[DEBUG] Request Body (first 100 chars):", json_data:sub(1, 100))


    -- 手动设置 Content-Length
    headers["Content-Length"] = #json_data


    -- 请求
    local response_body = {}
    local res, code, response_headers = http.request{
        url = URL,
        method = "POST",
        headers = headers,
        source = ltn12.source.string(json_data),
        sink = ltn12.sink.table(response_body),
        timeout = 30,
        chunked = false  -- 禁用分块传输
    }


    -- 检查响应是否有效
    if code ~= 200 then
        print("[ERROR] HTTP Code:", code)
        print("[ERROR] Response Body:", table.concat(response_body))
        return
    end


    -- 合并响应体
    local response_text = table.concat(response_body)
    print("[DEBUG] Response:", response_text)


    -- 解析JSON响应
    local content, pos, err = json.decode(response_text, 1, nil)
    if err then
        print("[ERROR] Fail to decode JSON:", err)
        return
    end


    -- 处理识别结果
    if content and content.code == 200 and content.data then
        print("=== 识别结果 ===")
        for i, item in ipairs(content.data.content) do
            print(string.format("%d. text: %s", i, item.text))
            print(string.format("   prob: %.2f%%", item.prob * 100))
        end
    else
        print("[ERROR] API返回异常:", content and content.message or "未知错误")
    end


end



-- 主程序
local appcode = "你的APPCODE"
local file_path = "图片路径"
demo(appcode, file_path)

其中,appcode需要到market.shiliuai.com申请。

运行方式:

C:\projects>lua use_api.lua

相关推荐
我没胡说八道2 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟2 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love2 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇2 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明2 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc2 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技2 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本2 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
星辰徐哥2 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥2 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui