Azure Form Recognizer boundingBox结果转换为XY坐标

时间:2019-05-19 15:35:18

标签: azure preview form-recognizer

我想将Form Recognizer的结果“ boundingBox”转换为图像坐标,以可视化叠加图像和识别出的数据。 但是,boundingBox结果看起来不像该图像那样是XY坐标位置。 https://i.stack.imgur.com/DOEi5.png

我需要每个boundingBox的左上(X1,Y1)和右下(X2,Y2)计算规则。

我还使用认知服务OCR和文本识别制定了一些计算规则,但是没有有关表格识别器的信息。 我试图通过减法或除法找到XY坐标法则,但我找不到它。

这是我通过Form Recognizer的示例图像获得的结果json数据。但是无法从中找到boundingBox规则。

Responsebody: {
  'status': 'success',
  'pages': [
    {
      'number': 1,
      'height': 792,
      'width': 612,
      'clusterId': 0,
      'keyValuePairs': [
        {
          'key': [
            {
              'text': 'Address:',
              'boundingBox': [
                57.3,
                683.0,
                100.5,
                683.0,
                100.5,
                673.7,
                57.3,
                673.7
              ]
            }
          ],
          'value': [
            {
              'text': '1020 Enterpirse Way.',
              'boundingBox': [
                57.3,
                672.2,
                153.1,
                672.2,
                153.1,
                658.8,
                57.3,
                658.8
              ],
              'confidence': 0.53
            },

我需要每个boundingBox的左上(X1,Y1)和右下(X2,Y2)计算规则。

感谢团队。

4 个答案:

答案 0 :(得分:0)

这8个数字按以下顺序表示边界框角的4对(x,y)坐标:左上,右上,右下,左下。坐标系的原点在页面的左下方。对于示例中的键“地址:”,您的左上角(X1,Y1)=(57.3,683.0),右下角(X2,Y2)=(100.5,673.7)。

答案 1 :(得分:0)

在使用Form Recognizer时,我也遇到了这种困惑。它的原点在页面左下方。

// Azure Bounding box is like this                      0---->1
//                                                      |     |
//                                         Y            |     |
//                                         ↑            3<----2
//                                  Origin . → X



// Expected Bounding Box            Origin . → X
//                                         ↓            0---->1
//                                         Y            |     |
//                                                      |     ↓
//                                                      3<----2

八个值是4点的X,Y值。您可以选择0th,1st(左上角)和4th,5th(右下角)。 如果要对坐标值进行标准化以使其值保持在0到1之间,则必须将每个像素值除以相应页面的宽度和高度。

答案 2 :(得分:0)

在示例中:

{21: 1,
 22: 1,
 23: 2,
 24: 3,
 25: 5,
 26: 7,
 27: 11,
 28: 14,
 29: 20,
 30: 26,
 31: 35,
 32: 44,
 33: 58,
 34: 71,
 35: 90,
 36: 110,
 37: 136,
 38: 163,
 39: 199,
 40: 235,
 41: 282,
 42: 331,
 43: 391,
 44: 454,
 45: 532,
 46: 612,
 47: 709,
 48: 811,
 49: 931,
 50: 1057,
 51: 1206,
 52: 1360,
 53: 1540,
 54: 1729,
 55: 1945,
 56: 2172,
 57: 2432,
 58: 2702,
 59: 3009,
 60: 3331,
 61: 3692,
 62: 4070,
 63: 4494,
 64: 4935,
 65: 5427,
 66: 5942,
 67: 6510,
 68: 7104,
 69: 7760,
 70: 8442,
 71: 9192,
 72: 9975,
 73: 10829,
 74: 11720,
 75: 12692,
 76: 13702,
 77: 14800,
 78: 15944,
 79: 17180,
 80: 18467,
 81: 19858,
 82: 21301,
 83: 22856,
 84: 24473,
 85: 26207,
 86: 28009,
 87: 29941,
 88: 31943,
 89: 34085,
 90: 36308,
 91: 38677,
 92: 41134,
 93: 43752,
 94: 46461,
 95: 49342,
 96: 52326,
 97: 55489,
 98: 58763,
 99: 62232,
 100: 65815,
 101: 69605,
 102: 73522,
 103: 77653,
 104: 81919,
 105: 86416,
 106: 91051,
 107: 95929,
 108: 100958,
 109: 106237,
 110: 111675,
 111: 117380,
 112: 123246,
 113: 129391,
 114: 135710,
 115: 142314,
 116: 149099,
 117: 156186,
 118: 163455,
 119: 171037,
 120: 178813,
 121: 186907,
 122: 195201,
 123: 203829,
 124: 212656,
 125: 221827,
 126: 231208,
 127: 240936,
 128: 250878,
 129: 261182,
 130: 271697,
 131: 282582,
 132: 293687,
 133: 305163,
 134: 316861,
 135: 328943,
 136: 341241,
 137: 353929,
 138: 366840,
 139: 380139,
 140: 393660,
 141: 407580,
 142: 421713,
 143: 436248,
 144: 451000,
 145: 466149,
 146: 481511,
 147: 497278,
 148: 513245,
 149: 529617,
 150: 546190,
 151: 563159,
 152: 580321,
 153: 597884,
 154: 615623,
 155: 633759,
 156: 652068,
 157: 670761,
 158: 689615,
 159: 708854,
 160: 728232,
 161: 747987,
 162: 767874,
 163: 788120,
 164: 808481,
 165: 829198,
 166: 850003,
 167: 871151,
 168: 892375,
 169: 913919,
 170: 935517,
 171: 957427,
 172: 979359,
 173: 1001585,
 174: 1023817,
 175: 1046315,
 176: 1068793,
 177: 1091525,
 178: 1114201,
 179: 1137109,
 180: 1159942,
 181: 1182975,
 182: 1205904,
 183: 1229018,
 184: 1251989,
 185: 1275120,
 186: 1298087,
 187: 1321179,
 188: 1344076,
 189: 1367081,
 190: 1389850,
 191: 1412700,
 192: 1435292,
 193: 1457928,
 194: 1480274,
 195: 1502646,
 196: 1524686,
 197: 1546724,
 198: 1568408,
 199: 1590052,
 200: 1611310,
 201: 1632510,
 202: 1653282,
 203: 1673968,
 204: 1694205,
 205: 1714318,
 206: 1733951,
 207: 1753443,
 208: 1772414,
 209: 1791217,
 210: 1809480,
 211: 1827538,
 212: 1845027,
 213: 1862296,
 214: 1878957,
 215: 1895373,
 216: 1911165,
 217: 1926677,
 218: 1941539,
 219: 1956109,
 220: 1969993,
 221: 1983563,
 222: 1996435,
 223: 2008961,
 224: 2020767,
 225: 2032219,
 226: 2042919,
 227: 2053247,
 228: 2062816,
 229: 2071985,
 230: 2080378,
 231: 2088368,
 232: 2095555,
 233: 2102326,
 234: 2108293,
 235: 2113821,
 236: 2118534,
 237: 2122811,
 238: 2126252,
 239: 2129250,
 240: 2131418,
 241: 2133126,
 242: 2134000,
 243: 2134424,
 244: 2134000,
 245: 2133126,
 246: 2131418,
 247: 2129250,
 248: 2126252,
 249: 2122811,
 250: 2118534,
 251: 2113821,
 252: 2108293,
 253: 2102326,
 254: 2095555,
 255: 2088368,
 256: 2080378,
 257: 2071985,
 258: 2062816,
 259: 2053247,
 260: 2042919,
 261: 2032219,
 262: 2020767,
 263: 2008961,
 264: 1996435,
 265: 1983563,
 266: 1969993,
 267: 1956109,
 268: 1941539,
 269: 1926677,
 270: 1911165,
 271: 1895373,
 272: 1878957,
 273: 1862296,
 274: 1845027,
 275: 1827538,
 276: 1809480,
 277: 1791217,
 278: 1772414,
 279: 1753443,
 280: 1733951,
 281: 1714318,
 282: 1694205,
 283: 1673968,
 284: 1653282,
 285: 1632510,
 286: 1611310,
 287: 1590052,
 288: 1568408,
 289: 1546724,
 290: 1524686,
 291: 1502646,
 292: 1480274,
 293: 1457928,
 294: 1435292,
 295: 1412700,
 296: 1389850,
 297: 1367081,
 298: 1344076,
 299: 1321179,
 300: 1298087,
 301: 1275120,
 302: 1251989,
 303: 1229018,
 304: 1205904,
 305: 1182975,
 306: 1159942,
 307: 1137109,
 308: 1114201,
 309: 1091525,
 310: 1068793,
 311: 1046315,
 312: 1023817,
 313: 1001585,
 314: 979359,
 315: 957427,
 316: 935517,
 317: 913919,
 318: 892375,
 319: 871151,
 320: 850003,
 321: 829198,
 322: 808481,
 323: 788120,
 324: 767874,
 325: 747987,
 326: 728232,
 327: 708854,
 328: 689615,
 329: 670761,
 330: 652068,
 331: 633759,
 332: 615623,
 333: 597884,
 334: 580321,
 335: 563159,
 336: 546190,
 337: 529617,
 338: 513245,
 339: 497278,
 340: 481511,
 341: 466149,
 342: 451000,
 343: 436248,
 344: 421713,
 345: 407580,
 346: 393660,
 347: 380139,
 348: 366840,
 349: 353929,
 350: 341241,
 351: 328943,
 352: 316861,
 353: 305163,
 354: 293687,
 355: 282582,
 356: 271697,
 357: 261182,
 358: 250878,
 359: 240936,
 360: 231208,
 361: 221827,
 362: 212656,
 363: 203829,
 364: 195201,
 365: 186907,
 366: 178813,
 367: 171037,
 368: 163455,
 369: 156186,
 370: 149099,
 371: 142314,
 372: 135710,
 373: 129391,
 374: 123246,
 375: 117380,
 376: 111675,
 377: 106237,
 378: 100958,
 379: 95929,
 380: 91051,
 381: 86416,
 382: 81919,
 383: 77653,
 384: 73522,
 385: 69605,
 386: 65815,
 387: 62232,
 388: 58763,
 389: 55489,
 390: 52326,
 391: 49342,
 392: 46461,
 393: 43752,
 394: 41134,
 395: 38677,
 396: 36308,
 397: 34085,
 398: 31943,
 399: 29941,
 400: 28009,
 401: 26207,
 402: 24473,
 403: 22856,
 404: 21301,
 405: 19858,
 406: 18467,
 407: 17180,
 408: 15944,
 409: 14800,
 410: 13702,
 411: 12692,
 412: 11720,
 413: 10829,
 414: 9975,
 415: 9192,
 416: 8442,
 417: 7760,
 418: 7104,
 419: 6510,
 420: 5942,
 421: 5427,
 422: 4935,
 423: 4494,
 424: 4070,
 425: 3692,
 426: 3331,
 427: 3009,
 428: 2702,
 429: 2432,
 430: 2172,
 431: 1945,
 432: 1729,
 433: 1540,
 434: 1360,
 435: 1206,
 436: 1057,
 437: 931,
 438: 811,
 439: 709,
 440: 612,
 441: 532,
 442: 454,
 443: 391,
 444: 331,
 445: 282,
 446: 235,
 447: 199,
 448: 163,
 449: 136,
 450: 110,
 451: 90,
 452: 71,
 453: 58,
 454: 44,
 455: 35,
 456: 26,
 457: 20,
 458: 14,
 459: 11,
 460: 7,
 461: 5,
 462: 3,
 463: 2,
 464: 1,
 465: 1}

它表示边界框的顶点。

'boundingBox': [
            57.3,
            683.0,
            100.5,
            683.0,
            100.5,
            673.7,
            57.3,
            673.7
          ]

从上面的示例中,选择了(X1,y1)和(x3,y3)来绘制边界框。边界框在Azure中非常有序,它开始x1,y1,x2,y2,x3,y3,x4,y4。列表中的前两个值是x1,y1,第5、6th是x3,y3。

答案 3 :(得分:0)

仅提供一个具体示例,请考虑以下输入图像:https://imgur.com/a/zUeqe0L

enter image description here

Azure 表单识别器返回以下边界框,您可以使用以下带有 opencv-python 的代码片段绘制边界框:

import cv2
import numpy as np
import matplotlib.pylab as plt
image = cv2.imread('adhar2.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
boundingBox = [42.0, 84.0, 227.0, 0.0, 246.0, 41.0, 61.0, 126.0]
pts = np.array(boundingBox, np.int32).reshape((-1,1,2))
image = cv2.polylines(image, [pts], True, (0, 255, 0), 2)
plt.figure(figsize=(20,40))
plt.imshow(image)
plt.axis('off')
plt.show()

具有以下输出图像:

enter image description here