add qrs compare
Showing
5 changed files
with
135 additions
and
3 deletions
| ... | @@ -1258,6 +1258,7 @@ COMPARE_FIELDS = ( | ... | @@ -1258,6 +1258,7 @@ COMPARE_FIELDS = ( |
| 1258 | HMH_OCR_FIELD, | 1258 | HMH_OCR_FIELD, |
| 1259 | JYPZ_OCR_FIELD, | 1259 | JYPZ_OCR_FIELD, |
| 1260 | HT_FIELD, | 1260 | HT_FIELD, |
| 1261 | QRS_FIELD, | ||
| 1261 | BD_FIELD, | 1262 | BD_FIELD, |
| 1262 | BS_FIELD, | 1263 | BS_FIELD, |
| 1263 | HIL_CONTRACT_1_FIELD, | 1264 | HIL_CONTRACT_1_FIELD, |
| ... | @@ -1271,6 +1272,7 @@ PRE_COMPARE_FIELDS = ( | ... | @@ -1271,6 +1272,7 @@ PRE_COMPARE_FIELDS = ( |
| 1271 | BC_OCR_FIELD, | 1272 | BC_OCR_FIELD, |
| 1272 | HMH_OCR_FIELD, | 1273 | HMH_OCR_FIELD, |
| 1273 | HT_FIELD, | 1274 | HT_FIELD, |
| 1275 | QRS_FIELD, | ||
| 1274 | BD_FIELD, | 1276 | BD_FIELD, |
| 1275 | HIL_CONTRACT_1_FIELD, | 1277 | HIL_CONTRACT_1_FIELD, |
| 1276 | HIL_CONTRACT_2_FIELD, | 1278 | HIL_CONTRACT_2_FIELD, |
| ... | @@ -1605,6 +1607,7 @@ SE_HIL_CON_MAP = { | ... | @@ -1605,6 +1607,7 @@ SE_HIL_CON_MAP = { |
| 1605 | HIL_CONTRACT_3_CLASSIFY: SE_HIL_CON_3_MAP, | 1607 | HIL_CONTRACT_3_CLASSIFY: SE_HIL_CON_3_MAP, |
| 1606 | } | 1608 | } |
| 1607 | 1609 | ||
| 1610 | SE_AFC_CON_QRS_FIELD = ['合同编号'] | ||
| 1608 | SE_AFC_CON_FIELD = ['合同编号-每页', '所购车辆价格-小写-重要条款', '车架号-重要条款', '贷款本金金额-重要条款', '贷款期限-重要条款', | 1611 | SE_AFC_CON_FIELD = ['合同编号-每页', '所购车辆价格-小写-重要条款', '车架号-重要条款', '贷款本金金额-重要条款', '贷款期限-重要条款', |
| 1609 | '车辆贷款本金金额-重要条款', '附加产品融资贷款本金总额-重要条款', '所购车辆价格', '车架号', '经销商', | 1612 | '车辆贷款本金金额-重要条款', '附加产品融资贷款本金总额-重要条款', '所购车辆价格', '车架号', '经销商', |
| 1610 | '贷款本金金额', '车辆贷款本金金额', '附加产品融资贷款本金总额', '贷款期限', '还款账号', '户名', '开户行', | 1613 | '贷款本金金额', '车辆贷款本金金额', '附加产品融资贷款本金总额', '贷款期限', '还款账号', '户名', '开户行', |
| ... | @@ -1700,6 +1703,7 @@ DDA_EN = 'DDA' | ... | @@ -1700,6 +1703,7 @@ DDA_EN = 'DDA' |
| 1700 | HMH_EN = 'Mortgage Waiver Letter' | 1703 | HMH_EN = 'Mortgage Waiver Letter' |
| 1701 | JYPZ_EN = 'Used Car Document' | 1704 | JYPZ_EN = 'Used Car Document' |
| 1702 | AFC_CONTRACT_EN = 'AFC Contract' | 1705 | AFC_CONTRACT_EN = 'AFC Contract' |
| 1706 | AFC_CONTRACT_QRS_EN = '送达地址确认书' | ||
| 1703 | BD_EN = 'Insurance' | 1707 | BD_EN = 'Insurance' |
| 1704 | BS_EN = 'Bank Statement' | 1708 | BS_EN = 'Bank Statement' |
| 1705 | HIL_CONTRACT_1_EN = '售后回租合同' | 1709 | HIL_CONTRACT_1_EN = '售后回租合同' |
| ... | @@ -1989,6 +1993,10 @@ HIL_CONTRACT_3_COMPARE_LOGIC = { | ... | @@ -1989,6 +1993,10 @@ HIL_CONTRACT_3_COMPARE_LOGIC = { |
| 1989 | '承租人签字': ('承租人签字', 'se_contain_compare', {}, '车辆处置协议承租人签字与系统承租人姓名不一致'), | 1993 | '承租人签字': ('承租人签字', 'se_contain_compare', {}, '车辆处置协议承租人签字与系统承租人姓名不一致'), |
| 1990 | } | 1994 | } |
| 1991 | 1995 | ||
| 1996 | HT_QRS_COMPARE_LOGIC = { | ||
| 1997 | '合同编号': ('合同编号', 'se_qrs_compare', {}, '请确认是否提供合格的送达地址确认书'), | ||
| 1998 | } | ||
| 1999 | |||
| 1992 | HT_COMPARE_LOGIC = { | 2000 | HT_COMPARE_LOGIC = { |
| 1993 | '合同编号-每页': ('合同编号-每页', 'se_list_compare', {}, '合同编号与系统不一致'), | 2001 | '合同编号-每页': ('合同编号-每页', 'se_list_compare', {}, '合同编号与系统不一致'), |
| 1994 | # '合同编号-每页(no-asp)': ('合同编号-每页', 'se_list_compare', {'pop_last': True}, '合同编号与系统不一致'), | 2002 | # '合同编号-每页(no-asp)': ('合同编号-每页', 'se_list_compare', {'pop_last': True}, '合同编号与系统不一致'), |
| ... | @@ -2065,6 +2073,7 @@ SE_COMPARE_FIELD = { | ... | @@ -2065,6 +2073,7 @@ SE_COMPARE_FIELD = { |
| 2065 | HMH_EN: (HMH_OCR_FIELD, HMH_COMPARE_LOGIC, False), | 2073 | HMH_EN: (HMH_OCR_FIELD, HMH_COMPARE_LOGIC, False), |
| 2066 | JYPZ_EN: (JYPZ_OCR_FIELD, JYPZ_COMPARE_LOGIC, False), | 2074 | JYPZ_EN: (JYPZ_OCR_FIELD, JYPZ_COMPARE_LOGIC, False), |
| 2067 | AFC_CONTRACT_EN: (HT_FIELD, HT_COMPARE_LOGIC, False), | 2075 | AFC_CONTRACT_EN: (HT_FIELD, HT_COMPARE_LOGIC, False), |
| 2076 | AFC_CONTRACT_QRS_EN: (QRS_FIELD, HT_QRS_COMPARE_LOGIC, False), | ||
| 2068 | BD_EN: (BD_FIELD, BD_COMPARE_LOGIC, False), | 2077 | BD_EN: (BD_FIELD, BD_COMPARE_LOGIC, False), |
| 2069 | BS_EN: (BS_FIELD, BS_COMPARE_LOGIC, False), | 2078 | BS_EN: (BS_FIELD, BS_COMPARE_LOGIC, False), |
| 2070 | HIL_CONTRACT_1_EN: (HIL_CONTRACT_1_FIELD, HIL_CONTRACT_1_COMPARE_LOGIC, False), | 2079 | HIL_CONTRACT_1_EN: (HIL_CONTRACT_1_FIELD, HIL_CONTRACT_1_COMPARE_LOGIC, False), |
| ... | @@ -2074,7 +2083,7 @@ SE_COMPARE_FIELD = { | ... | @@ -2074,7 +2083,7 @@ SE_COMPARE_FIELD = { |
| 2074 | 2083 | ||
| 2075 | SE_COMPARE_FIELD_AUTO = { | 2084 | SE_COMPARE_FIELD_AUTO = { |
| 2076 | BS_EN: (BS_FIELD, BS_COMPARE_LOGIC_AUTO, False), | 2085 | BS_EN: (BS_FIELD, BS_COMPARE_LOGIC_AUTO, False), |
| 2077 | ID_EN: (IC_OCR_FIELD, ID_COMPARE_LOGIC, True), | 2086 | ID_EN: (IC_OCR_FIELD, ID_COMPARE_LOGIC_AUTO, True), |
| 2078 | } | 2087 | } |
| 2079 | 2088 | ||
| 2080 | 2089 | ... | ... |
| ... | @@ -914,8 +914,10 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True, ignore | ... | @@ -914,8 +914,10 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True, ignore |
| 914 | # is_cdfl = True # 车贷分离 | 914 | # is_cdfl = True # 车贷分离 |
| 915 | is_cdfl_bo = False # 车贷分离,主借 | 915 | is_cdfl_bo = False # 车贷分离,主借 |
| 916 | is_cdfl_co = False # 车贷分离,共借 | 916 | is_cdfl_co = False # 车贷分离,共借 |
| 917 | role_count = 0 | ||
| 917 | # province = cms_info.get('province', '') | 918 | # province = cms_info.get('province', '') |
| 918 | for individual_info in cms_info.get('applicantInformation', []): | 919 | for individual_info in cms_info.get('applicantInformation', []): |
| 920 | role_count += 1 | ||
| 919 | all_id_num = [] | 921 | all_id_num = [] |
| 920 | 922 | ||
| 921 | license_dict = {} | 923 | license_dict = {} |
| ... | @@ -1440,6 +1442,10 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True, ignore | ... | @@ -1440,6 +1442,10 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True, ignore |
| 1440 | afc_contract_input.append((consts.SE_AFC_CON_FIELD[19], empty_str)) | 1442 | afc_contract_input.append((consts.SE_AFC_CON_FIELD[19], empty_str)) |
| 1441 | 1443 | ||
| 1442 | contract_info[consts.AFC_CONTRACT_EN] = afc_contract_input | 1444 | contract_info[consts.AFC_CONTRACT_EN] = afc_contract_input |
| 1445 | |||
| 1446 | afc_contract_qrs_input = [(consts.SE_AFC_CON_QRS_FIELD[0], '{0}{1}{2}'.format(role_count, consts.SPLIT_STR, full_no))] | ||
| 1447 | contract_info[consts.AFC_CONTRACT_QRS_EN] = afc_contract_qrs_input | ||
| 1448 | |||
| 1443 | compare_info['contract'] = contract_info | 1449 | compare_info['contract'] = contract_info |
| 1444 | return compare_info, cms_info.get('autoApprovedDetails', {}).get('aaType', ''), is_gsyh | 1450 | return compare_info, cms_info.get('autoApprovedDetails', {}).get('aaType', ''), is_gsyh |
| 1445 | 1451 | ||
| ... | @@ -1460,8 +1466,10 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=Fals | ... | @@ -1460,8 +1466,10 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=Fals |
| 1460 | # 个人信息证件------------------------------------------------------------------------------------------------------ | 1466 | # 个人信息证件------------------------------------------------------------------------------------------------------ |
| 1461 | is_cdfl_bo = False # 车贷分离,主借 | 1467 | is_cdfl_bo = False # 车贷分离,主借 |
| 1462 | is_cdfl_co = False # 车贷分离,共借 | 1468 | is_cdfl_co = False # 车贷分离,共借 |
| 1469 | role_count = 0 | ||
| 1463 | # province = cms_info.get('province', '') | 1470 | # province = cms_info.get('province', '') |
| 1464 | for individual_info in cms_info.get('applicantInformation', []): | 1471 | for individual_info in cms_info.get('applicantInformation', []): |
| 1472 | role_count += 1 | ||
| 1465 | all_id_num = [] | 1473 | all_id_num = [] |
| 1466 | 1474 | ||
| 1467 | license_dict = {} | 1475 | license_dict = {} |
| ... | @@ -1983,6 +1991,9 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=Fals | ... | @@ -1983,6 +1991,9 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=Fals |
| 1983 | afc_contract_input.append((consts.SE_AFC_CON_FIELD[19], empty_str)) | 1991 | afc_contract_input.append((consts.SE_AFC_CON_FIELD[19], empty_str)) |
| 1984 | 1992 | ||
| 1985 | contract_info[consts.AFC_CONTRACT_EN] = afc_contract_input | 1993 | contract_info[consts.AFC_CONTRACT_EN] = afc_contract_input |
| 1994 | |||
| 1995 | afc_contract_qrs_input = [(consts.SE_AFC_CON_QRS_FIELD[0], '{0}{1}{2}'.format(role_count, consts.SPLIT_STR, full_no))] | ||
| 1996 | contract_info[consts.AFC_CONTRACT_QRS_EN] = afc_contract_qrs_input | ||
| 1986 | compare_info['contract'] = contract_info | 1997 | compare_info['contract'] = contract_info |
| 1987 | return compare_info, cms_info.get('applicationVersion', 1), is_gsyh | 1998 | return compare_info, cms_info.get('applicationVersion', 1), is_gsyh |
| 1988 | 1999 | ||
| ... | @@ -2718,6 +2729,46 @@ def se_contract_compare(license_en, ocr_res_dict, strip_list, is_gsyh): | ... | @@ -2718,6 +2729,46 @@ def se_contract_compare(license_en, ocr_res_dict, strip_list, is_gsyh): |
| 2718 | return result_field_list, field_img_path_dict | 2729 | return result_field_list, field_img_path_dict |
| 2719 | 2730 | ||
| 2720 | 2731 | ||
| 2732 | def se_contract_qrs_compare(license_en, ocr_res_dict, strip_list): | ||
| 2733 | ocr_field, compare_logic, _ = consts.SE_COMPARE_FIELD[license_en] | ||
| 2734 | ocr_res_str = ocr_res_dict.get(ocr_field) | ||
| 2735 | |||
| 2736 | result_field_list = [] | ||
| 2737 | field_img_path_dict = dict() | ||
| 2738 | |||
| 2739 | if ocr_res_str is not None: | ||
| 2740 | ocr_res_list = json.loads(ocr_res_str) | ||
| 2741 | |||
| 2742 | contract_num_list = [] | ||
| 2743 | for qrs_res in ocr_res_list: | ||
| 2744 | contract_num_list.append(qrs_res.get('合同编号', '')) | ||
| 2745 | |||
| 2746 | ocr_res = { | ||
| 2747 | '合同编号': contract_num_list | ||
| 2748 | } | ||
| 2749 | |||
| 2750 | for name, value in strip_list: | ||
| 2751 | |||
| 2752 | ocr_str_or_list = ocr_res.get(compare_logic[name][0]) | ||
| 2753 | |||
| 2754 | if isinstance(ocr_str_or_list, list): | ||
| 2755 | ocr_str = json.dumps(ocr_str_or_list, ensure_ascii=False) | ||
| 2756 | else: | ||
| 2757 | ocr_str_or_list = ocr_str_or_list.strip() | ||
| 2758 | ocr_str = ocr_str_or_list | ||
| 2759 | result = getattr(cp, compare_logic[name][1])(value, ocr_str_or_list, **compare_logic[name][2]) | ||
| 2760 | |||
| 2761 | reason = compare_logic[name][3] | ||
| 2762 | img_path = empty_str | ||
| 2763 | error_type = empty_error_type if result == consts.RESULT_Y else ErrorType.OCR.value | ||
| 2764 | result_field_list.append((name, value, result, ocr_str, img_path, error_type, reason)) | ||
| 2765 | else: | ||
| 2766 | for name, value in strip_list: | ||
| 2767 | result_field_list.append((name, value, consts.RESULT_N, empty_str, empty_str, ErrorType.NF.value, | ||
| 2768 | '{0}未找到'.format(license_en))) | ||
| 2769 | |||
| 2770 | return result_field_list, field_img_path_dict | ||
| 2771 | |||
| 2721 | def se_mvc34_compare(license_en, ocr_res_dict, field_list): | 2772 | def se_mvc34_compare(license_en, ocr_res_dict, field_list): |
| 2722 | ocr_field, compare_logic, _ = consts.SE_COMPARE_FIELD[license_en] | 2773 | ocr_field, compare_logic, _ = consts.SE_COMPARE_FIELD[license_en] |
| 2723 | ocr_res_str = ocr_res_dict.get(ocr_field) | 2774 | ocr_res_str = ocr_res_dict.get(ocr_field) |
| ... | @@ -2927,6 +2978,8 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list | ... | @@ -2927,6 +2978,8 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list |
| 2927 | result_field_list, field_img_path_dict = se_mvc34_compare(license_en, ocr_res_dict, strip_list) | 2978 | result_field_list, field_img_path_dict = se_mvc34_compare(license_en, ocr_res_dict, strip_list) |
| 2928 | elif license_en in [consts.HIL_CONTRACT_1_EN, consts.HIL_CONTRACT_2_EN, consts.HIL_CONTRACT_3_EN, consts.AFC_CONTRACT_EN]: | 2979 | elif license_en in [consts.HIL_CONTRACT_1_EN, consts.HIL_CONTRACT_2_EN, consts.HIL_CONTRACT_3_EN, consts.AFC_CONTRACT_EN]: |
| 2929 | result_field_list, field_img_path_dict = se_contract_compare(license_en, ocr_res_dict, strip_list, is_gsyh) | 2980 | result_field_list, field_img_path_dict = se_contract_compare(license_en, ocr_res_dict, strip_list, is_gsyh) |
| 2981 | elif license_en == consts.AFC_CONTRACT_QRS_EN: | ||
| 2982 | result_field_list, field_img_path_dict = se_contract_qrs_compare(license_en, ocr_res_dict, strip_list) | ||
| 2930 | elif license_en == consts.BS_EN: | 2983 | elif license_en == consts.BS_EN: |
| 2931 | result_field_list, field_img_path_dict = se_bs_compare(license_en, ocr_res_dict, strip_list, is_auto) | 2984 | result_field_list, field_img_path_dict = se_bs_compare(license_en, ocr_res_dict, strip_list, is_auto) |
| 2932 | else: | 2985 | else: |
| ... | @@ -2936,8 +2989,11 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list | ... | @@ -2936,8 +2989,11 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list |
| 2936 | for name, value, result, ocr_str, img_path, error_type, cn_reason in result_field_list: | 2989 | for name, value, result, ocr_str, img_path, error_type, cn_reason in result_field_list: |
| 2937 | total_fields += 1 | 2990 | total_fields += 1 |
| 2938 | if result == consts.RESULT_N: | 2991 | if result == consts.RESULT_N: |
| 2939 | # if license_en != consts.MVI_EN or name != consts.SE_NEW_ADD_FIELD[9]: | 2992 | # 确认书N2 |
| 2940 | successful_at_this_level = False | 2993 | if license_en == consts.AFC_CONTRACT_QRS_EN and name == consts.SE_AFC_CON_QRS_FIELD[0] and ocr_str == empty_str: |
| 2994 | pass | ||
| 2995 | else: | ||
| 2996 | successful_at_this_level = False | ||
| 2941 | failed_count += 1 | 2997 | failed_count += 1 |
| 2942 | each_license_failed_count += 1 | 2998 | each_license_failed_count += 1 |
| 2943 | failure_field.append(name) | 2999 | failure_field.append(name) | ... | ... |
| ... | @@ -646,6 +646,20 @@ class Comparison: | ... | @@ -646,6 +646,20 @@ class Comparison: |
| 646 | # input_str = input_str.replace('-', '') | 646 | # input_str = input_str.replace('-', '') |
| 647 | 647 | ||
| 648 | return self.is_after_today_pre(ocr_str) | 648 | return self.is_after_today_pre(ocr_str) |
| 649 | |||
| 650 | def se_qrs_compare(self, input_str, ocr_str_or_list, **kwargs): | ||
| 651 | try: | ||
| 652 | target_count_str, application_id = input_str.split('_') | ||
| 653 | search_count = 0 | ||
| 654 | for item_str in ocr_str_or_list: | ||
| 655 | if item_str == application_id: | ||
| 656 | search_count += 1 | ||
| 657 | if search_count >= int(target_count_str): | ||
| 658 | return self.RESULT_Y | ||
| 659 | else: | ||
| 660 | return self.RESULT_N | ||
| 661 | except Exception as e: | ||
| 662 | return self.RESULT_N | ||
| 649 | 663 | ||
| 650 | 664 | ||
| 651 | cp = Comparison() | 665 | cp = Comparison() | ... | ... |
| ... | @@ -19,8 +19,10 @@ def get_pos_compare_info(pos_info): | ... | @@ -19,8 +19,10 @@ def get_pos_compare_info(pos_info): |
| 19 | custr_name = custr_id = '' | 19 | custr_name = custr_id = '' |
| 20 | 20 | ||
| 21 | # 身份证 | 21 | # 身份证 |
| 22 | role_count = 0 | ||
| 22 | individual_cus_info_list = pos_info.get('individualCusInfo', []) | 23 | individual_cus_info_list = pos_info.get('individualCusInfo', []) |
| 23 | for individual_cus_info in individual_cus_info_list: | 24 | for individual_cus_info in individual_cus_info_list: |
| 25 | role_count += 1 | ||
| 24 | customer_name = individual_cus_info.get('customerName', '').strip() | 26 | customer_name = individual_cus_info.get('customerName', '').strip() |
| 25 | id_num = individual_cus_info.get('idNum', '') | 27 | id_num = individual_cus_info.get('idNum', '') |
| 26 | applicant_type = individual_cus_info.get('applicantType', '') | 28 | applicant_type = individual_cus_info.get('applicantType', '') |
| ... | @@ -177,6 +179,9 @@ def get_pos_compare_info(pos_info): | ... | @@ -177,6 +179,9 @@ def get_pos_compare_info(pos_info): |
| 177 | afc_contract_input.append((consts.AFC_CON_FIELDS[11], empty_str)) | 179 | afc_contract_input.append((consts.AFC_CON_FIELDS[11], empty_str)) |
| 178 | compare_info.setdefault(consts.AFC_CONTRACT_EN, []).append(afc_contract_input) | 180 | compare_info.setdefault(consts.AFC_CONTRACT_EN, []).append(afc_contract_input) |
| 179 | 181 | ||
| 182 | afc_contract_qrs_input = [(consts.AFC_CON_QRS_FIELDS[0], '{0}{1}{2}'.format(role_count, consts.SPLIT_STR, application_id_version))] | ||
| 183 | compare_info.setdefault(consts.AFC_CONTRACT_QRS_EN, []).append(afc_contract_qrs_input) | ||
| 184 | |||
| 180 | return compare_info | 185 | return compare_info |
| 181 | 186 | ||
| 182 | 187 | ||
| ... | @@ -191,6 +196,10 @@ def pre_compare_process(compare_info, ocr_res_dict, id_res_list): | ... | @@ -191,6 +196,10 @@ def pre_compare_process(compare_info, ocr_res_dict, id_res_list): |
| 191 | for field_list in items_list: | 196 | for field_list in items_list: |
| 192 | result_list = pre_compare_license_contract(license_en, ocr_res_dict, field_list) | 197 | result_list = pre_compare_license_contract(license_en, ocr_res_dict, field_list) |
| 193 | compare_result.setdefault(license_en, []).append(result_list) | 198 | compare_result.setdefault(license_en, []).append(result_list) |
| 199 | elif license_en == consts.AFC_CONTRACT_QRS_EN: | ||
| 200 | for field_list in items_list: | ||
| 201 | result_list = pre_compare_license_contract_qrs(license_en, ocr_res_dict, field_list) | ||
| 202 | compare_result.setdefault(license_en, []).append(result_list) | ||
| 194 | else: | 203 | else: |
| 195 | for field_list in items_list: | 204 | for field_list in items_list: |
| 196 | result_list = pre_compare_license(license_en, ocr_res_dict, field_list) | 205 | result_list = pre_compare_license(license_en, ocr_res_dict, field_list) |
| ... | @@ -376,6 +385,42 @@ def pre_compare_license_contract(license_en, ocr_res_dict, field_list): | ... | @@ -376,6 +385,42 @@ def pre_compare_license_contract(license_en, ocr_res_dict, field_list): |
| 376 | return result_field_list | 385 | return result_field_list |
| 377 | 386 | ||
| 378 | 387 | ||
| 388 | def pre_compare_license_contract_qrs(license_en, ocr_res_dict, field_list): | ||
| 389 | ocr_field, compare_logic, no_find_comment = consts.PRE_COMPARE_LOGIC_MAP[license_en] | ||
| 390 | ocr_res_str = ocr_res_dict.get(ocr_field) | ||
| 391 | |||
| 392 | result_field_list = [] | ||
| 393 | |||
| 394 | if ocr_res_str is not None: | ||
| 395 | ocr_res_list = json.loads(ocr_res_str) | ||
| 396 | |||
| 397 | contract_num_list = [] | ||
| 398 | for qrs_res in ocr_res_list: | ||
| 399 | contract_num_list.append(qrs_res.get('合同编号', '')) | ||
| 400 | |||
| 401 | ocr_res = { | ||
| 402 | '合同编号': contract_num_list | ||
| 403 | } | ||
| 404 | |||
| 405 | for name, value in field_list: | ||
| 406 | |||
| 407 | ocr_str_or_list = ocr_res.get(compare_logic[name][0]) | ||
| 408 | |||
| 409 | if isinstance(ocr_str_or_list, list): | ||
| 410 | ocr_str = json.dumps(ocr_str_or_list, ensure_ascii=False) | ||
| 411 | else: | ||
| 412 | ocr_str_or_list = ocr_str_or_list.strip() | ||
| 413 | ocr_str = ocr_str_or_list | ||
| 414 | result = getattr(cp, compare_logic[name][1])(value, ocr_str_or_list, **compare_logic[name][2]) | ||
| 415 | |||
| 416 | comments = compare_logic[name][3] | ||
| 417 | result_field_list.append((value, ocr_str, result, comments)) | ||
| 418 | else: | ||
| 419 | result_field_list.append((empty_str, empty_str, consts.RESULT_N, no_find_comment)) | ||
| 420 | |||
| 421 | return result_field_list | ||
| 422 | |||
| 423 | |||
| 379 | def rebuild_result(compare_result): | 424 | def rebuild_result(compare_result): |
| 380 | # compare_result = { | 425 | # compare_result = { |
| 381 | # "is_pass": True, | 426 | # "is_pass": True, | ... | ... |
| ... | @@ -26,6 +26,7 @@ ASP_SUM_NAME = '附加产品融资贷款本金总金额' | ... | @@ -26,6 +26,7 @@ ASP_SUM_NAME = '附加产品融资贷款本金总金额' |
| 26 | 26 | ||
| 27 | HIL_CON_2_FIELDS = ['合同编号', '合同编号-正文', '车辆识别代码'] | 27 | HIL_CON_2_FIELDS = ['合同编号', '合同编号-正文', '车辆识别代码'] |
| 28 | 28 | ||
| 29 | AFC_CON_QRS_FIELDS = ['合同编号'] | ||
| 29 | AFC_CON_FIELDS = ['合同编号-每页', '合同编号-每页(no-asp)', '车架号-重要条款', '车架号', '还款账号', '户名', '开户行', | 30 | AFC_CON_FIELDS = ['合同编号-每页', '合同编号-每页(no-asp)', '车架号-重要条款', '车架号', '还款账号', '户名', '开户行', |
| 30 | '还款计划表', 'ASP项目详情-重要条款', 'ASP项目详情', '见证人签字', '见证人日期'] | 31 | '还款计划表', 'ASP项目详情-重要条款', 'ASP项目详情', '见证人签字', '见证人日期'] |
| 31 | AFC_HT_DATE_FIELDS = ['主借人日期', '共借人日期', '保证人日期1', '保证人日期2'] | 32 | AFC_HT_DATE_FIELDS = ['主借人日期', '共借人日期', '保证人日期1', '保证人日期2'] |
| ... | @@ -38,6 +39,7 @@ BD_EN = 'Insurance' | ... | @@ -38,6 +39,7 @@ BD_EN = 'Insurance' |
| 38 | HIL_CONTRACT_1_EN = '售后回租合同' | 39 | HIL_CONTRACT_1_EN = '售后回租合同' |
| 39 | HIL_CONTRACT_2_EN = '车辆租赁抵押合同' | 40 | HIL_CONTRACT_2_EN = '车辆租赁抵押合同' |
| 40 | AFC_CONTRACT_EN = '合同' | 41 | AFC_CONTRACT_EN = '合同' |
| 42 | AFC_CONTRACT_QRS_EN = '送达地址确认书' | ||
| 41 | 43 | ||
| 42 | ID_OCR_FIELD = 'ic_ocr' | 44 | ID_OCR_FIELD = 'ic_ocr' |
| 43 | MVI_OCR_FIELD = 'mvi_ocr' | 45 | MVI_OCR_FIELD = 'mvi_ocr' |
| ... | @@ -47,6 +49,7 @@ BD_FIELD = 'bd_ocr' | ... | @@ -47,6 +49,7 @@ BD_FIELD = 'bd_ocr' |
| 47 | HIL_CONTRACT_1_FIELD = 'hil_contract_1_ocr' | 49 | HIL_CONTRACT_1_FIELD = 'hil_contract_1_ocr' |
| 48 | HIL_CONTRACT_2_FIELD = 'hil_contract_2_ocr' | 50 | HIL_CONTRACT_2_FIELD = 'hil_contract_2_ocr' |
| 49 | HT_FIELD = 'ht_ocr' | 51 | HT_FIELD = 'ht_ocr' |
| 52 | QRS_FIELD = 'qrs_ocr' | ||
| 50 | 53 | ||
| 51 | MVI_COMPARE_LOGIC = { | 54 | MVI_COMPARE_LOGIC = { |
| 52 | MVI_FIELDS[0]: ('车辆识别代码', 'se_common_compare', {}, '发票车架号与系统不一致'), | 55 | MVI_FIELDS[0]: ('车辆识别代码', 'se_common_compare', {}, '发票车架号与系统不一致'), |
| ... | @@ -93,6 +96,10 @@ HIL_CONTRACT_2_COMPARE_LOGIC = { | ... | @@ -93,6 +96,10 @@ HIL_CONTRACT_2_COMPARE_LOGIC = { |
| 93 | HIL_CON_2_FIELDS[2]: ('车辆识别代码', 'se_common_compare', {}, '车辆租赁抵押合同车辆识别代码与系统车架号不一致'), | 96 | HIL_CON_2_FIELDS[2]: ('车辆识别代码', 'se_common_compare', {}, '车辆租赁抵押合同车辆识别代码与系统车架号不一致'), |
| 94 | } | 97 | } |
| 95 | 98 | ||
| 99 | QRS_COMPARE_LOGIC = { | ||
| 100 | AFC_CON_QRS_FIELDS[0]: ('合同编号', 'se_qrs_compare', {}, '请确认是否提供合格的送达地址确认书'), | ||
| 101 | } | ||
| 102 | |||
| 96 | HT_COMPARE_LOGIC = { | 103 | HT_COMPARE_LOGIC = { |
| 97 | AFC_CON_FIELDS[0]: ('合同编号-每页', 'se_list_compare', {}, '合同编号与系统不一致'), | 104 | AFC_CON_FIELDS[0]: ('合同编号-每页', 'se_list_compare', {}, '合同编号与系统不一致'), |
| 98 | # '合同编号-每页(no-asp)': ('合同编号-每页', 'se_list_compare', {'pop_last': True}, '合同编号与系统不一致'), | 105 | # '合同编号-每页(no-asp)': ('合同编号-每页', 'se_list_compare', {'pop_last': True}, '合同编号与系统不一致'), |
| ... | @@ -131,6 +138,7 @@ PRE_COMPARE_LOGIC_MAP = { | ... | @@ -131,6 +138,7 @@ PRE_COMPARE_LOGIC_MAP = { |
| 131 | HMH_EN: (HMH_OCR_FIELD, HMH_COMPARE_LOGIC, '请确认是否已完成抵押登记豁免函签署'), | 138 | HMH_EN: (HMH_OCR_FIELD, HMH_COMPARE_LOGIC, '请确认是否已完成抵押登记豁免函签署'), |
| 132 | BD_EN: (BD_FIELD, BD_COMPARE_LOGIC, '请确认是否提供保单'), | 139 | BD_EN: (BD_FIELD, BD_COMPARE_LOGIC, '请确认是否提供保单'), |
| 133 | AFC_CONTRACT_EN: (HT_FIELD, HT_COMPARE_LOGIC, '请确认是否已完成车辆抵押贷款合同签署'), | 140 | AFC_CONTRACT_EN: (HT_FIELD, HT_COMPARE_LOGIC, '请确认是否已完成车辆抵押贷款合同签署'), |
| 141 | AFC_CONTRACT_QRS_EN: (QRS_FIELD, QRS_COMPARE_LOGIC, '请确认是否提供合格的送达地址确认书'), | ||
| 134 | HIL_CONTRACT_1_EN: (HIL_CONTRACT_1_FIELD, HIL_CONTRACT_1_COMPARE_LOGIC, '请确认是否已完成售后回租合同签署'), | 142 | HIL_CONTRACT_1_EN: (HIL_CONTRACT_1_FIELD, HIL_CONTRACT_1_COMPARE_LOGIC, '请确认是否已完成售后回租合同签署'), |
| 135 | HIL_CONTRACT_2_EN: (HIL_CONTRACT_2_FIELD, HIL_CONTRACT_2_COMPARE_LOGIC, '请确认是否已完成车辆租赁抵押合同签署'), | 143 | HIL_CONTRACT_2_EN: (HIL_CONTRACT_2_FIELD, HIL_CONTRACT_2_COMPARE_LOGIC, '请确认是否已完成车辆租赁抵押合同签署'), |
| 136 | } | 144 | } | ... | ... |
-
Please register or sign in to post a comment