View a markdown version of this page

문서 페이지에서 항목 찾기 - Amazon Textract

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

문서 페이지에서 항목 찾기

Amazon Textract 작업은 문서 페이지에서 찾은 항목의 위치와 지오메트리를 반환합니다. DetectDocumentTextGetDocumentTextDetection은 선과 단어의 위치와 지오메트리를 반환하는 반면, AnalyzeDocumentGetDocumentAnalysis는 키-값 페어, 테이블, 셀 및 선택 요소의 위치와 지오메트리를 반환합니다.

문서 페이지에서 항목이 어디에 있는지 확인하려면 블록 객체에서 Amazon Textract 작업에서 반환한 경계 상자(지오메트리) 정보를 사용합니다. Geometry 객체에는 감지된 항목에 대한 두 가지 유형의 위치와 기하학적 정보가 포함되어 있습니다.

  • 왼쪽 위 좌표와 항목의 너비 및 높이가 포함된 축 정렬 BoundingBox 객체입니다.

  • 항목의 개요를 설명하는 다각형 객체로, 각 X (수평 축) 및 Y (수직 축) 문서 페이지 좌표를 포함하는 점 객체의 배열로 지정됩니다.

Block 객체의 JSON은 다음과 비슷합니다. BoundingBoxPolygon 필드를 기록해 둡니다.

{ "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" },

지오메트리 정보를 사용하여 감지된 항목 주위에 경계 상자를 그릴 수 있습니다. BoundingBoxPolygon 정보를 사용하여 각 단어의 시작과 끝에서 선과 세로선 주위에 상자를 그리는 예제는 섹션을 참조하세요Amazon Textract를 사용하여 문서 텍스트 감지. 예제 출력은 다음과 유사합니다.

주소가 123 Any Street, Anytown, USA이고 생년월일이 12-26-1980인 Jane Doe의 개인 정보를 표시하는 이름, 주소 및 생년월일 필드가 있는 양식입니다.

경계 상자

경계 상자(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 예제에서는 경계 상자를 표시하는 방법을 보여줍니다.

Java
public void ShowBoundingBox(int imageHeight, int imageWidth, BoundingBox box, Graphics2D g2d) { float left = imageWidth * box.getLeft(); float top = imageHeight * box.getTop(); // Display bounding box. g2d.setColor(new Color(0, 212, 0)); g2d.drawRect(Math.round(left / scale), Math.round(top / scale), Math.round((imageWidth * box.getWidth()) / scale), Math.round((imageHeight * box.getHeight())) / scale); }
Python

이 Python 예제는 DetectDocumentText API 작업에서 response 반환된를 가져옵니다.

def process_text_detection(response): # Get the text blocks blocks = response['Blocks'] width, height = image.size draw = ImageDraw.Draw(image) print('Detected Document Text') # Create image showing bounding box/polygon the detected lines/text for block in blocks: draw = ImageDraw.Draw(image) if block['BlockType'] == "LINE": box=block['Geometry']['BoundingBox'] left = width * box['Left'] top = height * box['Top'] draw.rectangle([left,top, left + (width * box['Width']), top +(height * box['Height'])],outline='black') # Display the image image.show() return len(blocks)

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 사이의 숫자입니다.