Jelajahi Sumber

2个前后查询

AnlaAnla 1 bulan lalu
induk
melakukan
f5b5343048
2 mengubah file dengan 1518 tambahan dan 1771 penghapusan
  1. 1421 1748
      Test/test02.json
  2. 97 23
      app/api/formate_xy.py

+ 1421 - 1748
Test/test02.json

@@ -1,1793 +1,1466 @@
 {
   "result": {
-    "imageWidth": 2913,
-    "imageHeight": 3970,
+    "imageWidth": 2911,
+    "imageHeight": 3969,
     "center_result": {
       "box_result": {
         "inner_box": {
-          "cls": [
-            1
-          ],
-          "num": 1,
-          "conf": 0.9991420124236072,
-          "names": [
-            "inner_box"
-          ],
           "shapes": [
             {
               "label": "inner_box",
-              "points": [
-                {
-                  "id": 35936910,
-                  "x": 1930,
-                  "y": 292
-                },
-                {
-                  "id": 4671939,
-                  "x": 1926,
-                  "y": 295
-                },
-                {
-                  "id": 87473507,
-                  "x": 329,
-                  "y": 295
-                },
-                {
-                  "id": 55792610,
-                  "x": 326,
-                  "y": 298
-                },
-                {
-                  "id": 98317401,
-                  "x": 313,
-                  "y": 298
-                },
-                {
-                  "id": 45149139,
-                  "x": 310,
-                  "y": 301
-                },
-                {
-                  "id": 71972070,
-                  "x": 304,
-                  "y": 301
-                },
-                {
-                  "id": 28547752,
-                  "x": 301,
-                  "y": 304
-                },
-                {
-                  "id": 95004484,
-                  "x": 295,
-                  "y": 304
-                },
-                {
-                  "id": 31946286,
-                  "x": 292,
-                  "y": 307
-                },
-                {
-                  "id": 60377888,
-                  "x": 289,
-                  "y": 307
-                },
-                {
-                  "id": 71214523,
-                  "x": 282,
-                  "y": 313
-                },
-                {
-                  "id": 16433487,
-                  "x": 282,
-                  "y": 319
-                },
-                {
-                  "id": 6920185,
-                  "x": 279,
-                  "y": 323
-                },
-                {
-                  "id": 82018990,
-                  "x": 279,
-                  "y": 329
-                },
-                {
-                  "id": 14563701,
-                  "x": 276,
-                  "y": 332
-                },
-                {
-                  "id": 22016407,
-                  "x": 276,
-                  "y": 338
-                },
-                {
-                  "id": 19808045,
-                  "x": 279,
-                  "y": 341
-                },
-                {
-                  "id": 64240923,
-                  "x": 279,
-                  "y": 354
-                },
-                {
-                  "id": 33735893,
-                  "x": 282,
-                  "y": 357
-                },
-                {
-                  "id": 8993002,
-                  "x": 282,
-                  "y": 3223
-                },
-                {
-                  "id": 20499621,
-                  "x": 285,
-                  "y": 3226
-                },
-                {
-                  "id": 34084425,
-                  "x": 285,
-                  "y": 3266
-                },
-                {
-                  "id": 71366315,
-                  "x": 282,
-                  "y": 3269
-                },
-                {
-                  "id": 78624985,
-                  "x": 282,
-                  "y": 3300
-                },
-                {
-                  "id": 47846433,
-                  "x": 285,
-                  "y": 3303
-                },
-                {
-                  "id": 67480791,
-                  "x": 285,
-                  "y": 3312
-                },
-                {
-                  "id": 50154264,
-                  "x": 282,
-                  "y": 3316
-                },
+              "rect_box": [
                 {
-                  "id": 99652742,
+                  "id": 7643499,
                   "x": 282,
-                  "y": 3573
-                },
-                {
-                  "id": 10743153,
-                  "x": 285,
-                  "y": 3576
-                },
-                {
-                  "id": 32429304,
-                  "x": 285,
-                  "y": 3629
-                },
-                {
-                  "id": 57849788,
-                  "x": 289,
-                  "y": 3632
-                },
-                {
-                  "id": 72202048,
-                  "x": 289,
-                  "y": 3638
-                },
-                {
-                  "id": 20080641,
-                  "x": 295,
-                  "y": 3644
-                },
-                {
-                  "id": 72230896,
-                  "x": 295,
-                  "y": 3647
-                },
-                {
-                  "id": 60233964,
-                  "x": 301,
-                  "y": 3654
-                },
-                {
-                  "id": 55562792,
-                  "x": 304,
-                  "y": 3654
-                },
-                {
-                  "id": 59872747,
-                  "x": 307,
-                  "y": 3657
-                },
-                {
-                  "id": 69816441,
-                  "x": 320,
-                  "y": 3657
-                },
-                {
-                  "id": 71047482,
-                  "x": 323,
-                  "y": 3660
-                },
-                {
-                  "id": 7585906,
-                  "x": 630,
-                  "y": 3660
-                },
-                {
-                  "id": 13939839,
-                  "x": 633,
-                  "y": 3657
-                },
-                {
-                  "id": 42518223,
-                  "x": 1011,
-                  "y": 3657
-                },
-                {
-                  "id": 11365501,
-                  "x": 1014,
-                  "y": 3660
-                },
-                {
-                  "id": 74645129,
-                  "x": 1033,
-                  "y": 3660
-                },
-                {
-                  "id": 24117868,
-                  "x": 1036,
-                  "y": 3657
-                },
-                {
-                  "id": 19599895,
-                  "x": 1083,
-                  "y": 3657
-                },
-                {
-                  "id": 96467995,
-                  "x": 1086,
-                  "y": 3660
-                },
-                {
-                  "id": 58499612,
-                  "x": 1235,
-                  "y": 3660
-                },
-                {
-                  "id": 80664513,
-                  "x": 1238,
-                  "y": 3657
-                },
-                {
-                  "id": 32113613,
-                  "x": 2612,
-                  "y": 3657
-                },
-                {
-                  "id": 49232901,
-                  "x": 2618,
-                  "y": 3651
-                },
-                {
-                  "id": 91436893,
-                  "x": 2621,
-                  "y": 3651
-                },
-                {
-                  "id": 8219201,
-                  "x": 2640,
-                  "y": 3632
-                },
-                {
-                  "id": 69857350,
-                  "x": 2640,
-                  "y": 3027
-                },
-                {
-                  "id": 35771399,
-                  "x": 2637,
-                  "y": 3024
-                },
-                {
-                  "id": 56764746,
-                  "x": 2637,
-                  "y": 2934
-                },
-                {
-                  "id": 53778586,
-                  "x": 2640,
-                  "y": 2931
-                },
-                {
-                  "id": 18433669,
-                  "x": 2640,
-                  "y": 2788
-                },
-                {
-                  "id": 93860369,
-                  "x": 2637,
-                  "y": 2785
-                },
-                {
-                  "id": 60836985,
-                  "x": 2637,
-                  "y": 2577
-                },
-                {
-                  "id": 16721839,
-                  "x": 2640,
-                  "y": 2574
-                },
-                {
-                  "id": 76406334,
-                  "x": 2640,
-                  "y": 2565
-                },
-                {
-                  "id": 86804084,
-                  "x": 2637,
-                  "y": 2562
-                },
-                {
-                  "id": 97321389,
-                  "x": 2637,
-                  "y": 1985
-                },
-                {
-                  "id": 27480282,
-                  "x": 2640,
-                  "y": 1982
-                },
-                {
-                  "id": 18283884,
-                  "x": 2640,
-                  "y": 1842
-                },
-                {
-                  "id": 86197563,
-                  "x": 2637,
-                  "y": 1839
-                },
-                {
-                  "id": 42315249,
-                  "x": 2637,
-                  "y": 1678
-                },
-                {
-                  "id": 23637446,
-                  "x": 2640,
-                  "y": 1675
-                },
-                {
-                  "id": 36245744,
-                  "x": 2640,
-                  "y": 1644
-                },
-                {
-                  "id": 95305629,
-                  "x": 2637,
-                  "y": 1641
-                },
-                {
-                  "id": 26349007,
-                  "x": 2637,
-                  "y": 375
-                },
-                {
-                  "id": 87324673,
-                  "x": 2640,
-                  "y": 372
-                },
-                {
-                  "id": 21926581,
-                  "x": 2640,
-                  "y": 329
-                },
-                {
-                  "id": 57946550,
-                  "x": 2637,
-                  "y": 326
-                },
-                {
-                  "id": 68855688,
-                  "x": 2637,
-                  "y": 319
-                },
-                {
-                  "id": 77202388,
-                  "x": 2634,
                   "y": 316
                 },
                 {
-                  "id": 38453927,
-                  "x": 2634,
-                  "y": 313
-                },
-                {
-                  "id": 45199016,
-                  "x": 2628,
-                  "y": 307
-                },
-                {
-                  "id": 71477050,
-                  "x": 2624,
-                  "y": 307
-                },
-                {
-                  "id": 9200049,
-                  "x": 2618,
-                  "y": 301
-                },
-                {
-                  "id": 12275245,
-                  "x": 2615,
-                  "y": 301
-                },
-                {
-                  "id": 28568982,
-                  "x": 2612,
-                  "y": 298
-                },
-                {
-                  "id": 98042768,
-                  "x": 2606,
-                  "y": 298
-                },
-                {
-                  "id": 57556920,
-                  "x": 2603,
-                  "y": 295
-                },
-                {
-                  "id": 21289605,
-                  "x": 2587,
-                  "y": 295
-                },
-                {
-                  "id": 4613911,
-                  "x": 2584,
-                  "y": 292
-                },
-                {
-                  "id": 83283948,
-                  "x": 2569,
-                  "y": 292
-                },
-                {
-                  "id": 60358854,
-                  "x": 2566,
-                  "y": 295
-                },
-                {
-                  "id": 96831609,
-                  "x": 2386,
-                  "y": 295
-                },
-                {
-                  "id": 8799876,
-                  "x": 2383,
-                  "y": 292
-                },
-                {
-                  "id": 22620904,
-                  "x": 2162,
-                  "y": 292
-                },
-                {
-                  "id": 1788366,
-                  "x": 2159,
-                  "y": 295
-                },
-                {
-                  "id": 77712561,
-                  "x": 1954,
-                  "y": 295
-                },
-                {
-                  "id": 54878858,
-                  "x": 1951,
-                  "y": 292
-                }
-              ],
-              "rect_box": [
-                {
-                  "id": 41707032,
-                  "x": 276,
-                  "y": 292
-                },
-                {
-                  "id": 39823068,
-                  "x": 2641,
-                  "y": 292
+                  "id": 86775776,
+                  "x": 2593,
+                  "y": 316
                 },
                 {
-                  "id": 44825910,
-                  "x": 2641,
-                  "y": 3661
+                  "id": 43987365,
+                  "x": 2593,
+                  "y": 3601
                 },
                 {
-                  "id": 69759190,
-                  "x": 276,
-                  "y": 3661
+                  "id": 6783877,
+                  "x": 282,
+                  "y": 3601
                 }
-              ],
-              "class_num": 1,
-              "probability": 0.9991420124236072
+              ]
             }
           ]
         },
         "outer_box": {
-          "cls": [
-            1,
-            1,
-            1
-          ],
-          "num": 3,
-          "conf": 0.7838589888549542,
-          "names": [
-            "outer_box",
-            "outer_box",
-            "outer_box"
-          ],
           "shapes": [
             {
               "label": "outer_box",
-              "points": [
-                {
-                  "id": 73724200,
-                  "x": 515,
-                  "y": 192
-                },
-                {
-                  "id": 28468888,
-                  "x": 512,
-                  "y": 195
-                },
-                {
-                  "id": 51371177,
-                  "x": 385,
-                  "y": 195
-                },
-                {
-                  "id": 17995688,
-                  "x": 382,
-                  "y": 198
-                },
-                {
-                  "id": 28093719,
-                  "x": 357,
-                  "y": 198
-                },
-                {
-                  "id": 36067397,
-                  "x": 354,
-                  "y": 195
-                },
+              "rect_box": [
                 {
-                  "id": 54238851,
-                  "x": 351,
+                  "id": 64299128,
+                  "x": 177,
                   "y": 198
                 },
                 {
-                  "id": 67339491,
-                  "x": 276,
+                  "id": 64213114,
+                  "x": 2748,
                   "y": 198
                 },
                 {
-                  "id": 98797165,
-                  "x": 273,
-                  "y": 202
-                },
-                {
-                  "id": 12806911,
-                  "x": 267,
-                  "y": 202
-                },
-                {
-                  "id": 90741969,
-                  "x": 264,
-                  "y": 205
-                },
-                {
-                  "id": 89186541,
-                  "x": 261,
-                  "y": 205
-                },
-                {
-                  "id": 80130071,
-                  "x": 257,
-                  "y": 208
-                },
-                {
-                  "id": 59365891,
-                  "x": 254,
-                  "y": 208
-                },
-                {
-                  "id": 60016461,
-                  "x": 251,
-                  "y": 211
-                },
-                {
-                  "id": 87097083,
-                  "x": 248,
-                  "y": 211
-                },
-                {
-                  "id": 64409364,
-                  "x": 245,
-                  "y": 214
-                },
-                {
-                  "id": 29868381,
-                  "x": 242,
-                  "y": 214
-                },
-                {
-                  "id": 67212657,
-                  "x": 236,
-                  "y": 220
-                },
-                {
-                  "id": 54949257,
-                  "x": 233,
-                  "y": 220
-                },
-                {
-                  "id": 7059263,
-                  "x": 226,
-                  "y": 226
-                },
-                {
-                  "id": 42077936,
-                  "x": 223,
-                  "y": 226
-                },
-                {
-                  "id": 94065990,
-                  "x": 205,
-                  "y": 245
-                },
-                {
-                  "id": 61203903,
-                  "x": 205,
-                  "y": 248
-                },
-                {
-                  "id": 18586396,
-                  "x": 195,
-                  "y": 257
+                  "id": 61811492,
+                  "x": 2748,
+                  "y": 3772
                 },
                 {
-                  "id": 51403931,
-                  "x": 195,
-                  "y": 261
-                },
-                {
-                  "id": 23228676,
-                  "x": 192,
-                  "y": 264
-                },
-                {
-                  "id": 21648509,
-                  "x": 192,
-                  "y": 267
-                },
-                {
-                  "id": 4614891,
-                  "x": 189,
-                  "y": 270
-                },
-                {
-                  "id": 62972250,
-                  "x": 189,
-                  "y": 273
-                },
-                {
-                  "id": 73042167,
-                  "x": 186,
-                  "y": 276
-                },
-                {
-                  "id": 1645737,
-                  "x": 186,
-                  "y": 279
-                },
-                {
-                  "id": 59861408,
-                  "x": 183,
-                  "y": 282
-                },
-                {
-                  "id": 11925316,
-                  "x": 183,
-                  "y": 292
-                },
-                {
-                  "id": 55429265,
-                  "x": 180,
-                  "y": 295
-                },
-                {
-                  "id": 50542131,
-                  "x": 180,
-                  "y": 304
-                },
-                {
-                  "id": 69346277,
-                  "x": 177,
-                  "y": 307
-                },
-                {
-                  "id": 10822764,
-                  "x": 177,
-                  "y": 462
-                },
-                {
-                  "id": 36317518,
-                  "x": 174,
-                  "y": 465
-                },
-                {
-                  "id": 16162439,
-                  "x": 174,
-                  "y": 664
-                },
-                {
-                  "id": 84760280,
+                  "id": 94591339,
                   "x": 177,
-                  "y": 667
-                },
-                {
-                  "id": 73972948,
-                  "x": 177,
-                  "y": 3573
-                },
-                {
-                  "id": 54241885,
-                  "x": 180,
-                  "y": 3576
-                },
-                {
-                  "id": 58342520,
-                  "x": 180,
-                  "y": 3663
-                },
-                {
-                  "id": 87978015,
-                  "x": 183,
-                  "y": 3666
-                },
-                {
-                  "id": 50428900,
-                  "x": 183,
-                  "y": 3682
-                },
-                {
-                  "id": 48115591,
-                  "x": 186,
-                  "y": 3685
-                },
-                {
-                  "id": 8475677,
-                  "x": 186,
-                  "y": 3688
-                },
-                {
-                  "id": 96283803,
-                  "x": 189,
-                  "y": 3691
-                },
-                {
-                  "id": 80881611,
-                  "x": 189,
-                  "y": 3697
-                },
-                {
-                  "id": 80957352,
-                  "x": 192,
-                  "y": 3700
-                },
-                {
-                  "id": 43143841,
-                  "x": 192,
-                  "y": 3703
-                },
-                {
-                  "id": 54614063,
-                  "x": 195,
-                  "y": 3706
-                },
-                {
-                  "id": 36458178,
-                  "x": 195,
-                  "y": 3709
-                },
-                {
-                  "id": 14680010,
-                  "x": 202,
-                  "y": 3716
-                },
-                {
-                  "id": 95636199,
-                  "x": 202,
-                  "y": 3719
-                },
-                {
-                  "id": 25397919,
-                  "x": 205,
-                  "y": 3722
-                },
-                {
-                  "id": 20007691,
-                  "x": 205,
-                  "y": 3725
-                },
-                {
-                  "id": 96458423,
-                  "x": 233,
-                  "y": 3753
-                },
-                {
-                  "id": 52422053,
-                  "x": 236,
-                  "y": 3753
-                },
-                {
-                  "id": 74982151,
-                  "x": 239,
-                  "y": 3756
-                },
-                {
-                  "id": 49843589,
-                  "x": 242,
-                  "y": 3756
-                },
-                {
-                  "id": 62934531,
-                  "x": 245,
-                  "y": 3759
-                },
-                {
-                  "id": 51520153,
-                  "x": 248,
-                  "y": 3759
-                },
-                {
-                  "id": 65430023,
-                  "x": 251,
-                  "y": 3762
-                },
-                {
-                  "id": 83866119,
-                  "x": 254,
-                  "y": 3762
-                },
-                {
-                  "id": 73316921,
-                  "x": 257,
-                  "y": 3765
-                },
-                {
-                  "id": 73532026,
-                  "x": 267,
-                  "y": 3765
-                },
-                {
-                  "id": 23023288,
-                  "x": 270,
-                  "y": 3768
-                },
-                {
-                  "id": 45812641,
-                  "x": 279,
-                  "y": 3768
-                },
-                {
-                  "id": 40618019,
-                  "x": 282,
-                  "y": 3772
-                },
-                {
-                  "id": 20116788,
-                  "x": 2624,
                   "y": 3772
-                },
-                {
-                  "id": 15046226,
-                  "x": 2628,
-                  "y": 3768
-                },
-                {
-                  "id": 82952890,
-                  "x": 2646,
-                  "y": 3768
-                },
-                {
-                  "id": 77138361,
-                  "x": 2649,
-                  "y": 3765
-                },
-                {
-                  "id": 89516360,
-                  "x": 2656,
-                  "y": 3765
-                },
-                {
-                  "id": 87372788,
-                  "x": 2659,
-                  "y": 3762
-                },
-                {
-                  "id": 59255181,
-                  "x": 2662,
-                  "y": 3762
-                },
-                {
-                  "id": 15029303,
-                  "x": 2665,
-                  "y": 3759
-                },
-                {
-                  "id": 53825877,
-                  "x": 2668,
-                  "y": 3759
-                },
-                {
-                  "id": 10740297,
-                  "x": 2671,
-                  "y": 3756
-                },
-                {
-                  "id": 15863463,
-                  "x": 2674,
-                  "y": 3756
-                },
-                {
-                  "id": 81743786,
-                  "x": 2677,
-                  "y": 3753
-                },
-                {
-                  "id": 57262819,
-                  "x": 2680,
-                  "y": 3753
-                },
-                {
-                  "id": 95893599,
-                  "x": 2683,
-                  "y": 3750
-                },
-                {
-                  "id": 3568171,
-                  "x": 2687,
-                  "y": 3750
-                },
-                {
-                  "id": 61761512,
-                  "x": 2714,
-                  "y": 3722
-                },
-                {
-                  "id": 39506182,
-                  "x": 2714,
-                  "y": 3719
-                },
-                {
-                  "id": 90225895,
-                  "x": 2721,
-                  "y": 3713
-                },
-                {
-                  "id": 96593494,
-                  "x": 2721,
-                  "y": 3709
-                },
-                {
-                  "id": 69012812,
-                  "x": 2724,
-                  "y": 3706
-                },
-                {
-                  "id": 4215626,
-                  "x": 2724,
-                  "y": 3703
-                },
-                {
-                  "id": 9801451,
-                  "x": 2727,
-                  "y": 3700
-                },
-                {
-                  "id": 96933528,
-                  "x": 2727,
-                  "y": 3697
-                },
-                {
-                  "id": 89964271,
-                  "x": 2730,
-                  "y": 3694
-                },
-                {
-                  "id": 23508012,
-                  "x": 2730,
-                  "y": 3688
-                },
-                {
-                  "id": 73543061,
-                  "x": 2733,
-                  "y": 3685
-                },
-                {
-                  "id": 92223870,
-                  "x": 2733,
-                  "y": 3669
-                },
-                {
-                  "id": 48046479,
-                  "x": 2736,
-                  "y": 3666
-                },
-                {
-                  "id": 71053982,
-                  "x": 2736,
-                  "y": 2875
-                },
-                {
-                  "id": 33211133,
-                  "x": 2739,
-                  "y": 2872
-                },
-                {
-                  "id": 52199797,
-                  "x": 2739,
-                  "y": 2863
-                },
-                {
-                  "id": 26361229,
-                  "x": 2736,
-                  "y": 2860
-                },
-                {
-                  "id": 55395617,
-                  "x": 2736,
-                  "y": 2726
-                },
-                {
-                  "id": 57229809,
-                  "x": 2739,
-                  "y": 2723
-                },
-                {
-                  "id": 47027727,
-                  "x": 2739,
-                  "y": 2512
-                },
-                {
-                  "id": 79359252,
-                  "x": 2736,
-                  "y": 2509
-                },
-                {
-                  "id": 61472829,
-                  "x": 2736,
-                  "y": 2348
-                },
-                {
-                  "id": 18691602,
-                  "x": 2739,
-                  "y": 2345
-                },
-                {
-                  "id": 9551229,
-                  "x": 2739,
-                  "y": 2304
-                },
-                {
-                  "id": 21692843,
-                  "x": 2736,
-                  "y": 2301
-                },
-                {
-                  "id": 19010555,
-                  "x": 2736,
-                  "y": 2218
-                },
-                {
-                  "id": 3978598,
-                  "x": 2739,
-                  "y": 2215
-                },
-                {
-                  "id": 8883112,
-                  "x": 2739,
-                  "y": 2177
-                },
-                {
-                  "id": 87585946,
-                  "x": 2736,
-                  "y": 2174
-                },
-                {
-                  "id": 58686913,
-                  "x": 2736,
-                  "y": 2165
-                },
-                {
-                  "id": 80319057,
-                  "x": 2739,
-                  "y": 2162
-                },
-                {
-                  "id": 82806982,
-                  "x": 2739,
-                  "y": 2137
-                },
-                {
-                  "id": 80844316,
-                  "x": 2736,
-                  "y": 2134
-                },
-                {
-                  "id": 47407086,
-                  "x": 2736,
-                  "y": 2109
-                },
-                {
-                  "id": 19543172,
-                  "x": 2739,
-                  "y": 2106
-                },
-                {
-                  "id": 11843516,
-                  "x": 2739,
-                  "y": 1938
-                },
-                {
-                  "id": 87734649,
-                  "x": 2736,
-                  "y": 1935
-                },
-                {
-                  "id": 41825093,
-                  "x": 2736,
-                  "y": 1728
-                },
-                {
-                  "id": 60298561,
-                  "x": 2739,
-                  "y": 1724
-                },
-                {
-                  "id": 72451354,
-                  "x": 2739,
-                  "y": 1706
-                },
-                {
-                  "id": 11575843,
-                  "x": 2736,
-                  "y": 1703
-                },
-                {
-                  "id": 44730250,
-                  "x": 2736,
-                  "y": 307
-                },
-                {
-                  "id": 20445331,
-                  "x": 2733,
-                  "y": 304
-                },
-                {
-                  "id": 76907868,
-                  "x": 2733,
-                  "y": 285
-                },
-                {
-                  "id": 47237305,
-                  "x": 2730,
-                  "y": 282
-                },
-                {
-                  "id": 10102577,
-                  "x": 2730,
-                  "y": 276
-                },
-                {
-                  "id": 79257865,
-                  "x": 2727,
-                  "y": 273
-                },
-                {
-                  "id": 38278321,
-                  "x": 2727,
-                  "y": 270
-                },
-                {
-                  "id": 95258904,
-                  "x": 2724,
-                  "y": 267
-                },
-                {
-                  "id": 12508222,
-                  "x": 2724,
-                  "y": 264
-                },
-                {
-                  "id": 61409480,
-                  "x": 2721,
-                  "y": 261
-                },
-                {
-                  "id": 95545077,
-                  "x": 2721,
-                  "y": 257
-                },
-                {
-                  "id": 12654060,
-                  "x": 2714,
-                  "y": 251
-                },
-                {
-                  "id": 15989615,
-                  "x": 2714,
-                  "y": 248
-                },
-                {
-                  "id": 6823751,
-                  "x": 2696,
-                  "y": 230
-                },
-                {
-                  "id": 66832832,
-                  "x": 2693,
-                  "y": 230
-                },
-                {
-                  "id": 71760885,
-                  "x": 2683,
-                  "y": 220
-                },
-                {
-                  "id": 86656188,
-                  "x": 2680,
-                  "y": 220
-                },
-                {
-                  "id": 79897542,
-                  "x": 2674,
-                  "y": 214
-                },
-                {
-                  "id": 79854747,
-                  "x": 2671,
-                  "y": 214
-                },
-                {
-                  "id": 25659533,
-                  "x": 2668,
-                  "y": 211
-                },
-                {
-                  "id": 97683378,
-                  "x": 2665,
-                  "y": 211
-                },
-                {
-                  "id": 67189427,
-                  "x": 2662,
-                  "y": 208
-                },
-                {
-                  "id": 17240020,
-                  "x": 2659,
-                  "y": 208
-                },
-                {
-                  "id": 4484380,
-                  "x": 2656,
-                  "y": 205
-                },
-                {
-                  "id": 44874039,
-                  "x": 2643,
-                  "y": 205
-                },
-                {
-                  "id": 99135385,
-                  "x": 2640,
-                  "y": 202
-                },
-                {
-                  "id": 34603686,
-                  "x": 2358,
-                  "y": 202
-                },
-                {
-                  "id": 40701971,
-                  "x": 2355,
-                  "y": 198
-                },
-                {
-                  "id": 17462496,
-                  "x": 2057,
-                  "y": 198
-                },
-                {
-                  "id": 84515810,
-                  "x": 2054,
-                  "y": 202
-                },
-                {
-                  "id": 71928359,
-                  "x": 1508,
-                  "y": 202
-                },
-                {
-                  "id": 94160845,
-                  "x": 1505,
-                  "y": 198
-                },
-                {
-                  "id": 86285356,
-                  "x": 658,
-                  "y": 198
-                },
-                {
-                  "id": 56578218,
-                  "x": 655,
-                  "y": 195
-                },
-                {
-                  "id": 62774653,
-                  "x": 540,
-                  "y": 195
-                },
-                {
-                  "id": 19862360,
-                  "x": 537,
-                  "y": 192
-                }
-              ],
-              "rect_box": [
-                {
-                  "id": 14139408,
-                  "x": 174,
-                  "y": 192
-                },
-                {
-                  "id": 96894338,
-                  "x": 2740,
-                  "y": 192
-                },
-                {
-                  "id": 5140643,
-                  "x": 2740,
-                  "y": 3773
-                },
-                {
-                  "id": 40043595,
-                  "x": 174,
-                  "y": 3773
                 }
-              ],
-              "class_num": 1,
-              "probability": 0.9992102839451378
+              ]
+            }
+          ]
+        }
+      }
+    },
+    "defect_result": {
+      "defects": [
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.048412214012145995,
+          "height": 0.17347710411071776,
+          "points": [
+            {
+              "id": 45777793,
+              "x": 2535,
+              "y": 3771
+            },
+            {
+              "id": 9115392,
+              "x": 2534,
+              "y": 3772
+            },
+            {
+              "id": 80641517,
+              "x": 2535,
+              "y": 3773
+            },
+            {
+              "id": 47524961,
+              "x": 2541,
+              "y": 3773
+            },
+            {
+              "id": 43271758,
+              "x": 2541,
+              "y": 3772
+            },
+            {
+              "id": 44122638,
+              "x": 2535,
+              "y": 3771
+            }
+          ],
+          "min_rect": [
+            [
+              2537.513427734375,
+              3772.419189453125
+            ],
+            [
+              7.069156646728516,
+              1.972787857055664
+            ],
+            9.462322235107422
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7422198033646533,
+          "pixel_area": 10,
+          "actual_area": 0.006022115999999999,
+          "defect_type": "edge",
+          "id": 29426694
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.06173641555309296,
+          "height": 0.9319661874389648,
+          "points": [
+            {
+              "id": 41500941,
+              "x": 391,
+              "y": 3771
+            },
+            {
+              "id": 73509331,
+              "x": 390,
+              "y": 3772
+            },
+            {
+              "id": 24607873,
+              "x": 362,
+              "y": 3772
+            },
+            {
+              "id": 51435094,
+              "x": 362,
+              "y": 3773
+            },
+            {
+              "id": 77203886,
+              "x": 376,
+              "y": 3773
+            },
+            {
+              "id": 40296082,
+              "x": 377,
+              "y": 3774
+            },
+            {
+              "id": 75484161,
+              "x": 400,
+              "y": 3773
+            },
+            {
+              "id": 19539136,
+              "x": 398,
+              "y": 3771
+            },
+            {
+              "id": 67321210,
+              "x": 391,
+              "y": 3771
+            }
+          ],
+          "min_rect": [
+            [
+              380.986328125,
+              3772.60400390625
+            ],
+            [
+              2.5157463550567627,
+              37.97743225097656
+            ],
+            88.02507019042969
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7986520086565326,
+          "pixel_area": 57.5,
+          "actual_area": 0.03462716699999999,
+          "defect_type": "edge",
+          "id": 59875853
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.06392005396842956,
+          "height": 0.21915449415206908,
+          "points": [
+            {
+              "id": 4686590,
+              "x": 2601,
+              "y": 3770
+            },
+            {
+              "id": 69478555,
+              "x": 2597,
+              "y": 3772
+            },
+            {
+              "id": 60174661,
+              "x": 2598,
+              "y": 3773
+            },
+            {
+              "id": 51418855,
+              "x": 2606,
+              "y": 3772
+            },
+            {
+              "id": 31126684,
+              "x": 2601,
+              "y": 3770
+            }
+          ],
+          "min_rect": [
+            [
+              2601.40771484375,
+              3771.26171875
+            ],
+            [
+              2.604729175567627,
+              8.930500984191895
+            ],
+            82.87498474121094
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7491739221981593,
+          "pixel_area": 13.5,
+          "actual_area": 0.008129856599999999,
+          "defect_type": "edge",
+          "id": 32803340
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.09816,
+          "height": 0.39264,
+          "points": [
+            {
+              "id": 89620821,
+              "x": 648,
+              "y": 3770
+            },
+            {
+              "id": 7373813,
+              "x": 643,
+              "y": 3773
+            },
+            {
+              "id": 62055024,
+              "x": 647,
+              "y": 3774
+            },
+            {
+              "id": 53107370,
+              "x": 657,
+              "y": 3774
+            },
+            {
+              "id": 75693776,
+              "x": 659,
+              "y": 3773
+            },
+            {
+              "id": 73410123,
+              "x": 655,
+              "y": 3770
+            },
+            {
+              "id": 60100859,
+              "x": 648,
+              "y": 3770
+            }
+          ],
+          "min_rect": [
+            [
+              651,
+              3772
+            ],
+            [
+              4,
+              16
+            ],
+            90
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.8632130511105061,
+          "pixel_area": 47.5,
+          "actual_area": 0.028605050999999996,
+          "defect_type": "edge",
+          "id": 60721579
+        },
+        {
+          "label": "wear",
+          "score": -1.5,
+          "width": 0.17066002970695496,
+          "height": 2.3412798596191404,
+          "points": [
+            {
+              "id": 89423356,
+              "x": 250,
+              "y": 3763
+            },
+            {
+              "id": 58171573,
+              "x": 249,
+              "y": 3764
+            },
+            {
+              "id": 33939116,
+              "x": 265,
+              "y": 3766
+            },
+            {
+              "id": 24955935,
+              "x": 275,
+              "y": 3769
+            },
+            {
+              "id": 77748633,
+              "x": 281,
+              "y": 3769
+            },
+            {
+              "id": 11873125,
+              "x": 283,
+              "y": 3772
+            },
+            {
+              "id": 54542021,
+              "x": 310,
+              "y": 3772
+            },
+            {
+              "id": 90853676,
+              "x": 311,
+              "y": 3773
+            },
+            {
+              "id": 98162820,
+              "x": 330,
+              "y": 3773
+            },
+            {
+              "id": 27270665,
+              "x": 331,
+              "y": 3774
+            },
+            {
+              "id": 35628902,
+              "x": 344,
+              "y": 3773
+            },
+            {
+              "id": 7725625,
+              "x": 344,
+              "y": 3772
+            },
+            {
+              "id": 37977410,
+              "x": 335,
+              "y": 3772
+            },
+            {
+              "id": 37726378,
+              "x": 334,
+              "y": 3771
+            },
+            {
+              "id": 42956558,
+              "x": 313,
+              "y": 3772
+            },
+            {
+              "id": 87092573,
+              "x": 301,
+              "y": 3769
+            },
+            {
+              "id": 18475939,
+              "x": 284,
+              "y": 3769
+            },
+            {
+              "id": 40543124,
+              "x": 283,
+              "y": 3765
+            },
+            {
+              "id": 92006869,
+              "x": 262,
+              "y": 3765
+            },
+            {
+              "id": 5375001,
+              "x": 261,
+              "y": 3764
+            },
+            {
+              "id": 86591043,
+              "x": 250,
+              "y": 3763
+            }
+          ],
+          "min_rect": [
+            [
+              296.32452392578125,
+              3770.029541015625
+            ],
+            [
+              95.40667724609376,
+              6.954361438751221
+            ],
+            6.546290874481201
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.659250760160928,
+          "pixel_area": 204,
+          "actual_area": 0.1228511664,
+          "defect_type": "corner",
+          "id": 18625939
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.05267819023132324,
+          "height": 0.2743655858230591,
+          "points": [
+            {
+              "id": 68494873,
+              "x": 234,
+              "y": 3755
+            },
+            {
+              "id": 45072967,
+              "x": 236,
+              "y": 3757
+            },
+            {
+              "id": 23799008,
+              "x": 241,
+              "y": 3757
+            },
+            {
+              "id": 62982778,
+              "x": 244,
+              "y": 3759
+            },
+            {
+              "id": 1938362,
+              "x": 245,
+              "y": 3757
+            },
+            {
+              "id": 99997448,
+              "x": 234,
+              "y": 3755
+            }
+          ],
+          "min_rect": [
+            [
+              239.3080291748047,
+              3757.055908203125
+            ],
+            [
+              11.180341720581056,
+              2.146625518798828
+            ],
+            10.304845809936523
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.6265373666371618,
+          "pixel_area": 13,
+          "actual_area": 0.0078287508,
+          "defect_type": "corner",
+          "id": 73465051
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.1167388036251068,
+          "height": 0.4888437292098999,
+          "points": [
+            {
+              "id": 4161790,
+              "x": 215,
+              "y": 3739
+            },
+            {
+              "id": 24228047,
+              "x": 220,
+              "y": 3745
+            },
+            {
+              "id": 38187662,
+              "x": 223,
+              "y": 3746
+            },
+            {
+              "id": 84630949,
+              "x": 224,
+              "y": 3749
+            },
+            {
+              "id": 4927475,
+              "x": 228,
+              "y": 3752
+            },
+            {
+              "id": 12811370,
+              "x": 231,
+              "y": 3751
+            },
+            {
+              "id": 46158463,
+              "x": 230,
+              "y": 3748
+            },
+            {
+              "id": 80413462,
+              "x": 222,
+              "y": 3744
+            },
+            {
+              "id": 51741240,
+              "x": 222,
+              "y": 3741
+            },
+            {
+              "id": 16804614,
+              "x": 220,
+              "y": 3739
+            },
+            {
+              "id": 5518334,
+              "x": 215,
+              "y": 3739
+            }
+          ],
+          "min_rect": [
+            [
+              223.0498504638672,
+              3744.9453125
+            ],
+            [
+              19.9202823638916,
+              4.757082462310791
+            ],
+            41.987213134765625
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7343958180397749,
+          "pixel_area": 58,
+          "actual_area": 0.0349282728,
+          "defect_type": "corner",
+          "id": 7743414
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.11754174290657043,
+          "height": 0.4365835663604736,
+          "points": [
+            {
+              "id": 64860895,
+              "x": 180,
+              "y": 3666
+            },
+            {
+              "id": 19724085,
+              "x": 178,
+              "y": 3671
+            },
+            {
+              "id": 76292536,
+              "x": 179,
+              "y": 3672
+            },
+            {
+              "id": 22076817,
+              "x": 180,
+              "y": 3684
+            },
+            {
+              "id": 71795508,
+              "x": 183,
+              "y": 3679
+            },
+            {
+              "id": 57764572,
+              "x": 183,
+              "y": 3672
+            },
+            {
+              "id": 81694514,
+              "x": 180,
+              "y": 3666
+            }
+          ],
+          "min_rect": [
+            [
+              181.01446533203125,
+              3674.84375
+            ],
+            [
+              17.790691375732422,
+              4.789802074432373
+            ],
+            81.25383758544922
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7843194083733992,
+          "pixel_area": 50,
+          "actual_area": 0.03011058,
+          "defect_type": "corner",
+          "id": 83156109
+        },
+        {
+          "label": "wear",
+          "score": -0.5,
+          "width": 0.16944274904251097,
+          "height": 0.8996602674865722,
+          "points": [
+            {
+              "id": 44506557,
+              "x": 2735,
+              "y": 3656
+            },
+            {
+              "id": 30289872,
+              "x": 2734,
+              "y": 3662
+            },
+            {
+              "id": 89795360,
+              "x": 2731,
+              "y": 3664
+            },
+            {
+              "id": 5973909,
+              "x": 2731,
+              "y": 3677
+            },
+            {
+              "id": 54357699,
+              "x": 2730,
+              "y": 3681
+            },
+            {
+              "id": 41602172,
+              "x": 2728,
+              "y": 3682
+            },
+            {
+              "id": 24796305,
+              "x": 2728,
+              "y": 3692
+            },
+            {
+              "id": 93390618,
+              "x": 2728,
+              "y": 3690
+            },
+            {
+              "id": 62274225,
+              "x": 2729,
+              "y": 3689
+            },
+            {
+              "id": 17538249,
+              "x": 2730,
+              "y": 3691
+            },
+            {
+              "id": 98749639,
+              "x": 2733,
+              "y": 3683
+            },
+            {
+              "id": 55024260,
+              "x": 2735,
+              "y": 3682
+            },
+            {
+              "id": 45324861,
+              "x": 2735,
+              "y": 3675
+            },
+            {
+              "id": 86605058,
+              "x": 2736,
+              "y": 3674
+            },
+            {
+              "id": 70249052,
+              "x": 2736,
+              "y": 3657
+            },
+            {
+              "id": 65947528,
+              "x": 2735,
+              "y": 3656
+            }
+          ],
+          "min_rect": [
+            [
+              2732.797119140625,
+              3674.21630859375
+            ],
+            [
+              6.904757499694824,
+              36.66097259521485
+            ],
+            9.462321281433104
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.6843208996244791,
+          "pixel_area": 133.5,
+          "actual_area": 0.0803952486,
+          "defect_type": "corner",
+          "id": 35631105
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.09816,
+          "height": 0.26994,
+          "points": [
+            {
+              "id": 53404111,
+              "x": 2736,
+              "y": 3639
+            },
+            {
+              "id": 83419983,
+              "x": 2734,
+              "y": 3642
+            },
+            {
+              "id": 3627225,
+              "x": 2735,
+              "y": 3650
+            },
+            {
+              "id": 26061516,
+              "x": 2738,
+              "y": 3649
+            },
+            {
+              "id": 54734216,
+              "x": 2738,
+              "y": 3641
+            },
+            {
+              "id": 97743792,
+              "x": 2736,
+              "y": 3639
+            }
+          ],
+          "min_rect": [
+            [
+              2736,
+              3644.5
+            ],
+            [
+              4,
+              11
+            ],
+            0
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7123329573844233,
+          "pixel_area": 33.5,
+          "actual_area": 0.020174088599999997,
+          "defect_type": "edge",
+          "id": 62007192
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.07361999999999999,
+          "height": 0.07361999999999999,
+          "points": [
+            {
+              "id": 66991104,
+              "x": 2731,
+              "y": 2251
+            },
+            {
+              "id": 46891369,
+              "x": 2731,
+              "y": 2254
+            },
+            {
+              "id": 70431786,
+              "x": 2734,
+              "y": 2252
+            },
+            {
+              "id": 38561891,
+              "x": 2734,
+              "y": 2251
+            },
+            {
+              "id": 52667493,
+              "x": 2731,
+              "y": 2251
+            }
+          ],
+          "min_rect": [
+            [
+              2732.5,
+              2252.5
+            ],
+            [
+              3,
+              3
+            ],
+            90
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.6847047805786133,
+          "pixel_area": 6,
+          "actual_area": 0.0036132696,
+          "defect_type": "edge",
+          "id": 63103902
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.10539035016059876,
+          "height": 0.640920368270874,
+          "points": [
+            {
+              "id": 5788829,
+              "x": 2735,
+              "y": 298
+            },
+            {
+              "id": 14742173,
+              "x": 2733,
+              "y": 300
+            },
+            {
+              "id": 48225802,
+              "x": 2734,
+              "y": 301
+            },
+            {
+              "id": 43505779,
+              "x": 2734,
+              "y": 303
+            },
+            {
+              "id": 78735761,
+              "x": 2735,
+              "y": 304
+            },
+            {
+              "id": 60625317,
+              "x": 2735,
+              "y": 310
+            },
+            {
+              "id": 29459264,
+              "x": 2734,
+              "y": 311
+            },
+            {
+              "id": 55991503,
+              "x": 2734,
+              "y": 320
+            },
+            {
+              "id": 65480487,
+              "x": 2735,
+              "y": 324
+            },
+            {
+              "id": 80624349,
+              "x": 2737,
+              "y": 323
+            },
+            {
+              "id": 95749143,
+              "x": 2738,
+              "y": 324
+            },
+            {
+              "id": 75425054,
+              "x": 2738,
+              "y": 314
+            },
+            {
+              "id": 73760223,
+              "x": 2737,
+              "y": 315
+            },
+            {
+              "id": 45738745,
+              "x": 2736,
+              "y": 314
+            },
+            {
+              "id": 4003107,
+              "x": 2735,
+              "y": 298
+            }
+          ],
+          "min_rect": [
+            [
+              2735.7021484375,
+              311.0398864746094
+            ],
+            [
+              26.117374420166016,
+              4.29463529586792
+            ],
+            87.1375961303711
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.685155169853431,
+          "pixel_area": 53,
+          "actual_area": 0.031917214799999996,
+          "defect_type": "corner",
+          "id": 58505665
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.11363152994155884,
+          "height": 0.14309155448913574,
+          "points": [
+            {
+              "id": 91431460,
+              "x": 2711,
+              "y": 249
+            },
+            {
+              "id": 23664531,
+              "x": 2710,
+              "y": 252
+            },
+            {
+              "id": 68527197,
+              "x": 2712,
+              "y": 255
+            },
+            {
+              "id": 81499004,
+              "x": 2713,
+              "y": 254
+            },
+            {
+              "id": 69590287,
+              "x": 2714,
+              "y": 255
+            },
+            {
+              "id": 47452298,
+              "x": 2716,
+              "y": 252
+            },
+            {
+              "id": 60727841,
+              "x": 2711,
+              "y": 249
+            }
+          ],
+          "min_rect": [
+            [
+              2712.308837890625,
+              252.48529052734375
+            ],
+            [
+              5.830951690673828,
+              4.630461692810059
+            ],
+            30.963754653930664
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7991885807400658,
+          "pixel_area": 20,
+          "actual_area": 0.012044231999999998,
+          "defect_type": "corner",
+          "id": 53381986
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.12647264914512635,
+          "height": 0.26061030378341676,
+          "points": [
+            {
+              "id": 92863967,
+              "x": 2687,
+              "y": 224
+            },
+            {
+              "id": 65505430,
+              "x": 2686,
+              "y": 227
+            },
+            {
+              "id": 43219283,
+              "x": 2688,
+              "y": 229
+            },
+            {
+              "id": 19406312,
+              "x": 2691,
+              "y": 231
+            },
+            {
+              "id": 11808511,
+              "x": 2695,
+              "y": 231
+            },
+            {
+              "id": 40965076,
+              "x": 2695,
+              "y": 228
+            },
+            {
+              "id": 92831272,
+              "x": 2692,
+              "y": 227
+            },
+            {
+              "id": 71330061,
+              "x": 2690,
+              "y": 224
+            },
+            {
+              "id": 14270127,
+              "x": 2688,
+              "y": 225
+            },
+            {
+              "id": 3478452,
+              "x": 2687,
+              "y": 224
+            }
+          ],
+          "min_rect": [
+            [
+              2690.70751953125,
+              227.8657684326172
+            ],
+            [
+              10.619816780090332,
+              5.1537346839904785
+            ],
+            38.65980529785156
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7794674597969351,
+          "pixel_area": 37.5,
+          "actual_area": 0.022582935,
+          "defect_type": "corner",
+          "id": 54050857
+        },
+        {
+          "label": "wear",
+          "score": -0.5,
+          "width": 0.21417729566574095,
+          "height": 1.2167093463134766,
+          "points": [
+            {
+              "id": 17329076,
+              "x": 2637,
+              "y": 203
+            },
+            {
+              "id": 4858468,
+              "x": 2635,
+              "y": 204
+            },
+            {
+              "id": 44639212,
+              "x": 2642,
+              "y": 207
+            },
+            {
+              "id": 71100658,
+              "x": 2648,
+              "y": 207
+            },
+            {
+              "id": 35783987,
+              "x": 2649,
+              "y": 206
+            },
+            {
+              "id": 38454373,
+              "x": 2655,
+              "y": 207
+            },
+            {
+              "id": 64581585,
+              "x": 2658,
+              "y": 209
             },
             {
-              "label": "outer_box",
-              "points": [
-                {
-                  "id": 81374993,
-                  "x": 496,
-                  "y": 56
-                },
-                {
-                  "id": 99344978,
-                  "x": 493,
-                  "y": 59
-                },
-                {
-                  "id": 38452772,
-                  "x": 490,
-                  "y": 59
-                },
-                {
-                  "id": 32632015,
-                  "x": 487,
-                  "y": 62
-                },
-                {
-                  "id": 91546880,
-                  "x": 490,
-                  "y": 65
-                },
-                {
-                  "id": 10603730,
-                  "x": 490,
-                  "y": 68
-                },
-                {
-                  "id": 2278451,
-                  "x": 496,
-                  "y": 74
-                },
-                {
-                  "id": 4392785,
-                  "x": 496,
-                  "y": 78
-                },
-                {
-                  "id": 91787706,
-                  "x": 503,
-                  "y": 84
-                },
-                {
-                  "id": 16245864,
-                  "x": 506,
-                  "y": 84
-                },
-                {
-                  "id": 1658536,
-                  "x": 509,
-                  "y": 81
-                },
-                {
-                  "id": 50373450,
-                  "x": 524,
-                  "y": 81
-                },
-                {
-                  "id": 98144198,
-                  "x": 540,
-                  "y": 65
-                },
-                {
-                  "id": 30391636,
-                  "x": 540,
-                  "y": 59
-                },
-                {
-                  "id": 47421257,
-                  "x": 530,
-                  "y": 59
-                },
-                {
-                  "id": 75870372,
-                  "x": 527,
-                  "y": 56
-                }
-              ],
-              "class_num": 1,
-              "probability": 0.5425777233491732
+              "id": 28849511,
+              "x": 2658,
+              "y": 211
             },
             {
-              "label": "outer_box",
-              "points": [
-                {
-                  "id": 26590611,
-                  "x": 105,
-                  "y": 34
-                },
-                {
-                  "id": 4200523,
-                  "x": 102,
-                  "y": 37
-                },
-                {
-                  "id": 95004035,
-                  "x": 102,
-                  "y": 40
-                },
-                {
-                  "id": 70797877,
-                  "x": 99,
-                  "y": 43
-                },
-                {
-                  "id": 44251929,
-                  "x": 99,
-                  "y": 84
-                },
-                {
-                  "id": 9498634,
-                  "x": 102,
-                  "y": 87
-                },
-                {
-                  "id": 90851969,
-                  "x": 102,
-                  "y": 264
-                },
-                {
-                  "id": 39850429,
-                  "x": 105,
-                  "y": 267
-                },
-                {
-                  "id": 28149799,
-                  "x": 105,
-                  "y": 273
-                },
-                {
-                  "id": 85657396,
-                  "x": 105,
-                  "y": 270
-                },
-                {
-                  "id": 37068196,
-                  "x": 109,
-                  "y": 267
-                },
-                {
-                  "id": 26988884,
-                  "x": 109,
-                  "y": 261
-                },
-                {
-                  "id": 66415485,
-                  "x": 112,
-                  "y": 257
-                },
-                {
-                  "id": 9784485,
-                  "x": 112,
-                  "y": 254
-                },
-                {
-                  "id": 58256763,
-                  "x": 115,
-                  "y": 251
-                },
-                {
-                  "id": 88338953,
-                  "x": 115,
-                  "y": 245
-                },
-                {
-                  "id": 6802429,
-                  "x": 118,
-                  "y": 242
-                },
-                {
-                  "id": 26238738,
-                  "x": 118,
-                  "y": 239
-                },
-                {
-                  "id": 76486961,
-                  "x": 121,
-                  "y": 236
-                },
-                {
-                  "id": 67193591,
-                  "x": 121,
-                  "y": 233
-                },
-                {
-                  "id": 3151132,
-                  "x": 118,
-                  "y": 230
-                },
-                {
-                  "id": 19624619,
-                  "x": 118,
-                  "y": 217
-                },
-                {
-                  "id": 59474634,
-                  "x": 115,
-                  "y": 214
-                },
-                {
-                  "id": 27686326,
-                  "x": 115,
-                  "y": 195
-                },
-                {
-                  "id": 78090581,
-                  "x": 112,
-                  "y": 192
-                },
-                {
-                  "id": 31665160,
-                  "x": 112,
-                  "y": 171
-                },
-                {
-                  "id": 93607676,
-                  "x": 115,
-                  "y": 167
-                },
-                {
-                  "id": 71126765,
-                  "x": 115,
-                  "y": 158
-                },
-                {
-                  "id": 41474316,
-                  "x": 118,
-                  "y": 155
-                },
-                {
-                  "id": 2983116,
-                  "x": 118,
-                  "y": 152
-                },
-                {
-                  "id": 68938585,
-                  "x": 121,
-                  "y": 149
-                },
-                {
-                  "id": 9999780,
-                  "x": 121,
-                  "y": 146
-                },
-                {
-                  "id": 47454392,
-                  "x": 127,
-                  "y": 140
-                },
-                {
-                  "id": 81684581,
-                  "x": 130,
-                  "y": 140
-                },
-                {
-                  "id": 45866806,
-                  "x": 133,
-                  "y": 136
-                },
-                {
-                  "id": 76213017,
-                  "x": 152,
-                  "y": 136
-                },
-                {
-                  "id": 35442878,
-                  "x": 161,
-                  "y": 127
-                },
-                {
-                  "id": 72599932,
-                  "x": 161,
-                  "y": 124
-                },
-                {
-                  "id": 65508584,
-                  "x": 168,
-                  "y": 118
-                },
-                {
-                  "id": 61691484,
-                  "x": 168,
-                  "y": 115
-                },
-                {
-                  "id": 48825535,
-                  "x": 171,
-                  "y": 112
-                },
-                {
-                  "id": 52917623,
-                  "x": 171,
-                  "y": 84
-                },
-                {
-                  "id": 85923886,
-                  "x": 183,
-                  "y": 71
-                },
-                {
-                  "id": 60019267,
-                  "x": 186,
-                  "y": 71
-                },
-                {
-                  "id": 30457335,
-                  "x": 189,
-                  "y": 68
-                },
-                {
-                  "id": 89312033,
-                  "x": 192,
-                  "y": 68
-                },
-                {
-                  "id": 75516251,
-                  "x": 195,
-                  "y": 65
-                },
-                {
-                  "id": 33097067,
-                  "x": 199,
-                  "y": 65
-                },
-                {
-                  "id": 60070849,
-                  "x": 202,
-                  "y": 62
-                },
-                {
-                  "id": 70170641,
-                  "x": 208,
-                  "y": 62
-                },
-                {
-                  "id": 77635945,
-                  "x": 208,
-                  "y": 59
-                },
-                {
-                  "id": 74296300,
-                  "x": 205,
-                  "y": 59
-                },
-                {
-                  "id": 26760437,
-                  "x": 195,
-                  "y": 50
-                },
-                {
-                  "id": 16455749,
-                  "x": 192,
-                  "y": 50
-                },
-                {
-                  "id": 67171479,
-                  "x": 186,
-                  "y": 43
-                },
-                {
-                  "id": 20574997,
-                  "x": 183,
-                  "y": 43
-                },
-                {
-                  "id": 43382468,
-                  "x": 180,
-                  "y": 40
-                },
-                {
-                  "id": 73330586,
-                  "x": 177,
-                  "y": 40
-                },
-                {
-                  "id": 77969717,
-                  "x": 174,
-                  "y": 37
-                },
-                {
-                  "id": 70092156,
-                  "x": 136,
-                  "y": 37
-                },
-                {
-                  "id": 70846317,
-                  "x": 133,
-                  "y": 34
-                }
-              ],
-              "class_num": 1,
-              "probability": 0.7838589888549542
+              "id": 96131920,
+              "x": 2664,
+              "y": 211
+            },
+            {
+              "id": 36916978,
+              "x": 2665,
+              "y": 212
+            },
+            {
+              "id": 49927850,
+              "x": 2668,
+              "y": 213
+            },
+            {
+              "id": 29770851,
+              "x": 2671,
+              "y": 216
+            },
+            {
+              "id": 67562808,
+              "x": 2672,
+              "y": 219
+            },
+            {
+              "id": 90223502,
+              "x": 2678,
+              "y": 219
+            },
+            {
+              "id": 84768652,
+              "x": 2679,
+              "y": 220
+            },
+            {
+              "id": 99137105,
+              "x": 2682,
+              "y": 220
+            },
+            {
+              "id": 26288641,
+              "x": 2679,
+              "y": 218
+            },
+            {
+              "id": 93791150,
+              "x": 2676,
+              "y": 218
+            },
+            {
+              "id": 82260056,
+              "x": 2674,
+              "y": 212
+            },
+            {
+              "id": 25003558,
+              "x": 2660,
+              "y": 210
+            },
+            {
+              "id": 71158462,
+              "x": 2658,
+              "y": 204
+            },
+            {
+              "id": 81395936,
+              "x": 2637,
+              "y": 203
             }
-          ]
+          ],
+          "min_rect": [
+            [
+              2659.56884765625,
+              209.32752990722656
+            ],
+            [
+              49.580657958984375,
+              8.727681159973145
+            ],
+            21.801410675048828
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.6768182978929352,
+          "pixel_area": 130,
+          "actual_area": 0.07828750799999999,
+          "defect_type": "corner",
+          "id": 40619019
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.02454,
+          "height": 0.17178,
+          "points": [
+            {
+              "id": 11629280,
+              "x": 1664,
+              "y": 202
+            },
+            {
+              "id": 59344264,
+              "x": 1664,
+              "y": 203
+            },
+            {
+              "id": 30693036,
+              "x": 1671,
+              "y": 203
+            },
+            {
+              "id": 61128863,
+              "x": 1671,
+              "y": 202
+            },
+            {
+              "id": 10031333,
+              "x": 1664,
+              "y": 202
+            }
+          ],
+          "min_rect": [
+            [
+              1667.5,
+              202.5
+            ],
+            [
+              1,
+              7
+            ],
+            90
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.6073874272406101,
+          "pixel_area": 7,
+          "actual_area": 0.004215481199999999,
+          "defect_type": "edge",
+          "id": 3988032
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.07361999999999999,
+          "height": 0.19632,
+          "points": [
+            {
+              "id": 77668452,
+              "x": 2607,
+              "y": 200
+            },
+            {
+              "id": 91406854,
+              "x": 2602,
+              "y": 201
+            },
+            {
+              "id": 15196490,
+              "x": 2600,
+              "y": 203
+            },
+            {
+              "id": 7895692,
+              "x": 2608,
+              "y": 203
+            },
+            {
+              "id": 36476958,
+              "x": 2607,
+              "y": 200
+            }
+          ],
+          "min_rect": [
+            [
+              2604,
+              201.5
+            ],
+            [
+              8,
+              3
+            ],
+            0
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.680542697367214,
+          "pixel_area": 16,
+          "actual_area": 0.0096353856,
+          "defect_type": "edge",
+          "id": 4979950
+        },
+        {
+          "label": "wear",
+          "score": -0.1,
+          "width": 0.07361999999999999,
+          "height": 0.39264,
+          "points": [
+            {
+              "id": 17305929,
+              "x": 644,
+              "y": 200
+            },
+            {
+              "id": 21942265,
+              "x": 640,
+              "y": 203
+            },
+            {
+              "id": 5969483,
+              "x": 656,
+              "y": 203
+            },
+            {
+              "id": 79658725,
+              "x": 655,
+              "y": 200
+            },
+            {
+              "id": 82711639,
+              "x": 644,
+              "y": 200
+            }
+          ],
+          "min_rect": [
+            [
+              648,
+              201.5
+            ],
+            [
+              3,
+              16
+            ],
+            90
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7438473373651504,
+          "pixel_area": 40.5,
+          "actual_area": 0.024389569799999997,
+          "defect_type": "edge",
+          "id": 20977324
+        },
+        {
+          "label": "wear",
+          "score": -0.5,
+          "width": 0.123470443983078,
+          "height": 1.2751947049713137,
+          "points": [
+            {
+              "id": 28618651,
+              "x": 300,
+              "y": 199
+            },
+            {
+              "id": 69180582,
+              "x": 299,
+              "y": 200
+            },
+            {
+              "id": 73570631,
+              "x": 281,
+              "y": 201
+            },
+            {
+              "id": 89600288,
+              "x": 265,
+              "y": 204
+            },
+            {
+              "id": 56357863,
+              "x": 268,
+              "y": 206
+            },
+            {
+              "id": 38069373,
+              "x": 272,
+              "y": 204
+            },
+            {
+              "id": 14616459,
+              "x": 281,
+              "y": 204
+            },
+            {
+              "id": 29535766,
+              "x": 282,
+              "y": 203
+            },
+            {
+              "id": 47722583,
+              "x": 317,
+              "y": 203
+            },
+            {
+              "id": 66550174,
+              "x": 315,
+              "y": 199
+            },
+            {
+              "id": 99906068,
+              "x": 311,
+              "y": 200
+            },
+            {
+              "id": 98455053,
+              "x": 300,
+              "y": 199
+            }
+          ],
+          "min_rect": [
+            [
+              290.9128723144531,
+              202.0767822265625
+            ],
+            [
+              5.031395435333252,
+              51.963924407958984
+            ],
+            86.49646759033203
+          ],
+          "edit_type": "",
+          "new_score": null,
+          "confidence": 0.7733687790491248,
+          "pixel_area": 136.5,
+          "actual_area": 0.0822018834,
+          "defect_type": "corner",
+          "id": 72839670
         }
-      }
-    },
-    "defect_result": {
-      "defects": []
+      ]
     }
   }
-}
+}

+ 97 - 23
app/api/formate_xy.py

@@ -1,5 +1,3 @@
-# --- START OF FILE app/api/formate_xy.py ---
-
 import requests
 import json
 
@@ -23,31 +21,18 @@ router = APIRouter()
 db_dependency = Depends(get_db_connection)
 
 
-@router.get("/query", response_model=CardDetailResponse, summary="获取指定卡牌的详细信息(格式化xy)")
-def get_card_details(card_id: int, db_conn: PooledMySQLConnection = db_dependency):
+def _process_images_to_xy_format(card_data: dict):
     """
-    获取卡牌元数据以及所有与之关联的图片信息。
-    【特殊处理】:会将 json 中的 points 坐标转换为 [{"id":..., "x":..., "y":...}] 格式,
-    并在 defects 列表中每项添加 id。
+    内部辅助函数:遍历卡牌数据中的图片,将 JSON 格式转换为前端需要的 XY 格式。
+    直接修改传入的 card_data 字典。
     """
-    # 1. 获取原始数据 (Dict 格式)
-    # 注意:这里直接获取 Dict,而不是让 Pydantic 马上校验,因为我们需要先修改数据结构
-    card_data = crud_card.get_card_with_details(db_conn, card_id)
-
-    if not card_data:
-        raise HTTPException(status_code=404, detail=f"ID为 {card_id} 的卡牌未找到。")
-
-    # 2. 遍历图片,转换格式
-    # crud_card 返回的 card_data["images"] 是一个 list of dict
     if "images" in card_data and card_data["images"]:
         for img in card_data["images"]:
             # 处理 detection_json
             if img.detection_json:
-                # 如果数据库取出的是字符串,先转 dict (通常 cursor dictionary=True 且 JSON 列会自动转,但在某些驱动下可能是 str)
                 d_json = img.detection_json
                 if isinstance(d_json, str):
                     d_json = json.loads(d_json)
-
                 # *** 转换逻辑 ***
                 img.detection_json = convert_internal_to_xy_format(d_json)
 
@@ -56,16 +41,105 @@ def get_card_details(card_id: int, db_conn: PooledMySQLConnection = db_dependenc
                 m_json = img.modified_json
                 if isinstance(m_json, str):
                     m_json = json.loads(m_json)
-
                 # *** 转换逻辑 ***
                 img.modified_json = convert_internal_to_xy_format(m_json)
+    return card_data
+
+
+@router.get("/query", response_model=CardDetailResponse, summary="获取指定卡牌的详细信息(格式化xy)")
+def get_card_details(card_id: int, db_conn: PooledMySQLConnection = db_dependency):
+    """
+    获取卡牌元数据以及所有与之关联的图片信息。
+    【特殊处理】:会将 json 中的 points 坐标转换为 [{"id":..., "x":..., "y":...}] 格式。
+    """
+    # 1. 获取原始数据
+    card_data = crud_card.get_card_with_details(db_conn, card_id)
+
+    if not card_data:
+        raise HTTPException(status_code=404, detail=f"ID为 {card_id} 的卡牌未找到。")
+
+    # 2. 转换格式 (提取为公共函数)
+    _process_images_to_xy_format(card_data)
 
     # 3. 验证并返回
-    # 因为 CardDetailResponse 定义中 detection_json 是 Dict[str, Any],
-    # 所以无论里面是 [[x,y]] 还是 [{"x":x...}] 都可以通过校验
     return CardDetailResponse.model_validate(card_data)
 
 
+@router.get("/query_next", response_model=CardDetailResponse, summary="获取下一个卡牌的详细信息(格式化xy)")
+def get_next_card_details(card_id: int, db_conn: PooledMySQLConnection = db_dependency):
+    """
+    获取指定ID的下一张卡牌的信息,并格式化为xy坐标结构。
+    """
+    try:
+        with db_conn.cursor(dictionary=True) as cursor:
+            # 1. 查询下一个ID (ID > current ORDER BY ID ASC)
+            query_next = (
+                f"SELECT id FROM {settings.DB_CARD_TABLE_NAME} "
+                f"WHERE id > %s ORDER BY id ASC LIMIT 1"
+            )
+            cursor.execute(query_next, (card_id,))
+            row = cursor.fetchone()
+
+            if not row:
+                # 保持与 cards.py 一致的行为,没有下一张时返回 200 或 404 视业务需求定,这里参考 cards.py 逻辑
+                raise HTTPException(status_code=200, detail=f"没有下一张")
+
+            next_card_id = row['id']
+
+            # 2. 获取数据
+            card_data = crud_card.get_card_with_details(db_conn, next_card_id)
+            if not card_data:
+                raise HTTPException(status_code=404, detail=f"下一个卡牌ID {next_card_id} 数据异常。")
+
+            # 3. 转换格式
+            _process_images_to_xy_format(card_data)
+
+            return CardDetailResponse.model_validate(card_data)
+
+    except HTTPException:
+        raise
+    except Exception as e:
+        logger.error(f"查询下一个卡牌(xy)失败 (基准ID: {card_id}): {e}")
+        raise HTTPException(status_code=500, detail="查询失败")
+
+
+@router.get("/query_prev", response_model=CardDetailResponse, summary="获取上一个卡牌的详细信息(格式化xy)")
+def get_prev_card_details(card_id: int, db_conn: PooledMySQLConnection = db_dependency):
+    """
+    获取指定ID的上一张卡牌的信息,并格式化为xy坐标结构。
+    """
+    try:
+        with db_conn.cursor(dictionary=True) as cursor:
+            # 1. 查询上一个ID (ID < current ORDER BY ID DESC)
+            query_prev = (
+                f"SELECT id FROM {settings.DB_CARD_TABLE_NAME} "
+                f"WHERE id < %s ORDER BY id DESC LIMIT 1"
+            )
+            cursor.execute(query_prev, (card_id,))
+            row = cursor.fetchone()
+
+            if not row:
+                raise HTTPException(status_code=200, detail=f"没有上一张")
+
+            prev_card_id = row['id']
+
+            # 2. 获取数据
+            card_data = crud_card.get_card_with_details(db_conn, prev_card_id)
+            if not card_data:
+                raise HTTPException(status_code=404, detail=f"上一个卡牌ID {prev_card_id} 数据异常。")
+
+            # 3. 转换格式
+            _process_images_to_xy_format(card_data)
+
+            return CardDetailResponse.model_validate(card_data)
+
+    except HTTPException:
+        raise
+    except Exception as e:
+        logger.error(f"查询上一个卡牌(xy)失败 (基准ID: {card_id}): {e}")
+        raise HTTPException(status_code=500, detail="查询失败")
+
+
 @router.put("/update/json/{id}", status_code=200, summary="接收xy格式, 还原后重计算分数并保存")
 async def update_image_modified_json(
         id: int,
@@ -144,7 +218,7 @@ async def update_image_modified_json(
             logger.error(f"更新卡牌 {card_id_to_update} 分数失败: {score_update_e}")
 
         return {
-            "message": f"成功更新图片ID {id} 的JSON数据",
+            "detail": f"成功更新图片ID {id} 的JSON数据",
             "image_type": image_type,
             "score_type": score_type
         }
@@ -158,4 +232,4 @@ async def update_image_modified_json(
         raise HTTPException(status_code=500, detail=f"更新JSON数据失败: {e}")
     finally:
         if cursor:
-            cursor.close()
+            cursor.close()