def newOcr(filepath, typeP, x): return connecter.OCR(filepath, typeP, x)
def cropToOcr(filePath, recT, typeT, debug=False, isusebaidu=True): ocrResult = {} img = Image.open(filePath) if os.path.exists( jwkj_get_filePath_fileName_fileExt(filePath)[0] + "/tmp/" + jwkj_get_filePath_fileName_fileExt(filePath)[ 1]) == False: os.mkdir( jwkj_get_filePath_fileName_fileExt(filePath)[0] + "/tmp/" + jwkj_get_filePath_fileName_fileExt(filePath)[ 1]) # 加载自识别ocr模型(增值税专票模型)可设置typeT为11加载 for x in recT: sp = img.crop((recT[x][0], recT[x][1], recT[x][0] + recT[x][2], recT[x][1] + recT[x][3])) sFPN = jwkj_get_filePath_fileName_fileExt(filePath)[0] + "/tmp/" + jwkj_get_filePath_fileName_fileExt(filePath)[ 1] + "/" + jwkj_get_filePath_fileName_fileExt(filePath)[ 1] + "_" + x + ".jpg" sp.save(sFPN) if debug == False: # if (x != 'invoiceNo'): # # 测试如此识别并不能修正字体不能识别的问题 isusebaidu = False if isusebaidu: midResult = OcrPic(sFPN) else: print("==============================Using OCR3=========================") midResult = connecter.OCR(sFPN, 'normal', 'verifyCode') # else: # midResult = OcrNoPic(sFPN) print(midResult + ' isUseBaidu: ' + str(isusebaidu)) ocrResult[x] = midResult print(ocrResult) pC = SemanticCorrect.posteriorCrt.posteriorCrt() if typeT == 11 and debug == False: import OcrForVat if ocrResult['invoiceDate'][:4] == '开票日期' or len(ocrResult['invoiceDate']) < 4: recT['invoiceDate'] = OcrForVat.mubanDetectInvoiceDate(filePath)['invoiceDate'] sp = img.crop((recT['invoiceDate'][0], recT['invoiceDate'][1], recT['invoiceDate'][0] + recT['invoiceDate'][2], recT['invoiceDate'][1] + recT['invoiceDate'][3])) sFPN = jwkj_get_filePath_fileName_fileExt(filePath)[0] + "/tmp/" + \ jwkj_get_filePath_fileName_fileExt(filePath)[ 1] + "/" + jwkj_get_filePath_fileName_fileExt(filePath)[ 1] + "_" + 'invoiceDateFix' + ".jpg" sp.save(sFPN) midResult = OcrPic(sFPN) print('invoiceDateFix: ' + midResult) ocrResult['invoiceDate'] = midResult js = InterfaceType.JsonInterface.invoice() if typeT == 11: pC.setVATParaFromVATDict(ocrResult) pC.startVATCrt() js.setValueWithDict(pC.VATdic) jsoni = js.dic else: pC.setTrainTicketParaFromDict(ocrResult) pC.startTrainTicketCrt() js.setValueWithDict(pC.dic) jsoni = js.dic return json.dumps(jsoni).encode().decode("unicode-escape"), json.dumps(ocrResult).encode().decode("unicode-escape")