Vision API는 Cloud Storage에 저장된 PDF 및 TIFF 파일에서 텍스트를 인식하고 스크립트를 작성할 수 있습니다.
PDF 및 TIFF 문서의 텍스트 인식을 요청하려면 files:asyncBatchAnnotate 함수를 사용해야 하며, 이 함수는 오프라인(비동기) 요청을 수행하고 operations 리소스를 사용하여 상태를 제공합니다.
PDF/TIFF 요청의 출력은 지정된 Cloud Storage 버킷에서 만든 JSON 파일로 작성됩니다.
제한사항
Vision API는 최대 2,000페이지의 PDF/TIFF 파일을 허용합니다. 파일이 이보다 크면 오류가 반환됩니다.
인증
files:asyncBatchAnnotate 요청에는 API 키가 지원되지 않습니다. 서비스 계정으로 인증하는 방법은 서비스 계정 사용을 참고하세요.
인증에 사용되는 계정에는 사용자가 출력용으로 지정한 Cloud Storage 버킷에 대한 액세스 권한(roles/editor 또는 roles/storage.objectCreator 이상)이 있어야 합니다.
API 키를 사용하여 작업 상태를 쿼리할 수 있습니다. 자세한 내용은 API 키 사용을 참고하세요.
문서 텍스트 인식 요청
현재 PDF/TIFF 문서 인식은 Cloud Storage 버킷에 저장된 파일에만 사용할 수 있습니다. 응답 JSON 파일도 Cloud Storage 버킷에 저장됩니다.
gs://cloud-samples-data/vision/pdf_tiff/census2010.pdf,
출처:
미국 인구조사국
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- CLOUD_STORAGE_BUCKET: 출력 파일을 저장할 Cloud Storage 버킷/디렉터리. 다음 형식으로 표시됩니다.
gs://bucket/directory/
- CLOUD_STORAGE_FILE_URI: Cloud Storage 버킷에 있는 유효한 파일(PDF/TIFF)의 경로. 적어도 파일에 대한 읽기 권한이 있어야 합니다.
예를 들면 다음과 같습니다.
gs://cloud-samples-data/vision/pdf_tiff/census2010.pdf
- FEATURE_TYPE: 유효한 기능 유형.
files:asyncBatchAnnotate요청에는 다음 기능 유형을 사용할 수 있습니다.DOCUMENT_TEXT_DETECTIONTEXT_DETECTION
- PROJECT_ID: Google Cloud 프로젝트 ID
필드별 고려사항:
inputConfig- 다른 Vision API 요청에 사용되는image필드를 대체하며, 다음 하위 필드 두 개를 포함합니다.gcsSource.uri- PDF 또는 TIFF 파일의 Google Cloud Storage URI(요청을 보내는 사용자 또는 서비스 계정에서 액세스 가능)입니다.mimeType- 허용되는 파일 형식(application/pdf또는image/tiff) 중 하나입니다.
outputConfig- 출력 세부정보를 지정하며, 다음 하위 필드 두 개를 포함합니다.gcsDestination.uri- 유효한 Google Cloud Storage URI입니다. 요청을 실행하는 사용자 또는 서비스 계정에 쓰기 권한이 있는 버킷이어야 합니다. 파일 이름은output-x-to-y이며, 여기서x와y는 해당 출력 파일에 포함되는 PDF/TIFF 페이지 번호를 나타냅니다. 파일이 이미 있으면 내용을 덮어씁니다.batchSize- 각 출력 JSON 파일에 포함할 출력 페이지 수를 지정합니다.
HTTP 메서드 및 URL:
POST https://vision.googleapis.com/v1/files:asyncBatchAnnotate
JSON 요청 본문:
{
"requests":[
{
"inputConfig": {
"gcsSource": {
"uri": "CLOUD_STORAGE_FILE_URI"
},
"mimeType": "application/pdf"
},
"features": [
{
"type": "FEATURE_TYPE"
}
],
"outputConfig": {
"gcsDestination": {
"uri": "CLOUD_STORAGE_BUCKET"
},
"batchSize": 1
}
}
]
}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/files:asyncBatchAnnotate"
PowerShell
요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/files:asyncBatchAnnotate" | Select-Object -Expand Content
asyncBatchAnnotate 요청에 성공하면 이름 필드 하나를 포함하는 응답이 반환됩니다.
{ "name": "projects/usable-auth-library/operations/1efec2285bd442df" }
이 이름은 연결된 ID(예: 1efec2285bd442df)가 있는 장기 실행 작업을 나타내며, 이는 v1.operations API를 사용하여 쿼리할 수 있습니다.
Vision 주석 응답을 검색하려면 v1.operations 엔드포인트에 GET 요청을 보내면서 URL에 작업 ID를 전달합니다.
GET https://vision.googleapis.com/v1/operations/operation-id예를 들면 다음과 같습니다.
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/projects/project-id/locations/location-id/operations/1efec2285bd442df
작업이 진행 중인 경우:
{ "name": "operations/1efec2285bd442df", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata", "state": "RUNNING", "createTime": "2019-05-15T21:10:08.401917049Z", "updateTime": "2019-05-15T21:10:33.700763554Z" } }
작업이 완료되면 state가 DONE으로 표시되고, 지정한 Google Cloud Storage 파일에 결과가 기록됩니다.
{ "name": "operations/1efec2285bd442df", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata", "state": "DONE", "createTime": "2019-05-15T20:56:30.622473785Z", "updateTime": "2019-05-15T20:56:41.666379749Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.vision.v1.AsyncBatchAnnotateFilesResponse", "responses": [ { "outputConfig": {