contract cdfl
Showing
2 changed files
with
116 additions
and
59 deletions
| ... | @@ -774,6 +774,9 @@ class Finder: | ... | @@ -774,6 +774,9 @@ class Finder: |
| 774 | # 这是为了同时兼容 8.1 版本 | 774 | # 这是为了同时兼容 8.1 版本 |
| 775 | if borrower_name['words'] == None: | 775 | if borrower_name['words'] == None: |
| 776 | borrower_name, borrower_id = self.get_somebody(top='借款人及抵押人:', bottom='共同借款人及共同抵押人:') | 776 | borrower_name, borrower_id = self.get_somebody(top='借款人及抵押人:', bottom='共同借款人及共同抵押人:') |
| 777 | # 这是为了兼容车贷分离版本 | ||
| 778 | if borrower_name['words'] == None: | ||
| 779 | borrower_name, borrower_id = self.get_somebody(top='借款人:', bottom='共同借款人及抵押人:') | ||
| 777 | self.init_result['page_2']['借款人及抵押人']['name'] = borrower_name | 780 | self.init_result['page_2']['借款人及抵押人']['name'] = borrower_name |
| 778 | self.init_result['page_2']['借款人及抵押人']['id'] = borrower_id | 781 | self.init_result['page_2']['借款人及抵押人']['id'] = borrower_id |
| 779 | # 找共同借款人及共同抵押人 | 782 | # 找共同借款人及共同抵押人 |
| ... | @@ -852,10 +855,16 @@ class Finder: | ... | @@ -852,10 +855,16 @@ class Finder: |
| 852 | self.init_result['page_7']['合同编号'] = contract_no | 855 | self.init_result['page_7']['合同编号'] = contract_no |
| 853 | signature_name, signature_date = self.get_last_page_signature(page_num='6', | 856 | signature_name, signature_date = self.get_last_page_signature(page_num='6', |
| 854 | top='合同编号', bottom='共同借款人') | 857 | top='合同编号', bottom='共同借款人') |
| 858 | if signature_name['words'] == None: | ||
| 859 | signature_name, signature_date = self.get_last_page_signature(page_num='6', | ||
| 860 | top='合同编号', bottom='共同借款人(抵押人)') | ||
| 855 | self.init_result['page_7']['主借人签字']['签字'] = signature_name | 861 | self.init_result['page_7']['主借人签字']['签字'] = signature_name |
| 856 | self.init_result['page_7']['主借人签字']['日期'] = signature_date | 862 | self.init_result['page_7']['主借人签字']['日期'] = signature_date |
| 857 | signature_name, signature_date = self.get_last_page_signature(page_num='6', | 863 | signature_name, signature_date = self.get_last_page_signature(page_num='6', |
| 858 | top='共同借款人', bottom='保证人1') | 864 | top='共同借款人', bottom='保证人1') |
| 865 | if signature_name['words'] == None: | ||
| 866 | signature_name, signature_date = self.get_last_page_signature(page_num='6', | ||
| 867 | top='共同借款人(抵押人)', bottom='保证人1') | ||
| 859 | self.init_result['page_7']['共借人签字']['签字'] = signature_name | 868 | self.init_result['page_7']['共借人签字']['签字'] = signature_name |
| 860 | self.init_result['page_7']['共借人签字']['日期'] = signature_date | 869 | self.init_result['page_7']['共借人签字']['日期'] = signature_date |
| 861 | signature_name, signature_date = self.get_last_page_signature(page_num='6', | 870 | signature_name, signature_date = self.get_last_page_signature(page_num='6', |
| ... | @@ -881,10 +890,16 @@ class Finder: | ... | @@ -881,10 +890,16 @@ class Finder: |
| 881 | self.init_result['page_8']['合同编号'] = contract_no | 890 | self.init_result['page_8']['合同编号'] = contract_no |
| 882 | signature_name, signature_date = self.get_last_page_signature(page_num='7', | 891 | signature_name, signature_date = self.get_last_page_signature(page_num='7', |
| 883 | top='合同编号', bottom='共同借款人') | 892 | top='合同编号', bottom='共同借款人') |
| 893 | if signature_name['words'] == None: | ||
| 894 | signature_name, signature_date = self.get_last_page_signature(page_num='7', | ||
| 895 | top='合同编号', bottom='共同借款人(抵押人)') | ||
| 884 | self.init_result['page_8']['主借人签字']['签字'] = signature_name | 896 | self.init_result['page_8']['主借人签字']['签字'] = signature_name |
| 885 | self.init_result['page_8']['主借人签字']['日期'] = signature_date | 897 | self.init_result['page_8']['主借人签字']['日期'] = signature_date |
| 886 | signature_name, signature_date = self.get_last_page_signature(page_num='7', | 898 | signature_name, signature_date = self.get_last_page_signature(page_num='7', |
| 887 | top='共同借款人', bottom='保证人1') | 899 | top='共同借款人', bottom='保证人1') |
| 900 | if signature_name['words'] == None: | ||
| 901 | signature_name, signature_date = self.get_last_page_signature(page_num='7', | ||
| 902 | top='共同借款人(抵押人)', bottom='保证人1') | ||
| 888 | self.init_result['page_8']['共借人签字']['签字'] = signature_name | 903 | self.init_result['page_8']['共借人签字']['签字'] = signature_name |
| 889 | self.init_result['page_8']['共借人签字']['日期'] = signature_date | 904 | self.init_result['page_8']['共借人签字']['日期'] = signature_date |
| 890 | signature_name, signature_date = self.get_last_page_signature(page_num='7', | 905 | signature_name, signature_date = self.get_last_page_signature(page_num='7', | ... | ... |
| ... | @@ -847,7 +847,7 @@ class Finder: | ... | @@ -847,7 +847,7 @@ class Finder: |
| 847 | for i in range(5): | 847 | for i in range(5): |
| 848 | for span in ocr_results: | 848 | for span in ocr_results: |
| 849 | iou = caculate_iou(anchor, span[0]) | 849 | iou = caculate_iou(anchor, span[0]) |
| 850 | if iou > 0 and span[1].strip() != '所购': | 850 | if iou > 0.01 and span[1].strip() != '所购': |
| 851 | x = get_table_info(span[0], ocr_results[key_gmjg][0], ocr_results) | 851 | x = get_table_info(span[0], ocr_results[key_gmjg][0], ocr_results) |
| 852 | y = get_table_info(span[0], ocr_results[key_sjrzje][0], ocr_results) | 852 | y = get_table_info(span[0], ocr_results[key_sjrzje][0], ocr_results) |
| 853 | line = [span[1].replace('\u3000', ' '), x, y] | 853 | line = [span[1].replace('\u3000', ' '), x, y] |
| ... | @@ -1088,42 +1088,70 @@ class Finder: | ... | @@ -1088,42 +1088,70 @@ class Finder: |
| 1088 | # 取 Page 1 上的合同编号 | 1088 | # 取 Page 1 上的合同编号 |
| 1089 | contract_no = self.get_contract_no(page_num='0') | 1089 | contract_no = self.get_contract_no(page_num='0') |
| 1090 | self.init_result['合同编号'] = contract_no | 1090 | self.init_result['合同编号'] = contract_no |
| 1091 | # 从第一页上取四个角色的姓名和证件号码 | 1091 | # 粗略判断是否是 ‘车贷分离版本’ 的合同 |
| 1092 | name, id_num, representative = self.get_role_info(role_key='承租人:', page_num='0') | 1092 | is_cdfl = False |
| 1093 | if name["words"] == None: | 1093 | for block in self.pdf_info['0']['blocks']: |
| 1094 | if block['type'] != 0: | ||
| 1095 | continue | ||
| 1096 | for line in block['lines']: | ||
| 1097 | for span in line['spans']: | ||
| 1098 | bbox, text = span['bbox'], span['text'] | ||
| 1099 | if '共同承租人:' in text: | ||
| 1100 | is_cdfl = True | ||
| 1101 | if is_cdfl == False: | ||
| 1102 | # 从第一页上取四个角色的姓名和证件号码 | ||
| 1103 | name, id_num, representative = self.get_role_info(role_key='承租人:', page_num='0') | ||
| 1104 | if name["words"] == None: | ||
| 1105 | name, id_num, representative = self.get_role_info_3_3(role_key='承租人一:', page_num='0') | ||
| 1106 | self.init_result['承租人-姓名'] = name | ||
| 1107 | self.init_result['承租人-证件号码'] = id_num | ||
| 1108 | self.init_result['承租人-法定代表人或授权代表'] = representative | ||
| 1109 | name, id_num, representative = self.get_role_info(role_key='保证人1:', page_num='0') | ||
| 1110 | self.init_result['保证人1-姓名'] = name | ||
| 1111 | self.init_result['保证人1-证件号码'] = id_num | ||
| 1112 | self.init_result['保证人1-法定代表人或授权代表'] = representative | ||
| 1113 | # if条件判别 对应3_3版本 | ||
| 1114 | if name["words"] == None: | ||
| 1115 | name, id_num, representative = self.get_role_info_3_3(role_key='共同承租人:', page_num='0') | ||
| 1116 | self.init_result['共同承租人-姓名'] = name | ||
| 1117 | self.init_result['共同承租人-证件号码'] = id_num | ||
| 1118 | self.init_result['共同承租人-法定代表人或授权代表'] = representative | ||
| 1119 | name, id_num, representative = self.get_role_info(role_key='保证人2:', page_num='0') | ||
| 1120 | self.init_result['保证人2-姓名'] = name | ||
| 1121 | self.init_result['保证人2-证件号码'] = id_num | ||
| 1122 | self.init_result['保证人2-法定代表人或授权代表'] = representative | ||
| 1123 | # if条件判别 对应3_3版本 | ||
| 1124 | if name["words"] == None: | ||
| 1125 | name, id_num, representative = self.get_role_info_3_3(role_key='保证人1:', page_num='0') | ||
| 1126 | self.init_result['保证人2-姓名'] = name | ||
| 1127 | self.init_result['保证人2-证件号码'] = id_num | ||
| 1128 | self.init_result['保证人2-法定代表人或授权代表'] = representative | ||
| 1129 | name, id_num, representative = self.get_role_info(role_key='保证人3:', page_num='0') | ||
| 1130 | self.init_result['保证人3-姓名'] = name | ||
| 1131 | self.init_result['保证人3-证件号码'] = id_num | ||
| 1132 | self.init_result['保证人3-法定代表人或授权代表'] = representative | ||
| 1133 | if name["words"] == None: | ||
| 1134 | name, id_num, representative = self.get_role_info_3_3(role_key='保证人2:', page_num='0') | ||
| 1135 | self.init_result['保证人3-姓名'] = name | ||
| 1136 | self.init_result['保证人3-证件号码'] = id_num | ||
| 1137 | self.init_result['保证人3-法定代表人或授权代表'] = representative | ||
| 1138 | else: | ||
| 1094 | name, id_num, representative = self.get_role_info_3_3(role_key='承租人一:', page_num='0') | 1139 | name, id_num, representative = self.get_role_info_3_3(role_key='承租人一:', page_num='0') |
| 1095 | self.init_result['承租人-姓名'] = name | 1140 | self.init_result['承租人-姓名'] = name |
| 1096 | self.init_result['承租人-证件号码'] = id_num | 1141 | self.init_result['承租人-证件号码'] = id_num |
| 1097 | self.init_result['承租人-法定代表人或授权代表'] = representative | 1142 | self.init_result['承租人-法定代表人或授权代表'] = representative |
| 1098 | name, id_num, representative = self.get_role_info(role_key='保证人1:', page_num='0') | ||
| 1099 | self.init_result['保证人1-姓名'] = name | ||
| 1100 | self.init_result['保证人1-证件号码'] = id_num | ||
| 1101 | self.init_result['保证人1-法定代表人或授权代表'] = representative | ||
| 1102 | # if条件判别 对应3_3版本 | ||
| 1103 | if name["words"] == None: | ||
| 1104 | name, id_num, representative = self.get_role_info_3_3(role_key='共同承租人:', page_num='0') | 1143 | name, id_num, representative = self.get_role_info_3_3(role_key='共同承租人:', page_num='0') |
| 1105 | self.init_result['共同承租人-姓名'] = name | 1144 | self.init_result['共同承租人-姓名'] = name |
| 1106 | self.init_result['共同承租人-证件号码'] = id_num | 1145 | self.init_result['共同承租人-证件号码'] = id_num |
| 1107 | self.init_result['共同承租人-法定代表人或授权代表'] = representative | 1146 | self.init_result['共同承租人-法定代表人或授权代表'] = representative |
| 1108 | name, id_num, representative = self.get_role_info(role_key='保证人2:', page_num='0') | ||
| 1109 | self.init_result['保证人2-姓名'] = name | ||
| 1110 | self.init_result['保证人2-证件号码'] = id_num | ||
| 1111 | self.init_result['保证人2-法定代表人或授权代表'] = representative | ||
| 1112 | # if条件判别 对应3_3版本 | ||
| 1113 | if name["words"] == None: | ||
| 1114 | name, id_num, representative = self.get_role_info_3_3(role_key='保证人1:', page_num='0') | 1147 | name, id_num, representative = self.get_role_info_3_3(role_key='保证人1:', page_num='0') |
| 1148 | self.init_result['保证人1-姓名'] = name | ||
| 1149 | self.init_result['保证人1-证件号码'] = id_num | ||
| 1150 | self.init_result['保证人1-法定代表人或授权代表'] = representative | ||
| 1151 | name, id_num, representative = self.get_role_info_3_3(role_key='保证人2:', page_num='0') | ||
| 1115 | self.init_result['保证人2-姓名'] = name | 1152 | self.init_result['保证人2-姓名'] = name |
| 1116 | self.init_result['保证人2-证件号码'] = id_num | 1153 | self.init_result['保证人2-证件号码'] = id_num |
| 1117 | self.init_result['保证人2-法定代表人或授权代表'] = representative | 1154 | self.init_result['保证人2-法定代表人或授权代表'] = representative |
| 1118 | name, id_num, representative = self.get_role_info(role_key='保证人3:', page_num='0') | ||
| 1119 | self.init_result['保证人3-姓名'] = name | ||
| 1120 | self.init_result['保证人3-证件号码'] = id_num | ||
| 1121 | self.init_result['保证人3-法定代表人或授权代表'] = representative | ||
| 1122 | if name["words"] == None: | ||
| 1123 | name, id_num, representative = self.get_role_info_3_3(role_key='保证人2:', page_num='0') | ||
| 1124 | self.init_result['保证人3-姓名'] = name | ||
| 1125 | self.init_result['保证人3-证件号码'] = id_num | ||
| 1126 | self.init_result['保证人3-法定代表人或授权代表'] = representative | ||
| 1127 | # 在所有页面中找正文中(第二部分 融资租赁主要条款及付款计划)的那个编号,因为存在换行的情况所以暂时不带位置输出 | 1155 | # 在所有页面中找正文中(第二部分 融资租赁主要条款及付款计划)的那个编号,因为存在换行的情况所以暂时不带位置输出 |
| 1128 | contract_no = self.get_contract_no_one() | 1156 | contract_no = self.get_contract_no_one() |
| 1129 | self.init_result['合同编号(正文)'] = contract_no | 1157 | self.init_result['合同编号(正文)'] = contract_no |
| ... | @@ -1157,51 +1185,65 @@ class Finder: | ... | @@ -1157,51 +1185,65 @@ class Finder: |
| 1157 | self.init_result['银行账户-开户行'] = bank | 1185 | self.init_result['银行账户-开户行'] = bank |
| 1158 | # 找签字页上的系列信息 | 1186 | # 找签字页上的系列信息 |
| 1159 | # 承租人姓名、签章 | 1187 | # 承租人姓名、签章 |
| 1160 | name = self.get_key_value(key='承租人姓名:') | 1188 | if is_cdfl == False: |
| 1161 | electronic_signature = self.get_electronic_signature(top='承租人姓名:', bottom='保证人1姓名:') | 1189 | name = self.get_key_value(key='承租人姓名:') |
| 1162 | if name["words"] == None: | 1190 | electronic_signature = self.get_electronic_signature(top='承租人姓名:', bottom='保证人1姓名:') |
| 1191 | if name["words"] == None: | ||
| 1192 | name = self.get_key_value(key='承租人一姓名:') | ||
| 1193 | electronic_signature = self.get_electronic_signature(top='承租人一姓名:', bottom='共同承租人名称:') | ||
| 1194 | self.init_result['签字页-承租人姓名'] = name | ||
| 1195 | self.init_result['签字页-承租人签章'] = electronic_signature | ||
| 1196 | # 保证人1姓名、签章 | ||
| 1197 | name = self.get_key_value(key='保证人1姓名:') | ||
| 1198 | electronic_signature = self.get_electronic_signature(top='保证人1姓名:', bottom='保证人2姓名:') | ||
| 1199 | self.init_result['签字页-保证人1姓名'] = name | ||
| 1200 | self.init_result['签字页-保证人1签章'] = electronic_signature | ||
| 1201 | # 这里用的是 name["words"] == "" | ||
| 1202 | if name["words"] == "": | ||
| 1203 | name = self.get_key_value(key='共同承租人名称:') | ||
| 1204 | electronic_signature = self.get_electronic_signature(top='共同承租人名称:', bottom='保证人1姓名:') | ||
| 1205 | self.init_result['签字页-共同承租人姓名'] = name | ||
| 1206 | self.init_result['签字页-共同承租人签章'] = electronic_signature | ||
| 1207 | # 保证人2姓名、签章 | ||
| 1208 | name = self.get_key_value(key='保证人2姓名:') | ||
| 1209 | electronic_signature = self.get_electronic_signature(top='保证人2姓名:', bottom='保证人3姓名:') | ||
| 1210 | self.init_result['签字页-保证人2姓名'] = name | ||
| 1211 | self.init_result['签字页-保证人2签章'] = electronic_signature | ||
| 1212 | # if判断条件对应3_3版本 | ||
| 1213 | if name["words"] == "": | ||
| 1214 | name = self.get_key_value(key='保证人1姓名:') | ||
| 1215 | electronic_signature = self.get_electronic_signature(top='保证人1姓名:', bottom='保证人2姓名:') | ||
| 1216 | self.init_result['签字页-保证人1姓名'] = name | ||
| 1217 | self.init_result['签字页-保证人1签章'] = electronic_signature | ||
| 1218 | # 保证人3姓名、签章 | ||
| 1219 | name = self.get_key_value(key='保证人3姓名:') | ||
| 1220 | electronic_signature = self.get_electronic_signature(top='保证人3姓名:', bottom='日期:') | ||
| 1221 | self.init_result['签字页-保证人3姓名'] = name | ||
| 1222 | self.init_result['签字页-保证人3签章'] = electronic_signature | ||
| 1223 | # if判断条件对应3_3版本 | ||
| 1224 | if name["words"] == None: | ||
| 1225 | name = self.get_key_value(key='保证人2姓名:') | ||
| 1226 | electronic_signature = self.get_electronic_signature(top='保证人2姓名:', bottom='日期:') | ||
| 1227 | self.init_result['签字页-保证人2姓名'] = name | ||
| 1228 | self.init_result['签字页-保证人2签章'] = electronic_signature | ||
| 1229 | else: | ||
| 1163 | name = self.get_key_value(key='承租人一姓名:') | 1230 | name = self.get_key_value(key='承租人一姓名:') |
| 1164 | electronic_signature = self.get_electronic_signature(top='承租人一姓名:', bottom='共同承租人名称:') | 1231 | electronic_signature = self.get_electronic_signature(top='承租人一姓名:', bottom='共同承租人名称:') |
| 1165 | self.init_result['签字页-承租人姓名'] = name | 1232 | self.init_result['签字页-承租人姓名'] = name |
| 1166 | self.init_result['签字页-承租人签章'] = electronic_signature | 1233 | self.init_result['签字页-承租人签章'] = electronic_signature |
| 1167 | # 保证人1姓名、签章 | ||
| 1168 | name = self.get_key_value(key='保证人1姓名:') | ||
| 1169 | electronic_signature = self.get_electronic_signature(top='保证人1姓名:', bottom='保证人2姓名:') | ||
| 1170 | self.init_result['签字页-保证人1姓名'] = name | ||
| 1171 | self.init_result['签字页-保证人1签章'] = electronic_signature | ||
| 1172 | # 这里用的是 name["words"] == "" | ||
| 1173 | if name["words"] == "": | ||
| 1174 | name = self.get_key_value(key='共同承租人名称:') | 1234 | name = self.get_key_value(key='共同承租人名称:') |
| 1175 | electronic_signature = self.get_electronic_signature(top='共同承租人名称:', bottom='保证人1姓名:') | 1235 | electronic_signature = self.get_electronic_signature(top='共同承租人名称:', bottom='保证人1姓名:') |
| 1176 | self.init_result['签字页-共同承租人姓名'] = name | 1236 | self.init_result['签字页-共同承租人姓名'] = name |
| 1177 | self.init_result['签字页-共同承租人签章'] = electronic_signature | 1237 | self.init_result['签字页-共同承租人签章'] = electronic_signature |
| 1178 | # 保证人2姓名、签章 | ||
| 1179 | name = self.get_key_value(key='保证人2姓名:') | ||
| 1180 | electronic_signature = self.get_electronic_signature(top='保证人2姓名:', bottom='保证人3姓名:') | ||
| 1181 | self.init_result['签字页-保证人2姓名'] = name | ||
| 1182 | self.init_result['签字页-保证人2签章'] = electronic_signature | ||
| 1183 | # if判断条件对应3_3版本 | ||
| 1184 | if name["words"] == "": | ||
| 1185 | name = self.get_key_value(key='保证人1姓名:') | 1238 | name = self.get_key_value(key='保证人1姓名:') |
| 1186 | electronic_signature = self.get_electronic_signature(top='保证人1姓名:', bottom='保证人2姓名:') | 1239 | electronic_signature = self.get_electronic_signature(top='保证人1姓名:', bottom='保证人2姓名:') |
| 1187 | self.init_result['签字页-保证人1姓名'] = name | 1240 | self.init_result['签字页-保证人1姓名'] = name |
| 1188 | self.init_result['签字页-保证人1签章'] = electronic_signature | 1241 | self.init_result['签字页-保证人1签章'] = electronic_signature |
| 1189 | # 保证人3姓名、签章 | ||
| 1190 | name = self.get_key_value(key='保证人3姓名:') | ||
| 1191 | electronic_signature = self.get_electronic_signature(top='保证人3姓名:', bottom='日期:') | ||
| 1192 | self.init_result['签字页-保证人3姓名'] = name | ||
| 1193 | self.init_result['签字页-保证人3签章'] = electronic_signature | ||
| 1194 | # if判断条件对应3_3版本 | ||
| 1195 | if name["words"] == None: | ||
| 1196 | name = self.get_key_value(key='保证人2姓名:') | 1242 | name = self.get_key_value(key='保证人2姓名:') |
| 1197 | electronic_signature = self.get_electronic_signature(top='保证人2姓名:', bottom='日期:') | 1243 | electronic_signature = self.get_electronic_signature(top='保证人2姓名:', bottom='保证人3姓名:') |
| 1198 | self.init_result['签字页-保证人2姓名'] = name | 1244 | self.init_result['签字页-保证人2姓名'] = name |
| 1199 | self.init_result['签字页-保证人2签章'] = electronic_signature | 1245 | self.init_result['签字页-保证人2签章'] = electronic_signature |
| 1200 | return self.init_result | 1246 | return self.init_result |
| 1201 | # results['is_shhz_contract'] = True | ||
| 1202 | # results['pdf_info'] = self.init_result | ||
| 1203 | |||
| 1204 | # return results | ||
| 1205 | 1247 | ||
| 1206 | def get_info_1(self): | 1248 | def get_info_1(self): |
| 1207 | if len(self.pdf_info) > 0: | 1249 | if len(self.pdf_info) > 0: | ... | ... |
-
Please register or sign in to post a comment