按键精灵手机助手实现安卓模拟器本地免字库ocr(可选gpu/cpu版)

必要环境及软件

目前免费成熟的本地ocr大部分基于飞桨(PaddleOCR),这里采用的是python环境下打包好的多平台RapidOCR,可以看到有cpu版和gpu版。

下面以gpu版为例,cpu版同理。
依次装好必要的python、cuda、cudnn等等后安装PaddlePaddle框架,再安装RapidOCR gpu端,运行测试程序验证是否安装完全。

本地OCR搭建

RapidOCR打包好的api是cpu端,且没有直接从本地读取图片的功能,这里我们要稍稍改一下,用FastAPI重新包装一下。

写一个简单的python程序。

import cv2
from fastapi import FastAPI
from rapidocr_paddle import RapidOCR

# 注意这里的参数
engine = RapidOCR(det_use_cuda=True, cls_use_cuda=True, rec_use_cuda=True)
ocr_gpu= FastAPI()
image_path = "C:/Users/simin/Documents/leidian9/Pictures/test.png" 
//安卓模拟器共享文件夹保存的图片在电脑的路径

@ocr_gpu.get("/ocr")
def ocr():
    result, elapse_list = engine(image_path)
    result = [result[i][1] for i in range(0,len(result))]
    result = ' '.join(result)
    return {"result":result}

开启服务,端口9003,ocrpaddle是python的程序名。host只能是0.0.0.0,不能填127.0.0.1,因为我们后面要用安卓模拟器来发送请求。

uvicorn ocrpaddle:ocr_gpu --host 0.0.0.0 --port 9003

按键精灵手机助手发送本地OCR请求

返回结果为用空格分隔的识别文字字符串,如果想改变返回结果格式参照本地OCR搭建修改相应的python程序,这里不细谈,默认有python基础。

Import "shanhai.lua"
Dim ImgUrl="/mnt/shared/Pictures/test.png" //安卓模拟器共享文件夹保存图片在手机上的路径
Dim OcrServer="http://xx.xx.xx.xx:9003/ocr" //填写本机ipv4地址,用ipconfig查询

Function 返回文字识别结果(ImgUrl)
	SnapShot ImgUrl
	Dim res = url.get(OcrServer)
	Dim tb = Encode.JsonToTable(res)
	Dim 返回文字识别结果=tb["result"]
End Function

例如,下图按键精灵收到的识别结果为“变好 变瘦 变温柔 就这样和自己做次约定吧”。

在这里插入图片描述

一些碎碎念求改进

其实实现OCR不难,但是有难点的是在安卓上实现OCR。找了半天都没找到合适的安卓本地集成插件,最方便快捷的当然是调用网络OCR的api,例如百度,但是百度限制免费一个月只能用1000次,图片限制2m以下,这对于一般人来说都接受不了,好在我们有飞桨。

但飞桨的问题是,软件包太大,加上我没安卓开发经验,也懒得去自己整理,大部分人还是习惯在linux或者win使用飞桨。这就麻烦了,好多游戏只有手游版,所以我们只能用按键精灵这样的软件去控制安卓模拟器,再利用安卓模拟器和电脑的共享文件夹省掉传输时间。

所以写完按键精灵的脚本后没法打包,里面ocr的部分必须要用到电脑python的环境,甚至我这里还用了gpu。FastOCR有打包安卓版,我觉得做得也不是很完善吧,如果有人有更合适的安卓OCR插件可以一起交流下。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值