【python】python实现屏幕指定区域文字提取(百度API)

因为OCR文字识别功能不是特别好,推荐利用百度API的来实现屏幕指定区域的文字识别。

一、如何注册百度API?

1.打开百度api网页,使用百度账号登陆
2.点击控制台,选择文字识别
【python】python实现屏幕指定区域文字提取(百度API)_第1张图片3.点击创建应用,填好相关信息后点击立即创建。【python】python实现屏幕指定区域文字提取(百度API)_第2张图片
【python】python实现屏幕指定区域文字提取(百度API)_第3张图片
4.填好相关信息后会显示申请成功后的Appid Key等,这个就是后来py代码中使用百度文字识别api的权限。(相当于账号密码)
【python】python实现屏幕指定区域文字提取(百度API)_第4张图片

二、指定区域文字识别脚本使用方法

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()

运行代码后,按照使用方法就可以进行文字识别啦!!!识别的非常准确呢!!!
如果对你有帮助,就点个关注吧! 共同学习,一起进步!

你可能感兴趣的:(Python,python)