From 40ebc8ecbb35c5d9c39f1c25295006f1586ead05 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Mon, 24 May 2021 12:57:35 -0700 Subject: [PATCH 1/2] Regenerate computer vision SDK --- .../vision/computervision/ComputerVision.java | 24 +++++++++ .../ComputerVisionClientImpl.java | 23 +------- .../implementation/ComputerVisionImpl.java | 51 +++++++++++++----- .../models/ReadInStreamOptionalParameter.java | 54 +++++++++++++++++++ .../models/ReadOptionalParameter.java | 27 ++++++++++ 5 files changed, 145 insertions(+), 34 deletions(-) diff --git a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/ComputerVision.java b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/ComputerVision.java index 44f4239221cd..0b0810a3259b 100644 --- a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/ComputerVision.java +++ b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/ComputerVision.java @@ -135,6 +135,22 @@ interface WithAllOptions { */ ComputerVisionReadInStreamDefinitionStages.WithExecute withPages(List pages); + /** + * Optional parameter to specify the version of the OCR model used for text extraction. Accepted values are: + * "latest", "latest-preview", "2021-04-12". Defaults to "latest". + * + * @return next definition stage + */ + ComputerVisionReadInStreamDefinitionStages.WithExecute withModelVersion(String modelVersion); + + /** + * Optional parameter to specify which reading order algorithm should be applied when ordering the extract text + * elements. Can be either 'basic' or 'natural'. Will default to 'basic' if not specified. + * + * @return next definition stage + */ + ComputerVisionReadInStreamDefinitionStages.WithExecute withReadingOrder(String readingOrder); + } /** @@ -1261,6 +1277,14 @@ interface WithAllOptions { */ ComputerVisionReadDefinitionStages.WithExecute withModelVersion(String modelVersion); + /** + * Optional parameter to specify which reading order algorithm should be applied when ordering the extract text + * elements. Can be either 'basic' or 'natural'. Will default to 'basic' if not specified. + * + * @return next definition stage + */ + ComputerVisionReadDefinitionStages.WithExecute withReadingOrder(String readingOrder); + } /** diff --git a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionClientImpl.java b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionClientImpl.java index c06d0da46b50..f406280339d2 100644 --- a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionClientImpl.java +++ b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionClientImpl.java @@ -8,33 +8,12 @@ package com.microsoft.azure.cognitiveservices.vision.computervision.implementation; -import com.google.common.base.Joiner; -import com.google.common.reflect.TypeToken; import com.microsoft.azure.AzureClient; import com.microsoft.azure.AzureServiceClient; import com.microsoft.azure.cognitiveservices.vision.computervision.ComputerVision; import com.microsoft.azure.cognitiveservices.vision.computervision.ComputerVisionClient; -import com.microsoft.azure.cognitiveservices.vision.computervision.models.ComputerVisionErrorResponseException; -import com.microsoft.azure.cognitiveservices.vision.computervision.models.DomainModelResults; -import com.microsoft.rest.credentials.ServiceClientCredentials; import com.microsoft.rest.RestClient; -import com.microsoft.rest.ServiceCallback; -import com.microsoft.rest.ServiceFuture; -import com.microsoft.rest.ServiceResponse; -import java.io.InputStream; -import java.io.IOException; -import okhttp3.MediaType; -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import retrofit2.http.Body; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.Path; -import retrofit2.http.POST; -import retrofit2.http.Query; -import retrofit2.Response; -import rx.functions.Func1; -import rx.Observable; +import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Initializes a new instance of the ComputerVisionClientImpl class. diff --git a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionImpl.java b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionImpl.java index 36d41a9605ed..918550991b91 100644 --- a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionImpl.java +++ b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/implementation/ComputerVisionImpl.java @@ -103,7 +103,7 @@ public ComputerVisionImpl(Retrofit retrofit, ComputerVisionClientImpl client) { interface ComputerVisionService { @Headers({ "Content-Type: application/octet-stream", "x-ms-logging-context: com.microsoft.azure.cognitiveservices.vision.computervision.ComputerVision readInStream" }) @POST("read/analyze") - Observable> readInStream(@Query("language") OcrDetectionLanguage language, @Body RequestBody image, @Query("pages") String pages, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> readInStream(@Query("language") OcrDetectionLanguage language, @Body RequestBody image, @Query("pages") String pages, @Query("model-version") String modelVersion, @Query("readingOrder") String readingOrder, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); @Headers({ "Content-Type: application/octet-stream", "x-ms-logging-context: com.microsoft.azure.cognitiveservices.vision.computervision.ComputerVision tagImageInStream" }) @POST("tag") @@ -144,7 +144,7 @@ interface ComputerVisionService { @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.cognitiveservices.vision.computervision.ComputerVision read" }) @POST("read/analyze") - Observable> read(@Query("language") OcrDetectionLanguage language, @Query("pages") String pages, @Query("model-version") String modelVersion, @Header("accept-language") String acceptLanguage, @Body ImageUrl imageUrl, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> read(@Query("language") OcrDetectionLanguage language, @Query("pages") String pages, @Query("model-version") String modelVersion, @Query("readingOrder") String readingOrder, @Header("accept-language") String acceptLanguage, @Body ImageUrl imageUrl, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.cognitiveservices.vision.computervision.ComputerVision getAreaOfInterest" }) @POST("areaOfInterest") @@ -246,8 +246,10 @@ public Observable> readInS } final OcrDetectionLanguage language = readInStreamOptionalParameter != null ? readInStreamOptionalParameter.language() : null; final List pages = readInStreamOptionalParameter != null ? readInStreamOptionalParameter.pages() : null; + final String modelVersion = readInStreamOptionalParameter != null ? readInStreamOptionalParameter.modelVersion() : null; + final String readingOrder = readInStreamOptionalParameter != null ? readInStreamOptionalParameter.readingOrder() : null; - return readInStreamWithServiceResponseAsync(image, language, pages); + return readInStreamWithServiceResponseAsync(image, language, pages, modelVersion, readingOrder); } /** @@ -256,10 +258,12 @@ public Observable> readInS * @param image An image stream. * @param language The BCP-47 language code of the text in the document. Read supports auto language identification and multi-language documents, so only provide a language code if you would like to force the document to be processed in that specific language. See https://aka.ms/ocr-languages for list of supported languages. Possible values include: 'af', 'ast', 'bi', 'br', 'ca', 'ceb', 'ch', 'co', 'crh', 'cs', 'csb', 'da', 'de', 'en', 'es', 'et', 'eu', 'fi', 'fil', 'fj', 'fr', 'fur', 'fy', 'ga', 'gd', 'gil', 'gl', 'gv', 'hni', 'hsb', 'ht', 'hu', 'ia', 'id', 'it', 'iu', 'ja', 'jv', 'kaa', 'kac', 'kea', 'kha', 'kl', 'ko', 'ku', 'kw', 'lb', 'ms', 'mww', 'nap', 'nl', 'no', 'oc', 'pl', 'pt', 'quc', 'rm', 'sco', 'sl', 'sq', 'sv', 'sw', 'tet', 'tr', 'tt', 'uz', 'vo', 'wae', 'yua', 'za', 'zh-Hans', 'zh-Hant', 'zu' * @param pages Custom page numbers for multi-page documents(PDF/TIFF), input the number of the pages you want to get OCR result. For a range of pages, use a hyphen. Separate each page or range with a comma. + * @param modelVersion Optional parameter to specify the version of the OCR model used for text extraction. Accepted values are: "latest", "latest-preview", "2021-04-12". Defaults to "latest". + * @param readingOrder Optional parameter to specify which reading order algorithm should be applied when ordering the extract text elements. Can be either 'basic' or 'natural'. Will default to 'basic' if not specified * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceResponseWithHeaders} object if successful. */ - public Observable> readInStreamWithServiceResponseAsync(byte[] image, OcrDetectionLanguage language, List pages) { + public Observable> readInStreamWithServiceResponseAsync(byte[] image, OcrDetectionLanguage language, List pages, String modelVersion, String readingOrder) { if (this.client.endpoint() == null) { throw new IllegalArgumentException("Parameter this.client.endpoint() is required and cannot be null."); } @@ -270,7 +274,7 @@ public Observable> readInS String parameterizedHost = Joiner.on(", ").join("{Endpoint}", this.client.endpoint()); RequestBody imageConverted = RequestBody.create(MediaType.parse("application/octet-stream"), image); String pagesConverted = this.client.serializerAdapter().serializeList(pages, CollectionFormat.CSV); - return service.readInStream(language, imageConverted, pagesConverted, this.client.acceptLanguage(), parameterizedHost, this.client.userAgent()) + return service.readInStream(language, imageConverted, pagesConverted, modelVersion, readingOrder, this.client.acceptLanguage(), parameterizedHost, this.client.userAgent()) .flatMap(new Func1, Observable>>() { @Override public Observable> call(Response response) { @@ -304,6 +308,8 @@ class ComputerVisionReadInStreamParameters implements ComputerVisionReadInStream private byte[] image; private OcrDetectionLanguage language; private List pages; + private String modelVersion; + private String readingOrder; /** * Constructor. @@ -331,14 +337,26 @@ public ComputerVisionReadInStreamParameters withPages(List pages) { return this; } + @Override + public ComputerVisionReadInStreamParameters withModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + return this; + } + + @Override + public ComputerVisionReadInStreamParameters withReadingOrder(String readingOrder) { + this.readingOrder = readingOrder; + return this; + } + @Override public void execute() { - readInStreamWithServiceResponseAsync(image, language, pages).toBlocking().single().body(); + readInStreamWithServiceResponseAsync(image, language, pages, modelVersion, readingOrder).toBlocking().single().body(); } @Override public Observable executeAsync() { - return readInStreamWithServiceResponseAsync(image, language, pages).map(new Func1, Void>() { + return readInStreamWithServiceResponseAsync(image, language, pages, modelVersion, readingOrder).map(new Func1, Void>() { @Override public Void call(ServiceResponseWithHeaders response) { return response.body(); @@ -1948,8 +1966,9 @@ public Observable> readWithService final OcrDetectionLanguage language = readOptionalParameter != null ? readOptionalParameter.language() : null; final List pages = readOptionalParameter != null ? readOptionalParameter.pages() : null; final String modelVersion = readOptionalParameter != null ? readOptionalParameter.modelVersion() : null; + final String readingOrder = readOptionalParameter != null ? readOptionalParameter.readingOrder() : null; - return readWithServiceResponseAsync(url, language, pages, modelVersion); + return readWithServiceResponseAsync(url, language, pages, modelVersion, readingOrder); } /** @@ -1959,10 +1978,11 @@ public Observable> readWithService * @param language The BCP-47 language code of the text in the document. Read supports auto language identification and multi-language documents, so only provide a language code if you would like to force the document to be processed in that specific language. See https://aka.ms/ocr-languages for list of supported languages. Possible values include: 'af', 'ast', 'bi', 'br', 'ca', 'ceb', 'ch', 'co', 'crh', 'cs', 'csb', 'da', 'de', 'en', 'es', 'et', 'eu', 'fi', 'fil', 'fj', 'fr', 'fur', 'fy', 'ga', 'gd', 'gil', 'gl', 'gv', 'hni', 'hsb', 'ht', 'hu', 'ia', 'id', 'it', 'iu', 'ja', 'jv', 'kaa', 'kac', 'kea', 'kha', 'kl', 'ko', 'ku', 'kw', 'lb', 'ms', 'mww', 'nap', 'nl', 'no', 'oc', 'pl', 'pt', 'quc', 'rm', 'sco', 'sl', 'sq', 'sv', 'sw', 'tet', 'tr', 'tt', 'uz', 'vo', 'wae', 'yua', 'za', 'zh-Hans', 'zh-Hant', 'zu' * @param pages Custom page numbers for multi-page documents(PDF/TIFF), input the number of the pages you want to get OCR result. For a range of pages, use a hyphen. Separate each page or range with a comma. * @param modelVersion Optional parameter to specify the version of the OCR model used for text extraction. Accepted values are: "latest", "latest-preview", "2021-04-12". Defaults to "latest". + * @param readingOrder Optional parameter to specify which reading order algorithm should be applied when ordering the extract text elements. Can be either 'basic' or 'natural'. Will default to 'basic' if not specified * @throws IllegalArgumentException thrown if parameters fail the validation * @return the {@link ServiceResponseWithHeaders} object if successful. */ - public Observable> readWithServiceResponseAsync(String url, OcrDetectionLanguage language, List pages, String modelVersion) { + public Observable> readWithServiceResponseAsync(String url, OcrDetectionLanguage language, List pages, String modelVersion, String readingOrder) { if (this.client.endpoint() == null) { throw new IllegalArgumentException("Parameter this.client.endpoint() is required and cannot be null."); } @@ -1974,7 +1994,7 @@ public Observable> readWithService imageUrl.withUrl(url); String parameterizedHost = Joiner.on(", ").join("{Endpoint}", this.client.endpoint()); String pagesConverted = this.client.serializerAdapter().serializeList(pages, CollectionFormat.CSV); - return service.read(language, pagesConverted, modelVersion, this.client.acceptLanguage(), imageUrl, parameterizedHost, this.client.userAgent()) + return service.read(language, pagesConverted, modelVersion, readingOrder, this.client.acceptLanguage(), imageUrl, parameterizedHost, this.client.userAgent()) .flatMap(new Func1, Observable>>() { @Override public Observable> call(Response response) { @@ -2009,6 +2029,7 @@ class ComputerVisionReadParameters implements ComputerVisionReadDefinition { private OcrDetectionLanguage language; private List pages; private String modelVersion; + private String readingOrder; /** * Constructor. @@ -2042,14 +2063,20 @@ public ComputerVisionReadParameters withModelVersion(String modelVersion) { return this; } + @Override + public ComputerVisionReadParameters withReadingOrder(String readingOrder) { + this.readingOrder = readingOrder; + return this; + } + @Override public void execute() { - readWithServiceResponseAsync(url, language, pages, modelVersion).toBlocking().single().body(); + readWithServiceResponseAsync(url, language, pages, modelVersion, readingOrder).toBlocking().single().body(); } @Override public Observable executeAsync() { - return readWithServiceResponseAsync(url, language, pages, modelVersion).map(new Func1, Void>() { + return readWithServiceResponseAsync(url, language, pages, modelVersion, readingOrder).map(new Func1, Void>() { @Override public Void call(ServiceResponseWithHeaders response) { return response.body(); diff --git a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadInStreamOptionalParameter.java b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadInStreamOptionalParameter.java index dcbee9bddca0..81c0a6163556 100644 --- a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadInStreamOptionalParameter.java +++ b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadInStreamOptionalParameter.java @@ -37,6 +37,20 @@ public class ReadInStreamOptionalParameter { */ private List pages; + /** + * Optional parameter to specify the version of the OCR model used for text + * extraction. Accepted values are: "latest", "latest-preview", + * "2021-04-12". Defaults to "latest". + */ + private String modelVersion; + + /** + * Optional parameter to specify which reading order algorithm should be + * applied when ordering the extract text elements. Can be either 'basic' + * or 'natural'. Will default to 'basic' if not specified. + */ + private String readingOrder; + /** * Gets or sets the preferred language for the response. */ @@ -82,6 +96,46 @@ public ReadInStreamOptionalParameter withPages(List pages) { return this; } + /** + * Get the modelVersion value. + * + * @return the modelVersion value + */ + public String modelVersion() { + return this.modelVersion; + } + + /** + * Set the modelVersion value. + * + * @param modelVersion the modelVersion value to set + * @return the ReadInStreamOptionalParameter object itself. + */ + public ReadInStreamOptionalParameter withModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + return this; + } + + /** + * Get the readingOrder value. + * + * @return the readingOrder value + */ + public String readingOrder() { + return this.readingOrder; + } + + /** + * Set the readingOrder value. + * + * @param readingOrder the readingOrder value to set + * @return the ReadInStreamOptionalParameter object itself. + */ + public ReadInStreamOptionalParameter withReadingOrder(String readingOrder) { + this.readingOrder = readingOrder; + return this; + } + /** * Get the thisclientacceptLanguage value. * diff --git a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadOptionalParameter.java b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadOptionalParameter.java index 8f32f6e24c7a..dfc6d197f9b2 100644 --- a/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadOptionalParameter.java +++ b/sdk/cognitiveservices/ms-azure-cs-computervision/src/main/java/com/microsoft/azure/cognitiveservices/vision/computervision/models/ReadOptionalParameter.java @@ -44,6 +44,13 @@ public class ReadOptionalParameter { */ private String modelVersion; + /** + * Optional parameter to specify which reading order algorithm should be + * applied when ordering the extract text elements. Can be either 'basic' + * or 'natural'. Will default to 'basic' if not specified. + */ + private String readingOrder; + /** * Gets or sets the preferred language for the response. */ @@ -109,6 +116,26 @@ public ReadOptionalParameter withModelVersion(String modelVersion) { return this; } + /** + * Get the readingOrder value. + * + * @return the readingOrder value + */ + public String readingOrder() { + return this.readingOrder; + } + + /** + * Set the readingOrder value. + * + * @param readingOrder the readingOrder value to set + * @return the ReadOptionalParameter object itself. + */ + public ReadOptionalParameter withReadingOrder(String readingOrder) { + this.readingOrder = readingOrder; + return this; + } + /** * Get the thisclientacceptLanguage value. * From 6e17e2a10d24c44b18e057d279f3eae5ee8a01b1 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Thu, 27 May 2021 10:09:13 -0700 Subject: [PATCH 2/2] Update computer vision version --- eng/versioning/version_data.txt | 2 +- sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/versioning/version_data.txt b/eng/versioning/version_data.txt index b6891c2ea8d5..9d51865befd7 100644 --- a/eng/versioning/version_data.txt +++ b/eng/versioning/version_data.txt @@ -18,7 +18,7 @@ com.microsoft.azure.cognitiveservices:azure-cognitiveservices-newssearch;1.1.0-b com.microsoft.azure.cognitiveservices:azure-cognitiveservices-videosearch;1.1.0-beta.1;1.1.0-beta.1 com.microsoft.azure.cognitiveservices:azure-cognitiveservices-visualsearch;1.1.0-beta.1;1.1.0-beta.1 com.microsoft.azure.cognitiveservices:azure-cognitiveservices-websearch;1.1.0-beta.1;1.1.0-beta.1 -com.microsoft.azure.cognitiveservices:azure-cognitiveservices-computervision;1.0.6-beta;1.0.7-beta +com.microsoft.azure.cognitiveservices:azure-cognitiveservices-computervision;1.0.7-beta;1.0.8-beta com.microsoft.azure.cognitiveservices:azure-cognitiveservices-contentmoderator;1.1.0-beta.1;1.1.0-beta.1 com.microsoft.azure.cognitiveservices:azure-cognitiveservices-customvision-prediction;1.1.0-beta.3;1.1.0-beta.3 com.microsoft.azure.cognitiveservices:azure-cognitiveservices-customvision-training;1.1.0-beta.3;1.1.0-beta.3 diff --git a/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml b/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml index bc943b3e43d7..e8add17daf5d 100644 --- a/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml @@ -15,7 +15,7 @@ azure-cognitiveservices-computervision com.microsoft.azure.cognitiveservices - 1.0.7-beta + 1.0.8-beta jar Microsoft Azure SDK for Cognitive Service Computer Vision This package contains Microsoft Cognitive Service Computer Vision SDK.