aeefa795 by 周伟奇

fix compare

1 parent d931d082
......@@ -24,44 +24,64 @@ def get_order_dict(src_dict, order_tuple):
return order_dict
def field_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_set, diff_idx=None):
def field_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_set):
is_find = False
find_dict = {}
ocr_res_str = ocr_res_dict.get(ocr_field)
if ocr_res_str is not None:
ocr_res_list = json.loads(ocr_res_str)
res_len = len(ocr_res_list)
# res_len = len(ocr_res_list)
for ocr_res in ocr_res_list:
if is_find:
break
for idx, compare_tuple in enumerate(compare_list):
input_str = info_dict.get(compare_tuple[0])
ocr_str = ocr_res.get(compare_tuple[1], '')
compare_res = getattr(cp, compare_tuple[2])(
info_dict.get(compare_tuple[0]), ocr_res.get(compare_tuple[1]), **compare_tuple[3])
if idx == 0 and compare_res == consts.RESULT_N and res_len != 1:
if idx == 0 and compare_res == consts.RESULT_N:
break
is_find = True
find_dict = ocr_res
info_dict[compare_tuple[0] + 'Result'] = compare_res
if input_str is not None:
info_dict[compare_tuple[0]] = ocr_str
res_set.add(compare_res)
if not is_find:
res_set.add(consts.RESULT_N)
for compare_tuple in compare_list:
info_dict[compare_tuple[0] + 'Result'] = consts.RESULT_N
if diff_idx is not None:
diff_field = compare_list[diff_idx][0] + 'Result'
if info_dict.get(diff_field) == consts.RESULT_N:
if is_find:
diff_value = find_dict.get(compare_list[diff_idx][1], consts.RESULT_N)
elif ocr_res_str is not None:
info_dict[compare_tuple[0] + 'Result'] = consts.RESULT_NA
if compare_tuple[0] in info_dict:
info_dict[compare_tuple[0]] = ''
def usedcar_info_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_set):
no_match_vino = []
is_find = False
ocr_res_str = ocr_res_dict.get(ocr_field)
if ocr_res_str is not None:
ocr_res_list = json.loads(ocr_res_str)
for ocr_res in ocr_res_list:
if ocr_res.get(compare_list[diff_idx][1]):
diff_value = ocr_res.get(compare_list[diff_idx][1])
if is_find:
break
else:
diff_value = consts.RESULT_N
else:
diff_value = consts.RESULT_N
info_dict[diff_field] = diff_value
for idx, compare_tuple in enumerate(compare_list):
input_str = info_dict.get(compare_tuple[0])
ocr_str = ocr_res.get(compare_tuple[1], '')
compare_res = getattr(cp, compare_tuple[2])(
info_dict.get(compare_tuple[0]), ocr_res.get(compare_tuple[1]), **compare_tuple[3])
if idx == 0 and compare_res == consts.RESULT_N:
no_match_vino.append(ocr_str)
break
is_find = True
info_dict[compare_tuple[0] + 'Result'] = compare_res
if input_str is not None:
info_dict[compare_tuple[0]] = ocr_str
res_set.add(compare_res)
if not is_find:
res_set.add(consts.RESULT_N)
for compare_tuple in compare_list:
info_dict[compare_tuple[0] + 'Result'] = consts.RESULT_N
if compare_tuple[0] in info_dict:
info_dict[compare_tuple[0]] = ''
return is_find, no_match_vino
@app.task
......@@ -117,7 +137,7 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
order_individual_cus_info = get_order_dict(individual_cus_info, consts.IN_ORDER)
# sep营业执照
if is_sep and order_individual_cus_info.get('companyName') is not None:
field_compare(order_individual_cus_info, ocr_res_dict, consts.BL_OCR_FIELD, consts.TCSEP, res_set, 2)
field_compare(order_individual_cus_info, ocr_res_dict, consts.BL_OCR_FIELD, consts.TCSEP, res_set)
# 个人信息证件
id_type = order_individual_cus_info.get('idType')
......@@ -134,10 +154,26 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
usedcar_info = json.loads(last_obj.usedcar_info)
order_usedcar_info = get_order_dict(usedcar_info, consts.UC_ORDER)
field_compare(order_usedcar_info, ocr_res_dict, consts.MVC_OCR_FIELD, consts.PCUSD_MVC, res_set, 0)
if order_usedcar_info[consts.PCUSD_MVC[0][0] + 'Result'] == consts.RESULT_Y:
field_compare(order_usedcar_info, ocr_res_dict, consts.DL_OCR_FIELD, consts.PCUSD_DL, res_set, 0)
mvc_find, mvc_vinos = usedcar_info_compare(order_usedcar_info, ocr_res_dict, consts.MVC_OCR_FIELD, consts.PCUSD_MVC, res_set)
# if order_usedcar_info[consts.PCUSD_MVC[0][0] + 'Result'] == consts.RESULT_Y:
dl_find, dl_vinos = usedcar_info_compare(order_usedcar_info, ocr_res_dict, consts.DL_OCR_FIELD, consts.PCUSD_DL, res_set)
if mvc_find is True and dl_find is False:
vino = dl_vinos[0] if len(dl_vinos) > 0 else ''
order_usedcar_info[consts.PCUSD_MVC[0][0]] = vino
elif mvc_find is False and dl_find is True:
vino = mvc_vinos[0] if len(mvc_vinos) > 0 else ''
order_usedcar_info[consts.PCUSD_MVC[0][0]] = vino
order_usedcar_info[consts.PCUSD_MVC[0][0] + 'Result'] = consts.RESULT_N
elif mvc_find is False and dl_find is False:
vino_list = []
if len(mvc_vinos) > 0:
vino_list.append(mvc_vinos[0])
if len(dl_vinos) > 0:
vino_list.append(dl_vinos[0])
vino = '、'.join(vino_list)
order_usedcar_info[consts.PCUSD_MVC[0][0]] = vino
comparison_res['OCR_Input']['usedCarInfo'] = order_usedcar_info
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!