Vision API는 Vision 기능 유형을 사용하여 대규모 이미지 파일 배치에 대한 오프라인(비동기) 감지 서비스 및 주석을 실행할 수 있습니다. 예를 들어 단일 이미지 배치에 Vision API 기능을 하나 이상(예: TEXT_DETECTION
, LABEL_DETECTION
, LANDMARK_DETECTION
) 지정할 수 있습니다.
오프라인 일괄 요청의 출력은 지정된 Cloud Storage 버킷에서 만든 JSON 파일로 작성됩니다.
제한사항
Vision API는 최대 2,000개의 이미지 파일을 허용합니다. 배치의 이미지 파일이 이보다 많으면 오류가 반환됩니다.
현재 지원되는 기능 유형
기능 유형 | |
---|---|
CROP_HINTS |
이미지에서 자르기 영역으로 제안되는 꼭짓점을 결정합니다. |
DOCUMENT_TEXT_DETECTION |
문서(PDF/TIFF)와 같은 밀집 텍스트 이미지와 필기 입력이 포함된 이미지에 OCR을 수행합니다.
TEXT_DETECTION 은 희소 텍스트 이미지에 사용할 수 있습니다.
DOCUMENT_TEXT_DETECTION 과 TEXT_DETECTION 이 모두 존재하는 경우 우선 적용됩니다.
|
FACE_DETECTION |
이미지 안의 얼굴을 감지합니다. |
IMAGE_PROPERTIES |
이미지의 주요 색상과 같은 이미지 속성의 집합을 계산합니다. |
LABEL_DETECTION |
이미지 콘텐츠를 기반으로 라벨을 추가합니다. |
LANDMARK_DETECTION |
이미지 안의 특징을 감지합니다. |
LOGO_DETECTION |
이미지 안의 회사 로고를 감지합니다. |
OBJECT_LOCALIZATION |
이미지에서 여러 객체를 감지하고 추출합니다. |
SAFE_SEARCH_DETECTION |
세이프서치를 실행하여 안전하지 않거나 바람직하지 않은 콘텐츠를 감지합니다. |
TEXT_DETECTION |
이미지 안의 텍스트에 광 문자 인식(OCR)을 수행합니다.
텍스트 감지는 큰 이미지 내의 희소 텍스트 영역에 최적화되어 있습니다.
이미지가 문서(PDF/TIFF)이거나 밀집 텍스트가 있거나 필기 입력이 포함된 경우 DOCUMENT_TEXT_DETECTION 을 대신 사용하세요.
|
WEB_DETECTION |
Google 이미지 검색을 사용하여 이미지에서 뉴스, 이벤트, 연예인 등의 주제별 항목을 검색하고 웹에서 유사한 이미지를 찾습니다. |
샘플 코드
Cloud Storage에서 이미지 파일 배치에 오프라인 주석 서비스를 실행하려면 다음 코드 샘플을 사용하세요.
Java
이 샘플을 시도하기 전에 Vision API 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 Vision API Java 참고 문서를 참조하세요.
Node.js
이 샘플을 사용해 보기 전에 Vision 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Vision Node.js API 참고 문서를 참조하세요.
Vision에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
이 샘플을 사용해 보기 전에 Vision 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Vision Python API 참고 문서를 참조하세요.
Vision에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
응답
요청에 성공하면 코드 샘플에서 지정한 Cloud Storage 버킷에 응답 JSON 파일이 반환됩니다. JSON 파일당 응답 수는 코드 샘플에서 batch_size
에 의해 지정됩니다.
반환된 응답은 이미지에 대해 어떤 기능을 요청하는지에 따라 일반 Vision API 기능 응답과 유사합니다.
다음 응답은 image1.png
에 대해 LABEL_DETECTION
및 TEXT_DETECTION
주석을, image2.jpg
에 대해 IMAGE_PROPERTIES
주석을, image3.jpg
에 대해 OBJECT_LOCALIZATION
주석을 표시합니다.
응답에는 파일의 URI를 표시하는 context
필드도 포함됩니다.
offline_batch_output/output-1-to-2.json
{ "responses": [ { "labelAnnotations": [ { "mid": "/m/07s6nbt", "description": "Text", "score": 0.93413997, "topicality": 0.93413997 }, { "mid": "/m/0dwx7", "description": "Logo", "score": 0.8733531, "topicality": 0.8733531 }, ... { "mid": "/m/03bxgrp", "description": "Company", "score": 0.5682425, "topicality": 0.5682425 } ], "textAnnotations": [ { "locale": "en", "description": "Google\n", "boundingPoly": { "vertices": [ { "x": 72, "y": 40 }, { "x": 613, "y": 40 }, { "x": 613, "y": 233 }, { "x": 72, "y": 233 } ] } }, ... ], "blockType": "TEXT" } ] } ], "text": "Google\n" }, "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image1.png" } }, { "imagePropertiesAnnotation": { "dominantColors": { "colors": [ { "color": { "red": 229, "green": 230, "blue": 238 }, "score": 0.2744754, "pixelFraction": 0.075339235 }, ... { "color": { "red": 86, "green": 87, "blue": 95 }, "score": 0.025770646, "pixelFraction": 0.13109145 } ] } }, "cropHintsAnnotation": { "cropHints": [ { "boundingPoly": { "vertices": [ {}, { "x": 1599 }, { "x": 1599, "y": 1199 }, { "y": 1199 } ] }, "confidence": 0.79999995, "importanceFraction": 1 } ] }, "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image2.jpg" } } ] }
offline_batch_output/output-3-to-3.json
{ "responses": [ { "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image3.jpg" }, "localizedObjectAnnotations": [ { "mid": "/m/0bt9lr", "name": "Dog", "score": 0.9669734, "boundingPoly": { "normalizedVertices": [ { "x": 0.6035543, "y": 0.1357359 }, { "x": 0.98546547, "y": 0.1357359 }, { "x": 0.98546547, "y": 0.98426414 }, { "x": 0.6035543, "y": 0.98426414 } ] } }, ... { "mid": "/m/0jbk", "name": "Animal", "score": 0.58003056, "boundingPoly": { "normalizedVertices": [ { "x": 0.014534635, "y": 0.1357359 }, { "x": 0.37197515, "y": 0.1357359 }, { "x": 0.37197515, "y": 0.98426414 }, { "x": 0.014534635, "y": 0.98426414 } ] } } ] } ] }