简单几句代码:调用微信 OCR + AI 接口处理图像(屏幕截图)

测试了某个识图大模型,识别不是很快而且存在一些错字,决定换个思路调用微信 OCR 识别图像,然后再将识别结果发给 AI 处理。

调用微信 OCR 本地识别的好处是:识别效果最好,运行速度快,没有 token 费用成本。aardio 里提供了封装好的 process.wxOcr 可以很方便地做这事( 先更新一下 process.wxOcr 扩展库 )。

我们需要将包含所有文字坐标信息的原始识别结果转换为 JSON 发送给 AI,不能只发文本。AI 可以理解这种 JSON 数据,不需要添加额外解释。超级方便!

下面先截图,用 aardio 写这种代码很容易:

//屏幕选区
import mouse.screenArea;
var screenArea = mouse.screenArea();

//保存屏幕选区
screenArea.onSelectionChanged = function(rc){
    
    //屏幕截图
    import gdip.snap;
    var bmp = gdip.snap(screenArea.hwnd,rc.getPos());
    bmp.save("/~~~~ocr.png",80);
    owner.close();
}
screenArea.doModal();

在以上代码后面继续添加代码识别图像:

//创建 AI 聊天界面
import web.form.chat;
var chatUi = web.form.chat(text="AI 识别图像");
chatUi.showLoading(" 正在思考");

//加载微信 OCR 组件
import process.wxOcr;
var ocr = process.wxOcr(); 

//识别图像
ocr.sendRquest("/~~~~ocr.png",
    function(mmojoOcrResponse){ 
        
        //获取识别结果
        var singleResult = mmojoOcrResponse.ocrResult.singleResult;
        
        //转换为普通表对象
        singleResult = table.parseValue(singleResult)
        
        //移除所有坐标点的小数部分
        singleResult = table.mapDeep(singleResult,function(v,k,result){
            if(type(v)==type.number){
                v = math.floor(v)
            }
            
            return v;
        })
        
        //添加提示词
        chatUi.system( 
            '下面是 OCR 工具识别图像返回的 JSON 数据'
            + '

```json
' + JSON.stringify(singleResult) 
            + '```

你不需要向用户解释 JSON 的结构各字段的作用,请根据 JSON 数据获取的信息直接分析图像上的内容'
            );

        //多线程:创建 AI 对话线程
        thread.invoke( 
            function(chatUi){
                
                //创建 AI 客户端
                import web.rest.aiChat;
                var aiClient = web.rest.aiChat(
                    key =   '196'; //接口密钥
                    url = "https://ai.aardio.com/api/v1/"; //接口地址
                    model = "deepseek"; //模型 ID
                    temperature = 0.5;//温度
                )
                
                //调用聊天接口。
                var ok,err = aiClient.messages(chatUi.chatMessage,
                    function(deltaText,reasoning){
                        
                        //输出思考过程
                        if(reasoning) chatUi.showThinking(reasoning);
                        
                        //输出回复,自带高性能 Markdown 解析器。 
                        chatUi.assistant(deltaText);
                    }
                );
                
                //输出错误信息(无错时自动忽略)
                if(err)chatUi.errorMessage(err)
                
            },chatUi //将窗口对象作为参数传入工作线程
        ) 

    }
)   

//显示模态窗口
chatUi.doModal()

我们可以根据需要修改提示词,也可以继续添加 AI 调用本地工具函数的代码,例如让 AI 识别屏幕后来调用鼠标点击指定的按钮这都很简单(请查看 aardio 自带的 AI 调用工具范例)。

下面请将上面的所有代码复制粘贴到 aardio 开发环境中,按 F5可以直接运行。如果创建 aardio 工程,将代码粘贴到 main.aardio 中,按 F7可编译为 EXE 程序。

简单几句代码:调用微信 OCR + AI 接口处理图像(屏幕截图)

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...