기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
문서 페이지에서 항목 찾기
Amazon Textract 작업은 문서 페이지에서 찾은 항목의 위치와 지오메트리를 반환합니다. DetectDocumentText 및 GetDocumentTextDetection은 선과 단어의 위치와 지오메트리를 반환하는 반면, AnalyzeDocument 및 GetDocumentAnalysis는 키-값 페어, 테이블, 셀 및 선택 요소의 위치와 지오메트리를 반환합니다.
문서 페이지에서 항목이 어디에 있는지 확인하려면 블록 객체에서 Amazon Textract 작업에서 반환한 경계 상자(지오메트리) 정보를 사용합니다. Geometry 객체에는 감지된 항목에 대한 두 가지 유형의 위치와 기하학적 정보가 포함되어 있습니다.
-
왼쪽 위 좌표와 항목의 너비 및 높이가 포함된 축 정렬 BoundingBox 객체입니다.
-
항목의 개요를 설명하는 다각형 객체로, 각 점의
X(수평 축) 및Y(수직 축) 문서 페이지 좌표를 포함하는 점 객체의 배열로 지정됩니다.
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 정보를 사용하여 각 단어의 시작과 끝에서 선과 세로선 주위에 상자를 그리는 예제는 섹션을 참조하세요Amazon Textract를 사용하여 문서 텍스트 감지. 예제 출력은 다음과 유사합니다.
경계 상자
경계 상자(BoundingBox)의 속성은 다음과 같습니다.
-
높이 - 전체 문서 페이지 높이의 비율로 표시되는 경계 상자의 높이입니다.
-
왼쪽 - 전체 문서 페이지 너비의 비율로서 경계 상자의 왼쪽 위 지점의 X 좌표입니다.
-
상단 - 전체 문서 페이지 높이의 비율로서 경계 상자의 왼쪽 상단 점의 Y 좌표입니다.
-
너비 - 전체 문서 페이지 너비의 비율로 표시되는 경계 상자의 너비입니다.
각 BoundingBox 속성은 0~1 사이의 값을 가집니다. 값은 전체 이미지 너비( Left 및에 적용Width) 또는 높이( Height 및에 적용)의 비율입니다Top. 예를 들어 입력 이미지가 700 x 200픽셀이고 경계 상자의 왼쪽 위 좌표가 (350,50)픽셀인 경우 API는 0.5(350/700)의 Left 값과 0.25(50/200)의 Top 값을 반환합니다.
다음 다이어그램은 각 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은 포인트 객체의 배열입니다. 각 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 사이의 숫자입니다.