专栏首页自学测试之道python下基于图片的文字识别与获取

python下基于图片的文字识别与获取

上篇文章了解了基于pyautoGUI库的元素识别,这次又遇到一个问题:桌面应用程序做自动化测试时,无法识别到页面元素,且页面的元素,每运行一次都会变动(累计增加),为了达到目的,在网上找了相关资料,坐下总结

一、前期准备

1、准备好图片(整个桌面程序的截图)

2、在百度智能云注册API(https://login.bce.baidu.com/?account=&redirect=http%3A%2F%2Fconsole.bce.baidu.com%2Fai%2F%3F_%3D1553338619822%26fromai%3D1#/ai/ocr/overview/index),

原理很简单,就是用了百度智能云的图片识别接口进行识别,结果写到本地,其他厂的我也试过,个人感觉腾讯的要比百度的精确,并且得出来的结果更加好用,可以方便的写入excel,但是无奈要收费,所以最终用了百度,每天1000次免费识别,够用了。

3、安装支持的库:

pip install baidu-aip

二、文件目录

其中:要识别的图片文件夹存放需要识别的图片;successful.txt存放从图片上识别的所有数据;123.txt存放筛选后所需的数据

三、示例代码

#coding:utf-8
import os
from aip import AipOcr

print("正在努力识别中,请耐心等待".center(60))
APP_ID = '1xxxxx2'
API_KEY = 'xxxxxx'     # 需要自己去注册
SECRET_KEY = 'GxxxxxxxxL'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
BASE_DIR = os.getcwd()
id_list = os.listdir(os.path.join(BASE_DIR, "要识别的图片"))
success_path = os.path.join(BASE_DIR, "successful.txt")
sss = os.path.join(BASE_DIR, "123.txt")
count = 0
for id in id_list:
    img = open(os.path.join(BASE_DIR, "要识别的图片", id), 'rb').read()
    msg = client.basicGeneral(img)  # 识别图片
    str1 = ""
    for i in msg["words_result"]:
        print("{}".format(i["words"]).center(60))
        str1 += "{}\n".format(i["words"])
    with open(success_path, 'a') as f:
        f.write("{}\n\n".format(str1))
        print("\n")
    print("写入中,请稍等。。。".center(60))
    count += 1
    print("\n\n")
print("执行结束,共完成了{}图片的识别,资料已写入到successful.txt".format(count).center(60))

#  打开文件,筛选需要的行数数据
with open(success_path, 'r') as f:  #打开文件
    lines = f.readlines() #读取所有行
    last_line = lines[-11] #取最后一行
    print('文件' + success_path + '倒数第11行为:'+ last_line)
    last_data = last_line[6 : 10]
    print(last_data)
# 写入文件保存筛选结果
with open(sss, 'a') as f:
    f.write("{}\n\n".format(last_data))
    print("\n")
print("写入成功".center(60))

运行结果

基本上实现了所需功能,这样,只要每次运行后读取123.txt文档中的数据就可以执行下一步操作了。(由于时间急,后续在考虑封装优化代码吧)

本文分享自微信公众号 - 自学测试之道(zxceshi),作者:自学测试之道

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • UI自动化工具,你知道有几个?

    最近在研究针对windows桌面应用程序的自动化工具,查找了网上相关资料,UI自动化工具很多,但是想同时支持windows桌面应用程序、web端以及APP段的工...

    用户6367961
  • 我的tkinter学习笔记4

    用户6367961
  • python+pytest单元测试框架之fixture标识

    fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面。在你编写测试函数的时候,你可以将此函数名称做为传入参数,pytes...

    用户6367961
  • python获取当前目录路径和上级路径

    在使用python的时候总会遇到路径切换的使用情况,如想从文件夹test下的test.py调用data文件夹下的data.txt文件:

    py3study
  • python3获取文件目录和文件

    py3study
  • Python:目录和文件的操作模块os.path和OS常用方法

    1、目录和文件的操作模块os.path,在使用之前要先导入:import os.path。它主要有以下几个重要的功能函数:

    yaohong
  • 文件处理一直在路上

    一直输出python干货,是我开这个公众号的初衷,我会把这条道路坚持走到底,也希望我写的东西对你有一点作用。我把自己每天学习python时遇到的各种问题记录下来...

    stormwen
  • python3_06_01.模块之os

    py3study
  • python合并ts视频

    合并后视频出现卡顿、加速播放等问题,解决方法不知,如果有知道怎么解决的朋友,欢迎联系,不胜感激。

    py3study
  • python练习记录

    py3study

扫码关注云+社区

领取腾讯云代金券