modify ocr_1 res to list
Showing
1 changed file
with
68 additions
and
59 deletions
... | @@ -494,68 +494,77 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -494,68 +494,77 @@ class Command(BaseCommand, LoggerMixin): |
494 | for img_path, res in ocr_1_res.items(): | 494 | for img_path, res in ocr_1_res.items(): |
495 | pno, ino = self.parse_img_path(img_path) | 495 | pno, ino = self.parse_img_path(img_path) |
496 | if res.get('code') == 1: | 496 | if res.get('code') == 1: |
497 | ocr_data = res.get('data', {}) | 497 | ocr_data_list = res.get('data', []) |
498 | classify = ocr_data.get('classify') | 498 | if not isinstance(ocr_data_list, list): |
499 | if classify is None: | ||
500 | res_list.append((pno, ino, consts.RES_FAILED_1)) | 499 | res_list.append((pno, ino, consts.RES_FAILED_1)) |
501 | self.cronjob_log.info('{0} [ocr_1 res error] [img={1}] [res={2}]'.format( | 500 | self.cronjob_log.info('{0} [ocr_1 res error] [img={1}] [res={2}]'.format( |
502 | self.log_base, img_path, res)) | 501 | self.log_base, img_path, res)) |
503 | continue | 502 | else: |
504 | elif classify in consts.OTHER_CLASSIFY_SET: # 其他类 | 503 | for part_idx, ocr_data in enumerate(ocr_data_list): |
505 | res_list.append((pno, ino, consts.RES_SUCCESS_OTHER)) | 504 | ino_part = '{0}-{1}'.format(ino, part_idx) |
506 | continue | 505 | classify = ocr_data.get('classify') |
507 | elif classify in consts.LICENSE_CLASSIFY_SET_1: # 证件1 | 506 | if classify is None: |
508 | self.license1_process(ocr_data, license_summary, classify, res_list, pno, ino) | 507 | res_list.append((pno, ino_part, consts.RES_FAILED_1)) |
509 | elif classify in consts.LICENSE_CLASSIFY_SET_2: # 证件2 | 508 | self.cronjob_log.info('{0} [ocr_1 res error] [img={1}] [res={2}]'.format( |
510 | pid, _, _, _, _, _ = consts.LICENSE_CLASSIFY_MAPPING.get(classify) | 509 | self.log_base, img_path, res)) |
511 | with open(img_path, 'rb') as f: | 510 | continue |
512 | base64_data = base64.b64encode(f.read()) | 511 | elif classify in consts.OTHER_CLASSIFY_SET: # 其他类 |
513 | # 获取解码后的base64值 | 512 | res_list.append((pno, ino_part, consts.RES_SUCCESS_OTHER)) |
514 | file_data = base64_data.decode() | 513 | continue |
515 | json_data_2 = { | 514 | elif classify in consts.LICENSE_CLASSIFY_SET_1: # 证件1 |
516 | "pid": str(pid), | 515 | self.license1_process(ocr_data, license_summary, classify, res_list, pno, ino_part) |
517 | "filedata": file_data | 516 | elif classify in consts.LICENSE_CLASSIFY_SET_2: # 证件2 |
518 | } | 517 | pid, _, _, _, _, _ = consts.LICENSE_CLASSIFY_MAPPING.get(classify) |
519 | 518 | file_data = ocr_data.get('section_img') | |
520 | for times in range(consts.RETRY_TIMES): | 519 | if file_data is None: |
521 | try: | 520 | with open(img_path, 'rb') as f: |
522 | start_time = time.time() | 521 | base64_data = base64.b64encode(f.read()) |
523 | ocr_2_response = requests.post(self.ocr_url_2, data=json_data_2) | 522 | # 获取解码后的base64值 |
524 | if ocr_2_response.status_code != 200: | 523 | file_data = base64_data.decode() |
525 | raise OCR2Exception('ocr_2 status code: {0}'.format(ocr_2_response.status_code)) | 524 | json_data_2 = { |
526 | except Exception as e: | 525 | "pid": str(pid), |
527 | self.cronjob_log.warn( | 526 | "filedata": file_data |
528 | '{0} [ocr_2 failed] [times={1}] [img_path={2}] [error={3}]'.format( | 527 | } |
529 | self.log_base, times, img_path, traceback.format_exc())) | 528 | |
530 | else: | 529 | for times in range(consts.RETRY_TIMES): |
531 | ocr_2_res = json.loads(ocr_2_response.text) | 530 | try: |
532 | end_time = time.time() | 531 | start_time = time.time() |
533 | speed_time = int(end_time - start_time) | 532 | ocr_2_response = requests.post(self.ocr_url_2, data=json_data_2) |
534 | self.cronjob_log.info( | 533 | if ocr_2_response.status_code != 200: |
535 | '{0} [ocr_2 success] [img={1}] [res={2}] [speed_time={3}]'.format( | 534 | raise OCR2Exception('ocr_2 status code: {0}'.format(ocr_2_response.status_code)) |
536 | self.log_base, img_path, ocr_2_res, speed_time)) | 535 | except Exception as e: |
537 | 536 | self.cronjob_log.warn( | |
538 | if classify == consts.BC_CLASSIFY: | 537 | '{0} [ocr_2 failed] [times={1}] [img_path={2}] [error={3}]'.format( |
539 | name = '有' | 538 | self.log_base, times, img_path, traceback.format_exc())) |
540 | json_data_3 = { | 539 | else: |
541 | "file": file_data, | 540 | ocr_2_res = json.loads(ocr_2_response.text) |
542 | 'card_res': ocr_2_res | 541 | end_time = time.time() |
543 | } | 542 | speed_time = int(end_time - start_time) |
544 | card_name_response = requests.post(self.ocr_url_3, json_data_3) | 543 | self.cronjob_log.info( |
545 | if card_name_response.status_code == 200: | 544 | '{0} [ocr_2 success] [img={1}] [res={2}] [speed_time={3}]'.format( |
546 | card_name_res = card_name_response.json() | 545 | self.log_base, img_path, ocr_2_res, speed_time)) |
547 | if isinstance(card_name_res, dict) and \ | 546 | |
548 | card_name_res.get('data', {}).get('is_exists_name') == 0: | 547 | if classify == consts.BC_CLASSIFY: |
549 | name = '无' | 548 | name = '有' |
550 | ocr_2_res['Name'] = name | 549 | json_data_3 = { |
551 | self.license2_process(ocr_2_res, license_summary, pid, classify, res_list, pno, ino) | 550 | "file": file_data, |
552 | break | 551 | 'card_res': ocr_2_res |
553 | else: | 552 | } |
554 | res_list.append((pno, ino, consts.RES_FAILED_2)) | 553 | card_name_response = requests.post(self.ocr_url_3, json_data_3) |
555 | self.cronjob_log.warn( | 554 | if card_name_response.status_code == 200: |
556 | '{0} [ocr_2 failed] [img_path={1}]'.format(self.log_base, img_path)) | 555 | card_name_res = card_name_response.json() |
557 | else: # 流水处理 | 556 | if isinstance(card_name_res, dict) and \ |
558 | self.bs_process(wb, ocr_data, bs_summary, unknown_summary, classify, res_list, pno, ino) | 557 | card_name_res.get('data', {}).get('is_exists_name') == 0: |
558 | name = '无' | ||
559 | ocr_2_res['Name'] = name | ||
560 | self.license2_process(ocr_2_res, license_summary, pid, classify, res_list, pno, ino_part) | ||
561 | break | ||
562 | else: | ||
563 | res_list.append((pno, ino_part, consts.RES_FAILED_2)) | ||
564 | self.cronjob_log.warn( | ||
565 | '{0} [ocr_2 failed] [img_path={1}]'.format(self.log_base, img_path)) | ||
566 | else: # 流水处理 | ||
567 | self.bs_process(wb, ocr_data, bs_summary, unknown_summary, classify, res_list, pno, ino_part) | ||
559 | else: | 568 | else: |
560 | res_list.append((pno, ino, consts.RES_FAILED_1)) | 569 | res_list.append((pno, ino, consts.RES_FAILED_1)) |
561 | self.cronjob_log.info('{0} [ocr_1 res error] [img={1}] [res={2}]'.format( | 570 | self.cronjob_log.info('{0} [ocr_1 res error] [img={1}] [res={2}]'.format( | ... | ... |
-
Please register or sign in to post a comment