diff --git a/src/apps/doc/consts.py b/src/apps/doc/consts.py index f8ef217..e622ddb 100644 --- a/src/apps/doc/consts.py +++ b/src/apps/doc/consts.py @@ -1710,6 +1710,16 @@ ID_COMPARE_LOGIC = { IC_TURE_OR_FALSE: (IC_TURE_OR_FALSE, 'se_common_compare', {}, '身份证件疑似造假,需人工判断'), } +ID_COMPARE_LOGIC_AUTO = { + 'customerName': ('姓名', 'se_name_compare', {}, '身份证姓名与系统不一致'), + 'idNum': ('公民身份号码', 'se_common_compare', {}, '身份证号码与系统不一致'), + 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), + 'idExpiryDate': ('有效期限', 'se_date_compare', {'long': True, 'ocr_split': True, 'input_replace': '', 'today': True, 'delayed_date': 1}, '身份证有效期疑似过期'), + 'hukouProvince': ('住址', 'se_contain_compare', {}, '身份证住址与系统不一致'), + 'hukouCity': ('住址', 'se_contain_compare', {}, '身份证住址与系统不一致'), + IC_TURE_OR_FALSE: (IC_TURE_OR_FALSE, 'se_common_compare', {}, '身份证件疑似造假,需人工判断'), +} + PP_COMPARE_LOGIC = { 'customerName': ('英文姓名', 'se_name_compare', {'is_passport': True}, '护照姓名与系统不一致'), # 1 'idNum': ('护照号码', 'se_common_compare', {}, '护照号码与系统不一致'), # 2 @@ -2053,6 +2063,7 @@ SE_COMPARE_FIELD = { SE_COMPARE_FIELD_AUTO = { BS_EN: (BS_FIELD, BS_COMPARE_LOGIC_AUTO, False), + ID_EN: (IC_OCR_FIELD, ID_COMPARE_LOGIC, True), } diff --git a/src/celery_compare/tasks.py b/src/celery_compare/tasks.py index a4cf451..07c2fb0 100644 --- a/src/celery_compare/tasks.py +++ b/src/celery_compare/tasks.py @@ -2391,8 +2391,11 @@ def se_compare_license(license_en, ocr_res_dict, field_list): return result_field_list, no_ocr_result, field_img_path_dict -def se_compare_license_id(license_en, id_res_list, field_list): - ocr_field, compare_logic, special_expiry_date = consts.SE_COMPARE_FIELD[license_en] +def se_compare_license_id(license_en, id_res_list, field_list, is_auto): + if is_auto: + ocr_field, compare_logic, special_expiry_date = consts.SE_COMPARE_FIELD_AUTO[license_en] + else: + ocr_field, compare_logic, special_expiry_date = consts.SE_COMPARE_FIELD[license_en] is_find = False no_ocr_result = True @@ -2870,7 +2873,7 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list # 身份证先SE正反面,后CA正反面 if license_en == consts.ID_EN: result_field_list, no_ocr_result, field_img_path_dict = se_compare_license_id( - license_en, id_res_list, strip_list) + license_en, id_res_list, strip_list, is_auto) else: result_field_list, no_ocr_result, field_img_path_dict = se_compare_license( license_en, ocr_res_dict, strip_list) diff --git a/src/common/tools/comparison.py b/src/common/tools/comparison.py index ee469a3..3cee81e 100644 --- a/src/common/tools/comparison.py +++ b/src/common/tools/comparison.py @@ -317,7 +317,7 @@ class Comparison: return self.build_res(input_str == ocr_str) @staticmethod - def is_after_today(ocr_str): + def is_after_today(ocr_str, delayed_date): dt_array, _ = tslib.array_to_datetime( np.array([ocr_str, ], copy=False, dtype=np.object_), errors="coerce", @@ -328,7 +328,7 @@ class Comparison: ) dti = DatetimeIndex(dt_array, tz=None, name=None) ts = dti[0] - if isinstance(ts, NaTType) or ts.date() < (datetime.today() + relativedelta(days=8)).date(): + if isinstance(ts, NaTType) or ts.date() < (datetime.today() + relativedelta(days=delayed_date)).date(): return False else: return True @@ -388,7 +388,8 @@ class Comparison: if kwargs.get('input_replace') is not None: input_str = input_str.replace('-', kwargs.get('input_replace')) if kwargs.get('today', False): - return self.build_res(self.is_after_today(ocr_str)) + delayed_date = kwargs.get('delayed_date', 8) + return self.build_res(self.is_after_today(ocr_str, delayed_date)) if kwargs.get('two_year', False): return self.build_res(self.is_predate_two_year(ocr_str)) else: @@ -631,20 +632,6 @@ class Comparison: return self.RESULT_N return self.se_date_compare_2(input_str, ocr_date_set.pop(), three_month=True) - # def se_date_compare_pos(self, input_str, ocr_str, **kwargs): - # try: - # ocr_date = datetime.strptime(ocr_str, "%Y-%m-%d").date() - # today = datetime.now().date() - # if ocr_date < today: - # return self.RESULT_N1 - # elif today <= ocr_date <= (today + timedelta(days=8)): - # return self.RESULT_N2 - # elif ocr_date > (today + timedelta(days=8)): - # return self.RESULT_Y - # except Exception as e: - # return self.RESULT_N - # return self.RESULT_N - # 'long': True, 'ocr_split': True, 'input_replace': '', 'today': True def se_date_compare_pre(self, input_str, ocr_str, **kwargs): if '长期' in ocr_str or '永久' in ocr_str or '***' in ocr_str or '至今' in ocr_str or '年—月—日' in ocr_str \