f0fd60ab by 周伟奇

Merge branch 'feature/ca_compare' into feature/0611

2 parents 75d06bfe 02829c89
......@@ -1136,34 +1136,35 @@ ITRES = [
]
ID_TYPE_COMPARE = {
'ITPRC': [IC_OCR_FIELD, ITPRC],
'ITPSP': [PP_OCR_FIELD, ITPSP],
'ITHKM': [EEP_OCR_FIELD, ITHKM_ITTID],
'ITTID': [EEP_OCR_FIELD, ITHKM_ITTID],
'ITRES': [RP_OCR_FIELD, ITRES],
'ITPRC': [IC_OCR_FIELD, ITPRC, True],
'ITPSP': [PP_OCR_FIELD, ITPSP, False],
'ITHKM': [EEP_OCR_FIELD, ITHKM_ITTID, False],
'ITTID': [EEP_OCR_FIELD, ITHKM_ITTID, False],
'ITRES': [RP_OCR_FIELD, ITRES, True],
}
ID_RES = 'idNumResult'
SECOND_ID_TYPE_FIELD = 'secondIdType'
SECOND_ID_FIELD = 'secondIdNum'
SECOND_ID_RES = 'secondIdNumResult'
SECOND_ITPRC = [
('secondIdNum', '公民身份号码', 'common_compare', {}, SECOND_ID_RES),
(SECOND_ID_FIELD, '公民身份号码', 'common_compare', {}, SECOND_ID_RES),
]
# 护照
SECOND_ITPSP = [
('secondIdNum', '护照号码', 'common_compare', {}, SECOND_ID_RES),
(SECOND_ID_FIELD, '护照号码', 'common_compare', {}, SECOND_ID_RES),
]
# 港澳台通行证
SECOND_ITHKM_ITTID = [
('secondIdNum', '证件号码', 'common_compare', {}, SECOND_ID_RES),
(SECOND_ID_FIELD, '证件号码', 'common_compare', {}, SECOND_ID_RES),
]
# 居住证
SECOND_ITRES = [
('secondIdNum', '公民身份号码', 'common_compare', {}, SECOND_ID_RES),
(SECOND_ID_FIELD, '公民身份号码', 'common_compare', {}, SECOND_ID_RES),
]
SECOND_ID_TYPE_COMPARE = {
......@@ -1219,14 +1220,15 @@ RESULT_Y = 'Y'
RESULT_N = 'N'
RESULT_NA = 'NA'
IN_ORDER = ('applicantType', 'idType', 'secondIdType', 'customerType', 'customerChineseName', 'idNum', 'secondIdNum',
"idExpiryDate", "dateOfBirth", 'companyName', "registeredCapital", 'selfEmployedSubType',)
IN_ORDER = ('applicantType', 'idType', SECOND_ID_TYPE_FIELD, 'customerType', 'customerChineseName', 'idNum',
SECOND_ID_FIELD, "idExpiryDate", "dateOfBirth", 'companyName', "registeredCapital", 'selfEmployedSubType',)
UC_ORDER = ('vinNo', 'manufactureDate', 'firstRegistrationDate')
CO_ORDER = ('customerType', 'customerChineseName', 'legalRepName', 'idNum', 'businessLicenseNo', 'taxRegistrationCode',
'incorporationDate', 'businessLicenseDueDate', 'capitalRegAmount')
PREFIX_MVC = 'GB'
PREFIX_DL = 'DL'
PREFIX_MVC = 'G'
PREFIX_DL = 'V'
SPLIT = ';'
# --------------- DDA 保存图片 --------------------
DDA_FIELD = 'DDA'
......
......@@ -17,11 +17,15 @@ 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)
order_dict = OrderedDict({})
for field in order_tuple:
value = src_dict.get(field)
if value is not None:
order_dict[field] = value
if field in src_dict:
order_dict[field] = src_dict[field]
return order_dict
......@@ -30,33 +34,33 @@ def field_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_set, has
ocr_res_str = ocr_res_dict.get(ocr_field)
if ocr_res_str is not None:
ocr_res_list = json.loads(ocr_res_str)
length = len(ocr_res_list)
# length = len(ocr_res_list)
# # sep营业执照根据法人过滤
# if isinstance(sep_name, str):
# tmp_list = []
# for ocr_res in ocr_res_list:
# ocr_sep_name = ocr_res.get(consts.LEGAL_REP_NAME)
# if isinstance(ocr_sep_name, str) and ocr_sep_name == sep_name:
# tmp_list.append(ocr_res)
# else:
# tmp_list = ocr_res_list
#
# length = len(tmp_list)
# sep营业执照根据法人过滤
if isinstance(sep_name, str):
tmp_list = []
for ocr_res in ocr_res_list:
ocr_sep_name = ocr_res.get(consts.LEGAL_REP_NAME)
if isinstance(ocr_sep_name, str) and ocr_sep_name == sep_name:
tmp_list.append(ocr_res)
else:
tmp_list = ocr_res_list
length = len(tmp_list)
# 过期期限特殊处理
if has_expiry_date:
expiry_dates = []
key = compare_list[2][1]
# for ocr_res in tmp_list:
for ocr_res in ocr_res_list:
for ocr_res in tmp_list:
# for ocr_res in ocr_res_list:
if ocr_res.get(key):
expiry_dates.append(ocr_res.get(key))
else:
expiry_dates = []
# for ocr_res in tmp_list:
for ocr_res in ocr_res_list:
for ocr_res in tmp_list:
# for ocr_res in ocr_res_list:
if is_find:
break
for idx, compare_tuple in enumerate(compare_list):
......@@ -204,29 +208,29 @@ 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)
# # 获取sep下营业执照法人代表
# if order_individual_cus_info.get('customerType') == consts.CUSTOMER_TYPE[5]:
# sep_name = order_individual_cus_info.get('customerChineseName')
# if isinstance(sep_name, str):
# sep_name = sep_name.strip()
# if sep_name == '':
# sep_name = None
# else:
# sep_name = None
# 获取sep下营业执照法人代表
if order_individual_cus_info.get('customerType') == consts.CUSTOMER_TYPE[5]:
sep_name = order_individual_cus_info.get('customerChineseName')
if isinstance(sep_name, str):
sep_name = sep_name.strip()
if sep_name == '':
sep_name = None
else:
sep_name = None
# 个人信息证件
id_type = order_individual_cus_info.get('idType')
compare_info_list = consts.ID_TYPE_COMPARE.get(id_type)
if compare_info_list is not None:
field_compare(order_individual_cus_info, ocr_res_dict, compare_info_list[0], compare_info_list[1],
res_set, has_expiry_date=True)
if id_type not in consts.ID_TYPE_COMPARE:
continue
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)
# 第二证件
second_id_type = order_individual_cus_info.get('secondIdType')
second_compare_info_list = consts.SECOND_ID_TYPE_COMPARE.get(second_id_type)
if second_compare_info_list is not None:
field_compare(order_individual_cus_info, ocr_res_dict, second_compare_info_list[0],
second_compare_info_list[1], res_set)
if second_id_type is not None:
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)
# 重新排列
new_dict = OrderedDict({})
second_id_res = order_individual_cus_info.pop(consts.SECOND_ID_RES, consts.RESULT_NA)
......@@ -238,9 +242,9 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
# sep营业执照
if order_individual_cus_info.get('customerType') == 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)
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)
order_individual_cus_info_list.append(order_individual_cus_info)
......@@ -257,39 +261,27 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
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[-1] if len(dl_vinos) > 0 else ''
# order_usedcar_info[consts.PCUSD_MVC[0][0]] = '{0}: {1}'.format(consts.PREFIX_MVC, vino)
# order_usedcar_info[consts.PCUSD_MVC[0][4]] = consts.RESULT_N
# elif mvc_find is False and dl_find is True:
# vino = mvc_vinos[-1] if len(mvc_vinos) > 0 else ''
# order_usedcar_info[consts.PCUSD_MVC[0][0]] = '{0}: {1}'.format(consts.PREFIX_DL, vino)
# order_usedcar_info[consts.PCUSD_MVC[0][4]] = consts.RESULT_N
# elif mvc_find is False and dl_find is False:
# vino_list = []
# mvc_vino = mvc_vinos[-1] if len(mvc_vinos) > 0 else ''
# dl_vino = dl_vinos[-1] if len(dl_vinos) > 0 else ''
# vino_list.append('{0}: {1}'.format(consts.PREFIX_MVC, mvc_vino))
# vino_list.append(dl_vinos[-1])
# vino = '、'.join('{0}: {1}'.format(consts.PREFIX_DL, dl_vino))
# order_usedcar_info[consts.PCUSD_MVC[0][0]] = vino
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
vino = dl_vinos[-1] if len(dl_vinos) > 0 else ''
order_usedcar_info[consts.PCUSD_MVC[0][0]] = '{0}-{1} {2} {3}-{4}'.format(
consts.PREFIX_MVC, consts.RESULT_Y, consts.SPLIT, consts.PREFIX_DL, vino)
order_usedcar_info[consts.PCUSD_MVC[0][4]] = consts.RESULT_N
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
vino = mvc_vinos[-1] if len(mvc_vinos) > 0 else ''
order_usedcar_info[consts.PCUSD_MVC[0][0]] = '{0}-{1} {2} {3}-{4}'.format(
consts.PREFIX_MVC, vino, consts.SPLIT, consts.PREFIX_DL, consts.RESULT_Y)
order_usedcar_info[consts.PCUSD_MVC[0][4]] = 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)
if len(mvc_vinos) == 0 and len(dl_vinos) == 0:
order_usedcar_info[consts.PCUSD_MVC[0][0]] = None
order_usedcar_info[consts.PCUSD_MVC[0][4]] = consts.RESULT_NA
else:
mvc_vino = mvc_vinos[-1] if len(mvc_vinos) > 0 else ''
dl_vino = dl_vinos[-1] if len(dl_vinos) > 0 else ''
vino = '{0}-{1} {2} {3}-{4}'.format(
consts.PREFIX_MVC, mvc_vino, consts.SPLIT, consts.PREFIX_DL, dl_vino)
order_usedcar_info[consts.PCUSD_MVC[0][0]] = vino
order_usedcar_info[consts.PCUSD_MVC[0][4]] = consts.RESULT_N
comparison_res['OCR_Input']['usedCarInfo'] = order_usedcar_info
......
import re
from datetime import datetime
# from .rmb_lower import rmb_handler
from .rmb_upper import to_rmb_upper
from .rmb_lower import rmb_handler
# from .rmb_upper import to_rmb_upper
class Comparison:
......@@ -109,18 +109,18 @@ class Comparison:
if ocr_str == '' or ocr_str.strip() == '':
return self.RESULT_NA, None
try:
# ocr_lower = rmb_handler.to_rmb_lower()
# 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)
ocr_lower = rmb_handler.to_rmb_lower()
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)
except Exception as e:
return self.RESULT_N, None
else:
if res == self.RESULT_Y:
return res, input_str
else:
# return res, ocr_lower
return res, None
return res, ocr_lower
# return res, None
def type_compare(self, input_str, ocr_str, idx, **kwargs):
if not isinstance(ocr_str, str) or not isinstance(input_str, str):
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!