python识别图片上的文字并返回文字在图片中的坐标 - 小白在此

时间:2024-02-22 09:28:01

python识别图片上的文字并返回文字在图片中的坐标

最近在做app的UI自动化测试过程中,遇到UI大改版的问题。原本使用Airtest的图片比对来实现点击事件,改版后原有用例无法识别只能重写用例(ps:我们的app不是native开发使用的flutter技术所以无法通过元素来定位)想到工作量太大也不是解决问题的根本办法,观察新版UI发现图标和颜色改变文案没有改变。因此考虑通过识别图片上的文案,然后获取文案的坐标通过坐标来实现点击操作。后来搜索到百度的图文识别的库,识别文字并返回文字坐标。(此功能为收费接口,不过每天有免费调用次数),封装方法如下:
首先安装库:pip install baidu-aip

from aip import AipOcr

""" 你的 APPID AK SK """
APP_ID = \'你的 App ID\'
API_KEY = \'你的 Api Key\'
SECRET_KEY = \'你的 Secret Key\'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

""" 调用通用文字识别(含位置信息版), 图片参数为本地图片 """
"""输入需要识别的文案和图片地址,返回文案在图片上的坐标如:[368,96]"""
def return_cordinate(text,imagepath):
""" 读取图片 """
with open(imagepath, \'rb\') as fp:
"""识别到信息以字典形式返回"""
dic = client.general(fp.read())
"""遍历字典与想要的文案对比如果对比到就返回坐标"""
for word in dic.get("words_result"):
if word.get("words") == text:
return [word[\'location\'][\'top\'],word[\'location\'][\'left\']]
else:
return None