Skip to content

Commit bc0bd72

Browse files
authored
samples: migrate code from googleapis/java-vision (#7428)
### Migrating samples from [googleapis/java-vision](https://togithub.com/googleapis/java-vision/tree/main/samples) into [java-docs-samples/vision](https://togithub.com/GoogleCloudPlatform/java-docs-samples) --- - samples: Vision v1p1beta1 samples (#951) - samples: IoT MQTT Tests (#966) - samples: Generalized testDetextWebEntitiesIncludeGeoResults. (#976) - samples: Update of Flexible folder and the top-level parent pom. (#1004) - samples: Fix tests due to backend changes (#1081) - samples: Add vision ocr for pdf/tiff (#1078) - samples: Update vision dependency version and fix test. (#1099) - samples: Vision beta samples (#1154) - samples: Vision region tag update (#1182) - samples: Udpate Beta Vision samples to use beta tags (#1184) - samples: Remove unused Vision samples and region tags (#1208) - samples: Beta feature : Vision : PDF/TIFF/GIF document feature detection (#1349) - samples: vision: address flakes due to collisions. (#1458) - samples: Fix failing beta tets (#1592) - feat: make repo releasable, add parent/bom (#1) - chore: update common templates, regenerate tests (#20) - chore(regen): update license year for generated files (#48) - samples: fix generated samples directory (#70) - samples: add scaffold (#84) - chore(deps): update dependency com.google.cloud:libraries-bom to v4.3.0 (#88) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.13 (#92) - samples: docs: update tests that are failing or not cleaning up resources - samples: update shared config (#2443) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.14 (#96) - chore(deps): update dependency com.google.cloud:libraries-bom to v4.4.0 (#97) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.15 (#100) - chore(deps): update dependency com.google.cloud:libraries-bom to v4.4.1 (#101) - chore(deps): update dependency com.google.cloud:libraries-bom to v5 (#110) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.16 (#115) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.17 (#121) - chore(deps): update dependency com.google.cloud:libraries-bom to v5.2.0 (#125) - chore(deps): update dependency com.google.cloud:libraries-bom to v5.3.0 (#129) - chore(deps): update dependency com.google.cloud:libraries-bom to v5.4.0 (#139) - chore(deps): update dependency com.google.cloud:libraries-bom to v5.6.0 (#149) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.18 (#155) - chore(deps): update dependency com.google.cloud:libraries-bom to v5.7.0 (#157) - chore(deps): update dependency com.google.cloud:libraries-bom to v6 (#162) - chore(deps): update dependency com.google.cloud:libraries-bom to v7 (#168) - chore(deps): update dependency com.google.cloud:libraries-bom to v7.0.1 (#176) - chore(deps): update dependency com.google.cloud:libraries-bom to v7.0.2 (#178) - chore(deps): update dependency com.google.cloud:libraries-bom to v8 (#179) - chore(deps): update dependency com.google.cloud:libraries-bom to v8.1.0 (#188) - samples: Cloud Client Vision How-to snippets (#485) - samples: Adds GCS snippets, was blocked by https://goo.gl/uWgYhQ - samples: Fixes checkstyle, 3P libs before java libs - samples: Updates vision to the latest library (#548) - samples: Updates snippets so the API client is created in examples (#572) - samples: Infer project from env - samples: Vision speech upgrade (#641) - samples: Changes http test to point to better hosting. - samples: Use Cloud Storage bucket for web URI test - samples: Style nit - samples: Change test to public GCS bucket. - samples: Change test to environment variable. - samples: updating to latest google-cloud-* dependencies (#723) - samples: Closes image annotator client. - samples: Uses try with resource to ensure client gets closed. - samples: upgrade Guava (#802) - samples: Don't check for location (#809) - samples: Vision v1p1beta1 samples (#951) - samples: Update vision folder. (#999) - samples: Update vision/beta web detection samples to v1 (#1016) - samples: Fix tests for backend changes (#1082) - samples: Update vision dependency version and fix test. (#1099) - samples: Update OCR sample from beta to ga (#1123) - samples: Vision region tag update (#1182) - samples: Vision GA - library update (#1213) - samples: vision: address changes in vision annotations. (#1326) - samples: vision: address flakes due to collisions. (#1458) - samples: Fix failing tests (#1591) - samples: Add vision ocr set endpoint snippets (#1748) - samples: vision: change flaky tests to mocks (#2254) - samples: vision: move samples out of branch (#2298) - samples: vision: move samples out of branch and add clarifying comments (#2297) - samples: fix: region tag (#2312) - samples: vision: makes tests more generic (#2475) - samples: update shared config (#2443) - samples: chore: added comment on try/catch block (#2980) - samples: chore: splitting sample into single files (#3083) - samples: fix test dependencies - samples: fix resources - samples: Vision Product Search (#1161) - samples: Vision region tag update (#1182) - samples: Adding the Product Search tests. (#1195) - samples: Added the Product Search tests and the src file updates (#1196) - samples: Vision Product Search - GA (#1257) - samples: Pdt search updates (#1473) - samples: Purge Products (#1569) - samples: vision: update product search tests (#2378) - samples: vision: use uuid for product search tests - samples: Update ImportProductSetsIT.java - samples: bump timeouts - samples: update shared config (#2443) - samples: fix resources and dependencies - samples: fix resources - chore(deps): update dependency com.google.cloud:libraries-bom to v9 (#207) - chore(deps): update dependency com.google.cloud:libraries-bom to v9.1.0 - chore(deps): update dependency com.google.cloud:libraries-bom to v10 - chore(deps): update dependency com.google.cloud:libraries-bom to v11 - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.21 (#244) - chore(deps): update dependency com.google.cloud:libraries-bom to v12 (#249) - test(deps): update dependency junit:junit to v4.13.1 - chore(deps): update dependency com.google.cloud:libraries-bom to v12.1.0 (#262) - chore(deps): update dependency com.google.cloud:libraries-bom to v13 (#272) - test(deps): update dependency com.google.truth:truth to v1.1 (#274) - chore(deps): update dependency com.google.cloud:libraries-bom to v13.2.0 (#284) - chore(deps): update dependency com.google.cloud:libraries-bom to v13.3.0 (#287) - chore(deps): update dependency com.google.cloud:libraries-bom to v13.4.0 (#297) - chore: moving the rest of the vision samples (#291) - samples(deps): update spring.version to v2.3.5.release (#305) - chore(deps): update dependency com.google.cloud:libraries-bom to v14 (#307) - chore(deps): update dependency com.google.cloud:libraries-bom to v15 (#310) - chore(deps): update dependency com.google.cloud:libraries-bom to v16 (#326) - chore(deps): update dependency com.google.cloud:libraries-bom to v16.2.0 (#357) - chore(deps): update dependency com.google.cloud:libraries-bom to v16.2.1 (#362) - samples(deps): update dependency org.springframework.cloud:spring-cloud-gcp-dependencies to v1.2.6.release (#313) - samples(deps): update spring.version to v2.4.1 (#320) - samples(deps): update spring.version to v2.4.2 (#374) - chore(deps): update dependency com.google.cloud:libraries-bom to v16.4.0 (#373) - test(deps): update dependency junit:junit to v4.13.2 (#397) - test(samples): prevent failure in nightly run by adding retry (#392) - chore(deps): update dependency com.google.cloud:libraries-bom to v17 (#411) - samples(deps): update dependency com.google.cloud:google-cloud-core to v1.94.1 (#405) - samples(deps): update spring.version to v2.4.3 (#402) - samples(deps): update dependency org.springframework.cloud:spring-cloud-gcp-dependencies to v1.2.7.release (#395) - chore(deps): update dependency com.google.cloud:libraries-bom to v18 (#414) - deps: update dependency com.google.cloud:google-cloud-core to v1.94.2 (#423) - chore(deps): update dependency com.google.cloud:libraries-bom to v18.1.0 (#427) - chore(deps): update dependency com.google.cloud:libraries-bom to v19 (#431) - deps: update dependency com.google.cloud:google-cloud-core to v1.94.3 (#428) - chore(deps): update dependency com.google.cloud:libraries-bom to v19.1.0 (#445) - chore(deps): update dependency com.google.cloud:libraries-bom to v19.2.1 (#447) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.22 (#454) - chore(deps): update dependency com.google.cloud:libraries-bom to v20 (#463) - deps: update dependency net.sourceforge.argparse4j:argparse4j to v0.9.0 (#455) - deps: update dependency com.google.cloud:google-cloud-core to v1.94.7 (#441) - deps: update spring.version to v2.4.4 (#448) - deps: update spring.version to v2.4.5 (#474) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.1.0 (#475) - chore: service throttles on public URLs & its known issue. (#477) - deps: update dependency com.google.cloud:google-cloud-core to v1.94.8 (#482) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.2.0 (#487) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.3.0 (#500) - test(deps): update dependency com.google.truth:truth to v1.1.2 (#498) - deps: update dependency org.springframework.cloud:spring-cloud-gcp-dependencies to v1.2.8.release (#497) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.4.0 (#509) - test(deps): update dependency com.google.truth:truth to v1.1.3 (#520) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.5.0 (#519) - deps: update spring.version to v2.5.0 (#516) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.6.0 (#537) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.23 (#536) - deps: update dependency com.google.cloud:google-cloud-core to v1.95.1 (#533) - deps: update dependency com.google.cloud:google-cloud-core to v1.95.2 (#542) - deps: update spring.version to v2.5.1 (#544) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.7.0 (#564) - deps: update spring.version to v2.5.2 (#566) - deps: update dependency com.google.cloud:google-cloud-core to v1.95.4 (#563) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.8.0 (#575) - chore(deps): update dependency com.google.cloud:libraries-bom to v20.9.0 (#586) - deps: update dependency com.google.cloud:google-cloud-core to v2 (#599) - deps: update dependency org.apache.commons:commons-csv to v1.9.0 (#598) - deps: update dependency com.google.cloud:google-cloud-core to v2.0.3 (#611) - deps: update dependency com.google.cloud:google-cloud-core to v2.0.5 (#614) - deps: update spring.version to v2.5.4 (#581) - chore(deps): update dependency com.google.cloud:libraries-bom to v21 (#619) - deps: update dependency com.google.cloud:google-cloud-core to v2.1.0 (#634) - deps: update dependency com.google.cloud:google-cloud-core to v2.1.1 (#641) - chore(deps): update dependency com.google.cloud:libraries-bom to v22 (#650) - deps: update dependency com.google.cloud:google-cloud-core to v2.1.2 (#652) - chore(deps): update dependency com.google.cloud:libraries-bom to v23 (#668) - chore: migrate to owlbot (#663) - deps: update dependency com.google.cloud:google-cloud-core to v2.1.3 (#674) - deps: update dependency com.google.cloud:google-cloud-core to v2.1.4 (#685) - deps: update dependency com.google.cloud:google-cloud-core to v2.1.6 (#692) - deps: update spring.version to v2.5.5 (#703) - deps: update dependency com.google.cloud:google-cloud-core to v2.1.7 (#702) - chore(deps): update dependency com.google.cloud:libraries-bom to v23.1.0 (#715) - deps: update dependency com.google.cloud:google-cloud-core to v2.2.0 (#720) - deps: update spring.version to v2.5.6 (#729) - chore(deps): update dependency com.google.cloud:libraries-bom to v24 (#733) - deps: update dependency com.google.cloud:google-cloud-core to v2.3.0 (#744) - deps: update dependency com.google.cloud:google-cloud-core to v2.3.1 (#746) - deps: update spring.version to v2.6.0 (#749) - deps: update dependency com.google.cloud:google-cloud-core to v2.3.2 (#756) - deps: update dependency com.google.cloud:google-cloud-core to v2.3.3 (#758) - deps: update dependency org.springframework.boot:spring-boot-starter-web to v2.6.1 (#751) - chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.2.0 (#755) - chore(deps): update dependency com.google.cloud:libraries-bom to v24.1.0 (#767) - chore(deps): update dependency com.google.cloud:libraries-bom to v24.1.1 (#769) - deps: update dependency com.google.cloud:google-cloud-core to v2.3.4 (#772) - chore(deps): update dependency com.google.cloud:libraries-bom to v24.1.2 (#773) - deps: update dependency com.google.cloud:google-cloud-core to v2.3.5 (#779) - chore(deps): update dependency com.google.cloud:libraries-bom to v24.2.0 (#788) - deps: update spring.version to v2.6.3 (#768) - deps: update dependency com.google.cloud:google-cloud-core to v2.4.0 (#797) - chore(deps): update dependency com.google.cloud:libraries-bom to v24.3.0 (#809) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.0 (#804) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.1 (#811) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.3 (#812) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.4 (#816) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.5 (#825) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.6 (#828) - chore(deps): update dependency com.google.cloud:libraries-bom to v24.4.0 (#830) - deps: update dependency org.springframework.boot:spring-boot-maven-plugin to v2.6.4 (#822) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.8 (#840) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.9 (#844) - chore(deps): update dependency com.google.cloud:libraries-bom to v25 (#850) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.10 (#849) - deps: update spring.version to v2.6.5 (#855) - deps: update dependency com.google.cloud:google-cloud-core to v2.5.11 (#860) - chore(deps): update dependency com.google.cloud:libraries-bom to v25.1.0 (#866) - build(deps): bump spring-boot-starter-web in /samples/spring-framework (#867) - deps: update dependency com.google.cloud:google-cloud-core to v2.6.1 (#878) - deps: update spring.version to v2.6.7 (#888) - chore(deps): update dependency com.google.cloud:libraries-bom to v25.2.0 (#891) - chore(deps): update dependency com.google.cloud:libraries-bom to v25.3.0 (#905) - deps: update spring.version to v2.7.0 (#908) - deps: update dependency com.google.cloud:google-cloud-core to v2.7.1 (#906) - chore(deps): update dependency com.google.cloud:libraries-bom to v25.4.0 (#917) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.0 (#920) - deps: update spring.version to v2.7.1 (#925) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.1 (#931) - chore(deps): update dependency com.google.cloud:libraries-bom to v26 (#945) - deps: update spring.version to v2.7.2 (#951) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.6 (#955) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.7 (#958) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.8 (#960) - chore(deps): update dependency com.google.cloud:libraries-bom to v26.1.0 (#970) - deps: update spring.version to v2.7.3 (#974) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.9 (#973) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.10 (#977) - chore(deps): update dependency com.google.cloud:libraries-bom to v26.1.1 (#978) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.11 (#980) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.12 (#984) - chore(deps): update dependency com.google.cloud:libraries-bom to v26.1.2 (#990) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.13 (#992) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.14 (#993) - deps: update spring.version to v2.7.4 (#994) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.18 (#995) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.19 (#1023) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.20 (#1025) - chore(deps): update dependency com.google.cloud:libraries-bom to v26.1.3 (#1031) - deps: update dependency com.google.cloud:google-cloud-core to v2.8.21 (#1034) Fixes #issue > It's a good idea to open an issue first for discussion. - [ ] I have followed [Sample Format Guide](https://togithub.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md) - [ ] `pom.xml` parent set to latest `shared-configuration` - [ ] Appropriate changes to README are included in PR - [ ] API's need to be enabled to test (tell us) - [ ] Environment Variables need to be set (ask us to set them) - [ ] **Tests** pass: `mvn clean verify` **required** - [ ] **Lint** passes: `mvn -P lint checkstyle:check` **required** - [ ] **Static Analysis**: `mvn -P lint clean compile pmd:cpd-check spotbugs:check` **advisory only** - [ ] Please **merge** this PR for me once it is approved.
1 parent 56628fd commit bc0bd72

File tree

98 files changed

+7879
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+7879
-0
lines changed

vision/snippets/pom.xml

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>com.example.vision</groupId>
5+
<artifactId>vision-snippets</artifactId>
6+
<packaging>jar</packaging>
7+
<name>Google Cloud Vision Snippets</name>
8+
<url>https://github.com/GoogleCloudPlatform/java-docs-samples/tree/main/vision</url>
9+
10+
<!--
11+
The parent pom defines common style checks and testing strategies for our samples.
12+
Removing or replacing it should not affect the execution of the samples in anyway.
13+
-->
14+
<parent>
15+
<groupId>com.google.cloud.samples</groupId>
16+
<artifactId>shared-configuration</artifactId>
17+
<version>1.2.0</version>
18+
</parent>
19+
20+
<properties>
21+
<maven.compiler.target>1.8</maven.compiler.target>
22+
<maven.compiler.source>1.8</maven.compiler.source>
23+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
24+
</properties>
25+
26+
27+
<!-- [START vision_install_with_bom] -->
28+
<dependencyManagement>
29+
<dependencies>
30+
<dependency>
31+
<groupId>com.google.cloud</groupId>
32+
<artifactId>libraries-bom</artifactId>
33+
<version>26.1.3</version>
34+
<type>pom</type>
35+
<scope>import</scope>
36+
</dependency>
37+
</dependencies>
38+
</dependencyManagement>
39+
40+
<dependencies>
41+
<dependency>
42+
<groupId>com.google.cloud</groupId>
43+
<artifactId>google-cloud-vision</artifactId>
44+
</dependency>
45+
<!-- [START_EXCLUDE] -->
46+
<dependency>
47+
<groupId>com.google.cloud</groupId>
48+
<artifactId>google-cloud-storage</artifactId>
49+
</dependency>
50+
<dependency>
51+
<groupId>net.sourceforge.argparse4j</groupId>
52+
<artifactId>argparse4j</artifactId>
53+
<version>0.9.0</version>
54+
</dependency>
55+
<dependency>
56+
<groupId>org.apache.commons</groupId>
57+
<artifactId>commons-csv</artifactId>
58+
<version>1.9.0</version>
59+
</dependency>
60+
<dependency>
61+
<groupId>junit</groupId>
62+
<artifactId>junit</artifactId>
63+
<version>4.13.2</version>
64+
<scope>test</scope>
65+
</dependency>
66+
<dependency>
67+
<groupId>com.google.cloud</groupId>
68+
<artifactId>google-cloud-core</artifactId>
69+
<version>2.8.21</version>
70+
<scope>test</scope>
71+
<classifier>tests</classifier>
72+
</dependency>
73+
<dependency>
74+
<groupId>com.google.truth</groupId>
75+
<artifactId>truth</artifactId>
76+
<version>1.1.3</version>
77+
<scope>test</scope>
78+
</dependency>
79+
<!-- [END_EXCLUDE] -->
80+
</dependencies>
81+
<!-- [END vision_install_with_bom] -->
82+
</project>

vision/snippets/resources/city.jpg

3.5 MB
Loading
91.1 KB
Loading
8.06 KB
Loading
519 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"gs://java-docs-samples-testing/product-search/shoes_1.jpg","indexed_product_set_id_for_testing","indexed_product_id_for_testing_1","apparel","style=womens","0.1,0.1,0.9,0.1,0.9,0.9,0.1,0.9"
2+
"gs://java-docs-samples-testing/product-search/shoes_2.jpg","indexed_product_set_id_for_testing","indexed_product_id_for_testing_2","apparel",,

vision/snippets/resources/kafka.pdf

85.2 KB
Binary file not shown.
158 KB
Loading

vision/snippets/resources/logos.png

21.1 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"gs://java-docs-samples-testing/product-search/shoes_1.jpg","fake_product_set_id_for_testing","fake_product_id_for_testing_1","apparel","style=womens","0.1,0.1,0.9,0.1,0.9,0.9,0.1,0.9"
2+
"gs://java-docs-samples-testing/product-search/shoes_2.jpg","fake_product_set_id_for_testing","fake_product_id_for_testing_2","apparel",,

vision/snippets/resources/puppies.jpg

280 KB
Loading

vision/snippets/resources/shoes_1.jpg

298 KB
Loading

vision/snippets/resources/shoes_2.jpg

542 KB
Loading

vision/snippets/resources/text.jpg

122 KB
Loading
63.4 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
/*
2+
* Copyright 2019 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.example.vision;
18+
19+
// [START vision_async_batch_annotate_images_beta]
20+
import com.google.api.gax.longrunning.OperationFuture;
21+
import com.google.api.gax.paging.Page;
22+
import com.google.cloud.storage.Blob;
23+
import com.google.cloud.storage.Bucket;
24+
import com.google.cloud.storage.Storage;
25+
import com.google.cloud.storage.Storage.BlobListOption;
26+
import com.google.cloud.storage.StorageOptions;
27+
import com.google.cloud.vision.v1p4beta1.AnnotateImageRequest;
28+
import com.google.cloud.vision.v1p4beta1.AsyncBatchAnnotateImagesRequest;
29+
import com.google.cloud.vision.v1p4beta1.AsyncBatchAnnotateImagesResponse;
30+
import com.google.cloud.vision.v1p4beta1.BatchAnnotateImagesResponse;
31+
import com.google.cloud.vision.v1p4beta1.BatchAnnotateImagesResponse.Builder;
32+
import com.google.cloud.vision.v1p4beta1.Feature;
33+
import com.google.cloud.vision.v1p4beta1.Feature.Type;
34+
import com.google.cloud.vision.v1p4beta1.GcsDestination;
35+
import com.google.cloud.vision.v1p4beta1.Image;
36+
import com.google.cloud.vision.v1p4beta1.ImageAnnotatorClient;
37+
import com.google.cloud.vision.v1p4beta1.ImageSource;
38+
import com.google.cloud.vision.v1p4beta1.OperationMetadata;
39+
import com.google.cloud.vision.v1p4beta1.OutputConfig;
40+
import com.google.protobuf.util.JsonFormat;
41+
import java.util.ArrayList;
42+
import java.util.List;
43+
import java.util.concurrent.TimeUnit;
44+
import java.util.regex.Matcher;
45+
import java.util.regex.Pattern;
46+
47+
public class AsyncBatchAnnotateImagesGcs {
48+
49+
// Performs asynchronous batch annotation of images on Google Cloud Storage
50+
public static void asyncBatchAnnotateImagesGcs(String gcsSourcePath, String gcsDestinationPath)
51+
throws Exception {
52+
// String gcsSourcePath = "gs://YOUR_BUCKET_ID/path_to_your_data";
53+
// String gcsDestinationPath = "gs://YOUR_BUCKET_ID/path_to_store_annotation";
54+
try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
55+
List<AnnotateImageRequest> requests = new ArrayList<>();
56+
57+
ImageSource imgSource = ImageSource.newBuilder().setImageUri(gcsSourcePath).build();
58+
59+
Image image = Image.newBuilder().setSource(imgSource).build();
60+
61+
// Set the GCS destination path for where to save the results.
62+
GcsDestination gcsDestination =
63+
GcsDestination.newBuilder().setUri(gcsDestinationPath).build();
64+
65+
// Create the configuration for the output with the batch size.
66+
// The batch size sets how many pages should be grouped into each json output file.
67+
OutputConfig outputConfig =
68+
OutputConfig.newBuilder().setGcsDestination(gcsDestination).setBatchSize(2).build();
69+
70+
// Select the Features required by the vision API
71+
Feature features =
72+
Feature.newBuilder()
73+
.setType(Type.LABEL_DETECTION)
74+
.setType(Type.TEXT_DETECTION)
75+
.setType(Type.IMAGE_PROPERTIES)
76+
.build();
77+
78+
// Build the request
79+
AnnotateImageRequest annotateImageRequest =
80+
AnnotateImageRequest.newBuilder().setImage(image).addFeatures(features).build();
81+
82+
requests.add(annotateImageRequest);
83+
AsyncBatchAnnotateImagesRequest request =
84+
AsyncBatchAnnotateImagesRequest.newBuilder()
85+
.addAllRequests(requests)
86+
.setOutputConfig(outputConfig)
87+
.build();
88+
89+
OperationFuture<AsyncBatchAnnotateImagesResponse, OperationMetadata> response =
90+
client.asyncBatchAnnotateImagesAsync(request);
91+
System.out.println("Waiting for the operation to finish.");
92+
93+
// we're not processing the response, since we'll be reading the output from GCS.
94+
response.get(180, TimeUnit.SECONDS);
95+
96+
// Once the request has completed and the output has been
97+
// written to GCS, we can list all the output files.
98+
Storage storage = StorageOptions.getDefaultInstance().getService();
99+
100+
// Get the destination location from the gcsDestinationPath
101+
Pattern pattern = Pattern.compile("gs://([^/]+)/(.+)");
102+
Matcher matcher = pattern.matcher(gcsDestinationPath);
103+
104+
if (matcher.find()) {
105+
String bucketName = matcher.group(1);
106+
String prefix = matcher.group(2);
107+
108+
// Get the list of objects with the given prefix from the GCS bucket
109+
Bucket bucket = storage.get(bucketName);
110+
Page<Blob> pageList = bucket.list(BlobListOption.prefix(prefix));
111+
112+
Blob firstOutputFile = null;
113+
114+
// List objects with the given prefix.
115+
System.out.println("Output files:");
116+
for (Blob blob : pageList.iterateAll()) {
117+
System.out.println(blob.getName());
118+
119+
// Process the first output file from GCS.
120+
// Since we specified batch size = 2, the first response contains
121+
// the first two image requests
122+
if (firstOutputFile == null) {
123+
firstOutputFile = blob;
124+
}
125+
}
126+
127+
// Get the contents of the file and convert the JSON contents to an
128+
// BatchAnnotateImagesResponse
129+
// object. If the Blob is small read all its content in one request
130+
// (Note: the file is a .json file)
131+
// Storage guide: https://cloud.google.com/storage/docs/downloading-objects
132+
String jsonContents = new String(firstOutputFile.getContent());
133+
Builder builder = BatchAnnotateImagesResponse.newBuilder();
134+
JsonFormat.parser().merge(jsonContents, builder);
135+
136+
// Build the AnnotateFileResponse object
137+
BatchAnnotateImagesResponse batchAnnotateImagesResponse = builder.build();
138+
139+
// Here we print the response for the first image
140+
// The response contains more information:
141+
// annotation/pages/blocks/paragraphs/words/symbols/colors
142+
// including confidence score and bounding boxes
143+
System.out.format("\nResponse: %s\n", batchAnnotateImagesResponse.getResponses(0));
144+
145+
} else {
146+
System.out.println("No MATCH");
147+
}
148+
} catch (Exception e) {
149+
System.out.println("Error during asyncBatchAnnotateImagesGcs: \n" + e.toString());
150+
}
151+
}
152+
}
153+
154+
// [END vision_async_batch_annotate_images_beta]

0 commit comments

Comments
 (0)