diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index e6682ec7c0e7..f4da11f3e71e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 1.0.0-beta.3 (Unreleased) +- Update FormField property `transactionTime` on `USReceipt` to return `LocalTime` instead of `String` - Rename model `PageRange` to `FormPageRange` - Rename property `startPageNumber` to `firstPageNumber` and `endPageNumber` to `lastPageNumber` in model `PageRange` - Rename `getCustomModelInfos` to `listCustomModels` diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/ReceiptExtensions.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/ReceiptExtensions.java index 5382df442b04..bf24deac861e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/ReceiptExtensions.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/ReceiptExtensions.java @@ -10,6 +10,7 @@ import com.azure.ai.formrecognizer.models.USReceiptType; import java.time.LocalDate; +import java.time.LocalTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -47,7 +48,7 @@ public static USReceipt asUSReceipt(RecognizedReceipt receipt) { FormField tip = null; FormField total = null; FormField transactionDate = null; - FormField transactionTime = null; + FormField transactionTime = null; List receiptItems = null; for (Map.Entry> entry : receipt.getRecognizedForm().getFields().entrySet()) { @@ -83,7 +84,7 @@ public static USReceipt asUSReceipt(RecognizedReceipt receipt) { transactionDate = (FormField) fieldValue; break; case "TransactionTime": - transactionTime = (FormField) fieldValue; + transactionTime = (FormField) fieldValue; break; case "Items": receiptItems = toReceiptItems(fieldValue); 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 e3aa8517362e..1ba4f89eb9d3 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 @@ -18,16 +18,18 @@ import com.azure.ai.formrecognizer.models.FormField; import com.azure.ai.formrecognizer.models.FormLine; import com.azure.ai.formrecognizer.models.FormPage; +import com.azure.ai.formrecognizer.models.FormPageRange; import com.azure.ai.formrecognizer.models.FormTable; import com.azure.ai.formrecognizer.models.FormTableCell; import com.azure.ai.formrecognizer.models.FormWord; -import com.azure.ai.formrecognizer.models.FormPageRange; import com.azure.ai.formrecognizer.models.Point; import com.azure.ai.formrecognizer.models.RecognizedForm; import com.azure.ai.formrecognizer.models.RecognizedReceipt; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -265,7 +267,10 @@ private static FormField setFormField(FieldText labelText, String key, FieldV break; case TIME: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, - key, fieldValue.getValueTime(), valueText); + key, fieldValue.getValueTime() == null + ? null + : LocalTime.parse(fieldValue.getValueTime(), DateTimeFormatter.ofPattern("HH:mm:ss")), + valueText); break; case DATE: value = new FormField<>(setDefaultConfidenceValue(fieldValue.getConfidence()), labelText, diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/USReceipt.java b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/USReceipt.java index 3b8c42956a73..d93dc36ef5de 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/USReceipt.java +++ b/sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/models/USReceipt.java @@ -6,6 +6,7 @@ import com.azure.core.annotation.Immutable; import java.time.LocalDate; +import java.time.LocalTime; import java.util.List; /** @@ -67,12 +68,11 @@ public final class USReceipt extends RecognizedReceipt { /** * Recognized field transaction time. */ - private final FormField transactionTime; + private final FormField transactionTime; /** * Constructs a USReceipt object. - * - * @param receiptLocale The locale information for the recognized Receipt. + * @param receiptLocale The locale information for the recognized Receipt. * @param recognizedForm The recognized form. * @param receiptItems List of recognized field items. * @param receiptType Recognized receipt type information. @@ -94,7 +94,7 @@ public USReceipt(String receiptLocale, RecognizedForm recognizedForm, final FormField tax, final FormField tip, final FormField total, final FormField transactionDate, - final FormField transactionTime) { + final FormField transactionTime) { super(receiptLocale, recognizedForm); this.receiptItems = receiptItems; this.receiptType = receiptType; @@ -220,7 +220,7 @@ public FormField getTransactionDate() { * * @return the transactionTime value. */ - public FormField getTransactionTime() { + public FormField getTransactionTime() { return this.transactionTime; } } 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 fc4023df796c..c1afb73676d1 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 @@ -57,6 +57,10 @@ public static void main(final String[] args) throws IOException { usReceipt.getMerchantPhoneNumber().getFieldValue(), usReceipt.getMerchantPhoneNumber().getConfidence()); System.out.printf("Total: %s confidence: %.2f%n", usReceipt.getTotal().getName(), usReceipt.getTotal().getConfidence()); + System.out.printf("Transaction Date: %s, confidence: %.2f%n", + usReceipt.getTransactionDate().getFieldValue(), usReceipt.getTransactionDate().getConfidence()); + System.out.printf("Transaction Time: %s, confidence: %.2f%n", + usReceipt.getTransactionTime().getName(), usReceipt.getTransactionTime().getConfidence()); System.out.printf("Receipt Items: %n"); usReceipt.getReceiptItems().forEach(receiptItem -> { if (receiptItem.getName() != null) { 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 15572002b3dd..1a088df4e86d 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 @@ -73,6 +73,10 @@ public static void main(final String[] args) throws IOException { usReceipt.getMerchantPhoneNumber().getFieldValue(), usReceipt.getMerchantPhoneNumber().getConfidence()); System.out.printf("Total: %s confidence: %.2f%n", usReceipt.getTotal().getName(), usReceipt.getTotal().getConfidence()); + System.out.printf("Transaction Date: %s, confidence: %.2f%n", + usReceipt.getTransactionDate().getFieldValue(), usReceipt.getTransactionDate().getConfidence()); + System.out.printf("Transaction Time: %s, confidence: %.2f%n", + usReceipt.getTransactionTime().getName(), usReceipt.getTransactionTime().getConfidence()); System.out.printf("Receipt Items: %n"); usReceipt.getReceiptItems().forEach(receiptItem -> { if (receiptItem.getName() != null) { 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 3b0cf97a4320..5cedfcfbc579 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 @@ -46,6 +46,10 @@ public static void main(final String[] args) { usReceipt.getMerchantPhoneNumber().getFieldValue(), usReceipt.getMerchantPhoneNumber().getConfidence()); System.out.printf("Total: %s confidence: %.2f%n", usReceipt.getTotal().getName(), usReceipt.getTotal().getConfidence()); + System.out.printf("Transaction Date: %s, confidence: %.2f%n", + usReceipt.getTransactionDate().getFieldValue(), usReceipt.getTransactionDate().getConfidence()); + System.out.printf("Transaction Time: %s, confidence: %.2f%n", + usReceipt.getTransactionTime().getName(), usReceipt.getTransactionTime().getConfidence()); System.out.printf("Receipt Items: %n"); usReceipt.getReceiptItems().forEach(receiptItem -> { if (receiptItem.getName() != null) { 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 bfbd9e31714e..f5a0cf7f607f 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 @@ -61,6 +61,10 @@ public static void main(final String[] args) { usReceipt.getMerchantPhoneNumber().getConfidence()); System.out.printf("Total: %s confidence: %.2f%n", usReceipt.getTotal().getName(), usReceipt.getTotal().getConfidence()); + System.out.printf("Transaction Date: %s, confidence: %.2f%n", + usReceipt.getTransactionDate().getFieldValue(), usReceipt.getTransactionDate().getConfidence()); + System.out.printf("Transaction Time: %s, confidence: %.2f%n", + usReceipt.getTransactionTime().getName(), usReceipt.getTransactionTime().getConfidence()); System.out.printf("Receipt Items: %n"); usReceipt.getReceiptItems().forEach(receiptItem -> { if (receiptItem.getName() != null) { 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 3b31663c9db1..5cc89f106fd7 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 @@ -40,6 +40,8 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; import java.util.function.BiConsumer; @@ -192,7 +194,8 @@ private static void validateFieldValueTransforms(FieldValue expectedFieldValue, assertEquals(expectedFieldValue.getValueDate(), actualFormField.getFieldValue()); break; case TIME: - assertEquals(expectedFieldValue.getValueTime(), actualFormField.getFieldValue()); + assertEquals(LocalTime.parse(expectedFieldValue.getValueTime(), + DateTimeFormatter.ofPattern("HH:mm:ss")), actualFormField.getFieldValue()); break; case STRING: assertEquals(expectedFieldValue.getValueString(), actualFormField.getFieldValue());