├── .gitignore ├── xy-cut.gif ├── zh_train_51.jpg ├── xy_cut_example.png ├── xy_cut_result.png ├── zh_train_51_original.jpg ├── zh_train_51_result.jpg ├── README.md ├── run_example.py ├── run_xfun.py ├── xycut.py └── zh_train_51.json /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | -------------------------------------------------------------------------------- /xy-cut.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sanster/xy-cut/HEAD/xy-cut.gif -------------------------------------------------------------------------------- /zh_train_51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sanster/xy-cut/HEAD/zh_train_51.jpg -------------------------------------------------------------------------------- /xy_cut_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sanster/xy-cut/HEAD/xy_cut_example.png -------------------------------------------------------------------------------- /xy_cut_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sanster/xy-cut/HEAD/xy_cut_result.png -------------------------------------------------------------------------------- /zh_train_51_original.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sanster/xy-cut/HEAD/zh_train_51_original.jpg -------------------------------------------------------------------------------- /zh_train_51_result.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sanster/xy-cut/HEAD/zh_train_51_result.jpg -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Implement XY Cut Algorithm used in [《XYLayoutLM: Towards Layout-Aware Multimodal Networks For Visually-Rich 2 | Document Understanding》](https://arxiv.org/pdf/2203.06947.pdf) 3 | 4 | ![xy-cut.gif](./xy-cut.gif) 5 | 6 | Run on example: `python3 run_example.py` 7 | 8 | ![./xy_cut_result.png](./xy_cut_result.png) 9 | 10 | Run on XFUN example: `python3 run_xfun.py` 11 | 12 | | Original Order | XY Cut | 13 | | --------------------------------------- | ---------------------------------- | 14 | | ![original](./zh_train_51_original.jpg) | ![xycut](./zh_train_51_result.jpg) | 15 | -------------------------------------------------------------------------------- /run_example.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | from xycut import bbox2points, recursive_xy_cut, vis_polygons_with_index 4 | 5 | if __name__ == "__main__": 6 | boxes = [ 7 | [37, 37, 531, 37 + 68], 8 | [37, 140, 37 + 92, 140 + 246], 9 | [152, 161, 152 + 271, 161 + 74], 10 | [142, 263, 142 + 125, 263 + 123], 11 | [320, 244, 320 + 65, 244 + 64], 12 | [320, 332, 320 + 65, 332 + 64], 13 | [439, 140, 439 + 92, 140 + 246], 14 | ] 15 | 16 | random_boxes = np.array(boxes) 17 | np.random.shuffle(random_boxes) 18 | res = [] 19 | recursive_xy_cut(np.asarray(random_boxes).astype(int), np.arange(len(boxes)), res) 20 | assert len(res) == len(boxes) 21 | sorted_boxes = random_boxes[np.array(res)].tolist() 22 | print(sorted_boxes) 23 | 24 | image = cv2.imread("./xy_cut_example.png") 25 | result = vis_polygons_with_index(image, [bbox2points(it) for it in sorted_boxes]) 26 | cv2.imwrite("./xy_cut_result.png", result) 27 | -------------------------------------------------------------------------------- /run_xfun.py: -------------------------------------------------------------------------------- 1 | import json 2 | import cv2 3 | import numpy as np 4 | from xycut import bbox2points, recursive_xy_cut, vis_polygons_with_index 5 | 6 | 7 | def load_data(p): 8 | with open(p, "r", encoding="utf-8") as f: 9 | data = json.load(f) 10 | boxes = [] 11 | for it in data["document"]: 12 | boxes.append(it["box"]) 13 | return np.array(boxes) 14 | 15 | 16 | if __name__ == "__main__": 17 | boxes = load_data("./zh_train_51.json") 18 | 19 | image = cv2.imread("./zh_train_51.jpg") 20 | result = vis_polygons_with_index(image, [bbox2points(it) for it in boxes]) 21 | cv2.imwrite("./zh_train_51_original.jpg", result) 22 | 23 | res = [] 24 | recursive_xy_cut(np.asarray(boxes).astype(int), np.arange(len(boxes)), res) 25 | assert len(res) == len(boxes) 26 | sorted_boxes = boxes[np.array(res)].tolist() 27 | 28 | result = vis_polygons_with_index(image, [bbox2points(it) for it in sorted_boxes]) 29 | cv2.imwrite("./zh_train_51_result.jpg", result) 30 | -------------------------------------------------------------------------------- /xycut.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | import cv2 3 | import numpy as np 4 | 5 | 6 | def projection_by_bboxes(boxes: np.array, axis: int) -> np.ndarray: 7 | """ 8 | 通过一组 bbox 获得投影直方图,最后以 per-pixel 形式输出 9 | 10 | Args: 11 | boxes: [N, 4] 12 | axis: 0-x坐标向水平方向投影, 1-y坐标向垂直方向投影 13 | 14 | Returns: 15 | 1D 投影直方图,长度为投影方向坐标的最大值(我们不需要图片的实际边长,因为只是要找文本框的间隔) 16 | 17 | """ 18 | assert axis in [0, 1] 19 | length = np.max(boxes[:, axis::2]) 20 | res = np.zeros(length, dtype=int) 21 | # TODO: how to remove for loop? 22 | for start, end in boxes[:, axis::2]: 23 | res[start:end] += 1 24 | return res 25 | 26 | 27 | # from: https://dothinking.github.io/2021-06-19-%E9%80%92%E5%BD%92%E6%8A%95%E5%BD%B1%E5%88%86%E5%89%B2%E7%AE%97%E6%B3%95/#:~:text=%E9%80%92%E5%BD%92%E6%8A%95%E5%BD%B1%E5%88%86%E5%89%B2%EF%BC%88Recursive%20XY,%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%88%92%E5%88%86%E6%AE%B5%E8%90%BD%E3%80%81%E8%A1%8C%E3%80%82 28 | def split_projection_profile(arr_values: np.array, min_value: float, min_gap: float): 29 | """Split projection profile: 30 | 31 | ``` 32 | ┌──┐ 33 | arr_values │ │ ┌─┐─── 34 | ┌──┐ │ │ │ │ | 35 | │ │ │ │ ┌───┐ │ │min_value 36 | │ │<- min_gap ->│ │ │ │ │ │ | 37 | ────┴──┴─────────────┴──┴─┴───┴─┴─┴─┴─── 38 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 39 | ``` 40 | 41 | Args: 42 | arr_values (np.array): 1-d array representing the projection profile. 43 | min_value (float): Ignore the profile if `arr_value` is less than `min_value`. 44 | min_gap (float): Ignore the gap if less than this value. 45 | 46 | Returns: 47 | tuple: Start indexes and end indexes of split groups. 48 | """ 49 | # all indexes with projection height exceeding the threshold 50 | arr_index = np.where(arr_values > min_value)[0] 51 | if not len(arr_index): 52 | return 53 | 54 | # find zero intervals between adjacent projections 55 | # | | || 56 | # ||||<- zero-interval -> ||||| 57 | arr_diff = arr_index[1:] - arr_index[0:-1] 58 | arr_diff_index = np.where(arr_diff > min_gap)[0] 59 | arr_zero_intvl_start = arr_index[arr_diff_index] 60 | arr_zero_intvl_end = arr_index[arr_diff_index + 1] 61 | 62 | # convert to index of projection range: 63 | # the start index of zero interval is the end index of projection 64 | arr_start = np.insert(arr_zero_intvl_end, 0, arr_index[0]) 65 | arr_end = np.append(arr_zero_intvl_start, arr_index[-1]) 66 | arr_end += 1 # end index will be excluded as index slice 67 | 68 | return arr_start, arr_end 69 | 70 | 71 | def recursive_xy_cut(boxes: np.ndarray, indices: List[int], res: List[int]): 72 | """ 73 | 74 | Args: 75 | boxes: (N, 4) 76 | indices: 递归过程中始终表示 box 在原始数据中的索引 77 | res: 保存输出结果 78 | 79 | """ 80 | # 向 y 轴投影 81 | assert len(boxes) == len(indices) 82 | 83 | _indices = boxes[:, 1].argsort() 84 | y_sorted_boxes = boxes[_indices] 85 | y_sorted_indices = indices[_indices] 86 | 87 | # debug_vis(y_sorted_boxes, y_sorted_indices) 88 | 89 | y_projection = projection_by_bboxes(boxes=y_sorted_boxes, axis=1) 90 | pos_y = split_projection_profile(y_projection, 0, 1) 91 | if not pos_y: 92 | return 93 | 94 | arr_y0, arr_y1 = pos_y 95 | for r0, r1 in zip(arr_y0, arr_y1): 96 | # [r0, r1] 表示按照水平切分,有 bbox 的区域,对这些区域会再进行垂直切分 97 | _indices = (r0 <= y_sorted_boxes[:, 1]) & (y_sorted_boxes[:, 1] < r1) 98 | 99 | y_sorted_boxes_chunk = y_sorted_boxes[_indices] 100 | y_sorted_indices_chunk = y_sorted_indices[_indices] 101 | 102 | _indices = y_sorted_boxes_chunk[:, 0].argsort() 103 | x_sorted_boxes_chunk = y_sorted_boxes_chunk[_indices] 104 | x_sorted_indices_chunk = y_sorted_indices_chunk[_indices] 105 | 106 | # 往 x 方向投影 107 | x_projection = projection_by_bboxes(boxes=x_sorted_boxes_chunk, axis=0) 108 | pos_x = split_projection_profile(x_projection, 0, 1) 109 | if not pos_x: 110 | continue 111 | 112 | arr_x0, arr_x1 = pos_x 113 | if len(arr_x0) == 1: 114 | # x 方向无法切分 115 | res.extend(x_sorted_indices_chunk) 116 | continue 117 | 118 | # x 方向上能分开,继续递归调用 119 | for c0, c1 in zip(arr_x0, arr_x1): 120 | _indices = (c0 <= x_sorted_boxes_chunk[:, 0]) & ( 121 | x_sorted_boxes_chunk[:, 0] < c1 122 | ) 123 | recursive_xy_cut( 124 | x_sorted_boxes_chunk[_indices], x_sorted_indices_chunk[_indices], res 125 | ) 126 | 127 | 128 | def points_to_bbox(points): 129 | assert len(points) == 8 130 | 131 | # [x1,y1,x2,y2,x3,y3,x4,y4] 132 | left = min(points[::2]) 133 | right = max(points[::2]) 134 | top = min(points[1::2]) 135 | bottom = max(points[1::2]) 136 | 137 | left = max(left, 0) 138 | top = max(top, 0) 139 | right = max(right, 0) 140 | bottom = max(bottom, 0) 141 | return [left, top, right, bottom] 142 | 143 | 144 | def bbox2points(bbox): 145 | left, top, right, bottom = bbox 146 | return [left, top, right, top, right, bottom, left, bottom] 147 | 148 | 149 | def vis_polygon(img, points, thickness=2, color=None): 150 | br2bl_color = color 151 | tl2tr_color = color 152 | tr2br_color = color 153 | bl2tl_color = color 154 | cv2.line( 155 | img, 156 | (points[0][0], points[0][1]), 157 | (points[1][0], points[1][1]), 158 | color=tl2tr_color, 159 | thickness=thickness, 160 | ) 161 | 162 | cv2.line( 163 | img, 164 | (points[1][0], points[1][1]), 165 | (points[2][0], points[2][1]), 166 | color=tr2br_color, 167 | thickness=thickness, 168 | ) 169 | 170 | cv2.line( 171 | img, 172 | (points[2][0], points[2][1]), 173 | (points[3][0], points[3][1]), 174 | color=br2bl_color, 175 | thickness=thickness, 176 | ) 177 | 178 | cv2.line( 179 | img, 180 | (points[3][0], points[3][1]), 181 | (points[0][0], points[0][1]), 182 | color=bl2tl_color, 183 | thickness=thickness, 184 | ) 185 | return img 186 | 187 | 188 | def vis_points( 189 | img: np.ndarray, points, texts: List[str] = None, color=(0, 200, 0) 190 | ) -> np.ndarray: 191 | """ 192 | 193 | Args: 194 | img: 195 | points: [N, 8] 8: x1,y1,x2,y2,x3,y3,x3,y4 196 | texts: 197 | color: 198 | 199 | Returns: 200 | 201 | """ 202 | points = np.array(points) 203 | if texts is not None: 204 | assert len(texts) == points.shape[0] 205 | 206 | for i, _points in enumerate(points): 207 | vis_polygon(img, _points.reshape(-1, 2), thickness=2, color=color) 208 | bbox = points_to_bbox(_points) 209 | left, top, right, bottom = bbox 210 | cx = (left + right) // 2 211 | cy = (top + bottom) // 2 212 | 213 | txt = texts[i] 214 | font = cv2.FONT_HERSHEY_SIMPLEX 215 | cat_size = cv2.getTextSize(txt, font, 0.5, 2)[0] 216 | 217 | img = cv2.rectangle( 218 | img, 219 | (cx - 5 * len(txt), cy - cat_size[1] - 5), 220 | (cx - 5 * len(txt) + cat_size[0], cy - 5), 221 | color, 222 | -1, 223 | ) 224 | 225 | img = cv2.putText( 226 | img, 227 | txt, 228 | (cx - 5 * len(txt), cy - 5), 229 | font, 230 | 0.5, 231 | (255, 255, 255), 232 | thickness=1, 233 | lineType=cv2.LINE_AA, 234 | ) 235 | 236 | return img 237 | 238 | 239 | def vis_polygons_with_index(image, points): 240 | texts = [str(i) for i in range(len(points))] 241 | res_img = vis_points(image.copy(), points, texts) 242 | return res_img 243 | -------------------------------------------------------------------------------- /zh_train_51.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "zh_train_51", 3 | "uid": "557bf38a076535ec4e730b0abce564b1b0a6389f65019d0fad9e5b226e4610d1", 4 | "document": [ 5 | { 6 | "box": [ 7 | 1019, 8 | 433, 9 | 1429, 10 | 492 11 | ], 12 | "text": "人员岗位变动申请表", 13 | "label": "header", 14 | "words": [ 15 | { 16 | "box": [ 17 | 1022, 18 | 434, 19 | 1056, 20 | 492 21 | ], 22 | "text": "人" 23 | }, 24 | { 25 | "box": [ 26 | 1066, 27 | 434, 28 | 1097, 29 | 491 30 | ], 31 | "text": "员" 32 | }, 33 | { 34 | "box": [ 35 | 1107, 36 | 433, 37 | 1142, 38 | 491 39 | ], 40 | "text": "岗" 41 | }, 42 | { 43 | "box": [ 44 | 1152, 45 | 433, 46 | 1187, 47 | 491 48 | ], 49 | "text": "位" 50 | }, 51 | { 52 | "box": [ 53 | 1197, 54 | 433, 55 | 1231, 56 | 491 57 | ], 58 | "text": "变" 59 | }, 60 | { 61 | "box": [ 62 | 1242, 63 | 433, 64 | 1280, 65 | 492 66 | ], 67 | "text": "动" 68 | }, 69 | { 70 | "box": [ 71 | 1290, 72 | 434, 73 | 1325, 74 | 492 75 | ], 76 | "text": "申" 77 | }, 78 | { 79 | "box": [ 80 | 1335, 81 | 434, 82 | 1370, 83 | 493 84 | ], 85 | "text": "请" 86 | }, 87 | { 88 | "box": [ 89 | 1379, 90 | 435, 91 | 1421, 92 | 493 93 | ], 94 | "text": "表" 95 | } 96 | ], 97 | "linking": [], 98 | "id": 1 99 | }, 100 | { 101 | "box": [ 102 | 496, 103 | 603, 104 | 707, 105 | 660 106 | ], 107 | "text": "单位名称:", 108 | "label": "other", 109 | "words": [ 110 | { 111 | "box": [ 112 | 498, 113 | 605, 114 | 536, 115 | 660 116 | ], 117 | "text": "单" 118 | }, 119 | { 120 | "box": [ 121 | 546, 122 | 605, 123 | 583, 124 | 660 125 | ], 126 | "text": "位" 127 | }, 128 | { 129 | "box": [ 130 | 593, 131 | 605, 132 | 623, 133 | 660 134 | ], 135 | "text": "名" 136 | }, 137 | { 138 | "box": [ 139 | 633, 140 | 605, 141 | 666, 142 | 660 143 | ], 144 | "text": "称" 145 | }, 146 | { 147 | "box": [ 148 | 677, 149 | 606, 150 | 710, 151 | 660 152 | ], 153 | "text": ":" 154 | } 155 | ], 156 | "linking": [], 157 | "id": 11 158 | }, 159 | { 160 | "box": [ 161 | 499, 162 | 732, 163 | 601, 164 | 786 165 | ], 166 | "text": "姓名", 167 | "label": "question", 168 | "words": [ 169 | { 170 | "box": [ 171 | 504, 172 | 732, 173 | 543, 174 | 785 175 | ], 176 | "text": "姓" 177 | }, 178 | { 179 | "box": [ 180 | 552, 181 | 734, 182 | 590, 183 | 786 184 | ], 185 | "text": "名" 186 | } 187 | ], 188 | "linking": [ 189 | [ 190 | 25, 191 | 48 192 | ] 193 | ], 194 | "id": 25 195 | }, 196 | { 197 | "box": [ 198 | 1361, 199 | 731, 200 | 1496, 201 | 784 202 | ], 203 | "text": "人事部", 204 | "label": "answer", 205 | "words": [ 206 | { 207 | "box": [ 208 | 1361, 209 | 731, 210 | 1393, 211 | 782 212 | ], 213 | "text": "人" 214 | }, 215 | { 216 | "box": [ 217 | 1403, 218 | 732, 219 | 1437, 220 | 783 221 | ], 222 | "text": "事" 223 | }, 224 | { 225 | "box": [ 226 | 1447, 227 | 732, 228 | 1484, 229 | 784 230 | ], 231 | "text": "部" 232 | } 233 | ], 234 | "linking": [ 235 | [ 236 | 43, 237 | 28 238 | ] 239 | ], 240 | "id": 28 241 | }, 242 | { 243 | "box": [ 244 | 1844, 245 | 778, 246 | 2129, 247 | 831 248 | ], 249 | "text": "2017年7月23日", 250 | "label": "answer", 251 | "words": [ 252 | { 253 | "box": [ 254 | 1845, 255 | 781, 256 | 1922, 257 | 831 258 | ], 259 | "text": "2017" 260 | }, 261 | { 262 | "box": [ 263 | 1930, 264 | 780, 265 | 1963, 266 | 831 267 | ], 268 | "text": "年" 269 | }, 270 | { 271 | "box": [ 272 | 1972, 273 | 780, 274 | 1986, 275 | 831 276 | ], 277 | "text": "7" 278 | }, 279 | { 280 | "box": [ 281 | 1995, 282 | 780, 283 | 2028, 284 | 831 285 | ], 286 | "text": "月" 287 | }, 288 | { 289 | "box": [ 290 | 2037, 291 | 779, 292 | 2073, 293 | 832 294 | ], 295 | "text": "23" 296 | }, 297 | { 298 | "box": [ 299 | 2082, 300 | 779, 301 | 2117, 302 | 832 303 | ], 304 | "text": "日" 305 | } 306 | ], 307 | "linking": [ 308 | [ 309 | 39, 310 | 32 311 | ] 312 | ], 313 | "id": 32 314 | }, 315 | { 316 | "box": [ 317 | 1664, 318 | 738, 319 | 1806, 320 | 928 321 | ], 322 | "text": "入职日期", 323 | "label": "question", 324 | "words": [ 325 | { 326 | "box": [ 327 | 1665, 328 | 744, 329 | 1702, 330 | 795 331 | ], 332 | "text": "入" 333 | }, 334 | { 335 | "box": [ 336 | 1713, 337 | 744, 338 | 1750, 339 | 795 340 | ], 341 | "text": "职" 342 | }, 343 | { 344 | "box": [ 345 | 1760, 346 | 745, 347 | 1797, 348 | 796 349 | ], 350 | "text": "日" 351 | }, 352 | { 353 | "box": [ 354 | 1718, 355 | 872, 356 | 1759, 357 | 922 358 | ], 359 | "text": "期" 360 | } 361 | ], 362 | "linking": [ 363 | [ 364 | 39, 365 | 32 366 | ] 367 | ], 368 | "id": 39 369 | }, 370 | { 371 | "box": [ 372 | 1047, 373 | 736, 374 | 1233, 375 | 796 376 | ], 377 | "text": "现在部门", 378 | "label": "question", 379 | "words": [ 380 | { 381 | "box": [ 382 | 1050, 383 | 736, 384 | 1084, 385 | 792 386 | ], 387 | "text": "现" 388 | }, 389 | { 390 | "box": [ 391 | 1093, 392 | 737, 393 | 1131, 394 | 793 395 | ], 396 | "text": "在" 397 | }, 398 | { 399 | "box": [ 400 | 1140, 401 | 737, 402 | 1172, 403 | 794 404 | ], 405 | "text": "部" 406 | }, 407 | { 408 | "box": [ 409 | 1180, 410 | 738, 411 | 1222, 412 | 796 413 | ], 414 | "text": "门" 415 | } 416 | ], 417 | "linking": [ 418 | [ 419 | 43, 420 | 28 421 | ] 422 | ], 423 | "id": 43 424 | }, 425 | { 426 | "box": [ 427 | 762, 428 | 742, 429 | 901, 430 | 792 431 | ], 432 | "text": "浦绿勇", 433 | "label": "answer", 434 | "words": [ 435 | { 436 | "box": [ 437 | 767, 438 | 742, 439 | 803, 440 | 792 441 | ], 442 | "text": "浦" 443 | }, 444 | { 445 | "box": [ 446 | 813, 447 | 742, 448 | 849, 449 | 792 450 | ], 451 | "text": "绿" 452 | }, 453 | { 454 | "box": [ 455 | 860, 456 | 742, 457 | 899, 458 | 792 459 | ], 460 | "text": "勇" 461 | } 462 | ], 463 | "linking": [ 464 | [ 465 | 25, 466 | 48 467 | ] 468 | ], 469 | "id": 48 470 | }, 471 | { 472 | "box": [ 473 | 500, 474 | 991, 475 | 596, 476 | 1042 477 | ], 478 | "text": "学历", 479 | "label": "question", 480 | "words": [ 481 | { 482 | "box": [ 483 | 500, 484 | 991, 485 | 538, 486 | 1040 487 | ], 488 | "text": "学" 489 | }, 490 | { 491 | "box": [ 492 | 550, 493 | 991, 494 | 587, 495 | 1042 496 | ], 497 | "text": "历" 498 | } 499 | ], 500 | "linking": [ 501 | [ 502 | 54, 503 | 57 504 | ] 505 | ], 506 | "id": 54 507 | }, 508 | { 509 | "box": [ 510 | 782, 511 | 996, 512 | 868, 513 | 1045 514 | ], 515 | "text": "本科", 516 | "label": "answer", 517 | "words": [ 518 | { 519 | "box": [ 520 | 782, 521 | 996, 522 | 812, 523 | 1044 524 | ], 525 | "text": "本" 526 | }, 527 | { 528 | "box": [ 529 | 820, 530 | 997, 531 | 855, 532 | 1045 533 | ], 534 | "text": "科" 535 | } 536 | ], 537 | "linking": [ 538 | [ 539 | 54, 540 | 57 541 | ] 542 | ], 543 | "id": 57 544 | }, 545 | { 546 | "box": [ 547 | 1097, 548 | 992, 549 | 1186, 550 | 1044 551 | ], 552 | "text": "职称", 553 | "label": "question", 554 | "words": [ 555 | { 556 | "box": [ 557 | 1098, 558 | 992, 559 | 1133, 560 | 1044 561 | ], 562 | "text": "职" 563 | }, 564 | { 565 | "box": [ 566 | 1142, 567 | 993, 568 | 1179, 569 | 1045 570 | ], 571 | "text": "称" 572 | } 573 | ], 574 | "linking": [ 575 | [ 576 | 60, 577 | 67 578 | ] 579 | ], 580 | "id": 60 581 | }, 582 | { 583 | "box": [ 584 | 1665, 585 | 995, 586 | 1796, 587 | 1175 588 | ], 589 | "text": "转正日期", 590 | "label": "question", 591 | "words": [ 592 | { 593 | "box": [ 594 | 1668, 595 | 996, 596 | 1704, 597 | 1051 598 | ], 599 | "text": "转" 600 | }, 601 | { 602 | "box": [ 603 | 1712, 604 | 998, 605 | 1751, 606 | 1054 607 | ], 608 | "text": "正" 609 | }, 610 | { 611 | "box": [ 612 | 1759, 613 | 1000, 614 | 1795, 615 | 1056 616 | ], 617 | "text": "日" 618 | }, 619 | { 620 | "box": [ 621 | 1714, 622 | 1118, 623 | 1755, 624 | 1170 625 | ], 626 | "text": "期" 627 | } 628 | ], 629 | "linking": [ 630 | [ 631 | 63, 632 | 69 633 | ] 634 | ], 635 | "id": 63 636 | }, 637 | { 638 | "box": [ 639 | 1369, 640 | 991, 641 | 1413, 642 | 1044 643 | ], 644 | "text": "无", 645 | "label": "answer", 646 | "words": [ 647 | { 648 | "box": [ 649 | 1367, 650 | 993, 651 | 1404, 652 | 1046 653 | ], 654 | "text": "无" 655 | } 656 | ], 657 | "linking": [ 658 | [ 659 | 60, 660 | 67 661 | ] 662 | ], 663 | "id": 67 664 | }, 665 | { 666 | "box": [ 667 | 1847, 668 | 1057, 669 | 2132, 670 | 1108 671 | ], 672 | "text": "2019年6月18日", 673 | "label": "answer", 674 | "words": [ 675 | { 676 | "box": [ 677 | 1848, 678 | 1058, 679 | 1926, 680 | 1108 681 | ], 682 | "text": "2019" 683 | }, 684 | { 685 | "box": [ 686 | 1936, 687 | 1058, 688 | 1969, 689 | 1108 690 | ], 691 | "text": "年" 692 | }, 693 | { 694 | "box": [ 695 | 1978, 696 | 1058, 697 | 1992, 698 | 1108 699 | ], 700 | "text": "6" 701 | }, 702 | { 703 | "box": [ 704 | 2001, 705 | 1058, 706 | 2037, 707 | 1108 708 | ], 709 | "text": "月" 710 | }, 711 | { 712 | "box": [ 713 | 2047, 714 | 1058, 715 | 2085, 716 | 1108 717 | ], 718 | "text": "18" 719 | }, 720 | { 721 | "box": [ 722 | 2093, 723 | 1058, 724 | 2130, 725 | 1108 726 | ], 727 | "text": "日" 728 | } 729 | ], 730 | "linking": [ 731 | [ 732 | 63, 733 | 69 734 | ] 735 | ], 736 | "id": 69 737 | }, 738 | { 739 | "box": [ 740 | 495, 741 | 1248, 742 | 584, 743 | 1297 744 | ], 745 | "text": "职位", 746 | "label": "question", 747 | "words": [ 748 | { 749 | "box": [ 750 | 499, 751 | 1248, 752 | 534, 753 | 1296 754 | ], 755 | "text": "职" 756 | }, 757 | { 758 | "box": [ 759 | 544, 760 | 1249, 761 | 579, 762 | 1297 763 | ], 764 | "text": "位" 765 | } 766 | ], 767 | "linking": [ 768 | [ 769 | 78, 770 | 97 771 | ] 772 | ], 773 | "id": 78 774 | }, 775 | { 776 | "box": [ 777 | 1042, 778 | 1247, 779 | 1229, 780 | 1302 781 | ], 782 | "text": "现在工资", 783 | "label": "question", 784 | "words": [ 785 | { 786 | "box": [ 787 | 1044, 788 | 1250, 789 | 1080, 790 | 1301 791 | ], 792 | "text": "现" 793 | }, 794 | { 795 | "box": [ 796 | 1090, 797 | 1250, 798 | 1125, 799 | 1302 800 | ], 801 | "text": "在" 802 | }, 803 | { 804 | "box": [ 805 | 1136, 806 | 1250, 807 | 1171, 808 | 1302 809 | ], 810 | "text": "工" 811 | }, 812 | { 813 | "box": [ 814 | 1181, 815 | 1248, 816 | 1217, 817 | 1301 818 | ], 819 | "text": "资" 820 | } 821 | ], 822 | "linking": [ 823 | [ 824 | 81, 825 | 86 826 | ] 827 | ], 828 | "id": 81 829 | }, 830 | { 831 | "box": [ 832 | 1356, 833 | 1276, 834 | 1442, 835 | 1309 836 | ], 837 | "text": "3500", 838 | "label": "answer", 839 | "words": [ 840 | { 841 | "box": [ 842 | 1356, 843 | 1276, 844 | 1438, 845 | 1309 846 | ], 847 | "text": "3500" 848 | } 849 | ], 850 | "linking": [ 851 | [ 852 | 81, 853 | 86 854 | ] 855 | ], 856 | "id": 86 857 | }, 858 | { 859 | "box": [ 860 | 1664, 861 | 1246, 862 | 1795, 863 | 1437 864 | ], 865 | "text": "合同签订", 866 | "label": "question", 867 | "words": [ 868 | { 869 | "box": [ 870 | 1668, 871 | 1255, 872 | 1698, 873 | 1302 874 | ], 875 | "text": "合" 876 | }, 877 | { 878 | "box": [ 879 | 1707, 880 | 1255, 881 | 1741, 882 | 1302 883 | ], 884 | "text": "同" 885 | }, 886 | { 887 | "box": [ 888 | 1754, 889 | 1255, 890 | 1788, 891 | 1303 892 | ], 893 | "text": "签" 894 | }, 895 | { 896 | "box": [ 897 | 1708, 898 | 1380, 899 | 1755, 900 | 1433 901 | ], 902 | "text": "订" 903 | } 904 | ], 905 | "linking": [ 906 | [ 907 | 88, 908 | 92 909 | ] 910 | ], 911 | "id": 88 912 | }, 913 | { 914 | "box": [ 915 | 1874, 916 | 1256, 917 | 2092, 918 | 1309 919 | ], 920 | "text": "☆是口否", 921 | "label": "answer", 922 | "words": [ 923 | { 924 | "box": [ 925 | 1876, 926 | 1257, 927 | 1910, 928 | 1306 929 | ], 930 | "text": "☆" 931 | }, 932 | { 933 | "box": [ 934 | 1923, 935 | 1257, 936 | 1957, 937 | 1308 938 | ], 939 | "text": "是" 940 | }, 941 | { 942 | "box": [ 943 | 2001, 944 | 1263, 945 | 2037, 946 | 1303 947 | ], 948 | "text": "口" 949 | }, 950 | { 951 | "box": [ 952 | 2043, 953 | 1258, 954 | 2088, 955 | 1305 956 | ], 957 | "text": "否" 958 | } 959 | ], 960 | "linking": [ 961 | [ 962 | 88, 963 | 92 964 | ] 965 | ], 966 | "id": 92 967 | }, 968 | { 969 | "box": [ 970 | 755, 971 | 1247, 972 | 987, 973 | 1301 974 | ], 975 | "text": "人事部职员", 976 | "label": "answer", 977 | "words": [ 978 | { 979 | "box": [ 980 | 755, 981 | 1250, 982 | 789, 983 | 1305 984 | ], 985 | "text": "人" 986 | }, 987 | { 988 | "box": [ 989 | 800, 990 | 1248, 991 | 839, 992 | 1303 993 | ], 994 | "text": "事" 995 | }, 996 | { 997 | "box": [ 998 | 850, 999 | 1248, 1000 | 887, 1001 | 1302 1002 | ], 1003 | "text": "部" 1004 | }, 1005 | { 1006 | "box": [ 1007 | 897, 1008 | 1247, 1009 | 933, 1010 | 1302 1011 | ], 1012 | "text": "职" 1013 | }, 1014 | { 1015 | "box": [ 1016 | 943, 1017 | 1247, 1018 | 983, 1019 | 1302 1020 | ], 1021 | "text": "员" 1022 | } 1023 | ], 1024 | "linking": [ 1025 | [ 1026 | 78, 1027 | 97 1028 | ] 1029 | ], 1030 | "id": 97 1031 | }, 1032 | { 1033 | "box": [ 1034 | 1341, 1035 | 1502, 1036 | 1565, 1037 | 1555 1038 | ], 1039 | "text": "变动后职位", 1040 | "label": "question", 1041 | "words": [ 1042 | { 1043 | "box": [ 1044 | 1340, 1045 | 1503, 1046 | 1375, 1047 | 1554 1048 | ], 1049 | "text": "变" 1050 | }, 1051 | { 1052 | "box": [ 1053 | 1385, 1054 | 1504, 1055 | 1421, 1056 | 1556 1057 | ], 1058 | "text": "动" 1059 | }, 1060 | { 1061 | "box": [ 1062 | 1431, 1063 | 1505, 1064 | 1467, 1065 | 1556 1066 | ], 1067 | "text": "后" 1068 | }, 1069 | { 1070 | "box": [ 1071 | 1477, 1072 | 1505, 1073 | 1510, 1074 | 1556 1075 | ], 1076 | "text": "职" 1077 | }, 1078 | { 1079 | "box": [ 1080 | 1520, 1081 | 1504, 1082 | 1556, 1083 | 1556 1084 | ], 1085 | "text": "位" 1086 | } 1087 | ], 1088 | "linking": [ 1089 | [ 1090 | 105, 1091 | 111 1092 | ] 1093 | ], 1094 | "id": 105 1095 | }, 1096 | { 1097 | "box": [ 1098 | 1670, 1099 | 1492, 1100 | 1895, 1101 | 1548 1102 | ], 1103 | "text": "营运部主管", 1104 | "label": "answer", 1105 | "words": [ 1106 | { 1107 | "box": [ 1108 | 1670, 1109 | 1495, 1110 | 1701, 1111 | 1548 1112 | ], 1113 | "text": "营" 1114 | }, 1115 | { 1116 | "box": [ 1117 | 1710, 1118 | 1495, 1119 | 1748, 1120 | 1548 1121 | ], 1122 | "text": "运" 1123 | }, 1124 | { 1125 | "box": [ 1126 | 1759, 1127 | 1495, 1128 | 1794, 1129 | 1548 1130 | ], 1131 | "text": "部" 1132 | }, 1133 | { 1134 | "box": [ 1135 | 1803, 1136 | 1494, 1137 | 1839, 1138 | 1548 1139 | ], 1140 | "text": "主" 1141 | }, 1142 | { 1143 | "box": [ 1144 | 1848, 1145 | 1493, 1146 | 1887, 1147 | 1547 1148 | ], 1149 | "text": "管" 1150 | } 1151 | ], 1152 | "linking": [ 1153 | [ 1154 | 105, 1155 | 111 1156 | ] 1157 | ], 1158 | "id": 111 1159 | }, 1160 | { 1161 | "box": [ 1162 | 428, 1163 | 1496, 1164 | 652, 1165 | 1551 1166 | ], 1167 | "text": "变动后部门", 1168 | "label": "question", 1169 | "words": [ 1170 | { 1171 | "box": [ 1172 | 429, 1173 | 1497, 1174 | 458, 1175 | 1549 1176 | ], 1177 | "text": "变" 1178 | }, 1179 | { 1180 | "box": [ 1181 | 468, 1182 | 1497, 1183 | 505, 1184 | 1549 1185 | ], 1186 | "text": "动" 1187 | }, 1188 | { 1189 | "box": [ 1190 | 516, 1191 | 1497, 1192 | 551, 1193 | 1550 1194 | ], 1195 | "text": "后" 1196 | }, 1197 | { 1198 | "box": [ 1199 | 560, 1200 | 1497, 1201 | 596, 1202 | 1551 1203 | ], 1204 | "text": "部" 1205 | }, 1206 | { 1207 | "box": [ 1208 | 605, 1209 | 1497, 1210 | 643, 1211 | 1552 1212 | ], 1213 | "text": "门" 1214 | } 1215 | ], 1216 | "linking": [ 1217 | [ 1218 | 117, 1219 | 123 1220 | ] 1221 | ], 1222 | "id": 117 1223 | }, 1224 | { 1225 | "box": [ 1226 | 763, 1227 | 1497, 1228 | 910, 1229 | 1549 1230 | ], 1231 | "text": "营运部", 1232 | "label": "answer", 1233 | "words": [ 1234 | { 1235 | "box": [ 1236 | 766, 1237 | 1499, 1238 | 803, 1239 | 1553 1240 | ], 1241 | "text": "营" 1242 | }, 1243 | { 1244 | "box": [ 1245 | 813, 1246 | 1499, 1247 | 850, 1248 | 1553 1249 | ], 1250 | "text": "运" 1251 | }, 1252 | { 1253 | "box": [ 1254 | 860, 1255 | 1499, 1256 | 899, 1257 | 1552 1258 | ], 1259 | "text": "部" 1260 | } 1261 | ], 1262 | "linking": [ 1263 | [ 1264 | 117, 1265 | 123 1266 | ] 1267 | ], 1268 | "id": 123 1269 | }, 1270 | { 1271 | "box": [ 1272 | 445, 1273 | 1626, 1274 | 629, 1275 | 1678 1276 | ], 1277 | "text": "变动性质", 1278 | "label": "question", 1279 | "words": [ 1280 | { 1281 | "box": [ 1282 | 447, 1283 | 1628, 1284 | 483, 1285 | 1679 1286 | ], 1287 | "text": "变" 1288 | }, 1289 | { 1290 | "box": [ 1291 | 494, 1292 | 1628, 1293 | 530, 1294 | 1680 1295 | ], 1296 | "text": "动" 1297 | }, 1298 | { 1299 | "box": [ 1300 | 540, 1301 | 1628, 1302 | 577, 1303 | 1680 1304 | ], 1305 | "text": "性" 1306 | }, 1307 | { 1308 | "box": [ 1309 | 590, 1310 | 1627, 1311 | 627, 1312 | 1680 1313 | ], 1314 | "text": "质" 1315 | } 1316 | ], 1317 | "linking": [ 1318 | [ 1319 | 127, 1320 | 132 1321 | ] 1322 | ], 1323 | "id": 127 1324 | }, 1325 | { 1326 | "box": [ 1327 | 1067, 1328 | 1632, 1329 | 1731, 1330 | 1688 1331 | ], 1332 | "text": "口平调仏升职口降职口辞职口辞退", 1333 | "label": "answer", 1334 | "words": [ 1335 | { 1336 | "box": [ 1337 | 1067, 1338 | 1632, 1339 | 1093, 1340 | 1683 1341 | ], 1342 | "text": "口" 1343 | }, 1344 | { 1345 | "box": [ 1346 | 1103, 1347 | 1632, 1348 | 1139, 1349 | 1684 1350 | ], 1351 | "text": "平" 1352 | }, 1353 | { 1354 | "box": [ 1355 | 1153, 1356 | 1633, 1357 | 1183, 1358 | 1685 1359 | ], 1360 | "text": "调" 1361 | }, 1362 | { 1363 | "box": [ 1364 | 1193, 1365 | 1633, 1366 | 1227, 1367 | 1685 1368 | ], 1369 | "text": "仏" 1370 | }, 1371 | { 1372 | "box": [ 1373 | 1236, 1374 | 1633, 1375 | 1273, 1376 | 1686 1377 | ], 1378 | "text": "升" 1379 | }, 1380 | { 1381 | "box": [ 1382 | 1286, 1383 | 1633, 1384 | 1320, 1385 | 1686 1386 | ], 1387 | "text": "职" 1388 | }, 1389 | { 1390 | "box": [ 1391 | 1330, 1392 | 1633, 1393 | 1364, 1394 | 1687 1395 | ], 1396 | "text": "口" 1397 | }, 1398 | { 1399 | "box": [ 1400 | 1373, 1401 | 1633, 1402 | 1410, 1403 | 1687 1404 | ], 1405 | "text": "降" 1406 | }, 1407 | { 1408 | "box": [ 1409 | 1420, 1410 | 1634, 1411 | 1454, 1412 | 1687 1413 | ], 1414 | "text": "职" 1415 | }, 1416 | { 1417 | "box": [ 1418 | 1464, 1419 | 1634, 1420 | 1497, 1421 | 1688 1422 | ], 1423 | "text": "口" 1424 | }, 1425 | { 1426 | "box": [ 1427 | 1507, 1428 | 1634, 1429 | 1543, 1430 | 1688 1431 | ], 1432 | "text": "辞" 1433 | }, 1434 | { 1435 | "box": [ 1436 | 1554, 1437 | 1634, 1438 | 1587, 1439 | 1688 1440 | ], 1441 | "text": "职" 1442 | }, 1443 | { 1444 | "box": [ 1445 | 1597, 1446 | 1634, 1447 | 1631, 1448 | 1689 1449 | ], 1450 | "text": "口" 1451 | }, 1452 | { 1453 | "box": [ 1454 | 1641, 1455 | 1634, 1456 | 1677, 1457 | 1689 1458 | ], 1459 | "text": "辞" 1460 | }, 1461 | { 1462 | "box": [ 1463 | 1688, 1464 | 1634, 1465 | 1724, 1466 | 1689 1467 | ], 1468 | "text": "退" 1469 | } 1470 | ], 1471 | "linking": [ 1472 | [ 1473 | 127, 1474 | 132 1475 | ] 1476 | ], 1477 | "id": 132 1478 | }, 1479 | { 1480 | "box": [ 1481 | 399, 1482 | 1754, 1483 | 668, 1484 | 1810 1485 | ], 1486 | "text": "变动原因详述", 1487 | "label": "other", 1488 | "words": [ 1489 | { 1490 | "box": [ 1491 | 400, 1492 | 1754, 1493 | 430, 1494 | 1808 1495 | ], 1496 | "text": "变" 1497 | }, 1498 | { 1499 | "box": [ 1500 | 440, 1501 | 1755, 1502 | 478, 1503 | 1807 1504 | ], 1505 | "text": "动" 1506 | }, 1507 | { 1508 | "box": [ 1509 | 489, 1510 | 1755, 1511 | 524, 1512 | 1807 1513 | ], 1514 | "text": "原" 1515 | }, 1516 | { 1517 | "box": [ 1518 | 534, 1519 | 1756, 1520 | 569, 1521 | 1808 1522 | ], 1523 | "text": "因" 1524 | }, 1525 | { 1526 | "box": [ 1527 | 579, 1528 | 1756, 1529 | 611, 1530 | 1809 1531 | ], 1532 | "text": "详" 1533 | }, 1534 | { 1535 | "box": [ 1536 | 620, 1537 | 1757, 1538 | 659, 1539 | 1810 1540 | ], 1541 | "text": "述" 1542 | } 1543 | ], 1544 | "linking": [], 1545 | "id": 148 1546 | }, 1547 | { 1548 | "box": [ 1549 | 781, 1550 | 1935, 1551 | 879, 1552 | 1986 1553 | ], 1554 | "text": "同意", 1555 | "label": "answer", 1556 | "words": [ 1557 | { 1558 | "box": [ 1559 | 783, 1560 | 1935, 1561 | 817, 1562 | 1986 1563 | ], 1564 | "text": "同" 1565 | }, 1566 | { 1567 | "box": [ 1568 | 827, 1569 | 1935, 1570 | 863, 1571 | 1986 1572 | ], 1573 | "text": "意" 1574 | } 1575 | ], 1576 | "linking": [ 1577 | [ 1578 | 171, 1579 | 155 1580 | ] 1581 | ], 1582 | "id": 155 1583 | }, 1584 | { 1585 | "box": [ 1586 | 960, 1587 | 1882, 1588 | 1193, 1589 | 2070 1590 | ], 1591 | "text": "现在部门意见", 1592 | "label": "question", 1593 | "words": [ 1594 | { 1595 | "box": [ 1596 | 964, 1597 | 1888, 1598 | 999, 1599 | 1939 1600 | ], 1601 | "text": "现" 1602 | }, 1603 | { 1604 | "box": [ 1605 | 1008, 1606 | 1888, 1607 | 1045, 1608 | 1938 1609 | ], 1610 | "text": "在" 1611 | }, 1612 | { 1613 | "box": [ 1614 | 1054, 1615 | 1889, 1616 | 1089, 1617 | 1939 1618 | ], 1619 | "text": "部" 1620 | }, 1621 | { 1622 | "box": [ 1623 | 1097, 1624 | 1890, 1625 | 1132, 1626 | 1939 1627 | ], 1628 | "text": "门" 1629 | }, 1630 | { 1631 | "box": [ 1632 | 1141, 1633 | 1891, 1634 | 1178, 1635 | 1940 1636 | ], 1637 | "text": "意" 1638 | }, 1639 | { 1640 | "box": [ 1641 | 1061, 1642 | 2014, 1643 | 1110, 1644 | 2063 1645 | ], 1646 | "text": "见" 1647 | } 1648 | ], 1649 | "linking": [ 1650 | [ 1651 | 158, 1652 | 178 1653 | ] 1654 | ], 1655 | "id": 158 1656 | }, 1657 | { 1658 | "box": [ 1659 | 1518, 1660 | 1893, 1661 | 1785, 1662 | 1944 1663 | ], 1664 | "text": "行政部门意见", 1665 | "label": "question", 1666 | "words": [ 1667 | { 1668 | "box": [ 1669 | 1519, 1670 | 1895, 1671 | 1553, 1672 | 1946 1673 | ], 1674 | "text": "行" 1675 | }, 1676 | { 1677 | "box": [ 1678 | 1564, 1679 | 1894, 1680 | 1597, 1681 | 1945 1682 | ], 1683 | "text": "政" 1684 | }, 1685 | { 1686 | "box": [ 1687 | 1607, 1688 | 1894, 1689 | 1640, 1690 | 1945 1691 | ], 1692 | "text": "部" 1693 | }, 1694 | { 1695 | "box": [ 1696 | 1650, 1697 | 1894, 1698 | 1686, 1699 | 1945 1700 | ], 1701 | "text": "门" 1702 | }, 1703 | { 1704 | "box": [ 1705 | 1697, 1706 | 1894, 1707 | 1733, 1708 | 1945 1709 | ], 1710 | "text": "意" 1711 | }, 1712 | { 1713 | "box": [ 1714 | 1743, 1715 | 1894, 1716 | 1779, 1717 | 1945 1718 | ], 1719 | "text": "见" 1720 | } 1721 | ], 1722 | "linking": [ 1723 | [ 1724 | 164, 1725 | 181 1726 | ] 1727 | ], 1728 | "id": 164 1729 | }, 1730 | { 1731 | "box": [ 1732 | 388, 1733 | 1882, 1734 | 667, 1735 | 1937 1736 | ], 1737 | "text": "原来部门意见", 1738 | "label": "question", 1739 | "words": [ 1740 | { 1741 | "box": [ 1742 | 397, 1743 | 1883, 1744 | 429, 1745 | 1936 1746 | ], 1747 | "text": "原" 1748 | }, 1749 | { 1750 | "box": [ 1751 | 439, 1752 | 1883, 1753 | 477, 1754 | 1937 1755 | ], 1756 | "text": "来" 1757 | }, 1758 | { 1759 | "box": [ 1760 | 488, 1761 | 1883, 1762 | 519, 1763 | 1937 1764 | ], 1765 | "text": "部" 1766 | }, 1767 | { 1768 | "box": [ 1769 | 529, 1770 | 1883, 1771 | 567, 1772 | 1937 1773 | ], 1774 | "text": "门" 1775 | }, 1776 | { 1777 | "box": [ 1778 | 578, 1779 | 1883, 1780 | 613, 1781 | 1938 1782 | ], 1783 | "text": "意" 1784 | }, 1785 | { 1786 | "box": [ 1787 | 623, 1788 | 1883, 1789 | 661, 1790 | 1938 1791 | ], 1792 | "text": "见" 1793 | } 1794 | ], 1795 | "linking": [ 1796 | [ 1797 | 171, 1798 | 155 1799 | ] 1800 | ], 1801 | "id": 171 1802 | }, 1803 | { 1804 | "box": [ 1805 | 1252, 1806 | 1946, 1807 | 1357, 1808 | 1996 1809 | ], 1810 | "text": "同意", 1811 | "label": "answer", 1812 | "words": [ 1813 | { 1814 | "box": [ 1815 | 1260, 1816 | 1947, 1817 | 1295, 1818 | 1996 1819 | ], 1820 | "text": "同" 1821 | }, 1822 | { 1823 | "box": [ 1824 | 1305, 1825 | 1946, 1826 | 1341, 1827 | 1995 1828 | ], 1829 | "text": "意" 1830 | } 1831 | ], 1832 | "linking": [ 1833 | [ 1834 | 158, 1835 | 178 1836 | ] 1837 | ], 1838 | "id": 178 1839 | }, 1840 | { 1841 | "box": [ 1842 | 1877, 1843 | 1932, 1844 | 1976, 1845 | 1985 1846 | ], 1847 | "text": "同意", 1848 | "label": "answer", 1849 | "words": [ 1850 | { 1851 | "box": [ 1852 | 1877, 1853 | 1934, 1854 | 1914, 1855 | 1984 1856 | ], 1857 | "text": "同" 1858 | }, 1859 | { 1860 | "box": [ 1861 | 1923, 1862 | 1932, 1863 | 1959, 1864 | 1983 1865 | ], 1866 | "text": "意" 1867 | } 1868 | ], 1869 | "linking": [ 1870 | [ 1871 | 164, 1872 | 181 1873 | ] 1874 | ], 1875 | "id": 181 1876 | }, 1877 | { 1878 | "box": [ 1879 | 1322, 1880 | 2143, 1881 | 1545, 1882 | 2195 1883 | ], 1884 | "text": "总经理意见", 1885 | "label": "question", 1886 | "words": [ 1887 | { 1888 | "box": [ 1889 | 1323, 1890 | 2143, 1891 | 1356, 1892 | 2192 1893 | ], 1894 | "text": "总" 1895 | }, 1896 | { 1897 | "box": [ 1898 | 1369, 1899 | 2144, 1900 | 1404, 1901 | 2193 1902 | ], 1903 | "text": "经" 1904 | }, 1905 | { 1906 | "box": [ 1907 | 1414, 1908 | 2145, 1909 | 1447, 1910 | 2193 1911 | ], 1912 | "text": "理" 1913 | }, 1914 | { 1915 | "box": [ 1916 | 1456, 1917 | 2146, 1918 | 1491, 1919 | 2194 1920 | ], 1921 | "text": "意" 1922 | }, 1923 | { 1924 | "box": [ 1925 | 1507, 1926 | 2147, 1927 | 1543, 1928 | 2195 1929 | ], 1930 | "text": "见" 1931 | } 1932 | ], 1933 | "linking": [ 1934 | [ 1935 | 186, 1936 | 192 1937 | ] 1938 | ], 1939 | "id": 186 1940 | }, 1941 | { 1942 | "box": [ 1943 | 1660, 1944 | 2176, 1945 | 1756, 1946 | 2230 1947 | ], 1948 | "text": "同意", 1949 | "label": "answer", 1950 | "words": [ 1951 | { 1952 | "box": [ 1953 | 1659, 1954 | 2176, 1955 | 1693, 1956 | 2228 1957 | ], 1958 | "text": "同" 1959 | }, 1960 | { 1961 | "box": [ 1962 | 1702, 1963 | 2177, 1964 | 1741, 1965 | 2230 1966 | ], 1967 | "text": "意" 1968 | } 1969 | ], 1970 | "linking": [ 1971 | [ 1972 | 186, 1973 | 192 1974 | ] 1975 | ], 1976 | "id": 192 1977 | }, 1978 | { 1979 | "box": [ 1980 | 386, 1981 | 2139, 1982 | 669, 1983 | 2315 1984 | ], 1985 | "text": "主管副总经理意见", 1986 | "label": "question", 1987 | "words": [ 1988 | { 1989 | "box": [ 1990 | 391, 1991 | 2139, 1992 | 427, 1993 | 2192 1994 | ], 1995 | "text": "主" 1996 | }, 1997 | { 1998 | "box": [ 1999 | 438, 2000 | 2139, 2001 | 473, 2002 | 2192 2003 | ], 2004 | "text": "管" 2005 | }, 2006 | { 2007 | "box": [ 2008 | 483, 2009 | 2138, 2010 | 517, 2011 | 2192 2012 | ], 2013 | "text": "副" 2014 | }, 2015 | { 2016 | "box": [ 2017 | 528, 2018 | 2138, 2019 | 565, 2020 | 2192 2021 | ], 2022 | "text": "总" 2023 | }, 2024 | { 2025 | "box": [ 2026 | 576, 2027 | 2138, 2028 | 611, 2029 | 2192 2030 | ], 2031 | "text": "经" 2032 | }, 2033 | { 2034 | "box": [ 2035 | 621, 2036 | 2137, 2037 | 659, 2038 | 2192 2039 | ], 2040 | "text": "理" 2041 | }, 2042 | { 2043 | "box": [ 2044 | 495, 2045 | 2267, 2046 | 532, 2047 | 2312 2048 | ], 2049 | "text": "意" 2050 | }, 2051 | { 2052 | "box": [ 2053 | 545, 2054 | 2268, 2055 | 579, 2056 | 2313 2057 | ], 2058 | "text": "见" 2059 | } 2060 | ], 2061 | "linking": [ 2062 | [ 2063 | 195, 2064 | 202 2065 | ] 2066 | ], 2067 | "id": 195 2068 | }, 2069 | { 2070 | "box": [ 2071 | 797, 2072 | 2174, 2073 | 889, 2074 | 2229 2075 | ], 2076 | "text": "同意", 2077 | "label": "answer", 2078 | "words": [ 2079 | { 2080 | "box": [ 2081 | 797, 2082 | 2176, 2083 | 828, 2084 | 2230 2085 | ], 2086 | "text": "同" 2087 | }, 2088 | { 2089 | "box": [ 2090 | 837, 2091 | 2174, 2092 | 877, 2093 | 2228 2094 | ], 2095 | "text": "意" 2096 | } 2097 | ], 2098 | "linking": [ 2099 | [ 2100 | 195, 2101 | 202 2102 | ] 2103 | ], 2104 | "id": 202 2105 | }, 2106 | { 2107 | "box": [ 2108 | 441, 2109 | 2394, 2110 | 618, 2111 | 2450 2112 | ], 2113 | "text": "工资变动", 2114 | "label": "question", 2115 | "words": [ 2116 | { 2117 | "box": [ 2118 | 443, 2119 | 2397, 2120 | 473, 2121 | 2451 2122 | ], 2123 | "text": "工" 2124 | }, 2125 | { 2126 | "box": [ 2127 | 483, 2128 | 2396, 2129 | 518, 2130 | 2451 2131 | ], 2132 | "text": "资" 2133 | }, 2134 | { 2135 | "box": [ 2136 | 528, 2137 | 2396, 2138 | 566, 2139 | 2451 2140 | ], 2141 | "text": "变" 2142 | }, 2143 | { 2144 | "box": [ 2145 | 577, 2146 | 2396, 2147 | 615, 2148 | 2452 2149 | ], 2150 | "text": "动" 2151 | } 2152 | ], 2153 | "linking": [ 2154 | [ 2155 | 208, 2156 | 213 2157 | ] 2158 | ], 2159 | "id": 208 2160 | }, 2161 | { 2162 | "box": [ 2163 | 772, 2164 | 2379, 2165 | 866, 2166 | 2428 2167 | ], 2168 | "text": "加薪", 2169 | "label": "answer", 2170 | "words": [ 2171 | { 2172 | "box": [ 2173 | 773, 2174 | 2381, 2175 | 807, 2176 | 2429 2177 | ], 2178 | "text": "加" 2179 | }, 2180 | { 2181 | "box": [ 2182 | 820, 2183 | 2380, 2184 | 854, 2185 | 2428 2186 | ], 2187 | "text": "薪" 2188 | } 2189 | ], 2190 | "linking": [ 2191 | [ 2192 | 208, 2193 | 213 2194 | ] 2195 | ], 2196 | "id": 213 2197 | }, 2198 | { 2199 | "box": [ 2200 | 486, 2201 | 2522, 2202 | 578, 2203 | 2572 2204 | ], 2205 | "text": "备注", 2206 | "label": "other", 2207 | "words": [ 2208 | { 2209 | "box": [ 2210 | 487, 2211 | 2522, 2212 | 521, 2213 | 2572 2214 | ], 2215 | "text": "备" 2216 | }, 2217 | { 2218 | "box": [ 2219 | 531, 2220 | 2522, 2221 | 570, 2222 | 2572 2223 | ], 2224 | "text": "注" 2225 | } 2226 | ], 2227 | "linking": [], 2228 | "id": 216 2229 | }, 2230 | { 2231 | "box": [ 2232 | 476, 2233 | 2652, 2234 | 647, 2235 | 2711 2236 | ], 2237 | "text": "填表人:", 2238 | "label": "question", 2239 | "words": [ 2240 | { 2241 | "box": [ 2242 | 478, 2243 | 2652, 2244 | 516, 2245 | 2710 2246 | ], 2247 | "text": "填" 2248 | }, 2249 | { 2250 | "box": [ 2251 | 527, 2252 | 2653, 2253 | 561, 2254 | 2711 2255 | ], 2256 | "text": "表" 2257 | }, 2258 | { 2259 | "box": [ 2260 | 571, 2261 | 2653, 2262 | 602, 2263 | 2711 2264 | ], 2265 | "text": "人" 2266 | }, 2267 | { 2268 | "box": [ 2269 | 613, 2270 | 2654, 2271 | 647, 2272 | 2711 2273 | ], 2274 | "text": ":" 2275 | } 2276 | ], 2277 | "linking": [ 2278 | [ 2279 | 219, 2280 | 249 2281 | ] 2282 | ], 2283 | "id": 219 2284 | }, 2285 | { 2286 | "box": [ 2287 | 721, 2288 | 608, 2289 | 927, 2290 | 664 2291 | ], 2292 | "text": "填表日期:", 2293 | "label": "question", 2294 | "words": [ 2295 | { 2296 | "box": [ 2297 | 725, 2298 | 611, 2299 | 769, 2300 | 660 2301 | ], 2302 | "text": "填" 2303 | }, 2304 | { 2305 | "box": [ 2306 | 773, 2307 | 612, 2308 | 816, 2309 | 660 2310 | ], 2311 | "text": "表" 2312 | }, 2313 | { 2314 | "box": [ 2315 | 822, 2316 | 615, 2317 | 856, 2318 | 660 2319 | ], 2320 | "text": "日" 2321 | }, 2322 | { 2323 | "box": [ 2324 | 863, 2325 | 612, 2326 | 906, 2327 | 663 2328 | ], 2329 | "text": "期" 2330 | }, 2331 | { 2332 | "box": [ 2333 | 913, 2334 | 628, 2335 | 925, 2336 | 657 2337 | ], 2338 | "text": ":" 2339 | } 2340 | ], 2341 | "linking": [ 2342 | [ 2343 | 235, 2344 | 241 2345 | ] 2346 | ], 2347 | "id": 235 2348 | }, 2349 | { 2350 | "box": [ 2351 | 949, 2352 | 609, 2353 | 1084, 2354 | 663 2355 | ], 2356 | "text": "年月日", 2357 | "label": "answer", 2358 | "words": [ 2359 | { 2360 | "box": [ 2361 | 955, 2362 | 615, 2363 | 997, 2364 | 658 2365 | ], 2366 | "text": "年" 2367 | }, 2368 | { 2369 | "box": [ 2370 | 1001, 2371 | 615, 2372 | 1035, 2373 | 659 2374 | ], 2375 | "text": "月" 2376 | }, 2377 | { 2378 | "box": [ 2379 | 1045, 2380 | 613, 2381 | 1079, 2382 | 658 2383 | ], 2384 | "text": "日" 2385 | } 2386 | ], 2387 | "linking": [ 2388 | [ 2389 | 235, 2390 | 241 2391 | ] 2392 | ], 2393 | "id": 241 2394 | }, 2395 | { 2396 | "box": [ 2397 | 655, 2398 | 2656, 2399 | 792, 2400 | 2708 2401 | ], 2402 | "text": "浦绿勇", 2403 | "label": "answer", 2404 | "words": [ 2405 | { 2406 | "box": [ 2407 | 660, 2408 | 2661, 2409 | 701, 2410 | 2707 2411 | ], 2412 | "text": "浦" 2413 | }, 2414 | { 2415 | "box": [ 2416 | 703, 2417 | 2660, 2418 | 748, 2419 | 2707 2420 | ], 2421 | "text": "绿" 2422 | }, 2423 | { 2424 | "box": [ 2425 | 751, 2426 | 2660, 2427 | 790, 2428 | 2705 2429 | ], 2430 | "text": "勇" 2431 | } 2432 | ], 2433 | "linking": [ 2434 | [ 2435 | 219, 2436 | 249 2437 | ] 2438 | ], 2439 | "id": 249 2440 | }, 2441 | { 2442 | "box": [ 2443 | 810, 2444 | 2654, 2445 | 971, 2446 | 2708 2447 | ], 2448 | "text": "审核人:", 2449 | "label": "question", 2450 | "words": [ 2451 | { 2452 | "box": [ 2453 | 814, 2454 | 2658, 2455 | 858, 2456 | 2707 2457 | ], 2458 | "text": "审" 2459 | }, 2460 | { 2461 | "box": [ 2462 | 862, 2463 | 2659, 2464 | 908, 2465 | 2707 2466 | ], 2467 | "text": "核" 2468 | }, 2469 | { 2470 | "box": [ 2471 | 911, 2472 | 2659, 2473 | 948, 2474 | 2707 2475 | ], 2476 | "text": "人" 2477 | }, 2478 | { 2479 | "box": [ 2480 | 954, 2481 | 2663, 2482 | 970, 2483 | 2707 2484 | ], 2485 | "text": ":" 2486 | } 2487 | ], 2488 | "linking": [ 2489 | [ 2490 | 253, 2491 | 258 2492 | ] 2493 | ], 2494 | "id": 253 2495 | }, 2496 | { 2497 | "box": [ 2498 | 990, 2499 | 2652, 2500 | 1131, 2501 | 2705 2502 | ], 2503 | "text": "吕涛聪", 2504 | "label": "answer", 2505 | "words": [ 2506 | { 2507 | "box": [ 2508 | 993, 2509 | 2654, 2510 | 1030, 2511 | 2702 2512 | ], 2513 | "text": "吕" 2514 | }, 2515 | { 2516 | "box": [ 2517 | 1035, 2518 | 2656, 2519 | 1079, 2520 | 2702 2521 | ], 2522 | "text": "涛" 2523 | }, 2524 | { 2525 | "box": [ 2526 | 1079, 2527 | 2656, 2528 | 1125, 2529 | 2701 2530 | ], 2531 | "text": "聪" 2532 | } 2533 | ], 2534 | "linking": [ 2535 | [ 2536 | 253, 2537 | 258 2538 | ] 2539 | ], 2540 | "id": 258 2541 | } 2542 | ], 2543 | "img": { 2544 | "fname": "zh_train_51.jpg", 2545 | "width": 2480, 2546 | "height": 3508 2547 | } 2548 | } --------------------------------------------------------------------------------