因为OCR文字识别功能不是特别好,推荐利用百度API的来实现屏幕指定区域的文字识别。
一、如何注册百度API?
1.打开百度api网页,使用百度账号登陆
2.点击控制台,选择文字识别
3.点击创建应用,填好相关信息后点击立即创建。
4.填好相关信息后会显示申请成功后的Appid Key等,这个就是后来py代码中使用百度文字识别api的权限。(相当于账号密码)
二、指定区域文字识别脚本使用方法
1.先从搞一下百度文字识别的api,然后将APP_ID,API_KEY,SECRECT_KEY写在ini文件中
2.打开要提取文字的图片,将鼠标放在要选文字的左上角,按下键盘Q,将鼠标移动到要提取文字的右下角,按下键盘E
3.按下键盘S保存识别文字(不按S,无法进行保存)
4.所识别的文字,记录在工程路径下log.txt中
三、指定区域文字识别脚本的实现
这里面为了可配置,后期方便打包为exe文件,我将ID和KEY写在一个在一个account.ini文件中,方便后期更改。
ini文件内容如下:
[account]
APP_ID = 25945929
API_KEY = BRizLcWQlKQMDEoS4kZGBlcC
SECRECT_KEY = jyIoG7H4vzjSk92wT18O0FdeuFMI0TBk
你需要导入百度aip第三方库。注意:是aip,不是api !!!
py代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os.path
import time
import configparser
from aip import AipOcr
import pyautogui
import keyboard
def write(test):
"""
写入日志中
:param test:
:return:
"""
with open("log.txt", 'a+', encoding="utf-8") as fp:
test = test + "\n"
fp.write(test)
fp.close()
def translation():
"""
识别保存后的图片中的文字
:return: 识别后的文字
"""
i = open("666.png", 'rb')
img = i.read()
message = client.basicGeneral(img)
print(message)
# message = client.basicAccurate(img)
if message['words_result']:
return message['words_result'][0]['words']
else:
print("截图区域无文字信息")
def deleteimg():
"""
删除项目目录下的截图
:return:
"""
name = "666.png"
if os.path.exists(name):
os.remove(name)
def get_mouse_position():
container = []
while True:
if keyboard.is_pressed("Q"):
container = []
container.insert(0, list(pyautogui.position()))
time.sleep(0.5)
print("选定图像左上角", container)
if keyboard.is_pressed("W") and len(container) > 0:
container.insert(1, list(pyautogui.position()))
container = container[:2]
time.sleep(0.5)
print("选定图像右下角", container)
if container[0][0] >= container[1][0] or container[0][1] >= container[1][1]:
container = []
print("选定区域不合法,请重新选定")
if len(container) == 2 and keyboard.is_pressed("S"):
print(container)
time.sleep(0.8)
pyautogui.screenshot("666.png", region=(container[0][0], container[0][1],
container[1][0]-container[0][0],
container[1][1]-container[0][1]))
b = translation()
write(str(b))
container = []
if __name__ == "__main__":
con = configparser.ConfigParser()
con.read("account.ini")
APP_ID = con.get("account", "APP_ID")
API_KEY = con.get("account", "API_KEY")
SECRECT_KEY = con.get("account", "SECRECT_KEY")
client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
get_mouse_position()
运行代码后,按照使用方法就可以进行文字识别啦!!!识别的非常准确呢!!!
如果对你有帮助,就点个关注吧! 共同学习,一起进步!