From 743ad7a8dd577e33ed9461dca4d5208cbf878c75 Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Thu, 28 May 2020 14:44:27 -0700 Subject: [PATCH 1/2] page number changes --- .../azure-ai-formrecognizer/CHANGELOG.md | 2 ++ .../azure-ai-formrecognizer/README.md | 11 ++++---- .../azure/ai/formrecognizer/Transforms.java | 28 +++++++++---------- .../ai/formrecognizer/models/FormField.java | 21 ++------------ .../ai/formrecognizer/models/FormPage.java | 21 ++++++++++++-- .../ai/formrecognizer/models/FormTable.java | 22 +++++++++++++-- ...ognizerAsyncClientJavaDocCodeSnippets.java | 8 ------ ...rmRecognizerClientJavaDocCodeSnippets.java | 8 ------ .../ai/formrecognizer/ReadmeSamples.java | 1 - .../ai/formrecognizer/RecognizeReceipts.java | 1 - .../RecognizeReceiptsAsync.java | 1 - .../RecognizeReceiptsFromUrl.java | 1 - .../RecognizeReceiptsFromUrlAsync.java | 1 - .../FormRecognizerAsyncClientTest.java | 10 +++---- .../FormRecognizerClientTest.java | 10 +++---- .../FormRecognizerClientTestBase.java | 11 ++++---- 16 files changed, 76 insertions(+), 81 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index 2fe3a9a4ec74..84a485a66671 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -1,6 +1,8 @@ # Release History ## 1.0.0-beta.3 (Unreleased) +- Add `pageNumber` property to `FormPage` and `FormTable` model +- Remove `pageNumber` property from `FormField` model - Update FormRecognizer API calls to return a `List` instead of `IterableStream`. - Fix bug in FormRecognizer API's to support multipage document recognition. - Add `getFormRecognizerClient()` and `getFormRecognizerAsyncClient()` in FormTrainingClient and FormTrainingAsyncClient diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/README.md b/sdk/formrecognizer/azure-ai-formrecognizer/README.md index 9aa3910c6384..36d50d8cb16f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/README.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/README.md @@ -195,11 +195,11 @@ for (int i = 0; i < contentPageResults.size(); i++) { ### Recognize receipts Recognize data from a USA sales receipts using a prebuilt model. - + ```java String receiptUrl = "https://docs.microsoft.com/en-us/azure/cognitive-services/form-recognizer/media" + "/contoso-allinone.jpg"; -SyncPoller> syncPoller = +SyncPoller> syncPoller = formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl); List receiptPageResults = syncPoller.getFinalResult(); @@ -207,7 +207,6 @@ for (int i = 0; i < receiptPageResults.size(); i++) { System.out.printf("----Recognizing receipt for page %s%n----", i); RecognizedReceipt recognizedReceipt = receiptPageResults.get(i); USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name %s%n", usReceipt.getMerchantName().getName()); System.out.printf("Merchant Name Value: %s%n", usReceipt.getMerchantName().getFieldValue()); System.out.printf("Merchant Address %s%n", usReceipt.getMerchantAddress().getName()); @@ -223,7 +222,7 @@ for (int i = 0; i < receiptPageResults.size(); i++) { Train a machine-learned model on your own form type. The resulting model will be able to recognize values from the types of forms it was trained on. Provide a container SAS url to your Azure Storage Blob container where you're storing the training documents. See details on setting this up in the [service quickstart documentation][quickstart_training]. - + ```java String trainingFilesUrl = "{training_set_SAS_URL}"; SyncPoller trainingPoller = @@ -250,7 +249,7 @@ customFormModel.getSubModels().forEach(customFormSubModel -> { ### Manage your models Manage the custom models attached to your account. - + ```java AtomicReference modelId = new AtomicReference<>(); // First, we see how many custom models we have, and what our limit is @@ -292,7 +291,7 @@ to provide an invalid file source URL an `ErrorResponseException` would be raise In the following code snippet, the error is handled gracefully by catching the exception and display the additional information about the error. - + ```java try { formRecognizerClient.beginRecognizeContentFromUrl("invalidSourceUrl"); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java index 45dd9bbe1afe..63cd3d69b5f7 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/Transforms.java @@ -180,7 +180,7 @@ static List getPageTables(PageResult pageResultItem, List dataTableCell.isHeader() == null ? false : dataTableCell.isHeader(), dataTableCell.isFooter() == null ? false : dataTableCell.isFooter(), pageNumber, setReferenceElements(dataTableCell.getElements(), readResults, pageNumber))) - .collect(Collectors.toList()))) + .collect(Collectors.toList()), pageNumber)) .collect(Collectors.toList()); } @@ -231,7 +231,7 @@ private static Map> getUnlabeledFieldMap(DocumentResult doc } else { FieldText labelText = new FieldText(key, null, null, null); extractedFieldMap.put(key, new FormField<>(DEFAULT_CONFIDENCE_VALUE, labelText, - key, null, null, null)); + key, null, null)); } }); } @@ -257,36 +257,36 @@ private static FormField setFormField(FieldText labelText, String key, FieldV switch (fieldValue.getType()) { case PHONE_NUMBER: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, fieldValue.getValuePhoneNumber(), valueText, pageNumber); + key, fieldValue.getValuePhoneNumber(), valueText); break; case STRING: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, fieldValue.getValueString(), valueText, pageNumber); + key, fieldValue.getValueString(), valueText); break; case TIME: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, fieldValue.getValueTime(), valueText, pageNumber); + key, fieldValue.getValueTime(), valueText); break; case DATE: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, fieldValue.getValueDate(), valueText, pageNumber); + key, fieldValue.getValueDate(), valueText); break; case INTEGER: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, fieldValue.getValueInteger(), valueText, pageNumber); + key, fieldValue.getValueInteger(), valueText); break; case NUMBER: value = new FormField(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, fieldValue.getValueNumber(), valueText, pageNumber); + key, fieldValue.getValueNumber(), valueText); break; case ARRAY: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), null, key, - toFormFieldArray(fieldValue.getValueArray(), readResults), null, pageNumber); + toFormFieldArray(fieldValue.getValueArray(), readResults), null); break; case OBJECT: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, toFormFieldObject(fieldValue.getValueObject(), pageNumber, readResults), valueText, - pageNumber); + key, toFormFieldObject(fieldValue.getValueObject(), pageNumber, readResults), valueText + ); break; default: throw LOGGER.logExceptionAsError(new RuntimeException("FieldValue Type not supported")); @@ -360,8 +360,8 @@ private static FormPage getFormPage(ReadResult readResultItem, List p DimensionUnit.fromString(readResultItem.getUnit().toString()), readResultItem.getWidth(), perPageLineList, - perPageTableList - ); + perPageTableList, + readResultItem.getPage()); } /** @@ -395,7 +395,7 @@ private static Map> getLabeledFieldMap(boolean includeTextD String fieldName = "field-" + index; FormField formField = new FormField<>(setDefaultConfidenceValue(keyValuePair.getConfidence()), - labelFieldText, fieldName, keyValuePair.getValue().getText(), valueText, pageNumber); + labelFieldText, fieldName, keyValuePair.getValue().getText(), valueText); formFieldMap.put(fieldName, formField); })); return formFieldMap; diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java index 066244d5f177..5f4099add3d5 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java @@ -38,29 +38,21 @@ public final class FormField { */ private final FieldText valueText; - /* - * The 1 based page number. - */ - private final Integer pageNumber; - /** * Constructs a FormField object. - * - * @param confidence The confidence of the recognized field. + * @param confidence The confidence of the recognized field. * @param labelText The label text value for the field. * @param name The name the field. * @param fieldValue The value of the field. * @param valueText The label value text for the field. - * @param pageNumber The label text value for the field. */ public FormField(final float confidence, final FieldText labelText, final String name, final T fieldValue, - final FieldText valueText, final Integer pageNumber) { + final FieldText valueText) { this.confidence = confidence; this.labelText = labelText; this.name = name; this.fieldValue = fieldValue; this.valueText = valueText; - this.pageNumber = pageNumber; } /** @@ -107,13 +99,4 @@ public T getFieldValue() { public FieldText getValueText() { return this.valueText; } - - /** - * Get the 1-based page number in the input document. - * - * @return the page number value. - */ - public Integer getPageNumber() { - return this.pageNumber; - } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java index bbef3824781c..4a66a7dac068 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java @@ -45,24 +45,30 @@ public final class FormPage { */ private final float width; + /* + * The 1 based page number. + */ + private final Integer pageNumber; + /** * Constructs a FormPage object. - * - * @param height The height of the image/PDF in pixels/inches, respectively. + * @param height The height of the image/PDF in pixels/inches, respectively. * @param textAngle The general orientation of the text in clockwise direction. * @param unit The unit used by the width, height and boundingBox properties. * @param width The width of the image/PDF in pixels/inches, respectively. * @param lines When includeTextDetails is set to true, a list of recognized text lines. * @param tables List of data tables extracted from the page. + * @param pageNumber the 1-based page number in the input document. */ public FormPage(final float height, final float textAngle, final DimensionUnit unit, - final float width, final List lines, final List tables) { + final float width, final List lines, final List tables, final Integer pageNumber) { this.height = height; this.textAngle = textAngle; this.unit = unit; this.width = width; this.lines = lines; this.tables = tables; + this.pageNumber = pageNumber; } /** @@ -123,5 +129,14 @@ public DimensionUnit getUnit() { public float getWidth() { return this.width; } + + /** + * Get the 1-based page number in the input document. + * + * @return the page number value. + */ + public Integer getPageNumber() { + return this.pageNumber; + } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java index 31bf99048f62..58ba3560373f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java @@ -28,17 +28,24 @@ public final class FormTable { */ private final List cells; + /* + * The 1 based page number. + */ + private final Integer pageNumber; + /** * Constructs a FormTable object. - * - * @param rowCount Number of rows. + * @param rowCount Number of rows. * @param columnCount Number of columns. * @param cells ist of cells contained in the table. + * @param pageNumber the 1-based page number in the input document. */ - public FormTable(final int rowCount, final int columnCount, final List cells) { + public FormTable(final int rowCount, final int columnCount, final List cells, + final Integer pageNumber) { this.rowCount = rowCount; this.columnCount = columnCount; this.cells = cells; + this.pageNumber = pageNumber; } /** @@ -67,4 +74,13 @@ public int getColumnCount() { public List getCells() { return this.cells; } + + /** + * Get the 1-based page number in the input document. + * + * @return the page number value. + */ + public Integer getPageNumber() { + return this.pageNumber; + } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientJavaDocCodeSnippets.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientJavaDocCodeSnippets.java index 19d7771e5c33..8564490e831f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientJavaDocCodeSnippets.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientJavaDocCodeSnippets.java @@ -70,7 +70,6 @@ public void beginRecognizeCustomFormsFromUrl() { recognizePollingOperation.getFinalResult().subscribe(recognizedForms -> recognizedForms.forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -95,7 +94,6 @@ public void beginRecognizeCustomFormsFromUrlWithOptions() { recognizePollingOperation.getFinalResult().subscribe(recognizedForms -> recognizedForms.forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -124,7 +122,6 @@ public void beginRecognizeCustomForms() throws IOException { recognizePollingOperation.getFinalResult().subscribe(recognizedForms -> recognizedForms.forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -155,7 +152,6 @@ public void beginRecognizeCustomFormsWithOptions() throws IOException { recognizePollingOperation.getFinalResult().subscribe(recognizedForms -> recognizedForms.forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -277,7 +273,6 @@ public void beginRecognizeReceiptsFromUrl() { recognizePollingOperation.getFinalResult().subscribe(recognizedReceipts -> recognizedReceipts.forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); @@ -308,7 +303,6 @@ public void beginRecognizeReceiptsFromUrlWithOptions() { recognizePollingOperation.getFinalResult().subscribe(recognizedReceipts -> recognizedReceipts.forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); @@ -342,7 +336,6 @@ public void beginRecognizeReceipts() throws IOException { recognizePollingOperation.getFinalResult().subscribe(recognizedReceipts -> recognizedReceipts.forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); @@ -378,7 +371,6 @@ public void beginRecognizeReceiptsWithOptions() throws IOException { recognizePollingOperation.getFinalResult().subscribe(recognizedReceipts -> recognizedReceipts.forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java index ecf5a62f8873..9fe3dd67397c 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/FormRecognizerClientJavaDocCodeSnippets.java @@ -65,7 +65,6 @@ public void beginRecognizeCustomFormsFromUrl() { formRecognizerClient.beginRecognizeCustomFormsFromUrl(analyzeFilePath, modelId).getFinalResult() .forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -86,7 +85,6 @@ public void beginRecognizeCustomFormsFromUrlWithOptions() { formRecognizerClient.beginRecognizeCustomFormsFromUrl(analyzeFilePath, modelId, includeTextDetails, Duration.ofSeconds(5)).getFinalResult().forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -110,7 +108,6 @@ public void beginRecognizeCustomForms() throws IOException { formRecognizerClient.beginRecognizeCustomForms(targetStream, modelId, sourceFile.length(), FormContentType.IMAGE_JPEG).getFinalResult().forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -137,7 +134,6 @@ public void beginRecognizeCustomFormsWithOptions() throws IOException { FormContentType.IMAGE_JPEG, includeTextDetails, Duration.ofSeconds(5)).getFinalResult() .forEach(recognizedForm -> { recognizedForm.getFields().forEach((fieldText, fieldValue) -> { - System.out.printf("Page number: %s%n", fieldValue.getPageNumber()); System.out.printf("Field text: %s%n", fieldText); System.out.printf("Field value: %s%n", fieldValue.getFieldValue()); System.out.printf("Confidence score: %.2f%n", fieldValue.getConfidence()); @@ -243,7 +239,6 @@ public void beginRecognizeReceiptsFromUrl() { formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl).getFinalResult() .forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); @@ -271,7 +266,6 @@ public void beginRecognizeReceiptsFromUrlWithOptions() { formRecognizerClient.beginRecognizeReceiptsFromUrl(receiptUrl, includeTextDetails, Duration.ofSeconds(5)) .getFinalResult().forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); @@ -301,7 +295,6 @@ public void beginRecognizeReceipts() throws IOException { formRecognizerClient.beginRecognizeReceipts(targetStream, sourceFile.length(), FormContentType.IMAGE_JPEG) .getFinalResult().forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); @@ -333,7 +326,6 @@ public void beginRecognizeReceiptsWithOptions() throws IOException { formRecognizerClient.beginRecognizeReceipts(targetStream, sourceFile.length(), FormContentType.IMAGE_JPEG, includeTextDetails, Duration.ofSeconds(5)).getFinalResult().forEach(recognizedReceipt -> { USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java index f4738a99631b..21d11af0152a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/ReadmeSamples.java @@ -112,7 +112,6 @@ public void recognizeReceipt() { System.out.printf("----Recognizing receipt for page %s%n----", i); RecognizedReceipt recognizedReceipt = receiptPageResults.get(i); USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name %s%n", usReceipt.getMerchantName().getName()); System.out.printf("Merchant Name Value: %s%n", usReceipt.getMerchantName().getFieldValue()); System.out.printf("Merchant Address %s%n", usReceipt.getMerchantAddress().getName()); diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceipts.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceipts.java index b63c795f773f..fc4023df796c 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceipts.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceipts.java @@ -49,7 +49,6 @@ public static void main(final String[] args) throws IOException { final RecognizedReceipt recognizedReceipt = receiptPageResults.get(i); System.out.printf("----------- Recognized Receipt page %s -----------", i); USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); System.out.printf("Merchant Address: %s, confidence: %.2f%n", usReceipt.getMerchantAddress().getName(), diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsAsync.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsAsync.java index c06771f13217..15572002b3dd 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsAsync.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsAsync.java @@ -65,7 +65,6 @@ public static void main(final String[] args) throws IOException { final RecognizedReceipt recognizedReceipt = receiptPageResults.get(i); System.out.printf("----------- Recognized Receipt for page %s -----------", i); USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); System.out.printf("Merchant Address: %s, confidence: %.2f%n", usReceipt.getMerchantAddress().getName(), diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrl.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrl.java index ae65ddc5da0b..3b0cf97a4320 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrl.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrl.java @@ -38,7 +38,6 @@ public static void main(final String[] args) { final RecognizedReceipt recognizedReceipt = receiptPageResults.get(i); System.out.printf("----------- Recognized Receipt page %s -----------", i); USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %d%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); System.out.printf("Merchant Address: %s, confidence: %.2f%n", usReceipt.getMerchantAddress().getName(), diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrlAsync.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrlAsync.java index e61165c404cd..bfbd9e31714e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrlAsync.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/samples/java/com/azure/ai/formrecognizer/RecognizeReceiptsFromUrlAsync.java @@ -52,7 +52,6 @@ public static void main(final String[] args) { final RecognizedReceipt recognizedReceipt = recognizedReceipts.get(i); System.out.printf("----------- Recognized Receipt page %s -----------", i); USReceipt usReceipt = ReceiptExtensions.asUSReceipt(recognizedReceipt); - System.out.printf("Page Number: %s%n", usReceipt.getMerchantName().getPageNumber()); System.out.printf("Merchant Name: %s, confidence: %.2f%n", usReceipt.getMerchantName().getFieldValue(), usReceipt.getMerchantName().getConfidence()); System.out.printf("Merchant Address: %s, confidence: %.2f%n", usReceipt.getMerchantAddress().getName(), diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java index f219636b53a7..3a937108c677 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java @@ -214,7 +214,7 @@ public void recognizeContent(HttpClient httpClient, FormRecognizerServiceVersion client.beginRecognizeContent(toFluxByteBuffer(data), LAYOUT_FILE_LENGTH, FormContentType.IMAGE_JPEG, null).getSyncPoller(); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } @@ -242,7 +242,7 @@ public void recognizeContentResultWithContentTypeAutoDetection(HttpClient httpCl client.beginRecognizeContent(getReplayableBufferData(LAYOUT_LOCAL_URL), LAYOUT_FILE_LENGTH, null, null).getSyncPoller(); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } @@ -257,7 +257,7 @@ public void recognizeContentFromUrl(HttpClient httpClient, FormRecognizerService SyncPoller> syncPoller = client.beginRecognizeContentFromUrl(sourceUrl).getSyncPoller(); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } @@ -440,7 +440,7 @@ public void recognizeContentFromUrlMultiPage(HttpClient httpClient, FormRecogniz SyncPoller> syncPoller = client.beginRecognizeContentFromUrl(fileUrl).getSyncPoller(); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } @@ -453,7 +453,7 @@ public void recognizeContentFromDataMultiPage(HttpClient httpClient, FormRecogni client.beginRecognizeContent(toFluxByteBuffer(data), MULTIPAGE_INVOICE_FILE_LENGTH, FormContentType.APPLICATION_PDF).getSyncPoller(); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java index 381a2a1c4670..f26a702a5ba1 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTest.java @@ -175,7 +175,7 @@ public void recognizeContent(HttpClient httpClient, FormRecognizerServiceVersion SyncPoller> syncPoller = client.beginRecognizeContent(data, LAYOUT_FILE_LENGTH, FormContentType.IMAGE_PNG, null); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } @@ -202,7 +202,7 @@ public void recognizeContentResultWithContentTypeAutoDetection(HttpClient httpCl SyncPoller> syncPoller = client.beginRecognizeContent(getContentDetectionFileData(LAYOUT_LOCAL_URL), LAYOUT_FILE_LENGTH, null, null); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); } @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) @@ -213,7 +213,7 @@ public void recognizeContentFromUrl(HttpClient httpClient, FormRecognizerService SyncPoller> syncPoller = client.beginRecognizeContentFromUrl(sourceUrl); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } @@ -347,7 +347,7 @@ public void recognizeContentFromDataMultiPage(HttpClient httpClient, FormRecogni SyncPoller> syncPoller = client.beginRecognizeContent(data, MULTIPAGE_INVOICE_FILE_LENGTH, FormContentType.APPLICATION_PDF); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) @@ -416,7 +416,7 @@ public void recognizeContentFromUrlMultiPage(HttpClient httpClient, FormRecogniz SyncPoller> syncPoller = client.beginRecognizeContentFromUrl(fileUrl); syncPoller.waitForCompletion(); - validateLayoutDataResults(syncPoller.getFinalResult(), false); + validateContentResultData(syncPoller.getFinalResult(), false); }); } } diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java index c6100adfbfeb..7cbcab752e9e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientTestBase.java @@ -104,11 +104,12 @@ private static void validateReferenceElementsData(List expectedElements, } private static void validateFormTableData(List expectedFormTables, - List actualFormTable, List readResults, boolean includeTextDetails) { + List actualFormTable, List readResults, boolean includeTextDetails, int pageNumber) { assertEquals(expectedFormTables.size(), actualFormTable.size()); for (int i = 0; i < actualFormTable.size(); i++) { DataTable expectedTable = expectedFormTables.get(i); FormTable actualTable = actualFormTable.get(i); + assertEquals(pageNumber, actualTable.getPageNumber()); assertEquals(expectedTable.getColumns(), actualTable.getColumnCount()); validateCellData(expectedTable.getCells(), actualTable.getCells(), readResults, includeTextDetails); assertEquals(expectedTable.getRows(), actualTable.getRowCount()); @@ -341,7 +342,7 @@ void validateUSReceiptData(USReceipt actualRecognizedReceipt, boolean includeTex actualRecognizedReceipt.getReceiptItems(), readResults, includeTextDetails); } - void validateLayoutDataResults(List actualFormPageList, boolean includeTextDetails) { + void validateContentResultData(List actualFormPageList, boolean includeTextDetails) { AnalyzeResult analyzeResult = getAnalyzeRawResponse().getAnalyzeResult(); final List pageResults = analyzeResult.getPageResults(); final List readResults = analyzeResult.getReadResults(); @@ -352,12 +353,13 @@ void validateLayoutDataResults(List actualFormPageList, boolean includ assertEquals(readResult.getWidth(), actualFormPage.getWidth()); assertEquals(readResult.getHeight(), actualFormPage.getHeight()); assertEquals(readResult.getUnit().toString(), actualFormPage.getUnit().toString()); + assertEquals(readResult.getPage(), actualFormPage.getPageNumber()); if (includeTextDetails) { validateFormLineData(readResult.getLines(), actualFormPage.getLines()); } if (pageResults != null) { validateFormTableData(pageResults.get(i).getTables(), actualFormPage.getTables(), readResults, - includeTextDetails); + includeTextDetails, pageResults.get(i).getPage()); } } } @@ -380,7 +382,7 @@ void validateRecognizedResult(List actualFormList, boolean inclu List documentResults = rawResponse.getDocumentResults(); for (int i = 0; i < actualFormList.size(); i++) { - validateLayoutDataResults(actualFormList.get(i).getPages(), includeTextDetails); + validateContentResultData(actualFormList.get(i).getPages(), includeTextDetails); if (isLabeled) { validateLabeledData(actualFormList.get(i), includeTextDetails, readResults, documentResults.get(i)); } else { @@ -492,7 +494,6 @@ private void validateLabeledData(RecognizedForm actualForm, boolean includeTextD final FormField actualFormField = actualForm.getFields().get(label); assertEquals(label, actualFormField.getName()); if (expectedFieldValue != null) { - assertEquals(expectedFieldValue.getPage(), actualFormField.getPageNumber()); if (expectedFieldValue.getConfidence() != null) { assertEquals(expectedFieldValue.getConfidence(), actualFormField.getConfidence()); } else { From 8994cce6463a664de82302e7451e5f421c0f4b0a Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Thu, 28 May 2020 16:51:57 -0700 Subject: [PATCH 2/2] update javadoc spacing --- .../java/com/azure/ai/formrecognizer/models/FormField.java | 3 ++- .../main/java/com/azure/ai/formrecognizer/models/FormPage.java | 3 ++- .../java/com/azure/ai/formrecognizer/models/FormTable.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java index 5f4099add3d5..4b44a7582d15 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormField.java @@ -40,7 +40,8 @@ public final class FormField { /** * Constructs a FormField object. - * @param confidence The confidence of the recognized field. + * + * @param confidence The confidence of the recognized field. * @param labelText The label text value for the field. * @param name The name the field. * @param fieldValue The value of the field. diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java index 4a66a7dac068..14ec29d8fec0 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormPage.java @@ -52,7 +52,8 @@ public final class FormPage { /** * Constructs a FormPage object. - * @param height The height of the image/PDF in pixels/inches, respectively. + * + * @param height The height of the image/PDF in pixels/inches, respectively. * @param textAngle The general orientation of the text in clockwise direction. * @param unit The unit used by the width, height and boundingBox properties. * @param width The width of the image/PDF in pixels/inches, respectively. diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java index 58ba3560373f..db6ee7ed623b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/FormTable.java @@ -35,7 +35,8 @@ public final class FormTable { /** * Constructs a FormTable object. - * @param rowCount Number of rows. + * + * @param rowCount Number of rows. * @param columnCount Number of columns. * @param cells ist of cells contained in the table. * @param pageNumber the 1-based page number in the input document.