se compare part 8
Showing
3 changed files
with
186 additions
and
48 deletions
... | @@ -1253,10 +1253,9 @@ SE_SEP_FIELD = [ | ... | @@ -1253,10 +1253,9 @@ SE_SEP_FIELD = [ |
1253 | ('selfEmployedSubType', 'organizationType') | 1253 | ('selfEmployedSubType', 'organizationType') |
1254 | ] | 1254 | ] |
1255 | SE_CORPORATE_FIELD = ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode', | 1255 | SE_CORPORATE_FIELD = ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode', |
1256 | 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate', 'organizationType'] | 1256 | 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] |
1257 | SE_CORPORATE_ALL_FIELD = ['companyName', 'legalRepName', 'firstIdNo', 'businessLicenseNo', 'organizationCreditCode', | 1257 | SE_CORPORATE_ALL_FIELD = ['companyName', 'legalRepName', 'firstIdNo', 'businessLicenseNo', 'organizationCreditCode', |
1258 | 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate', | 1258 | 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] |
1259 | 'organizationType'] | ||
1260 | SE_NEW_FIELD = ['vinNo', 'dealer', 'vehicleTransactionAmount'] | 1259 | SE_NEW_FIELD = ['vinNo', 'dealer', 'vehicleTransactionAmount'] |
1261 | SE_USED_FIELD = ['vinNo', 'vehicleTransactionAmount'] | 1260 | SE_USED_FIELD = ['vinNo', 'vehicleTransactionAmount'] |
1262 | SE_NEW_ADD_FIELD = ['customerName', 'idNum', 'dateOfInvoice'] | 1261 | SE_NEW_ADD_FIELD = ['customerName', 'idNum', 'dateOfInvoice'] |
... | @@ -1281,76 +1280,76 @@ BC_EN = 'Bank Card' | ... | @@ -1281,76 +1280,76 @@ BC_EN = 'Bank Card' |
1281 | DDA_EN = 'DDA' | 1280 | DDA_EN = 'DDA' |
1282 | 1281 | ||
1283 | ID_COMPARE_LOGIC = { | 1282 | ID_COMPARE_LOGIC = { |
1284 | 'customerName': ('姓名', ), | 1283 | 'customerName': ('姓名', 'se_name_compare', {}), |
1285 | 'idNum': ('公民身份号码', ), | 1284 | 'idNum': ('公民身份号码', 'se_common_compare', {}), |
1286 | 'dateOfBirth': ('出生年月', ), | 1285 | 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), |
1287 | 'idExpiryDate': ('有效期限', ), | 1286 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'long': True, 'ocr_split': True, 'input_replace': ''}), |
1288 | 'hukouProvince': ('住址', ), | 1287 | 'hukouProvince': ('住址', 'se_contain_compare', {}), |
1289 | 'hukouCity': ('住址', ), | 1288 | 'hukouCity': ('住址', 'se_contain_compare', {}), |
1290 | } | 1289 | } |
1291 | 1290 | ||
1292 | PP_COMPARE_LOGIC = { | 1291 | PP_COMPARE_LOGIC = { |
1293 | 'customerName': ('英文姓名', ), | 1292 | 'customerName': ('英文姓名', 'se_name_compare', {'is_passport': True}), |
1294 | 'idNum': ('护照号码', ), | 1293 | 'idNum': ('护照号码', 'se_common_compare', {}), |
1295 | 'dateOfBirth': ('出生日期', ), | 1294 | 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': ''}), |
1296 | 'idExpiryDate': ('有效期至', ), | 1295 | 'idExpiryDate': ('有效期至', 'se_date_compare', {'input_replace': ''}), |
1297 | } | 1296 | } |
1298 | 1297 | ||
1299 | EEP_COMPARE_LOGIC = { | 1298 | EEP_COMPARE_LOGIC = { |
1300 | 'customerName': ('中文名', ), | 1299 | 'customerName': ('中文名', 'se_common_compare', {}), |
1301 | 'idNum': ('证件号码', ), | 1300 | 'idNum': ('证件号码', 'se_common_compare', {}), |
1302 | 'dateOfBirth': ('出生日期', ), | 1301 | 'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': '.'}), |
1303 | 'idExpiryDate': ('有效期限', ), | 1302 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': '.'}), |
1304 | } | 1303 | } |
1305 | 1304 | ||
1306 | RP_COMPARE_LOGIC = { | 1305 | RP_COMPARE_LOGIC = { |
1307 | 'customerName': ('姓名', ), | 1306 | 'customerName': ('姓名', 'se_name_compare', {}), |
1308 | 'idNum': ('公民身份号码', ), | 1307 | 'idNum': ('公民身份号码', 'se_common_compare', {}), |
1309 | 'dateOfBirth': ('出生年月', ), | 1308 | 'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}), |
1310 | 'idExpiryDate': ('有效期限', ), | 1309 | 'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': ''}), |
1311 | 'hukouProvince': ('住址', ), | 1310 | 'hukouProvince': ('住址', 'se_contain_compare', {}), |
1312 | 'hukouCity': ('住址', ), | 1311 | 'hukouCity': ('住址', 'se_contain_compare', {}), |
1313 | } | 1312 | } |
1314 | 1313 | ||
1315 | BL_COMPARE_LOGIC = { | 1314 | BL_COMPARE_LOGIC = { |
1316 | 'companyName': ('企业名称', ), | 1315 | 'companyName': ('企业名称', 'se_company_compare', {}), |
1317 | 'legalRepName': ('经营者姓名', ), | 1316 | 'legalRepName': ('经营者姓名', 'se_name_compare', {}), |
1318 | 'firstIdNo': ('注册号', ), | 1317 | 'firstIdNo': ('注册号', 'se_common_compare', {}), |
1319 | 'businessLicenseNo': ('注册号', ), | 1318 | 'businessLicenseNo': ('注册号', 'se_common_compare', {}), |
1320 | 'organizationCreditCode': ('注册号', ), | 1319 | 'organizationCreditCode': ('注册号', 'se_common_compare', {}), |
1321 | 'taxRegistrationCertificateNo': ('注册号', ), | 1320 | 'taxRegistrationCertificateNo': ('注册号', 'se_common_compare', {}), |
1322 | 'establishmentDate': ('成立日期', ), | 1321 | 'establishmentDate': ('成立日期', 'se_date_compare', {'ocr_replace': True}), |
1323 | 'businessLicenseDueDate': ('营业期限', ), | 1322 | 'businessLicenseDueDate': ('营业期限', 'se_date_compare', {'ocr_split': True, 'long': True, 'ocr_replace': True}), |
1324 | 'organizationType': ('企业类型', ), | 1323 | 'organizationType': ('企业类型', 'se_type_compare', {}), |
1325 | 'registeredCapital': ('注册资本', ), | 1324 | 'registeredCapital': ('注册资本', 'se_rmb_compare', {}), |
1326 | } | 1325 | } |
1327 | 1326 | ||
1328 | MVI_COMPARE_LOGIC = { | 1327 | MVI_COMPARE_LOGIC = { |
1329 | 'vinNo': ('车辆识别代码', ), | 1328 | 'vinNo': ('车辆识别代码', 'se_common_compare', {}), |
1330 | 'dealer': ('销方名称', ), | 1329 | 'dealer': ('销方名称', 'se_common_compare', {}), |
1331 | 'vehicleTransactionAmount': ('价税合计小写', ), | 1330 | 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), |
1332 | 'customerName': ('购方名称', ), | 1331 | 'customerName': ('购方名称', 'se_name_compare', {}), |
1333 | 'idNum': ('购买方身份证号或组织机构代码', ), | 1332 | 'idNum': ('购买方身份证号或组织机构代码', 'se_common_compare', {}), |
1334 | 'dateOfInvoice': ('开票日期', ), | 1333 | 'dateOfInvoice': ('开票日期', 'se_date_compare', {}), |
1335 | } | 1334 | } |
1336 | 1335 | ||
1337 | UCI_COMPARE_LOGIC = { | 1336 | UCI_COMPARE_LOGIC = { |
1338 | 'vinNo': ('车架号', ), | 1337 | 'vinNo': ('车架号', 'se_common_compare', {}), |
1339 | 'vehicleTransactionAmount': ('价税合计小写', ), | 1338 | 'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}), |
1340 | 'customerName': ('购方名称', ), | 1339 | 'customerName': ('购方名称', 'se_name_compare', {}), |
1341 | 'idNum': ('购方纳税人识别号', ), | 1340 | 'idNum': ('购方纳税人识别号', 'se_common_compare', {}), |
1342 | } | 1341 | } |
1343 | 1342 | ||
1344 | MVC_COMPARE_LOGIC = { | 1343 | MVC_COMPARE_LOGIC = { |
1345 | 'vinNo': ('9.车辆识别代号/车架号', ), | 1344 | 'vinNo': ('9.车辆识别代号/车架号', 'se_common_compare', {}), |
1346 | # 'customerName': ('姓名/名称', ), | 1345 | # 'customerName': ('姓名/名称', ), |
1347 | # 'idNum': ('身份证明名称/号码', ), | 1346 | # 'idNum': ('身份证明名称/号码', ), |
1348 | # 'date': ('转移登记日期', ), | 1347 | # 'date': ('转移登记日期', ), |
1349 | } | 1348 | } |
1350 | 1349 | ||
1351 | BC_COMPARE_LOGIC = { | 1350 | BC_COMPARE_LOGIC = { |
1352 | 'accountNo': ('CardNum', ), | 1351 | 'accountNo': ('CardNum', 'se_common_compare', {}), |
1353 | 'bankName': ('BankName', ), | 1352 | 'bankName': ('BankName', 'se_common_compare', {}), |
1354 | } | 1353 | } |
1355 | 1354 | ||
1356 | DDA_COMPARE_LOGIC = { | 1355 | DDA_COMPARE_LOGIC = { | ... | ... |
1 | import re | 1 | import re |
2 | from datetime import datetime | 2 | from datetime import datetime |
3 | # from .rmb_lower import rmb_handler | 3 | from .rmb_lower import rmb_handler |
4 | from .rmb_upper import to_rmb_upper | 4 | # from .rmb_upper import to_rmb_upper |
5 | 5 | ||
6 | 6 | ||
7 | class Comparison: | 7 | class Comparison: |
... | @@ -136,6 +136,85 @@ class Comparison: | ... | @@ -136,6 +136,85 @@ class Comparison: |
136 | 136 | ||
137 | return self.build_res(input_str == compare_str), compare_str | 137 | return self.build_res(input_str == compare_str), compare_str |
138 | 138 | ||
139 | def se_name_compare(self, input_str, ocr_str, **kwargs): | ||
140 | if kwargs.get('is_passport'): | ||
141 | input_tmp = input_str.upper().replace(' ', '') | ||
142 | ocr_tmp = ocr_str.upper().replace(' ', '') | ||
143 | if input_tmp.find(ocr_tmp) == -1: | ||
144 | return self.RESULT_N | ||
145 | else: | ||
146 | return self.RESULT_Y | ||
147 | else: | ||
148 | # if re.search(r'[a-zA-Z]]', input_str): | ||
149 | # return self.RESULT_NA, ocr_str | ||
150 | input_s = input_str.translate(self.TRANS) | ||
151 | ocr_s = ocr_str.translate(self.TRANS) | ||
152 | return self.build_res(input_s == ocr_s) | ||
153 | |||
154 | def se_common_compare(self, input_str, ocr_str, **kwargs): | ||
155 | return self.build_res(input_str == ocr_str) | ||
156 | |||
157 | def se_date_compare(self, input_str, ocr_str, **kwargs): | ||
158 | if kwargs.get('long', False): | ||
159 | if '长期' in ocr_str or '永久' in ocr_str: | ||
160 | if input_str in ['2099-12-31', '2099-01-01', '2999-12-31', '2999-01-01']: | ||
161 | return self.RESULT_Y | ||
162 | else: | ||
163 | return self.RESULT_N | ||
164 | if kwargs.get('ocr_split', False): | ||
165 | if '至' in ocr_str: | ||
166 | ocr_str = ocr_str.split('至')[-1] | ||
167 | elif '-' in ocr_str: | ||
168 | ocr_str = ocr_str.split('-')[-1] | ||
169 | if kwargs.get('ocr_replace', False): | ||
170 | ocr_str = ocr_str.replace('年', '-').replace('月', '-').replace('日', '') | ||
171 | if kwargs.get('input_replace') is not None: | ||
172 | input_str = input_str.replace('-', kwargs.get('input_replace')) | ||
173 | return self.build_res(input_str == ocr_str) | ||
174 | |||
175 | def se_contain_compare(self, input_str, ocr_str, **kwargs): | ||
176 | if ocr_str.find(input_str) == -1: | ||
177 | return self.RESULT_N | ||
178 | else: | ||
179 | return self.RESULT_Y | ||
180 | |||
181 | def se_amount_compare(self, input_str, ocr_str, **kwargs): | ||
182 | if input_str == ocr_str: | ||
183 | return self.RESULT_Y | ||
184 | else: | ||
185 | try: | ||
186 | float_input = float(input_str) | ||
187 | float_ocr = float(ocr_str) | ||
188 | except Exception as e: | ||
189 | return self.RESULT_N | ||
190 | else: | ||
191 | return self.build_res(float_ocr == float_input) | ||
192 | |||
193 | def se_company_compare(self, input_str, ocr_str, **kwargs): | ||
194 | input_tmp = re.sub(self.re_obj, '', input_str).strip() | ||
195 | ocr_tmp = re.sub(self.re_obj, '', ocr_str).strip() | ||
196 | return self.build_res(input_tmp == ocr_tmp) | ||
197 | |||
198 | def se_rmb_compare(self, input_str, ocr_str, **kwargs): | ||
199 | try: | ||
200 | ocr_lower = rmb_handler.to_rmb_lower(ocr_str) | ||
201 | res = self.build_res(float(input_str) == ocr_lower) | ||
202 | # input_rmb_upper = to_rmb_upper(float(input_str)) | ||
203 | # res = self.build_res(input_rmb_upper == ocr_str) | ||
204 | except Exception as e: | ||
205 | return self.RESULT_N | ||
206 | else: | ||
207 | return res | ||
208 | |||
209 | def se_type_compare(self, input_str, ocr_str, **kwargs): | ||
210 | for map_tuple in self.TYPE_MAPPING: | ||
211 | if re.search(map_tuple[0], ocr_str) is not None: | ||
212 | compare_str = map_tuple[1] | ||
213 | break | ||
214 | else: | ||
215 | compare_str = self.CSOTH | ||
216 | return self.build_res(input_str == compare_str) | ||
217 | |||
139 | 218 | ||
140 | cp = Comparison() | 219 | cp = Comparison() |
141 | 220 | ... | ... |
... | @@ -2,6 +2,36 @@ import pyodbc | ... | @@ -2,6 +2,36 @@ import pyodbc |
2 | 2 | ||
3 | 3 | ||
4 | hil_sql = """ | 4 | hil_sql = """ |
5 | create table hil_se_comparison_info | ||
6 | ( | ||
7 | id bigint identity primary key, | ||
8 | uniq_seq nvarchar(128) not null, | ||
9 | application_id nvarchar(64) not null, | ||
10 | application_version tinyint default 0 not null, | ||
11 | customer_type nvarchar(16) not null, | ||
12 | first_submmison_date nvarchar(16) not null, | ||
13 | property_doc_policy nvarchar(16), | ||
14 | |||
15 | individual_cus_info nvarchar(max) not null, | ||
16 | corporate_cus_info nvarchar(max), | ||
17 | vehicle_info nvarchar(max) not null, | ||
18 | insurance_info nvarchar(max) not null, | ||
19 | bank_info nvarchar(max) not null, | ||
20 | quotationt_info nvarchar(max) not null, | ||
21 | |||
22 | update_time datetime not null, | ||
23 | create_time datetime not null | ||
24 | ); | ||
25 | |||
26 | create index hil_se_comparison_info_application_id_index | ||
27 | on hil_se_comparison_info (application_id); | ||
28 | |||
29 | create index hil_se_comparison_info_create_time_index | ||
30 | on hil_se_comparison_info (create_time); | ||
31 | |||
32 | create index hil_se_comparison_info_uniq_seq_index | ||
33 | on hil_se_comparison_info (uniq_seq); | ||
34 | |||
5 | create table hil_se_ocr_result | 35 | create table hil_se_ocr_result |
6 | ( | 36 | ( |
7 | id int identity primary key, | 37 | id int identity primary key, |
... | @@ -83,6 +113,36 @@ hil_sql = """ | ... | @@ -83,6 +113,36 @@ hil_sql = """ |
83 | """ | 113 | """ |
84 | 114 | ||
85 | afc_sql = """ | 115 | afc_sql = """ |
116 | create table afc_se_comparison_info | ||
117 | ( | ||
118 | id bigint identity primary key, | ||
119 | uniq_seq nvarchar(128) not null, | ||
120 | application_id nvarchar(64) not null, | ||
121 | application_version tinyint default 0 not null, | ||
122 | customer_type nvarchar(16) not null, | ||
123 | first_submmison_date nvarchar(16) not null, | ||
124 | property_doc_policy nvarchar(16), | ||
125 | |||
126 | individual_cus_info nvarchar(max) not null, | ||
127 | corporate_cus_info nvarchar(max), | ||
128 | vehicle_info nvarchar(max) not null, | ||
129 | insurance_info nvarchar(max) not null, | ||
130 | bank_info nvarchar(max) not null, | ||
131 | quotationt_info nvarchar(max) not null, | ||
132 | |||
133 | update_time datetime not null, | ||
134 | create_time datetime not null | ||
135 | ); | ||
136 | |||
137 | create index afc_se_comparison_info_application_id_index | ||
138 | on afc_se_comparison_info (application_id); | ||
139 | |||
140 | create index afc_se_comparison_info_create_time_index | ||
141 | on afc_se_comparison_info (create_time); | ||
142 | |||
143 | create index afc_se_comparison_info_uniq_seq_index | ||
144 | on afc_se_comparison_info (uniq_seq); | ||
145 | |||
86 | create table afc_se_ocr_result | 146 | create table afc_se_ocr_result |
87 | ( | 147 | ( |
88 | id int identity primary key, | 148 | id int identity primary key, | ... | ... |
-
Please register or sign in to post a comment