本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在文档页面上查找项目
Amazon Textract 操作返回在文档页面上找到的项目的位置和几何形状。 DetectDocumentText并GetDocumentTextDetection返回线条和单词的位置和几何形状,同时AnalyzeDocumentGetDocumentAnalysis返回键值对、表、单元格和选择元素的位置和几何形状。
要确定项目在文档页面上的位置,请使用 Amazon Textract 操作在区块对象中返回的边框(几何)信息。该Geometry物体包含两种类型的位置和检测到的物品的几何信息:
-
一个轴对齐的BoundingBox对象,包含项目的左上角坐标以及宽度和高度。
-
描述项目轮廓的多边形对象,指定为包含每个点的
X(水平轴)和Y(垂直轴)文档页面坐标的 Point 对象数组。
Block对象的 JSON 类似于以下内容。请注意BoundingBox和Polygon字段。
{ "Geometry": { "BoundingBox": { "Width": 0.053907789289951324, "Top": 0.08913730084896088, "Left": 0.11085548996925354, "Height": 0.013171200640499592 }, "Polygon": [ { "Y": 0.08985357731580734, "X": 0.11085548996925354 }, { "Y": 0.08913730084896088, "X": 0.16447919607162476 }, { "Y": 0.10159222036600113, "X": 0.16476328670978546 }, { "Y": 0.10230850428342819, "X": 0.11113958805799484 } ] }, "Text": "Name:", "TextType": "PRINTED", "BlockType": "WORD", "Confidence": 99.56285858154297, "Id": "c734fca6-c4c4-415c-b6c1-30f7510b72ee" },
您可以使用几何信息在检测到的项目周围绘制边界框。有关使用BoundingBox和Polygon信息在每个单词的开头和结尾处用线条和垂直线画框的示例,请参见使用亚马逊 Textract 检测文档文本。示例输出与以下内容类似。
边界框
边界框 (BoundingBox) 具有以下属性:
-
高度-边框的高度与整个文档页面高度的比率。
-
左 — 边界框左上角点的 X 坐标与整个文档页面宽度的比例。
-
Top — 定界框左上角点的 Y 坐标与整个文档页面高度的比率。
-
宽度-边框的宽度与文档总页宽度的比率。
每个 BoundingBox 属性的值介于 0 和 1 之间。该值是图像总宽度(适用于Left和Width)或高度(适用于Height和Top)的比率。例如,如果输入图像为 700 x 200 像素,而边界框的左上角坐标为 (350,50) 像素,则 API 返回的值为 0.5 (),Left值为 0.25 (350/700)。Top 50/200
下图显示了每个 BoundingBox属性所涵盖的文档页面的范围。
要显示具有正确位置和大小的边界框,请将这些 BoundingBox 值乘以文档页面的宽度或高度(取决于您想要的值)以获得像素值。使用像素值显示边界框。例如,使用宽度为 608 像素 x 高 588 像素的文档页面,以及对分析的文本使用以下边界框值:
BoundingBox.Left: 0.3922065 BoundingBox.Top: 0.15567766 BoundingBox.Width: 0.284666 BoundingBox.Height: 0.2930403
文本边框的位置(以像素为单位)的计算方法如下:
Left coordinate = BoundingBox.Left (0.3922065) * document page width (608) =
238
Top coordinate = BoundingBox.Top (0.15567766) * document page height (588) =
91
Bounding box width = BoundingBox.Width (0.284666) * document page width
(608) = 173
Bounding box height = BoundingBox.Height (0.2930403) * document page height
(588) = 172
您可以使用这些值在所分析的文本周围显示一个边框。以下 Java 和 Python 示例演示了如何显示边界框。
Polygon
返回的多边形AnalyzeDocument是一个 P oint 对象数组。每个坐标Point都有文档页面上特定位置的 X 和 Y 坐标。像 BoundingBox 坐标一样,多边形坐标被归一化为文档的宽度和高度,并且介于 0 和 1 之间。
您可以使用多边形数组中的点在对象周围显示更精细的边界框。Block您可以使用与使用的相同方法来计算文档页面上每个多边形点的位置BoundingBoxes。将 X 坐标乘以文档页面宽度,Y 坐标乘以文档页面高度。
以下示例说明如何显示多边形的垂直线。
public void ShowPolygonVerticals(int imageHeight, int imageWidth, List <Point> points, Graphics2D g2d) { g2d.setColor(new Color(0, 212, 0)); Object[] parry = points.toArray(); g2d.setStroke(new BasicStroke(2)); g2d.drawLine(Math.round(((Point) parry[0]).getX() * imageWidth), Math.round(((Point) parry[0]).getY() * imageHeight), Math.round(((Point) parry[3]).getX() * imageWidth), Math.round(((Point) parry[3]).getY() * imageHeight)); g2d.setColor(new Color(255, 0, 0)); g2d.drawLine(Math.round(((Point) parry[1]).getX() * imageWidth), Math.round(((Point) parry[1]).getY() * imageHeight), Math.round(((Point) parry[2]).getX() * imageWidth), Math.round(((Point) parry[2]).getY() * imageHeight)); }
旋转角度
Geometry 对象的最后一部分是文本的旋转角度。旋转角度是一个介于 0 和 360 之间的数字,表示文本的旋转程度。