7f868e1c by 周伟奇

contract cdfl

1 parent 4d0b881c
...@@ -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:
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!