diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index 5cff3433a4e9..2cba48c3a324 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -8,7 +8,7 @@ **New features** -- `FormField` now has attribute `type` which contains the semantic data type of the field value +- `FormField` now has attribute `value_type` which contains the semantic data type of the field value **Fixes and improvements** diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py index 95d0fbe2e17c..6878162edc09 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -202,16 +202,16 @@ def __repr__(self): class FormField(object): """Represents a field recognized in an input form. - :ivar type: The type of `value` found on FormField. Possible types include: 'string', + :ivar value_type: The type of `value` found on FormField. Possible types include: 'string', 'date', 'time', 'phoneNumber', 'number', 'integer', 'object', or 'array'. - :vartype type: str or ~azure.ai.formrecognizer.FieldValueType + :vartype value_type: str or ~azure.ai.formrecognizer.FieldValueType :ivar ~azure.ai.formrecognizer.FieldData label_data: Contains the text, bounding box, and field elements for the field label. :ivar ~azure.ai.formrecognizer.FieldData value_data: Contains the text, bounding box, and field elements for the field value. :ivar str name: The unique name of the field or label. :ivar value: - The value for the recognized field. Its semantic data type is described by `type`. + The value for the recognized field. Its semantic data type is described by `value_type`. :vartype value: str, int, float, :class:`~datetime.date`, :class:`~datetime.time`, :class:`~azure.ai.formrecognizer.FormField`, or list[:class:`~azure.ai.formrecognizer.FormField`] :ivar float confidence: @@ -219,7 +219,7 @@ class FormField(object): """ def __init__(self, **kwargs): - self.type = kwargs.get("type", None) + self.value_type = kwargs.get("value_type", None) self.label_data = kwargs.get("label_data", None) self.value_data = kwargs.get("value_data", None) self.name = kwargs.get("name", None) @@ -229,7 +229,7 @@ def __init__(self, **kwargs): @classmethod def _from_generated(cls, field, value, read_result): return cls( - type=value.type if value else None, + value_type=value.type if value else None, label_data=FieldData._from_generated(field, read_result), value_data=FieldData._from_generated(value, read_result), value=get_field_value(field, value, read_result), @@ -240,7 +240,7 @@ def _from_generated(cls, field, value, read_result): @classmethod def _from_generated_unlabeled(cls, field, idx, page, read_result): return cls( - type="string", # unlabeled only returns string + value_type="string", # unlabeled only returns string label_data=FieldData._from_generated_unlabeled(field.key, page, read_result), value_data=FieldData._from_generated_unlabeled(field.value, page, read_result), value=field.value.text, @@ -249,8 +249,8 @@ def _from_generated_unlabeled(cls, field, idx, page, read_result): ) def __repr__(self): - return "FormField(type={}, label_data={}, value_data={}, name={}, value={}, confidence={})".format( - self.type, repr(self.label_data), repr(self.value_data), self.name, repr(self.value), self.confidence + return "FormField(value_type={}, label_data={}, value_data={}, name={}, value={}, confidence={})".format( + self.value_type, repr(self.label_data), repr(self.value_data), self.name, repr(self.value), self.confidence )[:1024] diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py index 4963e6f04c10..292476201ef6 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py @@ -67,15 +67,15 @@ def field_data(bounding_box, form_word, form_line): @pytest.fixture def form_field_two(field_data): - model = _models.FormField(type="string", label_data=field_data[0], value_data=field_data[0], name="form_field_two", value="value", confidence=0) - model_repr = "FormField(type=string, label_data={}, value_data={}, name=form_field_two, value='value', confidence=0)".format(field_data[1], field_data[1])[:1024] + model = _models.FormField(value_type="string", label_data=field_data[0], value_data=field_data[0], name="form_field_two", value="value", confidence=0) + model_repr = "FormField(value_type=string, label_data={}, value_data={}, name=form_field_two, value='value', confidence=0)".format(field_data[1], field_data[1])[:1024] assert repr(model) == model_repr return model, model_repr @pytest.fixture def form_field_one(field_data, form_field_two): - model = _models.FormField(type="string", label_data=field_data[0], value_data=field_data[0], name="form_field_one", value=form_field_two[0], confidence=1.0) - model_repr = "FormField(type=string, label_data={}, value_data={}, name=form_field_one, value={}, confidence=1.0)".format(field_data[1], field_data[1], form_field_two[1])[:1024] + model = _models.FormField(value_type="string", label_data=field_data[0], value_data=field_data[0], name="form_field_one", value=form_field_two[0], confidence=1.0) + model_repr = "FormField(value_type=string, label_data={}, value_data={}, name=form_field_one, value={}, confidence=1.0)".format(field_data[1], field_data[1], form_field_two[1])[:1024] assert repr(model) == model_repr return model, model_repr diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py index 0e2d35c0d2cc..23a5baa1e6e4 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py @@ -222,7 +222,7 @@ def assertLabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, self.assertBoundingBoxTransformCorrect(b[label].value_data.bounding_box, a.bounding_box) self.assertEqual(a.text, b[label].value_data.text) field_type = a.type - self.assertEqual(field_type, b[label].type) + self.assertEqual(field_type, b[label].value_type) if field_type == "string": self.assertEqual(b[label].value, a.value_string) if field_type == "number": @@ -268,7 +268,7 @@ def assertFormFieldTransformCorrect(self, receipt_field, actual_field, read_resu if actual_field is None: return field_type = actual_field.type - self.assertEqual(field_type, receipt_field.type) + self.assertEqual(field_type, receipt_field.value_type) if field_type == "string": self.assertEqual(receipt_field.value, actual_field.value_string) if field_type == "number": @@ -320,19 +320,19 @@ def assertTablesTransformCorrect(self, layout, actual_layout, read_results=None, def assertReceiptItemsHasValues(self, items, page_number, include_field_elements): for item in items: - self.assertEqual(item.type, "object") + self.assertEqual(item.value_type, "object") self.assertBoundingBoxHasPoints(item.value.get("Name").value_data.bounding_box) self.assertIsNotNone(item.value.get("Name").confidence) self.assertIsNotNone(item.value.get("Name").value_data.text) - self.assertIsNotNone(item.value.get("Name").type) + self.assertIsNotNone(item.value.get("Name").value_type) self.assertBoundingBoxHasPoints(item.value.get("Quantity").value_data.bounding_box) self.assertIsNotNone(item.value.get("Quantity").confidence) self.assertIsNotNone(item.value.get("Quantity").value_data.text) - self.assertIsNotNone(item.value.get("Quantity").type) + self.assertIsNotNone(item.value.get("Quantity").value_type) self.assertBoundingBoxHasPoints(item.value.get("TotalPrice").value_data.bounding_box) self.assertIsNotNone(item.value.get("TotalPrice").confidence) self.assertIsNotNone(item.value.get("TotalPrice").value_data.text) - self.assertIsNotNone(item.value.get("TotalPrice").type) + self.assertIsNotNone(item.value.get("TotalPrice").value_type) if include_field_elements: self.assertFieldElementsHasValues(item.value.get("Name").value_data.field_elements, page_number)