Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eng/versioning/version_data.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there plans on ever having this following semver we use everywhere else?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The track 1 cognitive services libraries have been released in this version format - they will follow the track 2 versioning in track 2 libs.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this release has new APIs added, the version should be 1.1.0-beta

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Synced offline - will keep track 1 legacy versioning

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
Expand Down
2 changes: 1 addition & 1 deletion sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</parent>
<artifactId>azure-cognitiveservices-computervision</artifactId>
<groupId>com.microsoft.azure.cognitiveservices</groupId>
<version>1.0.7-beta</version> <!-- {x-version-update;com.microsoft.azure.cognitiveservices:azure-cognitiveservices-computervision;current} -->
<version>1.0.8-beta</version> <!-- {x-version-update;com.microsoft.azure.cognitiveservices:azure-cognitiveservices-computervision;current} -->
<packaging>jar</packaging>
<name>Microsoft Azure SDK for Cognitive Service Computer Vision</name>
<description>This package contains Microsoft Cognitive Service Computer Vision SDK.</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,22 @@ interface WithAllOptions {
*/
ComputerVisionReadInStreamDefinitionStages.WithExecute withPages(List<String> 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);

}

/**
Expand Down Expand Up @@ -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);

}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<Response<ResponseBody>> 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<Response<ResponseBody>> 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")
Expand Down Expand Up @@ -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<Response<ResponseBody>> 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<Response<ResponseBody>> 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")
Expand Down Expand Up @@ -246,8 +246,10 @@ public Observable<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>> readInS
}
final OcrDetectionLanguage language = readInStreamOptionalParameter != null ? readInStreamOptionalParameter.language() : null;
final List<String> 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);
}

/**
Expand All @@ -256,10 +258,12 @@ public Observable<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>> 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<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>> readInStreamWithServiceResponseAsync(byte[] image, OcrDetectionLanguage language, List<String> pages) {
public Observable<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>> readInStreamWithServiceResponseAsync(byte[] image, OcrDetectionLanguage language, List<String> pages, String modelVersion, String readingOrder) {
if (this.client.endpoint() == null) {
throw new IllegalArgumentException("Parameter this.client.endpoint() is required and cannot be null.");
}
Expand All @@ -270,7 +274,7 @@ public Observable<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>> 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<Response<ResponseBody>, Observable<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>>>() {
@Override
public Observable<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>> call(Response<ResponseBody> response) {
Expand Down Expand Up @@ -304,6 +308,8 @@ class ComputerVisionReadInStreamParameters implements ComputerVisionReadInStream
private byte[] image;
private OcrDetectionLanguage language;
private List<String> pages;
private String modelVersion;
private String readingOrder;

/**
* Constructor.
Expand Down Expand Up @@ -331,14 +337,26 @@ public ComputerVisionReadInStreamParameters withPages(List<String> 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<Void> executeAsync() {
return readInStreamWithServiceResponseAsync(image, language, pages).map(new Func1<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>, Void>() {
return readInStreamWithServiceResponseAsync(image, language, pages, modelVersion, readingOrder).map(new Func1<ServiceResponseWithHeaders<Void, ReadInStreamHeaders>, Void>() {
@Override
public Void call(ServiceResponseWithHeaders<Void, ReadInStreamHeaders> response) {
return response.body();
Expand Down Expand Up @@ -1948,8 +1966,9 @@ public Observable<ServiceResponseWithHeaders<Void, ReadHeaders>> readWithService
final OcrDetectionLanguage language = readOptionalParameter != null ? readOptionalParameter.language() : null;
final List<String> 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);
}

/**
Expand All @@ -1959,10 +1978,11 @@ public Observable<ServiceResponseWithHeaders<Void, ReadHeaders>> 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<ServiceResponseWithHeaders<Void, ReadHeaders>> readWithServiceResponseAsync(String url, OcrDetectionLanguage language, List<String> pages, String modelVersion) {
public Observable<ServiceResponseWithHeaders<Void, ReadHeaders>> readWithServiceResponseAsync(String url, OcrDetectionLanguage language, List<String> pages, String modelVersion, String readingOrder) {
if (this.client.endpoint() == null) {
throw new IllegalArgumentException("Parameter this.client.endpoint() is required and cannot be null.");
}
Expand All @@ -1974,7 +1994,7 @@ public Observable<ServiceResponseWithHeaders<Void, ReadHeaders>> 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<Response<ResponseBody>, Observable<ServiceResponseWithHeaders<Void, ReadHeaders>>>() {
@Override
public Observable<ServiceResponseWithHeaders<Void, ReadHeaders>> call(Response<ResponseBody> response) {
Expand Down Expand Up @@ -2009,6 +2029,7 @@ class ComputerVisionReadParameters implements ComputerVisionReadDefinition {
private OcrDetectionLanguage language;
private List<String> pages;
private String modelVersion;
private String readingOrder;

/**
* Constructor.
Expand Down Expand Up @@ -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<Void> executeAsync() {
return readWithServiceResponseAsync(url, language, pages, modelVersion).map(new Func1<ServiceResponseWithHeaders<Void, ReadHeaders>, Void>() {
return readWithServiceResponseAsync(url, language, pages, modelVersion, readingOrder).map(new Func1<ServiceResponseWithHeaders<Void, ReadHeaders>, Void>() {
@Override
public Void call(ServiceResponseWithHeaders<Void, ReadHeaders> response) {
return response.body();
Expand Down
Loading