174d2005 by 周伟奇

Merge branch 'feature/ca_compare' into feature/0611

2 parents f0fd60ab 21cab0c8
......@@ -1057,6 +1057,7 @@ IC_RES_MAPPING = {
# ----------------- compare ---------------------
ENTITY = ['HIL', 'AFC']
CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE']
NO_COMPARE_CUSTOMER_TYPE = ['TCFRE', 'TCIND']
VEHICLE_STATUS = ['PCUSD', 'PCNEW']
APPLICANT_TYPE = ['COAPP', 'CUSTR', 'GAUTR1', 'GAUTR2']
......
......@@ -17,10 +17,10 @@ log_base = '[CA Compare]'
def get_order_dict(src_dict, order_tuple):
if consts.SECOND_ID_TYPE_FIELD in src_dict:
if src_dict.get(consts.SECOND_ID_TYPE_FIELD) not in consts.SECOND_ID_TYPE_COMPARE:
src_dict.pop(consts.SECOND_ID_TYPE_FIELD, None)
src_dict.pop(consts.SECOND_ID_FIELD, None)
# if consts.SECOND_ID_TYPE_FIELD in src_dict:
# if src_dict.get(consts.SECOND_ID_TYPE_FIELD) not in consts.SECOND_ID_TYPE_COMPARE:
# src_dict.pop(consts.SECOND_ID_TYPE_FIELD, None)
# src_dict.pop(consts.SECOND_ID_FIELD, None)
order_dict = OrderedDict({})
for field in order_tuple:
......@@ -29,7 +29,15 @@ 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, has_expiry_date=False, sep_name=None):
def do_not_compare(info_dict, compare_list):
for compare_tuple in compare_list:
info_dict[compare_tuple[4]] = consts.RESULT_NA
if compare_tuple[0] in info_dict:
del info_dict[compare_tuple[0]]
def field_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_set,
has_expiry_date=False, sep_name=None, capital_ignore=False):
is_find = False
ocr_res_str = ocr_res_dict.get(ocr_field)
if ocr_res_str is not None:
......@@ -91,6 +99,7 @@ def field_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_set, has
del info_dict[compare_tuple[0]]
else:
info_dict[compare_tuple[0]] = ocr_output
if not capital_ignore or idx != 1:
res_set.add(compare_res)
if not is_find:
res_set.add(consts.RESULT_N)
......@@ -208,8 +217,10 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
for individual_cus_info in individual_cus_info_list:
order_individual_cus_info = get_order_dict(individual_cus_info, consts.IN_ORDER)
cus_type = order_individual_cus_info.get('customerType')
# 获取sep下营业执照法人代表
if order_individual_cus_info.get('customerType') == consts.CUSTOMER_TYPE[5]:
if cus_type == consts.CUSTOMER_TYPE[5]:
sep_name = order_individual_cus_info.get('customerChineseName')
if isinstance(sep_name, str):
sep_name = sep_name.strip()
......@@ -220,8 +231,9 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
# 个人信息证件
id_type = order_individual_cus_info.get('idType')
if id_type not in consts.ID_TYPE_COMPARE:
continue
if cus_type in consts.NO_COMPARE_CUSTOMER_TYPE or id_type not in consts.ID_TYPE_COMPARE:
do_not_compare(order_individual_cus_info, consts.ITPRC)
else:
ocr_field, compare_list, has_expiry_date = consts.ID_TYPE_COMPARE.get(id_type)
field_compare(order_individual_cus_info, ocr_res_dict, ocr_field, compare_list, res_set,
has_expiry_date=has_expiry_date)
......@@ -229,8 +241,12 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
# 第二证件
second_id_type = order_individual_cus_info.get('secondIdType')
if second_id_type is not None:
if cus_type in consts.NO_COMPARE_CUSTOMER_TYPE or second_id_type not in consts.SECOND_ID_TYPE_COMPARE:
do_not_compare(order_individual_cus_info, consts.SECOND_ITPRC)
else:
second_ocr_field, second_compare_list = consts.SECOND_ID_TYPE_COMPARE.get(second_id_type)
field_compare(order_individual_cus_info, ocr_res_dict, second_ocr_field, second_compare_list, res_set)
field_compare(order_individual_cus_info, ocr_res_dict, second_ocr_field,
second_compare_list, res_set)
# 重新排列
new_dict = OrderedDict({})
second_id_res = order_individual_cus_info.pop(consts.SECOND_ID_RES, consts.RESULT_NA)
......@@ -241,10 +257,9 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
order_individual_cus_info = new_dict
# sep营业执照
if order_individual_cus_info.get('customerType') == consts.CUSTOMER_TYPE[5]:
if cus_type == consts.CUSTOMER_TYPE[5]:
field_compare(order_individual_cus_info, ocr_res_dict, consts.BL_OCR_FIELD, consts.TCSEP, res_set,
sep_name=sep_name)
# field_compare(order_individual_cus_info, ocr_res_dict, consts.BL_OCR_FIELD, consts.TCSEP, res_set)
sep_name=sep_name, capital_ignore=True)
order_individual_cus_info_list.append(order_individual_cus_info)
......
......@@ -109,7 +109,7 @@ class Comparison:
if ocr_str == '' or ocr_str.strip() == '':
return self.RESULT_NA, None
try:
ocr_lower = rmb_handler.to_rmb_lower()
ocr_lower = rmb_handler.to_rmb_lower(ocr_str)
res = self.build_res(float(input_str) == ocr_lower)
# input_rmb_upper = to_rmb_upper(float(input_str))
# res = self.build_res(input_rmb_upper == ocr_str)
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!