Пример #1
0
    def picocr(self):
        ocrarea = ImageGrab.grab(bbox=(p.left, p.top, p.right, p.bottom))
        ocrarea.save(fp.ocr_area)
        with open(fp.ocr_area, 'rb') as f:
            base64_data = base64.b64encode(f.read())
            s = base64_data.decode()
            ImageBase64_value = 'data:image/jpeg;base64,%s'%s

        try:
            cred = credential.Credential(k.SECRET_ID, k.SECRET_KEY) 
            httpProfile = HttpProfile()
            httpProfile.endpoint = "ocr.ap-guangzhou.tencentcloudapi.com"
        
            clientProfile = ClientProfile()
            clientProfile.httpProfile = httpProfile
            client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile) 
        
            req = models.GeneralBasicOCRRequest()
            params = '{"ImageBase64":"' + ImageBase64_value + '"}'
            req.from_json_string(params)

            resp = client.GeneralBasicOCR(req) 
            Orecognition.ocrresult = resp.to_json_string()

            with open(fp.txt_ocr_path,"w", encoding='utf-8') as f:
                transjson = json.loads(ocrresult)
                for item in transjson['TextDetections']:
                    line = item['DetectedText']
                    f.write("%s\n" %(line))
    
        except TencentCloudSDKException as err:
            print(err)
Пример #2
0
    def getCodeFromImg(res, imgUrl):
        response = res.get(imgUrl, verify=False)  # 将这个图片保存在内存
        # 得到这个图片的base64编码
        imgCode = str(base64.b64encode(BytesIO(response.content).read()),
                      encoding='utf-8')
        # print(imgCode)
        try:
            cred = credential.Credential(Utils.getYmlConfig()['SecretId'],
                                         Utils.getYmlConfig()['SecretKey'])
            httpProfile = HttpProfile()
            httpProfile.endpoint = "ocr.tencentcloudapi.com"

            clientProfile = ClientProfile()
            clientProfile.httpProfile = httpProfile
            client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)

            req = models.GeneralBasicOCRRequest()
            params = {"ImageBase64": imgCode}
            req.from_json_string(json.dumps(params))
            resp = client.GeneralBasicOCR(req)
            codeArray = json.loads(resp.to_json_string())['TextDetections']
            code = ''
            for item in codeArray:
                code += item['DetectedText'].replace(' ', '')
            if len(code) == 4:
                return code
            else:
                return Utils.getCodeFromImg(res, imgUrl)
        except TencentCloudSDKException as err:
            raise Exception('验证码识别出现问题了' + str(err.message))
Пример #3
0
def postToOCR(image_path):
    try:
        # Using own SecretID and SecretKey from tencent cloud
        cred = credential.Credential("", "")
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile

        # Using prefer region
        client = ocr_client.OcrClient(cred, "na-toronto", clientProfile)

        req = models.GeneralBasicOCRRequest()

        base64 = ct.convertToBase64(image_path)
        params = {"ImageBase64": base64}

        req.from_json_string(json.dumps(params))
        resp = client.GeneralBasicOCR(req)

        #convert to json format
        resp = json.loads(resp.to_json_string())
        with open('static/respondJson/respond.json', 'w') as outfile:
            json.dump(resp, outfile)
        # with open('static/respondJson/respond.json', 'r') as fp:
        #     resp = json.load(fp)

        print(type(resp))
        return resp

    except TencentCloudSDKException as err:
        print(err)
Пример #4
0
def get_tencent_reg(img_file_dir):
    secret_id = "AKIDXjfVfZDDySfx1OHKt63lCNIwUBhxhceR"
    secret_key = "g5LPDUVdV8XfYHju87oEOJyMTfcJkupW"
    try:
        with open(img_file_dir, 'rb') as f:
            img_data = f.read()
        img_base64 = base64.b64encode(img_data)
        params = '{"ImageBase64":"' + str(img_base64, 'utf-8') + '"}'

        cred = credential.Credential(secret_id, secret_key)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile

        client = ocr_client.OcrClient(cred, "ap-shanghai", clientProfile)

        req = models.GeneralBasicOCRRequest()
        req.from_json_string(params)
        resp = client.GeneralBasicOCR(req).to_json_string()
        ret_list = re.findall(r'"DetectedText": "(.*?)"', resp)
        return ret_list

    except TencentCloudSDKException as err:
        print(err)
        return []
Пример #5
0
def tencentOCR(src, format):
    try:
        cred = credential.Credential("AKIDqUBfvwgZCan9Ppq93kEVgcHM4QY24Z9U",
                                     "IqSTZUQ7nJSPzsxnOo34rQOFsIlx1tcI")
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)

        req = models.GeneralBasicOCRRequest()
        params = '{"ImageBase64":"data:image/' + format + ';base64,' + src + '"}'
        req.from_json_string(params)

        resp = client.GeneralBasicOCR(req)
        recv = resp.to_json_string()

    except TencentCloudSDKException as err:
        print(err)

    str = json.loads(recv)
    DetectedText = jsonpath.jsonpath(str, "$..DetectedText")
    parseDetect = ""
    for msg in DetectedText:
        print(msg)
        parseDetect += msg + '\n'
    return parseDetect
Пример #6
0
def OcrBase64(Base64,SecretId,SecretKey):
    try: 
        cred = credential.Credential(SecretId, SecretKey) 
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile) 

        req = models.GeneralBasicOCRRequest()
        params = '{\"ImageBase64\":\"+' Base64 '+\"}'
        req.from_json_string(params)

        resp = client.GeneralBasicOCR(req) 
        jsonstr = json.loads(resp.to_json_string())
        array = jsonstr['TextDetections']
        s = ''
        for i in array:
            s = s + i['DetectedText']
        return s
        # f = open('C:\\Users\\hasee\\Documents\\UiPath\\Play\\1.txt','w')
        # f.write(s)
        # return '1'
    except TencentCloudSDKException as err: 
        print(err) 
Пример #7
0
def Tencent_OCR_Basic_Print(pic_str, client):
    req = models.GeneralBasicOCRRequest()
    params_1 = r'{"ImageBase64":"'
    params_2 = r'","LanguageType":"auto"}'
    params = params_1 + pic_str + params_2
    # params = '{"ImageBase64":"pic_str","LanguageType":"auto"}'
    req.from_json_string(params)
    resp = client.GeneralBasicOCR(req)
    text = resp.to_json_string()
    return text
Пример #8
0
def main_handler(event, context):
    logger.info("start main handler")
    if "requestContext" not in event.keys():
        return {"code": 410, "errorMsg": "event is not come from api gateway"}
    if "body" not in event.keys():
        return {
            "isBase64Encoded": False,
            "statusCode": 200,
            "headers": {
                "Content-Type": "text",
                "Access-Control-Allow-Origin": "*"
            },
            "body": "there is no file from api gateway"
        }

    #从网关上传的图片格式已经做过Base64,在event['body']里可以直接获取
    logger.info("Start to detection")
    try:
        secret_id = os.environ.get('TENCENTCLOUD_SECRETID')
        secret_key = os.environ.get('TENCENTCLOUD_SECRETKEY')
        token = os.environ.get('TENCENTCLOUD_SESSIONTOKEN')
        cred = credential.Credential(secret_id, secret_key, token)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)
        req = models.GeneralBasicOCRRequest()
        params = '{"ImageBase64":"%s"}' % event['body']
        req.from_json_string(params)
        resp = client.GeneralBasicOCR(req)
        res_ai = json.loads(resp.to_json_string())
        res_text = " "
        print(len(res_ai["TextDetections"]))
        for i in range(len(res_ai["TextDetections"])):
            res_text = res_text + str(
                res_ai["TextDetections"][i]["DetectedText"])

    except TencentCloudSDKException as err:
        print(err)

    print(res_text)
    response = {
        "isBase64Encoded": False,
        "statusCode": 200,
        "headers": {
            "Content-Type": "text",
            "Access-Control-Allow-Origin": "*"
        },
        "body": res_text
    }

    return response
Пример #9
0
def tencent_image2str_url(uuid_url_dict, types="characters"):
    from tencentcloud.common import credential
    from tencentcloud.common.profile.client_profile import ClientProfile
    from tencentcloud.common.profile.http_profile import HttpProfile
    from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
    from tencentcloud.ocr.v20181119 import ocr_client, models
    uuid_text_dict = {}
    try:
        cred = credential.Credential(Tencent_API_KEY, Tencent_SECRET_KEY)
        http_profile = HttpProfile()
        http_profile.endpoint = "ocr.ap-chengdu.tencentcloudapi.com"

        client_profile = ClientProfile()
        client_profile.httpProfile = http_profile

        client = ocr_client.OcrClient(cred, "ap-beijing",
                                      client_profile)  # create a connection
        req = None
        if types == "questions":
            req = models.EduPaperOCRRequest()  # questions model
        elif types == "characters":
            req = models.GeneralBasicOCRRequest()  # characters model
        for uuid, url in uuid_url_dict.items():
            params = {}
            params = '{\"ImageUrl\":\"url\"}'.replace("url", url)
            print("OCR resolving %s" % url)
            req.from_json_string(params)
            ret = ''
            try:
                if types == "questions":
                    resp = client.EduPaperOCR(req)
                    for questionsblock in resp.QuestionBlockInfos:
                        for textblock in questionsblock.QuestionArr:
                            ret = ret + textblock.QuestionText + '\n'
                elif types == "characters":
                    resp = client.GeneralBasicOCR(req)
                    for textblock in resp.TextDetections:
                        if textblock.Confidence >= 85:
                            ret = ret + textblock.DetectedText + '\n'
                uuid_text_dict[uuid] = ret
            except TencentCloudSDKException as err:
                print(err)
                print("OCR failed! URL:%s, set text empty" % url)
                uuid_text_dict[uuid] = ''
        return uuid_text_dict

    except TencentCloudSDKException as err:
        print(err)
        return uuid_text_dict
Пример #10
0
def get_text(image_code):
    try:
        cred = credential.Credential("XXXXX", "XXXXX")
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)

        req = models.GeneralBasicOCRRequest()
        params = '{"ImageBase64":"' + image_code + '"}'
        req.from_json_string(params)

        resp = client.GeneralBasicOCR(req)
        return resp.to_json_string()
    except TencentCloudSDKException as err:
        print(err)
Пример #11
0
def processing(path):
    try:
        cred = credential.Credential(api_id, api_key)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        clientProfile.signMethod = "TC3-HMAC-SHA256"
        client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)

        req = models.GeneralBasicOCRRequest()
        req.ImageBase64 = ImageBase64(path)

        resp = client.GeneralBasicOCR(req)
        return resp
    except TencentCloudSDKException as err:
        print("SDK错误:" + str(err))
        return None
Пример #12
0
def requestOrc(params):
    try:
        cred = credential.Credential(SECRET_ID, SECRET_KEY)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)

        req = models.GeneralBasicOCRRequest()
        req.from_json_string(params)

        resp = client.GeneralBasicOCR(req)
        return json.loads(resp.to_json_string())
        # print

    except TencentCloudSDKException as err:
        print(err)
Пример #13
0
async def ocr(url):
    try:
        cred = credential.Credential(SecretId, SecretKey)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, Region, clientProfile)

        req = models.GeneralBasicOCRRequest()
        params = {"ImageUrl": url, "LanguageType": "auto"}
        req.from_json_string(json.dumps(params))

        resp = client.GeneralBasicOCR(req)
        return resp

    except TencentCloudSDKException as err:
        sv.logger.warning(err)
Пример #14
0
def tencent_OCR(filePath):
    try: 
        cred = credential.Credential("xxxxx", "xxxxx") 
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile) 

        req = models.GeneralBasicOCRRequest()
        params = {
            "ImageBase64": get_file_base64(filePath),
            "LanguageType": "zh"
        }
        req.from_json_string(json.dumps(params))

        resp = client.GeneralBasicOCR(req) 
        print(resp.to_json_string()) 

    except TencentCloudSDKException as err: 
        print(err)
Пример #15
0
    def ocr_api(self):
        with open(self.paths["num"], "rb") as f:
            # 转为二进制格式
            base64_data = base64.b64encode(f.read())

        cred = credential.Credential(tencentcloudKeys.secretId,
                                     tencentcloudKeys.secretKey)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)
        req = models.GeneralBasicOCRRequest()
        params = {
            "ImageBase64": str(base64_data, encoding="utf-8"),
        }
        req.from_json_string(json.dumps(params))
        resp = client.GeneralBasicOCR(req)
        result = json.loads(resp.to_json_string())

        # 识别出的文字,已经是最终剩余数量 < >/30
        result_text = result["TextDetections"][0]["DetectedText"]
        result_text = int(result_text.split("/")[0].replace(" ", ""))
        return result_text
Пример #16
0
def api_use(encodestr):
    '''
    调用 api 识别文图片上的文字
    '''
    try:
        cred = credential.Credential(你的密匙)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)

        req = models.GeneralBasicOCRRequest()
        params = '{"ImageBase64":"%s"}' % encodestr
        req.from_json_string(params)

        resp = client.GeneralBasicOCR(req)
        resp = resp.to_json_string()
        # print(resp)
        return resp

    except TencentCloudSDKException as err:
        print(err)
Пример #17
0
def main_handler(event, context):
    logger.info("start main handler")
    if "requestContext" not in event.keys():
        return {"code": 410, "errorMsg": "event is not come from api gateway"}
    if "body" not in event.keys():
        return {
            "isBase64Encoded": False,
            "statusCode": 200,
            "headers": {
                "Content-Type": "text",
                "Access-Control-Allow-Origin": "*"
            },
            "body": "there is no file from api gateway"
        }

    # save api gateway file to local temp file
    logger.info("Start to download images from APIGW")
    time = datetime.datetime.now()
    file_name = '{}'.format(time) + "-test.jpg"
    logger.info("file_name is : %s" % file_name)
    local_path = u'/tmp/{}'.format(file_name)
    logger.info("local_path is : %s" % local_path)
    with open(local_path, 'w') as wfile:
        wfile.write(base64.b64decode(event['body']))

    # start to upload to cos
    secret_id = os.environ.get('TENCENTCLOUD_SECRETID')  # 使用环境变量中的 secretId
    secret_key = os.environ.get('TENCENTCLOUD_SECRETKEY')  # 使用环境变量中的 secretKey
    token = os.environ.get('TENCENTCLOUD_SESSIONTOKEN')
    config = CosConfig(
        Region=bucket_region,
        SecretId=secret_id,
        SecretKey=secret_key,
        Token=token,
    )
    cos_client = CosS3Client(config)
    logger.info("Start to upload images to cos")
    res_cos = cos_client.put_object_from_local_file(Bucket=bucket_upload,
                                                    LocalFilePath=local_path,
                                                    Key='{}'.format(file_name))
    logger.info("upload to cos result is : %s" % res_cos)

    # start to detection
    logger.info("Start to detection")
    try:
        cred = credential.Credential(secret_id, secret_key, token)
        httpProfile = HttpProfile()
        httpProfile.endpoint = "ocr.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)
        req = models.GeneralBasicOCRRequest()
        params = '{"ImageBase64":"%s"}' % event['body']
        req.from_json_string(params)
        resp = client.GeneralBasicOCR(req)
        res_ai = json.loads(resp.to_json_string())
        res_text = " "
        print len(res_ai["TextDetections"])
        for i in range(len(res_ai["TextDetections"])):
            res_text = res_text + str(
                res_ai["TextDetections"][i]["DetectedText"].encode('utf-8'))

    except TencentCloudSDKException as err:
        print(err)

    delete_local_file(local_path)
    response = {
        "isBase64Encoded": False,
        "statusCode": 200,
        "headers": {
            "Content-Type": "text",
            "Access-Control-Allow-Origin": "*"
        },
        "body": res_text
    }

    return response
Пример #18
0
    def login(self):
        """登录"""
        print('正在登录…')
        self.driver.get(self.kanaLink)
        self.del_element(self.driver.find_element_by_class_name('redirect'))
        usernameBox = self.driver.find_element_by_name('username')
        passwordBox = self.driver.find_element_by_name('pwd')

        ac = ActionChains(self.driver)
        ac.send_keys_to_element(usernameBox, self.username)
        ac.send_keys_to_element(passwordBox, self.password).perform()

        cap_correction = {'丫': 'Y', '了': '3', '尺': 'R'}  # 手动纠错

        while True:
            if self.driver.current_url == self.kanaLink:
                break
            self.driver.execute_script(
                'document.getElementById("submitButton").style.display = "none"'
            )
            self.driver.execute_script(
                'document.getElementById("cap").childNodes[1].style.width="150%"'
            )
            frame = self.driver.find_element_by_xpath(
                '/html/body/div[2]/div/form/div[1]/object')
            self.driver.switch_to.frame(frame)
            try:
                a = self.driver.find_element_by_css_selector('[fill="none"]')
                self.del_element(a)
            except:
                sleep(1)
                continue

            self.driver.switch_to.default_content()

            cap = -1
            self.driver.get_screenshot_as_file('a.png')

            try:
                cred = credential.Credential(self.secretId, self.secretKey)
                http_profile = HttpProfile()
                http_profile.endpoint = 'ocr.tencentcloudapi.com'

                client_profile = ClientProfile()
                client_profile.httpProfile = http_profile
                client = ocr_client.OcrClient(cred, 'ap-shanghai',
                                              client_profile)

                req = models.GeneralBasicOCRRequest()
                params = {
                    'ImageBase64':
                    base64.b64encode(open('a.png', 'rb').read()).decode()
                }
                req.from_json_string(json.dumps(params))

                resp = client.GeneralBasicOCR(req)
                a = json.loads(resp.to_json_string())

            except TencentCloudSDKException as err:
                print(err)
            self.driver.execute_script(
                'document.getElementById("cap").childNodes[1].style.width="100%"'
            )
            for i in a['TextDetections']:
                tmp = i['DetectedText']
                s = ''
                for j in tmp:
                    if j != '(' and j != ')':  # 去除诡异括号
                        s += j
                    if j in cap_correction:
                        s += cap_correction[j]
                tmp = s
                if re.match(r'\w\w\w\w', tmp) and len(tmp) == 4:
                    cap = tmp
                    break
            print(cap)
            ac = ActionChains(self.driver)
            ac.send_keys_to_element(self.driver.find_element_by_name("cap"),
                                    cap).perform()
            self.driver.execute_script(
                'document.getElementById("submitButton").style.display = ""')
            self.driver.find_element_by_id("submitButton").click()
            try:
                WebDriverWait(self.driver,
                              10).until(EC.url_to_be(self.kanaLink))
                break
            except TimeoutException:
                pass
        print("登录成功!")
        return
Пример #19
0
def OCR_Core(Image, **kwargs):
    #: PIL.Image
    with open("./important/setting.json", 'r+') as f:
        setting = json.load(f)
    global GALMode, ResultJson  # 为了文字处理使用
    global LastImageValue, OCRText, OCRResultSetting
    if kwargs.get("EXTRA"):
        SelectOCR = OcrAll[OCRResultSetting.get()]
    else:
        SelectOCR = OcrAll[OcrSetting.get()]
        #写入内存,太慢,更换保存本地方式
        Image.save('important/LastImage.jpg')
        with open('important/LastImage.jpg', 'rb+') as f:
            LastImageValue = f.read()
    OCRText = ""
    if SelectOCR == "bd_normal" or SelectOCR == "bd_accurate":
        AppID = setting["userInfo"]["bd_info"]["AppID"]
        APIKey = setting["userInfo"]["bd_info"]["APIKey"]
        SecretKey = setting["userInfo"]["bd_info"]["SecretKey"]
        BDOcr = AipOcr(AppID, APIKey, SecretKey)
        if not GALMode:  #在gal模式下获取下拉框内容
            if SelectOCR == "bd_normal":
                OCRLanguage = setting["defaultOCRLanguage"]
                ResultJson = BDOcr.basicGeneral(
                    LastImageValue, {"language_type": OCRLanguage})  #格式错误
            else:
                ResultJson = BDOcr.basicAccurate(LastImageValue)
        else:
            GALLanguage = setting["defaultGALLanguage"]
            ResultJson = BDOcr.basicGeneral(
                LastImageValue, {"language_type": GALLanguage})  # 格式错误
        if not (ResultJson["words_result_num"]):  # 没有结果
            if GALMode:
                return ""
            else:
                messagebox.showinfo(u"识别错误", u"未识别到文字")
        if ResultJson.get("words_result"):  #能获取结果
            # 文本处理
            for i in ResultJson["words_result"]:
                OCRText += i['words'] + "\n"
            return OCRText
        elif ResultJson.get('error_code') == 14:  #证书失效,检查用户信息
            messagebox.showerror(title="Error",
                                 message=u"检查APPID,APIKEY,以及SECRET_KEY,程序退出")
            sys.exit()
        elif ResultJson.get('error_code') == 17:  #今天超额
            messagebox.showerror(title="Error", message=u"今日次数超额")
            sys.exit()
        else:
            messagebox.showerror(title="Error",
                                 message=u"错误代码:" + str(ResultJson))
            sys.exit()
    else:  #腾讯OCR
        TX_INFO = setting["userInfo"]["tx_info"]
        SecretId = TX_INFO["SecretId"]
        SecretKey = TX_INFO["SecretKey"]
        try:
            cred = credential.Credential(SecretId, SecretKey)
            httpProfile = HttpProfile()
            httpProfile.endpoint = "ocr.tencentcloudapi.com"

            clientProfile = ClientProfile()
            clientProfile.httpProfile = httpProfile
            # zh\auto\jap\kor
            client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)
            params = '{"ImageBase64":"' + str(
                bytes.decode(
                    base64.b64encode(LastImageValue),
                    encoding='utf-8')) + '","LanguageType":"auto"}'  #生成传输参数
            # 可修改
            # GeneralFasterOCR == 通用印刷体识别高速版,没有语言选项,有方位
            # GeneralBasicOCR == 通用印刷体识别,有语言选项,有方位
            # GeneralAccurateOCR == 通用印刷体高精度版,没有语言选项,有方位
            if SelectOCR == "tx_normal":
                req = models.GeneralBasicOCRRequest()
                req.from_json_string(params)
                resp = client.GeneralBasicOCR(req)
            elif SelectOCR == "tx_quick":
                req = models.GeneralFastOCRRequest()
                req.from_json_string(params)
                resp = client.GeneralFastOCR(req)
            else:
                req = models.GeneralAccurateOCRRequest()
                req.from_json_string(params)
                resp = client.GeneralAccurateOCR(req)
            ResultJson = json.loads(resp.to_json_string())  # 获取结果json
            OCRText = ""  # 纯文本
            for i in ResultJson["TextDetections"]:
                OCRText += i["DetectedText"] + "\n"
            return OCRText

        except TencentCloudSDKException as err:
            if err.get_code() == "FailedOperation.ImageNoText":
                if not GALMode:
                    messagebox.showinfo("识别失败", "没有识别到文字")
                return False
    def ImageToString(self, image_path, isUrl=False, high_acc=False):
        # modify by freshyu, 保证只有为True对时候才使用高精度
        high_acc = True if high_acc is True else False

        secret_id = os.environ.get('TC_SECRETID')
        secret_key = os.environ.get('TC_SECRETKEY')

        cred = credential.Credential(secret_id, secret_key)

        httpProfile = HttpProfile()
        httpProfile.endpoint = 'ocr.tencentcloudapi.com'

        clientProfile = ClientProfile()

        clientProfile.httpProfile = httpProfile

        clientProfile.signMethod = "TC3-HMAC-SHA256"
        client = ocr_client.OcrClient(cred, 'ap-guangzhou', clientProfile)
        # modify by freshyu, 增加高精度部分
        req = models.GeneralBasicOCRRequest(
        ) if not high_acc else models.GeneralAccurateOCRRequest()

        param = None
        if isUrl:
            param = '{"ImageUrl":"image_path"}'.replace(
                "image_path", image_path)
            # print(param)
            #param["ImageUrl"]=image_path
        else:
            # print("local image path")
            param = '{"ImageBase64":"ImageEncoder"}'.replace(
                "ImageEncoder", self.ImageEncoder(image_path))

        req.from_json_string(param)

        try:
            # modify by freshyu, 增加高精度部分
            resp = client.GeneralBasicOCR(
                req) if not high_acc else client.GeneralAccurateOCR(req)

            res_ai = json.loads(resp.to_json_string())

            return res_ai
        except Exception as e:
            """
            e.message可能包含以下内容 
            3	错误的请求;其中 message:account abnormal,errorno is:2为账号欠费停服
            4	签名为空
            5	签名串错误
            6	签名中的 APPID/Bucket 与操作目标不匹配
            9	签名过期
            10	APPID 不存在
            11	SecretId 不存在
            12	APPID 和 SecretId 不匹配
            13	重放攻击
            14	签名校验失败
            15	操作太频繁,触发频控
            16	Bucket不存在
            21	无效参数
            23	请求包体过大
            24	没有权限
            25	您购买的资源已用完
            107	鉴权服务内部错误
            108	鉴权服务不可用
            213	内部错误
            -1102	图片解码失败
            -1300	图片为空
            -1301	参数为空
            -1304	参数过长
            -1308	图片下载失败
            -9021	未检测到文本
            -9003	OCR 识别失败
            """
            res = dict()
            res['message'] = e.message

            return res