rebuild result
Showing
2 changed files
with
146 additions
and
31 deletions
| ... | @@ -658,6 +658,13 @@ CLASSIFY_HEADER_LIST = [ | ... | @@ -658,6 +658,13 @@ CLASSIFY_HEADER_LIST = [ |
| 658 | OTHER_CLASSIFY = 2 | 658 | OTHER_CLASSIFY = 2 |
| 659 | 659 | ||
| 660 | # 身份证 | 660 | # 身份证 |
| 661 | IC_MAP_0 = (('姓名', '姓名'), | ||
| 662 | ('公民身份号码', '公民身份号码'), | ||
| 663 | ('出生年月', '出生'), | ||
| 664 | ('住址', '住址'), | ||
| 665 | ('性别', '性别'), | ||
| 666 | ('民族', '民族'),) | ||
| 667 | IC_MAP_1 = (('签发机关', '签发机关'),) | ||
| 661 | IC_CN_NAME = '身份证' | 668 | IC_CN_NAME = '身份证' |
| 662 | IC_CLASSIFY = 33 | 669 | IC_CLASSIFY = 33 |
| 663 | IC_TURE_OR_FALSE = '真伪' | 670 | IC_TURE_OR_FALSE = '真伪' |
| ... | @@ -670,6 +677,12 @@ IC_FIELD_ORDER_0 = ((IC_TURE_OR_FALSE, '身份证'), | ... | @@ -670,6 +677,12 @@ IC_FIELD_ORDER_0 = ((IC_TURE_OR_FALSE, '身份证'), |
| 670 | ('民族', '民族'),) | 677 | ('民族', '民族'),) |
| 671 | IC_FIELD_ORDER_1 = ((IC_TURE_OR_FALSE, '身份证'), ('有效期限', '有效期限'), ('签发机关', '签发机关'),) | 678 | IC_FIELD_ORDER_1 = ((IC_TURE_OR_FALSE, '身份证'), ('有效期限', '有效期限'), ('签发机关', '签发机关'),) |
| 672 | # 居住证 | 679 | # 居住证 |
| 680 | RP_MAP_0 = (('姓名', '姓名'), | ||
| 681 | ('公民身份号码', '公民身份号码'), | ||
| 682 | ('出生年月', '出生'), | ||
| 683 | ('住址', '住址'), | ||
| 684 | ('性别', '性别'),) | ||
| 685 | RP_MAP_1 = (('签发机关', '签发机关'), ('通行证号码', '通行证号码')) | ||
| 673 | RP_CN_NAME = '居住证' | 686 | RP_CN_NAME = '居住证' |
| 674 | RP_CLASSIFY = 10087 | 687 | RP_CLASSIFY = 10087 |
| 675 | RP_FIELD_ORDER_0 = (('姓名', '姓名'), | 688 | RP_FIELD_ORDER_0 = (('姓名', '姓名'), | ... | ... |
| ... | @@ -246,6 +246,59 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -246,6 +246,59 @@ class Command(BaseCommand, LoggerMixin): |
| 246 | # contract_result.setdefault(page_num, []).append(rebuild_page_info) | 246 | # contract_result.setdefault(page_num, []).append(rebuild_page_info) |
| 247 | contract_result.setdefault(classify, dict()).setdefault(page_num, []).append(rebuild_page_info) | 247 | contract_result.setdefault(classify, dict()).setdefault(page_num, []).append(rebuild_page_info) |
| 248 | 248 | ||
| 249 | # def rebuild_result(self, ocr_data, classify, img_path): | ||
| 250 | # license_data = ocr_data.get('data') | ||
| 251 | # if not license_data: | ||
| 252 | # return | ||
| 253 | # if classify == consts.IC_CLASSIFY: | ||
| 254 | # rebuild_data_dict = {} | ||
| 255 | # card_type = license_data.get('type', '') | ||
| 256 | # is_ic = card_type.startswith('身份证') | ||
| 257 | # is_info_side = card_type.endswith('信息面') | ||
| 258 | # rebuild_data_dict['类别'] = '0' if is_ic else '1' | ||
| 259 | # if is_ic: | ||
| 260 | # field_map = consts.IC_MAP_0 if is_info_side else consts.IC_MAP_1 | ||
| 261 | # else: | ||
| 262 | # field_map = consts.RP_MAP_0 if is_info_side else consts.RP_MAP_1 | ||
| 263 | # for write_field, search_field in field_map: | ||
| 264 | # rebuild_data_dict[write_field] = license_data.get('words_result', {}).get(search_field, {}).get('words', '') | ||
| 265 | # if not is_info_side: | ||
| 266 | # start_time = license_data.get('words_result', {}).get('签发日期', {}).get('words', '') | ||
| 267 | # end_time = license_data.get('words_result', {}).get('失效日期', {}).get('words', '') | ||
| 268 | # rebuild_data_dict['有效期限'] = '{0}-{1}'.format(start_time, end_time) | ||
| 269 | # return [rebuild_data_dict] | ||
| 270 | # elif classify == consts.MVC_CLASSIFY: | ||
| 271 | # # license_data[consts.IMG_PATH_KEY] = img_path | ||
| 272 | # rebuild_data_dict = {} | ||
| 273 | # mvc_page = license_data.pop('page', 'VehicleRCI') | ||
| 274 | # mvc_res = license_data.pop('results', {}) | ||
| 275 | # if mvc_page == 'VehicleRegArea': | ||
| 276 | # rebuild_data_dict['机动车登记证书编号'] = mvc_res.get('机动车登记证书编号', {}).get('words', '') | ||
| 277 | # for register_info in mvc_res.get('登记信息', []): | ||
| 278 | # register_info.pop('register_type', None) | ||
| 279 | # register_info.pop('register_type_name', None) | ||
| 280 | # for cn_key, detail_dict in register_info.items(): | ||
| 281 | # rebuild_data_dict.setdefault(cn_key, []).append( | ||
| 282 | # detail_dict.get('words', '')) | ||
| 283 | # else: | ||
| 284 | # for cn_key, detail_dict in mvc_res.items(): | ||
| 285 | # rebuild_data_dict[cn_key] = detail_dict.get('words', '') | ||
| 286 | # del mvc_res | ||
| 287 | # return [rebuild_data_dict] | ||
| 288 | # elif classify == consts.MVI_CLASSIFY: | ||
| 289 | # rebuild_data_dict = {} | ||
| 290 | # mvi_res = license_data.pop('result', {}) | ||
| 291 | # for en_key, detail_dict in mvi_res.items(): | ||
| 292 | # rebuild_data_dict[detail_dict.get('chinese_key', '')] = detail_dict.get('words', '') | ||
| 293 | # return [rebuild_data_dict] | ||
| 294 | # elif classify == consts.UCI_CLASSIFY: | ||
| 295 | # rebuild_data_dict = {} | ||
| 296 | # mvi_res = license_data.pop('result', {}) | ||
| 297 | # for en_key, detail_dict in mvi_res.items(): | ||
| 298 | # rebuild_data_dict[detail_dict.get('chinese_key', '')] = detail_dict.get('words', '') | ||
| 299 | # return [rebuild_data_dict] | ||
| 300 | |||
| 301 | |||
| 249 | 302 | ||
| 250 | def license1_process(self, ocr_data, license_summary, classify, res_list, pno, ino, part_idx, img_path, do_dda, dda_id_bc_mapping): | 303 | def license1_process(self, ocr_data, license_summary, classify, res_list, pno, ino, part_idx, img_path, do_dda, dda_id_bc_mapping): |
| 251 | # 类别:'0'身份证, '1'居住证 | 304 | # 类别:'0'身份证, '1'居住证 |
| ... | @@ -253,7 +306,8 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -253,7 +306,8 @@ class Command(BaseCommand, LoggerMixin): |
| 253 | if not license_data: | 306 | if not license_data: |
| 254 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_EMPTY)) | 307 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_EMPTY)) |
| 255 | return | 308 | return |
| 256 | if classify == consts.INSURANCE_CLASSIFY: # 保单处理 | 309 | # 保单 |
| 310 | if classify == consts.INSURANCE_CLASSIFY: | ||
| 257 | product_result = ['', '', ''] | 311 | product_result = ['', '', ''] |
| 258 | for product in license_data.get('result', {}).get('productList', []): | 312 | for product in license_data.get('result', {}).get('productList', []): |
| 259 | name = product.get('name', {}).get('words', '') | 313 | name = product.get('name', {}).get('words', '') |
| ... | @@ -281,7 +335,8 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -281,7 +335,8 @@ class Command(BaseCommand, LoggerMixin): |
| 281 | '特别约定第一受益人': special, | 335 | '特别约定第一受益人': special, |
| 282 | } | 336 | } |
| 283 | license_summary.setdefault(classify, []).append(insurance_ocr_result) | 337 | license_summary.setdefault(classify, []).append(insurance_ocr_result) |
| 284 | elif classify == consts.DDA_CLASSIFY: # DDA处理 | 338 | # DDA |
| 339 | elif classify == consts.DDA_CLASSIFY: | ||
| 285 | pro = ocr_data.get('confidence', 0) | 340 | pro = ocr_data.get('confidence', 0) |
| 286 | if pro < consts.DDA_PRO_MIN: | 341 | if pro < consts.DDA_PRO_MIN: |
| 287 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_EMPTY)) | 342 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_EMPTY)) |
| ... | @@ -291,40 +346,80 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -291,40 +346,80 @@ class Command(BaseCommand, LoggerMixin): |
| 291 | dda_ocr_result[consts.DDA_PRO] = pro | 346 | dda_ocr_result[consts.DDA_PRO] = pro |
| 292 | dda_ocr_result[consts.IMG_PATH_KEY] = img_path | 347 | dda_ocr_result[consts.IMG_PATH_KEY] = img_path |
| 293 | license_summary.setdefault(classify, []).append(dda_ocr_result) | 348 | license_summary.setdefault(classify, []).append(dda_ocr_result) |
| 294 | elif classify == consts.HMH_CLASSIFY: # 抵押登记豁免函 | 349 | # 抵押登记豁免函 |
| 295 | hmh_ocr_result = {key: value.get('words', '') for key, value in license_data.items()} | 350 | elif classify == consts.HMH_CLASSIFY: |
| 351 | hmh_ocr_result = {key: value.get('words', '') for key, value in license_data.get('words_result', {}).items()} | ||
| 296 | license_summary.setdefault(classify, []).append(hmh_ocr_result) | 352 | license_summary.setdefault(classify, []).append(hmh_ocr_result) |
| 297 | elif classify == consts.JYPZ_CLASSIFY: # 二手车交易凭证 | 353 | # 二手车交易凭证 |
| 354 | elif classify == consts.JYPZ_CLASSIFY: | ||
| 298 | jypz_ocr_result = {key: value.get('words', '') for key, value in license_data.get('result', {}).items()} | 355 | jypz_ocr_result = {key: value.get('words', '') for key, value in license_data.get('result', {}).items()} |
| 299 | license_summary.setdefault(classify, []).append(jypz_ocr_result) | 356 | license_summary.setdefault(classify, []).append(jypz_ocr_result) |
| 300 | elif classify == consts.MVC_CLASSIFY: # 车辆登记证 3/4页结果整合 | 357 | # 车辆登记证 3/4页结果整合 |
| 301 | for mvc_dict in license_data: | 358 | elif classify == consts.MVC_CLASSIFY: |
| 302 | mvc_dict[consts.IMG_PATH_KEY] = img_path | 359 | rebuild_data_dict = {} |
| 303 | try: | 360 | rebuild_data_dict[consts.IMG_PATH_KEY] = img_path |
| 304 | mvc_page = mvc_dict.pop('page') | 361 | mvc_page = license_data.pop('page', 'VehicleRCI') |
| 305 | except Exception as e: | 362 | mvc_res = license_data.pop('results', {}) |
| 306 | pass | 363 | if mvc_page == 'VehicleRegArea': |
| 307 | else: | 364 | rebuild_data_dict['机动车登记证书编号'] = mvc_res.get('机动车登记证书编号', {}).get('words', '') |
| 308 | if mvc_page == 'VehicleRegArea': | 365 | for register_info in mvc_res.get('登记信息', []): |
| 309 | mvc_res = mvc_dict.pop('results', {}) | 366 | register_info.pop('register_type', None) |
| 310 | mvc_dict['机动车登记证书编号'] = mvc_res.get('register_no', {}).get('words', '') | 367 | register_info.pop('register_type_name', None) |
| 311 | for register_info in mvc_res.get('register_info', []): | 368 | for cn_key, detail_dict in register_info.items(): |
| 312 | for detail_dict in register_info.get('details', {}).values(): | 369 | rebuild_data_dict.setdefault(cn_key, []).append( |
| 313 | mvc_dict.setdefault(detail_dict.get('chinese_key', '未知'), []).append( | 370 | detail_dict.get('words', '')) |
| 314 | detail_dict.get('words', '')) | 371 | else: |
| 315 | del mvc_res | 372 | for cn_key, detail_dict in mvc_res.items(): |
| 316 | license_summary.setdefault(classify, []).extend(license_data) | 373 | rebuild_data_dict[cn_key] = detail_dict.get('words', '') |
| 374 | del mvc_res | ||
| 375 | license_summary.setdefault(classify, []).append(rebuild_data_dict) | ||
| 376 | |||
| 377 | |||
| 378 | # for mvc_dict in license_data: | ||
| 379 | # mvc_dict[consts.IMG_PATH_KEY] = img_path | ||
| 380 | # try: | ||
| 381 | # mvc_page = mvc_dict.pop('page') | ||
| 382 | # except Exception as e: | ||
| 383 | # pass | ||
| 384 | # else: | ||
| 385 | # if mvc_page == 'VehicleRegArea': | ||
| 386 | # mvc_res = mvc_dict.pop('results', {}) | ||
| 387 | # mvc_dict['机动车登记证书编号'] = mvc_res.get('register_no', {}).get('words', '') | ||
| 388 | # for register_info in mvc_res.get('register_info', []): | ||
| 389 | # for detail_dict in register_info.get('details', {}).values(): | ||
| 390 | # mvc_dict.setdefault(detail_dict.get('chinese_key', '未知'), []).append( | ||
| 391 | # detail_dict.get('words', '')) | ||
| 392 | # del mvc_res | ||
| 393 | # license_summary.setdefault(classify, []).extend(license_data) | ||
| 394 | |||
| 395 | # 身份证真伪 | ||
| 396 | elif classify == consts.IC_CLASSIFY: | ||
| 397 | id_card_dict = {} | ||
| 398 | card_type = license_data.get('type', '') | ||
| 399 | is_ic = card_type.startswith('身份证') | ||
| 400 | is_info_side = card_type.endswith('信息面') | ||
| 401 | id_card_dict['类别'] = '0' if is_ic else '1' | ||
| 402 | if is_ic: | ||
| 403 | field_map = consts.IC_MAP_0 if is_info_side else consts.IC_MAP_1 | ||
| 404 | else: | ||
| 405 | field_map = consts.RP_MAP_0 if is_info_side else consts.RP_MAP_1 | ||
| 406 | for write_field, search_field in field_map: | ||
| 407 | id_card_dict[write_field] = license_data.get('words_result', {}).get(search_field, {}).get('words', '') | ||
| 408 | if not is_info_side: | ||
| 409 | start_time = license_data.get('words_result', {}).get('签发日期', {}).get('words', '') | ||
| 410 | end_time = license_data.get('words_result', {}).get('失效日期', {}).get('words', '') | ||
| 411 | id_card_dict['有效期限'] = '{0}-{1}'.format(start_time, end_time) | ||
| 317 | 412 | ||
| 318 | elif classify == consts.IC_CLASSIFY: # 身份证真伪 | 413 | |
| 319 | for id_card_dict in license_data: | 414 | if not is_info_side: |
| 320 | if '有效期限' in id_card_dict: | 415 | id_card_dict[consts.IMG_PATH_KEY_2] = img_path |
| 321 | id_card_dict[consts.IMG_PATH_KEY_2] = img_path | 416 | else: |
| 322 | else: | 417 | id_card_dict[consts.IMG_PATH_KEY] = img_path |
| 323 | id_card_dict[consts.IMG_PATH_KEY] = img_path | 418 | if is_ic: |
| 324 | try: | 419 | try: |
| 325 | base64_img = id_card_dict.pop('base64_img') | 420 | base64_img = license_data.pop('base64_img') |
| 326 | except Exception as e: | 421 | except Exception as e: |
| 327 | continue | 422 | pass |
| 328 | else: | 423 | else: |
| 329 | card_type = -1 | 424 | card_type = -1 |
| 330 | json_data_4 = { | 425 | json_data_4 = { |
| ... | @@ -371,7 +466,14 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -371,7 +466,14 @@ class Command(BaseCommand, LoggerMixin): |
| 371 | ic_id = id_card_dict[consts.IC_KEY_FIELD[1]].strip() | 466 | ic_id = id_card_dict[consts.IC_KEY_FIELD[1]].strip() |
| 372 | if len(ic_name) > 0 and len(ic_id) > 0: | 467 | if len(ic_name) > 0 and len(ic_id) > 0: |
| 373 | dda_id_bc_mapping.setdefault(consts.IC_FIELD, []).append((ic_name, ic_id, img_path)) | 468 | dda_id_bc_mapping.setdefault(consts.IC_FIELD, []).append((ic_name, ic_id, img_path)) |
| 374 | license_summary.setdefault(classify, []).extend(license_data) | 469 | license_summary.setdefault(classify, []).append(id_card_dict) |
| 470 | elif classify == consts.MVI_CLASSIFY or classify == consts.UCI_CLASSIFY: | ||
| 471 | rebuild_data_dict = {} | ||
| 472 | mvi_res = license_data.pop('result', {}) | ||
| 473 | for en_key, detail_dict in mvi_res.items(): | ||
| 474 | rebuild_data_dict[detail_dict.get('chinese_key', '')] = detail_dict.get('words', '') | ||
| 475 | license_summary.setdefault(classify, []).append(rebuild_data_dict) | ||
| 476 | # 其他 | ||
| 375 | else: | 477 | else: |
| 376 | for res_dict in license_data: | 478 | for res_dict in license_data: |
| 377 | res_dict[consts.IMG_PATH_KEY] = img_path | 479 | res_dict[consts.IMG_PATH_KEY] = img_path | ... | ... |
-
Please register or sign in to post a comment