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)
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))
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)
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 []
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
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)
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
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
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
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)
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
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)
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)
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)
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
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)
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
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
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