#! /usr/bin env python3# -*- coding:utf-8 -*-# 文字识别from Screen import Screenimport base64import requestsimport easyocrfrom paddleocr import PaddleOCRclass Text():def __init__(self, _log=None):self.log = _logself.screen = Screen()self.easyocr = easyocr.Reader(['ch_sim','en'])self.paddleOcr = PaddleOCR(use_angle_cls=True, lang="ch")self.apiKey = ''# 需要填写百度智能云的API Keyself.secretKey = ''# 需要填写百度智能云的Secret Keyself.type_general_basic = 0self.type_general = 1self.type_accurate_basic = 2self.type_accurate = 3self.type_webimage = 4self.type_webimage_loc = 5self.type_table = 6self.type_handwriting = 7self.type_numbers = 8self.printLog('Text init')def bind(self, hwnd):self.hwnd = hwndself.screen.bind(hwnd)def printLog(self, content):if self.log != None:self.log.printLog(content)else:print(content)# 获取百度智能云的access tokendef getAccessToken(self):# 获取token值# client_id 为官网获取的API_KEY, client_secret 为官网获取的SECRET_KEYhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=' + \'client_credentials&client_id=' + self.apiKey + \'&client_secret=' + self.secretKeyresponse = requests.get(host)access_token = response.json()['access_token']return access_token# 联网识字,通过百度api识字# @border 识别区域# @type 识别方式,默认是2(通用文字识别(标准含位置版))def getWordsByBaiDu(self, border=None, type=2):assessToken = self.getAccessToken()request_url = Noneif type == self.type_general_basic:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"# 通用文字识别(标准版)1000次/月,QPS/并发:2qpselif type == self.type_general:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general"# 通用文字识别(标准含位置版)1000次/月,QPS/并发:2qpselif type == self.type_accurate_basic:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"# 通用文字识别(高精度版)1000次/月,QPS/并发:2qpselif type == self.type_accurate:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate"# 通用文字识别(高精度含位置版)500次/月,QPS/并发:2qpselif type == self.type_webimage:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage"# 网络图片文字识别 1000次/月,QPS/并发:2qpselif type == self.type_webimage_loc:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage_loc"# 网络图片文字识别(含位置版)总量500次,QPS/并发:2qpselif type == self.type_table:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/table"# 表格文字识别V2 500次/月,QPS/并发:2qpselif type == self.type_handwriting:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting"# 手写文字识别 500次/月,QPS/并发:2qpselif type == self.type_numbers:request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/numbers"# 数字识别 1000次/月,QPS/并发:2qps#qimg = self.screen.captureScreen('getWords.png', border)try:f = open('getWords.png', 'rb')imgBytes = base64.b64encode(f.read())params = {"image":imgBytes}request_url = request_url + "?access_token=" + assessTokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers)self.printLog(str(response.json()["words_result"]))except Exception as e:self.printLog('网络识图出错了')self.printLog(str(e))return []else:return response.json()["words_result"]def getWordsByEasyOcr(self, border=None):qimg = self.screen.captureScreen(None, border)res = self.easyocr.readtext(self.screen.qimageToNDArray(qimg))self.printLog('getWordsByEasyOcr words: '+str(res))return resdef getWordsByPaddleocr(self, border=None):qimg = self.screen.captureScreen(None, border)res = self.paddleOcr.ocr(self.screen.qimageToNDArray(qimg))easyOcrRes = [] # 转换成EasyOcr的返回格式for i in range(len(res[0])):pos = res[0][i][0]text = res[0][i][1][0]similar = res[0][i][1][1]easyOcrRes.append((pos, text, similar))self.printLog('getWordsByPaddleocr words: '+str(res))return easyOcrRes
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。