1

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

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

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

这是我通过表单识别器的示例图像获得的结果 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

4 回答 4

0

在示例中:

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

它表示边界框的顶点。

// Azure Bounding box:           (57.3,683.0) X1,Y1---->x2,y2(100.5,683.0)
                                                  |     |
                                                  |     |
                                 (57.3,673.7) X4,Y4<----x3,y3(100.5,673.7)

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

于 2020-04-27T20:25:36.450 回答
0

在使用表单识别器时,我也遇到过这种困惑。它的原点位于页面的左下方。

// 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 之间,则必须将每个像素值除以相应页面的宽度和高度。

于 2019-11-25T07:48:59.860 回答
0

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

在此处输入图像描述

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()

使用以下输出图像:

在此处输入图像描述

于 2021-04-28T09:44:59.417 回答
0

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

于 2019-05-20T22:32:51.927 回答