# 20180911 ocr데이터 정렬 y축 기준 ocrData = bUtil.sortArrLocation(ocrData) # 문장단위로 for문 sentences = bUtil.appendSentences(ocrData, bannedWords) #bannedword에 상관없이 similar에 사용할 5개 문장 추출 similarSentence = [] for item in ocrData: similarSentence.append(item) if len(similarSentence) == 5: break if flag == "LEARN_N": # 5개 문장으로 DB와 일치하는 notInvoice 확률 측정 ratio, notInvoiceData = bUtil.classifyDocument(similarSentence) # notInvoice 확률이 0.5 이상일경우 notInvoice로 doctype변경후 종료 if ratio > 0.5 and notInvoiceData == "1": obj["docCategory"] = bUtil.selectDocCategory(notInvoiceData) insertBatchLearnList(obj["docCategory"]["DOCTYPE"], flag) print(re.sub('None', "null", json.dumps(obj))) sys.exit(1) # 최종 5개 문장이 추출되면 각문장의 단어를 TBL_OCR_SYMSPELL 에 조회후 없으면 INSERT bUtil.insertOcrSymspell(sentences) # 5개문장의 SID를 EXPORT_SENTENCE_SID 함수를 통해 SID 추출 sentencesSid = bUtil.getDocSid(sentences) # TBL_FORM_MAPPING에 5개문장의 SID를 조회
if not isBanned: sentences.append(item) if len(sentences) == 5: break # 최종 5개 문장이 추출되면 각문장의 단어를 TBL_OCR_SYMSPELL 에 조회후 없으면 INSERT insertOcrSymspell(sentences) # 5개문장의 SID를 EXPORT_SENTENCE_SID 함수를 통해 SID 추출 sentencesSid = getDocSid(sentences) # TBL_FORM_MAPPING에 5개문장의 SID를 조회 formMappingRows = selectFormMapping(sentencesSid) # TBL_DOCUMENT_SENTENCE에 5개의 문장 조회 ratio, documentSentenceDoctype = bUtil.classifyDocument(ocrData) # 20180911 doc type 이 1인 경우(NOT INVOICE)는 바로 리턴 EVAL 안함 1이외의 경우는 레이블 정보 추출 obj = {} if formMappingRows: obj["docCategory"] = selectDocCategory(formMappingRows[0][0]) elif documentSentenceDoctype and ratio > 0.2: obj["docCategory"] = selectDocCategory(documentSentenceDoctype) else: obj["docCategory"] = selectDocCategory(0) # if formMappingRows and formMappingRows[0][0] == 1: # obj["data"] = ocrData # obj["data"] = colLblDefaultValue(obj["data"]) # elif formMappingRows and formMappingRows[0][0] == 0: