From bb2b64cbaaeb9554b230839fea68439a271771eb Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Mon, 29 Jun 2020 15:58:24 -0700 Subject: [PATCH 01/12] more renames --- .../azure-ai-formrecognizer/CHANGELOG.md | 3 ++ .../formrecognizer/_form_recognizer_client.py | 24 +++++----- .../azure/ai/formrecognizer/_models.py | 48 +++++++++---------- .../aio/_form_recognizer_client_async.py | 24 +++++----- .../sample_get_bounding_boxes_async.py | 6 +-- .../samples/sample_get_bounding_boxes.py | 6 +-- .../tests/test_custom_forms.py | 12 ++--- .../tests/test_custom_forms_async.py | 12 ++--- .../tests/test_custom_forms_from_url.py | 12 ++--- .../tests/test_custom_forms_from_url_async.py | 12 ++--- .../tests/test_receipt.py | 16 +++---- .../tests/test_receipt_async.py | 16 +++---- .../tests/test_receipt_from_url.py | 16 +++---- .../tests/test_receipt_from_url_async.py | 16 +++---- .../tests/test_repr.py | 8 ++-- .../azure-ai-formrecognizer/tests/testcase.py | 28 +++++------ 16 files changed, 131 insertions(+), 128 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index c9739bfa2901..c9c8334b1f93 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -7,6 +7,9 @@ - `begin_recognize_receipts` and `begin_recognize_receipts_from_url` now return `RecognizedForm`. - `requested_on` renamed to `training_started_on` and `completed_on` renamed to `training_completed_on` on `CustomFormModel` and `CustomFormModelInfo` +- `FieldText` has been renamed to `FieldData` +- Parameter `include_text_content` has been renamed to `include_field_elements` +- `text_content` has been renamed to `field_element` ## 1.0.0b3 (2020-06-10) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py index c6669af5aade..a574b2909bf6 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py @@ -93,7 +93,7 @@ def begin_recognize_receipts(self, receipt, **kwargs): :param receipt: JPEG, PNG, PDF and TIFF type file stream or bytes. Currently only supports US sales receipts. :type receipt: bytes or IO[bytes] - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, @@ -123,7 +123,7 @@ def begin_recognize_receipts(self, receipt, **kwargs): if content_type == "application/json": raise TypeError("Call begin_recognize_receipts_from_url() to analyze a receipt from a url.") - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) if content_type is None: content_type = get_content_type(receipt) @@ -131,7 +131,7 @@ def begin_recognize_receipts(self, receipt, **kwargs): return self._client.begin_analyze_receipt_async( file_stream=receipt, content_type=content_type, - include_text_details=include_text_content, + include_text_details=include_field_elements, cls=kwargs.pop("cls", self._receipt_callback), polling=LROBasePolling(timeout=polling_interval, **kwargs), error_map=error_map, @@ -151,7 +151,7 @@ def begin_recognize_receipts_from_url(self, receipt_url, **kwargs): :param str receipt_url: The url of the receipt to analyze. The input must be a valid, encoded url of one of the supported formats: JPEG, PNG, PDF and TIFF. Currently only supports US sales receipts. - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. @@ -173,11 +173,11 @@ def begin_recognize_receipts_from_url(self, receipt_url, **kwargs): polling_interval = kwargs.pop("polling_interval", self._client._config.polling_interval) continuation_token = kwargs.pop("continuation_token", None) - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) return self._client.begin_analyze_receipt_async( file_stream={"source": receipt_url}, - include_text_details=include_text_content, + include_text_details=include_field_elements, cls=kwargs.pop("cls", self._receipt_callback), polling=LROBasePolling(timeout=polling_interval, **kwargs), error_map=error_map, @@ -279,7 +279,7 @@ def begin_recognize_custom_forms(self, model_id, form, **kwargs): :param str model_id: Custom model identifier. :param form: JPEG, PNG, PDF and TIFF type file stream or bytes. :type form: bytes or IO[bytes] - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, @@ -313,7 +313,7 @@ def begin_recognize_custom_forms(self, model_id, form, **kwargs): if content_type == "application/json": raise TypeError("Call begin_recognize_custom_forms_from_url() to analyze a document from a url.") - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) if content_type is None: content_type = get_content_type(form) @@ -325,7 +325,7 @@ def analyze_callback(raw_response, _, headers): # pylint: disable=unused-argume return self._client.begin_analyze_with_custom_model( file_stream=form, model_id=model_id, - include_text_details=include_text_content, + include_text_details=include_field_elements, content_type=content_type, cls=deserialization_callback, polling=LROBasePolling(timeout=polling_interval, lro_algorithms=[AnalyzePolling()], **kwargs), @@ -344,7 +344,7 @@ def begin_recognize_custom_forms_from_url(self, model_id, form_url, **kwargs): :param str model_id: Custom model identifier. :param str form_url: The url of the form to analyze. The input must be a valid, encoded url of one of the supported formats: JPEG, PNG, PDF and TIFF. - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. @@ -361,7 +361,7 @@ def begin_recognize_custom_forms_from_url(self, model_id, form_url, **kwargs): cls = kwargs.pop("cls", None) polling_interval = kwargs.pop("polling_interval", self._client._config.polling_interval) continuation_token = kwargs.pop("continuation_token", None) - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) def analyze_callback(raw_response, _, headers): # pylint: disable=unused-argument analyze_result = self._client._deserialize(AnalyzeOperationResult, raw_response) @@ -371,7 +371,7 @@ def analyze_callback(raw_response, _, headers): # pylint: disable=unused-argume return self._client.begin_analyze_with_custom_model( file_stream={"source": form_url}, model_id=model_id, - include_text_details=include_text_content, + include_text_details=include_field_elements, cls=deserialization_callback, polling=LROBasePolling(timeout=polling_interval, lro_algorithms=[AnalyzePolling()], **kwargs), error_map=error_map, 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 27e0e32a6c3a..3aec13d9c8e6 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -180,9 +180,9 @@ def __repr__(self): class FormField(object): """Represents a field recognized in an input form. - :ivar ~azure.ai.formrecognizer.FieldText label_data: + :ivar ~azure.ai.formrecognizer.FieldData label_data: Contains the text, bounding box, and text content of the field label. - :ivar ~azure.ai.formrecognizer.FieldText value_data: + :ivar ~azure.ai.formrecognizer.FieldData value_data: Contains the text, bounding box, and text content of the field value. :ivar str name: The unique name of the field or label. :ivar value: @@ -204,8 +204,8 @@ def __init__(self, **kwargs): @classmethod def _from_generated(cls, field, value, read_result): return cls( - label_data=FieldText._from_generated(field, read_result), - value_data=FieldText._from_generated(value, read_result), + label_data=FieldData._from_generated(field, read_result), + value_data=FieldData._from_generated(value, read_result), value=get_field_value(field, value, read_result), name=field, confidence=adjust_confidence(value.confidence) if value else None, @@ -214,8 +214,8 @@ def _from_generated(cls, field, value, read_result): @classmethod def _from_generated_unlabeled(cls, field, idx, page, read_result): return cls( - label_data=FieldText._from_generated_unlabeled(field.key, page, read_result), - value_data=FieldText._from_generated_unlabeled(field.value, page, read_result), + 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, name="field-" + str(idx), confidence=adjust_confidence(field.confidence), @@ -227,7 +227,7 @@ def __repr__(self): )[:1024] -class FieldText(FormContent): +class FieldData(FormContent): """Represents the text that is part of a form field. This includes the location of the text in the form and a collection of the elements that make up the text. @@ -240,15 +240,15 @@ class FieldText(FormContent): that outlines the text. The points are listed in clockwise order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. - :ivar text_content: - When `include_text_content` is set to true, a list of text + :ivar field_element: + When `include_field_element` is set to true, a list of text elements constituting this field or value is returned. - :vartype text_content: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] + :vartype field_element: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ def __init__(self, **kwargs): - super(FieldText, self).__init__(**kwargs) - self.text_content = kwargs.get("text_content", None) + super(FieldData, self).__init__(**kwargs) + self.field_element = kwargs.get("field_element", None) @classmethod def _from_generated(cls, field, read_result): @@ -263,7 +263,7 @@ def _from_generated(cls, field, read_result): Point(x=field.bounding_box[4], y=field.bounding_box[5]), Point(x=field.bounding_box[6], y=field.bounding_box[7]) ] if field.bounding_box else None, - text_content=get_elements(field, read_result) if field.elements else None + field_element=get_elements(field, read_result) if field.elements else None ) @classmethod @@ -277,12 +277,12 @@ def _from_generated_unlabeled(cls, field, page, read_result): Point(x=field.bounding_box[4], y=field.bounding_box[5]), Point(x=field.bounding_box[6], y=field.bounding_box[7]) ] if field.bounding_box else None, - text_content=get_elements(field, read_result) if field.elements else None + field_element=get_elements(field, read_result) if field.elements else None ) def __repr__(self): - return "FieldText(page_number={}, text={}, bounding_box={}, text_content={})".format( - self.page_number, self.text, self.bounding_box, repr(self.text_content) + return "FieldData(page_number={}, text={}, bounding_box={}, field_element={})".format( + self.page_number, self.text, self.bounding_box, repr(self.field_element) )[:1024] @@ -306,7 +306,7 @@ class FormPage(object): :ivar list[~azure.ai.formrecognizer.FormTable] tables: A list of extracted tables contained in a page. :ivar list[~azure.ai.formrecognizer.FormLine] lines: - When `include_text_content` is set to true, a list of recognized text lines is returned. + When `include_field_element` is set to true, a list of recognized text lines is returned. For calls to recognize content, this list is always populated. The maximum number of lines returned is 300 per page. The lines are sorted top to bottom, left to right, although in certain cases proximity is treated with higher priority. As the sorting order depends on @@ -462,11 +462,11 @@ class FormTableCell(FormContent): :ivar bool is_footer: Whether the current cell is a footer cell. :ivar int page_number: The 1-based number of the page in which this content is present. - :ivar text_content: - When `include_text_content` is set to true, a list of text + :ivar field_element: + When `include_field_element` is set to true, a list of text elements constituting this cell is returned. For calls to recognize content, this list is always populated. - :vartype text_content: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] + :vartype field_element: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ def __init__(self, **kwargs): @@ -478,7 +478,7 @@ def __init__(self, **kwargs): self.confidence = kwargs.get("confidence", None) self.is_header = kwargs.get("is_header", False) self.is_footer = kwargs.get("is_footer", False) - self.text_content = kwargs.get("text_content", None) + self.field_element = kwargs.get("field_element", None) @classmethod def _from_generated(cls, cell, page, read_result): @@ -498,14 +498,14 @@ def _from_generated(cls, cell, page, read_result): is_header=cell.is_header or False, is_footer=cell.is_footer or False, page_number=page, - text_content=get_elements(cell, read_result) if cell.elements else None + field_element=get_elements(cell, read_result) if cell.elements else None ) def __repr__(self): return "FormTableCell(text={}, row_index={}, column_index={}, row_span={}, column_span={}, " \ - "bounding_box={}, confidence={}, is_header={}, is_footer={}, page_number={}, text_content={})".format( + "bounding_box={}, confidence={}, is_header={}, is_footer={}, page_number={}, field_element={})".format( self.text, self.row_index, self.column_index, self.row_span, self.column_span, self.bounding_box, - self.confidence, self.is_header, self.is_footer, self.page_number, repr(self.text_content) + self.confidence, self.is_header, self.is_footer, self.page_number, repr(self.field_element) )[:1024] diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py index 967046d24ea3..de74a45fbe26 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py @@ -101,7 +101,7 @@ async def begin_recognize_receipts( :param receipt: JPEG, PNG, PDF and TIFF type file stream or bytes. Currently only supports US sales receipts. :type receipt: bytes or IO[bytes] - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, @@ -131,7 +131,7 @@ async def begin_recognize_receipts( if content_type == "application/json": raise TypeError("Call begin_recognize_receipts_from_url() to analyze a receipt from a url.") - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) if content_type is None: content_type = get_content_type(receipt) @@ -139,7 +139,7 @@ async def begin_recognize_receipts( return await self._client.begin_analyze_receipt_async( # type: ignore file_stream=receipt, content_type=content_type, - include_text_details=include_text_content, + include_text_details=include_field_elements, cls=kwargs.pop("cls", self._receipt_callback), polling=AsyncLROBasePolling( timeout=polling_interval, @@ -165,7 +165,7 @@ async def begin_recognize_receipts_from_url( :param str receipt_url: The url of the receipt to analyze. The input must be a valid, encoded url of one of the supported formats: JPEG, PNG, PDF and TIFF. Currently only supports US sales receipts. - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. @@ -187,11 +187,11 @@ async def begin_recognize_receipts_from_url( polling_interval = kwargs.pop("polling_interval", self._client._config.polling_interval) continuation_token = kwargs.pop("continuation_token", None) - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) return await self._client.begin_analyze_receipt_async( # type: ignore file_stream={"source": receipt_url}, - include_text_details=include_text_content, + include_text_details=include_field_elements, cls=kwargs.pop("cls", self._receipt_callback), polling=AsyncLROBasePolling( timeout=polling_interval, @@ -307,7 +307,7 @@ async def begin_recognize_custom_forms( :param str model_id: Custom model identifier. :param form: JPEG, PNG, PDF and TIFF type file stream or bytes. :type form: bytes or IO[bytes] - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, @@ -341,7 +341,7 @@ async def begin_recognize_custom_forms( if content_type == "application/json": raise TypeError("Call begin_recognize_custom_forms_from_url() to analyze a document from a url.") - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) if content_type is None: content_type = get_content_type(form) @@ -354,7 +354,7 @@ def analyze_callback(raw_response, _, headers): # pylint: disable=unused-argume return await self._client.begin_analyze_with_custom_model( # type: ignore file_stream=form, model_id=model_id, - include_text_details=include_text_content, + include_text_details=include_field_elements, content_type=content_type, cls=deserialization_callback, polling=AsyncLROBasePolling( @@ -381,7 +381,7 @@ async def begin_recognize_custom_forms_from_url( :param str model_id: Custom model identifier. :param str form_url: The url of the form to analyze. The input must be a valid, encoded url of one of the supported formats: JPEG, PNG, PDF and TIFF. - :keyword bool include_text_content: + :keyword bool include_field_elements: Whether or not to include text elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. @@ -398,7 +398,7 @@ async def begin_recognize_custom_forms_from_url( cls = kwargs.pop("cls", None) polling_interval = kwargs.pop("polling_interval", self._client._config.polling_interval) continuation_token = kwargs.pop("continuation_token", None) - include_text_content = kwargs.pop("include_text_content", False) + include_field_elements = kwargs.pop("include_field_elements", False) def analyze_callback(raw_response, _, headers): # pylint: disable=unused-argument analyze_result = self._client._deserialize(AnalyzeOperationResult, raw_response) @@ -408,7 +408,7 @@ def analyze_callback(raw_response, _, headers): # pylint: disable=unused-argume return await self._client.begin_analyze_with_custom_model( # type: ignore file_stream={"source": form_url}, model_id=model_id, - include_text_details=include_text_content, + include_text_details=include_field_elements, cls=deserialization_callback, polling=AsyncLROBasePolling( timeout=polling_interval, diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py index 73a8f31f51c5..d92ef4b967c2 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py @@ -51,7 +51,7 @@ async def get_bounding_boxes(self): # Make sure your form's type is included in the list of form types the custom model can recognize with open(path_to_sample_forms, "rb") as f: poller = await form_recognizer_client.begin_recognize_custom_forms( - model_id=model_id, form=f, include_text_content=True + model_id=model_id, form=f, include_field_elements=True ) forms = await poller.result() @@ -79,9 +79,9 @@ async def get_bounding_boxes(self): print("...Cell[{}][{}] has text '{}' with confidence {} based on the following words: ".format( cell.row_index, cell.column_index, cell.text, cell.confidence )) - # text_content is only populated if you set include_text_content to True in your function call to recognize_custom_forms + # field_element is only populated if you set include_field_elements to True in your function call to recognize_custom_forms # It is a heterogeneous list of FormWord and FormLine. - for content in cell.text_content: + for content in cell.field_element: if isinstance(content, FormWord): print("......Word '{}' within bounding box '{}' has a confidence of {}".format( content.text, diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py index 592c380cbf0f..4788ffb75adc 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py @@ -48,7 +48,7 @@ def get_bounding_boxes(self): # Make sure your form's type is included in the list of form types the custom model can recognize with open(path_to_sample_forms, "rb") as f: poller = form_recognizer_client.begin_recognize_custom_forms( - model_id=model_id, form=f, include_text_content=True + model_id=model_id, form=f, include_field_elements=True ) forms = poller.result() @@ -76,9 +76,9 @@ def get_bounding_boxes(self): print("...Cell[{}][{}] has text '{}' with confidence {} based on the following words: ".format( cell.row_index, cell.column_index, cell.text, cell.confidence )) - # text_content is only populated if you set include_text_content to True in your function call to recognize_custom_forms + # field_element is only populated if you set include_field_elements to True in your function call to recognize_custom_forms # It is a heterogeneous list of FormWord and FormLine. - for content in cell.text_content: + for content in cell.field_element: if isinstance(content, FormWord): print("......Word '{}' within bounding box '{}' has a confidence of {}".format( content.text, diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py index babe62dcae11..5d62713ac4fc 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms.py @@ -251,7 +251,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -288,7 +288,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -326,7 +326,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -363,7 +363,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -427,7 +427,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -466,7 +466,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py index 575125c77d10..614df3e0df50 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_async.py @@ -256,7 +256,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -294,7 +294,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -333,7 +333,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -371,7 +371,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -437,7 +437,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -476,7 +476,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms( model.model_id, myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py index c23cddbe848f..d132c934c6ee 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url.py @@ -199,7 +199,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms_from_url( model.model_id, self.form_url_jpg, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -233,7 +233,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -269,7 +269,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms_from_url( model.model_id, self.form_url_jpg, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -303,7 +303,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -363,7 +363,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() @@ -399,7 +399,7 @@ def callback(raw_response, _, headers): poller = fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) form = poller.result() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py index abdde34862dc..010c3a07449f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_custom_forms_from_url_async.py @@ -203,7 +203,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms_from_url( model.model_id, self.form_url_jpg, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -238,7 +238,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) @@ -274,7 +274,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms_from_url( model.model_id, self.form_url_jpg, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -309,7 +309,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -369,7 +369,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() @@ -405,7 +405,7 @@ def callback(raw_response, _, headers): poller = await fr_client.begin_recognize_custom_forms_from_url( model.model_id, blob_sas_url, - include_text_content=True, + include_field_elements=True, cls=callback ) form = await poller.result() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py index 8f3f56f1d6b5..28a808a5b49d 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py @@ -149,7 +149,7 @@ def callback(raw_response, _, headers): poller = client.begin_recognize_receipts( receipt=myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) @@ -203,7 +203,7 @@ def callback(raw_response, _, headers): poller = client.begin_recognize_receipts( receipt=myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) @@ -297,10 +297,10 @@ def test_receipt_png(self, client): @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() - def test_receipt_jpg_include_text_content(self, client): + def test_receipt_jpg_include_field_elements(self, client): with open(self.receipt_jpg, "rb") as fd: receipt = fd.read() - poller = client.begin_recognize_receipts(receipt, include_text_content=True) + poller = client.begin_recognize_receipts(receipt, include_field_elements=True) result = poller.result() self.assertEqual(len(result), 1) @@ -310,10 +310,10 @@ def test_receipt_jpg_include_text_content(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: form_field = getattr(receipt, field) - self.assertTextContentHasValues(form_field.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(form_field.value_data.field_element, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() @@ -321,7 +321,7 @@ def test_receipt_multipage(self, client): with open(self.multipage_invoice_pdf, "rb") as fd: receipt = fd.read() - poller = client.begin_recognize_receipts(receipt, include_text_content=True) + poller = client.begin_recognize_receipts(receipt, include_field_elements=True) result = poller.result() self.assertEqual(len(result), 3) @@ -367,7 +367,7 @@ def callback(raw_response, _, headers): poller = client.begin_recognize_receipts( receipt=myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py index 07c9c099b473..cbf7727f9c1b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py @@ -160,7 +160,7 @@ def callback(raw_response, _, headers): poller = await client.begin_recognize_receipts( receipt=myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) result = await poller.result() @@ -214,7 +214,7 @@ def callback(raw_response, _, headers): poller = await client.begin_recognize_receipts( receipt=myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) result = await poller.result() @@ -308,10 +308,10 @@ async def test_receipt_png(self, client): @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() - async def test_receipt_jpg_include_text_content(self, client): + async def test_receipt_jpg_include_field_elements(self, client): with open(self.receipt_jpg, "rb") as fd: receipt = fd.read() - poller = await client.begin_recognize_receipts(receipt, include_text_content=True) + poller = await client.begin_recognize_receipts(receipt, include_field_elements=True) result = await poller.result() self.assertEqual(len(result), 1) @@ -321,17 +321,17 @@ async def test_receipt_jpg_include_text_content(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: form_field = getattr(receipt, field) - self.assertTextContentHasValues(form_field.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(form_field.value_data.field_element, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() async def test_receipt_multipage(self, client): with open(self.multipage_invoice_pdf, "rb") as fd: receipt = fd.read() - poller = await client.begin_recognize_receipts(receipt, include_text_content=True) + poller = await client.begin_recognize_receipts(receipt, include_field_elements=True) result = await poller.result() self.assertEqual(len(result), 3) @@ -376,7 +376,7 @@ def callback(raw_response, _, headers): poller = await client.begin_recognize_receipts( receipt=myfile, - include_text_content=True, + include_field_elements=True, cls=callback ) result = await poller.result() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py index 18a97f0f03e2..cae45e7f3da9 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py @@ -94,7 +94,7 @@ def callback(raw_response, _, headers): poller = client.begin_recognize_receipts_from_url( receipt_url=self.receipt_url_jpg, - include_text_content=True, + include_field_elements=True, cls=callback ) @@ -146,7 +146,7 @@ def callback(raw_response, _, headers): poller = client.begin_recognize_receipts_from_url( receipt_url=self.receipt_url_png, - include_text_content=True, + include_field_elements=True, cls=callback ) @@ -186,11 +186,11 @@ def callback(raw_response, _, headers): @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() - def test_receipt_url_include_text_content(self, client): + def test_receipt_url_include_field_elements(self, client): poller = client.begin_recognize_receipts_from_url( self.receipt_url_jpg, - include_text_content=True + include_field_elements=True ) result = poller.result() @@ -201,10 +201,10 @@ def test_receipt_url_include_text_content(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: field = getattr(receipt, field) - self.assertTextContentHasValues(field.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(field.value_data.field_element, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() @@ -259,7 +259,7 @@ def test_receipt_url_png(self, client): @GlobalClientPreparer() def test_receipt_multipage_url(self, client): - poller = client.begin_recognize_receipts_from_url(self.multipage_url_pdf, include_text_content=True) + poller = client.begin_recognize_receipts_from_url(self.multipage_url_pdf, include_field_elements=True) result = poller.result() self.assertEqual(len(result), 3) @@ -302,7 +302,7 @@ def callback(raw_response, _, headers): poller = client.begin_recognize_receipts_from_url( self.multipage_url_pdf, - include_text_content=True, + include_field_elements=True, cls=callback ) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py index 5b8911aa4f84..4a60fe80b974 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py @@ -112,7 +112,7 @@ def callback(raw_response, _, headers): poller = await client.begin_recognize_receipts_from_url( self.receipt_url_jpg, - include_text_content=True, + include_field_elements=True, cls=callback ) result = await poller.result() @@ -163,7 +163,7 @@ def callback(raw_response, _, headers): poller = await client.begin_recognize_receipts_from_url( self.receipt_url_png, - include_text_content=True, + include_field_elements=True, cls=callback ) result = await poller.result() @@ -203,11 +203,11 @@ def callback(raw_response, _, headers): @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() - async def test_receipt_url_include_text_content(self, client): + async def test_receipt_url_include_field_elements(self, client): poller = await client.begin_recognize_receipts_from_url( self.receipt_url_jpg, - include_text_content=True + include_field_elements=True ) result = await poller.result() @@ -218,10 +218,10 @@ async def test_receipt_url_include_text_content(self, client): for field, value in receipt.__dict__.items(): if field not in ["page_range", "pages", "fields", "form_type"]: field = getattr(receipt, field) - self.assertTextContentHasValues(field.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(field.value_data.field_element, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.text_content, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() @@ -278,7 +278,7 @@ async def test_receipt_url_png(self, client): @GlobalClientPreparer() async def test_receipt_multipage_url(self, client): - poller = await client.begin_recognize_receipts_from_url(self.multipage_url_pdf, include_text_content=True) + poller = await client.begin_recognize_receipts_from_url(self.multipage_url_pdf, include_field_elements=True) result = await poller.result() self.assertEqual(len(result), 3) @@ -321,7 +321,7 @@ def callback(raw_response, _, headers): poller = await client.begin_recognize_receipts_from_url( self.multipage_url_pdf, - include_text_content=True, + include_field_elements=True, cls=callback ) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py index be5503eb809c..71a544977c5a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py @@ -44,10 +44,10 @@ def form_line(bounding_box, form_word): def form_table_cell(bounding_box, form_word): model = _models.FormTableCell( text="Cell", row_index=3, column_index=4, row_span=2, column_span=3, bounding_box=bounding_box[0], - confidence=0.7, is_header=True, is_footer=False, page_number=3, text_content=[form_word[0]] + confidence=0.7, is_header=True, is_footer=False, page_number=3, field_element=[form_word[0]] ) model_repr = "FormTableCell(text=Cell, row_index=3, column_index=4, row_span=2, column_span=3, bounding_box={}, confidence=0.7, " \ - "is_header=True, is_footer=False, page_number=3, text_content=[{}])".format(bounding_box[1], form_word[1])[:1024] + "is_header=True, is_footer=False, page_number=3, field_element=[{}])".format(bounding_box[1], form_word[1])[:1024] assert repr(model) == model_repr return model, model_repr @@ -60,8 +60,8 @@ def form_table(form_table_cell): @pytest.fixture def field_text(bounding_box, form_word, form_line): - model = _models.FieldText(page_number=1, text="This is text.", bounding_box=bounding_box[0], text_content=[form_word[0], form_line[0]]) - model_repr = "FieldText(page_number=1, text=This is text., bounding_box={}, text_content=[{}, {}])".format(bounding_box[1], form_word[1], form_line[1])[:1024] + model = _models.FieldData(page_number=1, text="This is text.", bounding_box=bounding_box[0], field_element=[form_word[0], form_line[0]]) + model_repr = "FieldData(page_number=1, text=This is text., bounding_box={}, field_element=[{}, {}])".format(bounding_box[1], form_word[1], form_line[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 406e59585b02..e4db3eff982f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py @@ -233,7 +233,7 @@ def assertLabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, self.assertEqual(b[label].value, a.value_time) if read_results: self.assertTextContentTransformCorrect( - b[label].value_data.text_content, + b[label].value_data.field_element, a.elements, read_results ) @@ -247,7 +247,7 @@ def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_field self.assertBoundingBoxTransformCorrect(form_fields["field-"+str(idx)].label_data.bounding_box, a.key.bounding_box) if read_results: self.assertTextContentTransformCorrect( - form_fields["field-"+str(idx)].label_data.text_content, + form_fields["field-"+str(idx)].label_data.field_element, a.key.elements, read_results ) @@ -255,7 +255,7 @@ def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_field self.assertBoundingBoxTransformCorrect(form_fields["field-" + str(idx)].value_data.bounding_box, a.value.bounding_box) if read_results: self.assertTextContentTransformCorrect( - form_fields["field-"+str(idx)].value_data.text_content, + form_fields["field-"+str(idx)].value_data.field_element, a.value.elements, read_results ) @@ -282,7 +282,7 @@ def assertFormFieldTransformCorrect(self, receipt_field, actual_field, read_resu self.assertEqual(receipt_field.confidence, actual_field.confidence if actual_field.confidence is not None else 1.0) if read_results: self.assertTextContentTransformCorrect( - receipt_field.value_data.text_content, + receipt_field.value_data.field_element, actual_field.elements, read_results ) @@ -311,9 +311,9 @@ def assertTablesTransformCorrect(self, layout, actual_layout, read_results=None, self.assertEqual(cell.is_header, actual_cell.is_header if actual_cell.is_header is not None else False) self.assertEqual(cell.is_footer, actual_cell.is_footer if actual_cell.is_footer is not None else False) self.assertBoundingBoxTransformCorrect(cell.bounding_box, actual_cell.bounding_box) - self.assertTextContentTransformCorrect(cell.text_content, actual_cell.elements, read_results) + self.assertTextContentTransformCorrect(cell.field_element, actual_cell.elements, read_results) - def assertReceiptItemsHasValues(self, items, page_number, include_text_content): + def assertReceiptItemsHasValues(self, items, page_number, include_field_elements): for item in items: self.assertBoundingBoxHasPoints(item.value.get("Name").value_data.bounding_box) self.assertIsNotNone(item.value.get("Name").confidence) @@ -325,14 +325,14 @@ def assertReceiptItemsHasValues(self, items, page_number, include_text_content): self.assertIsNotNone(item.value.get("TotalPrice").confidence) self.assertIsNotNone(item.value.get("TotalPrice").value_data.text) - if include_text_content: - self.assertTextContentHasValues(item.value.get("Name").value_data.text_content, page_number) - self.assertTextContentHasValues(item.value.get("Name").value_data.text_content, page_number) - self.assertTextContentHasValues(item.value.get("Name").value_data.text_content, page_number) + if include_field_elements: + self.assertTextContentHasValues(item.value.get("Name").value_data.field_element, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_data.field_element, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_data.field_element, page_number) else: - self.assertIsNone(item.value.get("Name").value_data.text_content) - self.assertIsNone(item.value.get("Name").value_data.text_content) - self.assertIsNone(item.value.get("Name").value_data.text_content) + self.assertIsNone(item.value.get("Name").value_data.field_element) + self.assertIsNone(item.value.get("Name").value_data.field_element) + self.assertIsNone(item.value.get("Name").value_data.field_element) def assertBoundingBoxHasPoints(self, box): if box is None: @@ -373,7 +373,7 @@ def assertFormPagesHasValues(self, pages): self.assertIsNotNone(cell.row_span) self.assertIsNotNone(cell.column_span) self.assertBoundingBoxHasPoints(cell.bounding_box) - self.assertTextContentHasValues(cell.text_content, page.page_number) + self.assertTextContentHasValues(cell.field_element, page.page_number) def assertFormWordHasValues(self, word, page_number): self.assertIsNotNone(word.confidence) From e49943f6c3e9a69a895c27dc7e7dd26e34a4692f Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Mon, 29 Jun 2020 16:08:21 -0700 Subject: [PATCH 02/12] corrections --- .../azure/ai/formrecognizer/_models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 3aec13d9c8e6..9e78d2af601b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -241,7 +241,7 @@ class FieldData(FormContent): order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. :ivar field_element: - When `include_field_element` is set to true, a list of text + When `include_field_elements` is set to true, a list of elements constituting this field or value is returned. :vartype field_element: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ @@ -306,7 +306,7 @@ class FormPage(object): :ivar list[~azure.ai.formrecognizer.FormTable] tables: A list of extracted tables contained in a page. :ivar list[~azure.ai.formrecognizer.FormLine] lines: - When `include_field_element` is set to true, a list of recognized text lines is returned. + When `include_field_elements` is set to true, a list of recognized text lines is returned. For calls to recognize content, this list is always populated. The maximum number of lines returned is 300 per page. The lines are sorted top to bottom, left to right, although in certain cases proximity is treated with higher priority. As the sorting order depends on @@ -463,9 +463,9 @@ class FormTableCell(FormContent): :ivar int page_number: The 1-based number of the page in which this content is present. :ivar field_element: - When `include_field_element` is set to true, a list of text + When `include_field_elements` is set to true, a list of elements constituting this cell is returned. - For calls to recognize content, this list is always populated. + For calls to begin_recognize_content(), this list is always populated. :vartype field_element: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ From 9fc067b37fde3c8fc3259dc7a040ea87e97355ad Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Mon, 29 Jun 2020 16:13:08 -0700 Subject: [PATCH 03/12] recordings --- ... => test_receipt.test_receipt_jpg_include_field_elements.yaml} | 0 ...st_receipt_async.test_receipt_jpg_include_field_elements.yaml} | 0 ...receipt_from_url.test_receipt_url_include_field_elements.yaml} | 0 ...t_from_url_async.test_receipt_url_include_field_elements.yaml} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/{test_receipt.test_receipt_jpg_include_text_content.yaml => test_receipt.test_receipt_jpg_include_field_elements.yaml} (100%) rename sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/{test_receipt_async.test_receipt_jpg_include_text_content.yaml => test_receipt_async.test_receipt_jpg_include_field_elements.yaml} (100%) rename sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/{test_receipt_from_url.test_receipt_url_include_text_content.yaml => test_receipt_from_url.test_receipt_url_include_field_elements.yaml} (100%) rename sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/{test_receipt_from_url_async.test_receipt_url_include_text_content.yaml => test_receipt_from_url_async.test_receipt_url_include_field_elements.yaml} (100%) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_jpg_include_text_content.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_jpg_include_field_elements.yaml similarity index 100% rename from sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_jpg_include_text_content.yaml rename to sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt.test_receipt_jpg_include_field_elements.yaml diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_jpg_include_text_content.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_jpg_include_field_elements.yaml similarity index 100% rename from sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_jpg_include_text_content.yaml rename to sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_async.test_receipt_jpg_include_field_elements.yaml diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_include_text_content.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_include_field_elements.yaml similarity index 100% rename from sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_include_text_content.yaml rename to sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url.test_receipt_url_include_field_elements.yaml diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_url_include_text_content.yaml b/sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_url_include_field_elements.yaml similarity index 100% rename from sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_url_include_text_content.yaml rename to sdk/formrecognizer/azure-ai-formrecognizer/tests/recordings/test_receipt_from_url_async.test_receipt_url_include_field_elements.yaml From b9bb0af5f3e4377aa9b3abd2d802c333e85aea31 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Mon, 29 Jun 2020 16:25:30 -0700 Subject: [PATCH 04/12] add FieldData to init --- .../azure/ai/formrecognizer/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py index 475b8b041f03..d56dd83a2e93 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py @@ -24,7 +24,7 @@ FormPageRange, RecognizedForm, FormField, - FieldText, + FieldData, FormPage, FormLine, FormWord, @@ -52,7 +52,7 @@ 'FormPageRange', 'RecognizedForm', 'FormField', - 'FieldText', + 'FieldData', 'FormPage', 'FormLine', 'FormWord', From 8059fcca07ba1e2e9e8f068c2531adefaa77a0b7 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Tue, 30 Jun 2020 15:57:19 -0700 Subject: [PATCH 05/12] plural field_elements --- .../azure-ai-formrecognizer/CHANGELOG.md | 2 +- .../azure/ai/formrecognizer/_models.py | 18 +++++++------- .../sample_get_bounding_boxes_async.py | 4 ++-- .../samples/sample_get_bounding_boxes.py | 4 ++-- .../tests/test_receipt.py | 4 ++-- .../tests/test_receipt_async.py | 4 ++-- .../tests/test_receipt_from_url.py | 4 ++-- .../tests/test_receipt_from_url_async.py | 4 ++-- .../azure-ai-formrecognizer/tests/testcase.py | 24 +++++++++---------- 9 files changed, 34 insertions(+), 34 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index 61a8d1db377c..6a0c06b87aa4 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -10,7 +10,7 @@ and `CustomFormModelInfo` - `FieldText` has been renamed to `FieldData` - Parameter `include_text_content` has been renamed to `include_field_elements` -- `text_content` has been renamed to `field_element` +- `text_content` has been renamed to `field_elements` **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 5430e1fc8389..8c2b5bf1dc08 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -248,11 +248,11 @@ class FieldData(FormContent): that outlines the text. The points are listed in clockwise order: top-left, top-right, bottom-right, bottom-left. Units are in pixels for images and inches for PDF. - :ivar field_element: + :ivar field_elements: When `include_field_elements` is set to true, a list of elements constituting this field or value is returned. The list constitutes of elements such as lines and words. - :vartype field_element: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] + :vartype field_elements: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ def __init__(self, **kwargs): @@ -272,7 +272,7 @@ def _from_generated(cls, field, read_result): Point(x=field.bounding_box[4], y=field.bounding_box[5]), Point(x=field.bounding_box[6], y=field.bounding_box[7]) ] if field.bounding_box else None, - field_element=get_elements(field, read_result) if field.elements else None + field_elements=get_elements(field, read_result) if field.elements else None ) @classmethod @@ -286,11 +286,11 @@ def _from_generated_unlabeled(cls, field, page, read_result): Point(x=field.bounding_box[4], y=field.bounding_box[5]), Point(x=field.bounding_box[6], y=field.bounding_box[7]) ] if field.bounding_box else None, - field_element=get_elements(field, read_result) if field.elements else None + field_elements=get_elements(field, read_result) if field.elements else None ) def __repr__(self): - return "FieldData(page_number={}, text={}, bounding_box={}, field_element={})".format( + return "FieldData(page_number={}, text={}, bounding_box={}, field_elements={})".format( self.page_number, self.text, self.bounding_box, repr(self.field_element) )[:1024] @@ -471,12 +471,12 @@ class FormTableCell(FormContent): :ivar bool is_footer: Whether the current cell is a footer cell. :ivar int page_number: The 1-based number of the page in which this content is present. - :ivar field_element: + :ivar field_elements: When `include_field_elements` is set to true, a list of elements constituting this cell is returned. The list constitutes of elements such as lines and words. For calls to begin_recognize_content(), this list is always populated. - :vartype field_element: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] + :vartype field_elements: list[~azure.ai.formrecognizer.FormWord, ~azure.ai.formrecognizer.FormLine] """ def __init__(self, **kwargs): @@ -508,12 +508,12 @@ def _from_generated(cls, cell, page, read_result): is_header=cell.is_header or False, is_footer=cell.is_footer or False, page_number=page, - field_element=get_elements(cell, read_result) if cell.elements else None + field_elements=get_elements(cell, read_result) if cell.elements else None ) def __repr__(self): return "FormTableCell(text={}, row_index={}, column_index={}, row_span={}, column_span={}, " \ - "bounding_box={}, confidence={}, is_header={}, is_footer={}, page_number={}, field_element={})".format( + "bounding_box={}, confidence={}, is_header={}, is_footer={}, page_number={}, field_elements={})".format( self.text, self.row_index, self.column_index, self.row_span, self.column_span, self.bounding_box, self.confidence, self.is_header, self.is_footer, self.page_number, repr(self.field_element) )[:1024] diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py index d92ef4b967c2..85476dc00405 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/async_samples/sample_get_bounding_boxes_async.py @@ -79,9 +79,9 @@ async def get_bounding_boxes(self): print("...Cell[{}][{}] has text '{}' with confidence {} based on the following words: ".format( cell.row_index, cell.column_index, cell.text, cell.confidence )) - # field_element is only populated if you set include_field_elements to True in your function call to recognize_custom_forms + # field_elements is only populated if you set include_field_elements to True in your function call to recognize_custom_forms # It is a heterogeneous list of FormWord and FormLine. - for content in cell.field_element: + for content in cell.field_elements: if isinstance(content, FormWord): print("......Word '{}' within bounding box '{}' has a confidence of {}".format( content.text, diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py index 4788ffb75adc..22e3cc183411 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/samples/sample_get_bounding_boxes.py @@ -76,9 +76,9 @@ def get_bounding_boxes(self): print("...Cell[{}][{}] has text '{}' with confidence {} based on the following words: ".format( cell.row_index, cell.column_index, cell.text, cell.confidence )) - # field_element is only populated if you set include_field_elements to True in your function call to recognize_custom_forms + # field_elements is only populated if you set include_field_elements to True in your function call to recognize_custom_forms # It is a heterogeneous list of FormWord and FormLine. - for content in cell.field_element: + for content in cell.field_elements: if isinstance(content, FormWord): print("......Word '{}' within bounding box '{}' has a confidence of {}".format( content.text, diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py index 28a808a5b49d..3a913beac6c6 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py @@ -310,10 +310,10 @@ def test_receipt_jpg_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: form_field = getattr(receipt, field) - self.assertTextContentHasValues(form_field.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(form_field.value_datafield_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py index cbf7727f9c1b..e1fe06c4a1e9 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py @@ -321,10 +321,10 @@ async def test_receipt_jpg_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: form_field = getattr(receipt, field) - self.assertTextContentHasValues(form_field.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(form_field.value_datafield_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py index cae45e7f3da9..94ab66ee5e51 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py @@ -201,10 +201,10 @@ def test_receipt_url_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: field = getattr(receipt, field) - self.assertTextContentHasValues(field.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(field.value_datafield_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py index 4a60fe80b974..e4e01391969f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py @@ -218,10 +218,10 @@ async def test_receipt_url_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["page_range", "pages", "fields", "form_type"]: field = getattr(receipt, field) - self.assertTextContentHasValues(field.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(field.value_datafield_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_data.field_element, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py index cc4a47b3919d..2dae27062dc3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py @@ -236,7 +236,7 @@ def assertLabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, self.assertEqual(b[label].value, a.value_time) if read_results: self.assertTextContentTransformCorrect( - b[label].value_data.field_element, + b[label].value_datafield_elements, a.elements, read_results ) @@ -250,7 +250,7 @@ def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_field self.assertBoundingBoxTransformCorrect(form_fields["field-"+str(idx)].label_data.bounding_box, a.key.bounding_box) if read_results: self.assertTextContentTransformCorrect( - form_fields["field-"+str(idx)].label_data.field_element, + form_fields["field-"+str(idx)].label_datafield_elements, a.key.elements, read_results ) @@ -258,7 +258,7 @@ def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_field self.assertBoundingBoxTransformCorrect(form_fields["field-" + str(idx)].value_data.bounding_box, a.value.bounding_box) if read_results: self.assertTextContentTransformCorrect( - form_fields["field-"+str(idx)].value_data.field_element, + form_fields["field-"+str(idx)].value_datafield_elements, a.value.elements, read_results ) @@ -285,7 +285,7 @@ def assertFormFieldTransformCorrect(self, receipt_field, actual_field, read_resu self.assertEqual(receipt_field.confidence, actual_field.confidence if actual_field.confidence is not None else 1.0) if read_results: self.assertTextContentTransformCorrect( - receipt_field.value_data.field_element, + receipt_field.value_datafield_elements, actual_field.elements, read_results ) @@ -314,7 +314,7 @@ def assertTablesTransformCorrect(self, layout, actual_layout, read_results=None, self.assertEqual(cell.is_header, actual_cell.is_header if actual_cell.is_header is not None else False) self.assertEqual(cell.is_footer, actual_cell.is_footer if actual_cell.is_footer is not None else False) self.assertBoundingBoxTransformCorrect(cell.bounding_box, actual_cell.bounding_box) - self.assertTextContentTransformCorrect(cell.field_element, actual_cell.elements, read_results) + self.assertTextContentTransformCorrect(cellfield_elements, actual_cell.elements, read_results) def assertReceiptItemsHasValues(self, items, page_number, include_field_elements): for item in items: @@ -329,13 +329,13 @@ def assertReceiptItemsHasValues(self, items, page_number, include_field_elements self.assertIsNotNone(item.value.get("TotalPrice").value_data.text) if include_field_elements: - self.assertTextContentHasValues(item.value.get("Name").value_data.field_element, page_number) - self.assertTextContentHasValues(item.value.get("Name").value_data.field_element, page_number) - self.assertTextContentHasValues(item.value.get("Name").value_data.field_element, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_datafield_elements, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_datafield_elements, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_datafield_elements, page_number) else: - self.assertIsNone(item.value.get("Name").value_data.field_element) - self.assertIsNone(item.value.get("Name").value_data.field_element) - self.assertIsNone(item.value.get("Name").value_data.field_element) + self.assertIsNone(item.value.get("Name").value_datafield_elements) + self.assertIsNone(item.value.get("Name").value_datafield_elements) + self.assertIsNone(item.value.get("Name").value_datafield_elements) def assertBoundingBoxHasPoints(self, box): if box is None: @@ -376,7 +376,7 @@ def assertFormPagesHasValues(self, pages): self.assertIsNotNone(cell.row_span) self.assertIsNotNone(cell.column_span) self.assertBoundingBoxHasPoints(cell.bounding_box) - self.assertTextContentHasValues(cell.field_element, page.page_number) + self.assertTextContentHasValues(cellfield_elements, page.page_number) def assertFormWordHasValues(self, word, page_number): self.assertIsNotNone(word.confidence) From 9c263c8e6569343d8f0efe5ea66f1379f877286c Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Tue, 30 Jun 2020 16:23:31 -0700 Subject: [PATCH 06/12] whoops --- .../tests/test_receipt.py | 4 ++-- .../tests/test_receipt_async.py | 4 ++-- .../tests/test_receipt_from_url.py | 4 ++-- .../tests/test_receipt_from_url_async.py | 4 ++-- .../azure-ai-formrecognizer/tests/testcase.py | 24 +++++++++---------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py index 3a913beac6c6..1c7a0bbfd4e6 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt.py @@ -310,10 +310,10 @@ def test_receipt_jpg_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: form_field = getattr(receipt, field) - self.assertTextContentHasValues(form_field.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(form_field.value_data.field_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py index e1fe06c4a1e9..0bb248a0f2d5 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_async.py @@ -321,10 +321,10 @@ async def test_receipt_jpg_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: form_field = getattr(receipt, field) - self.assertTextContentHasValues(form_field.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(form_field.value_data.field_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py index 94ab66ee5e51..add6887ce04e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url.py @@ -201,10 +201,10 @@ def test_receipt_url_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["receipt_items", "page_range", "pages", "fields", "form_type"]: field = getattr(receipt, field) - self.assertTextContentHasValues(field.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(field.value_data.field_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py index e4e01391969f..259e8c67a14e 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_receipt_from_url_async.py @@ -218,10 +218,10 @@ async def test_receipt_url_include_field_elements(self, client): for field, value in receipt.__dict__.items(): if field not in ["page_range", "pages", "fields", "form_type"]: field = getattr(receipt, field) - self.assertTextContentHasValues(field.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(field.value_data.field_elements, receipt.page_range.first_page_number) for field, value in receipt.fields.items(): - self.assertTextContentHasValues(value.value_datafield_elements, receipt.page_range.first_page_number) + self.assertTextContentHasValues(value.value_data.field_elements, receipt.page_range.first_page_number) @GlobalFormRecognizerAccountPreparer() @GlobalClientPreparer() diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py index 2dae27062dc3..07d0c137f3d9 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py @@ -236,7 +236,7 @@ def assertLabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, self.assertEqual(b[label].value, a.value_time) if read_results: self.assertTextContentTransformCorrect( - b[label].value_datafield_elements, + b[label].value_data.field_elements, a.elements, read_results ) @@ -250,7 +250,7 @@ def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_field self.assertBoundingBoxTransformCorrect(form_fields["field-"+str(idx)].label_data.bounding_box, a.key.bounding_box) if read_results: self.assertTextContentTransformCorrect( - form_fields["field-"+str(idx)].label_datafield_elements, + form_fields["field-"+str(idx)].label_data.field_elements, a.key.elements, read_results ) @@ -258,7 +258,7 @@ def assertUnlabeledFormFieldDictTransformCorrect(self, form_fields, actual_field self.assertBoundingBoxTransformCorrect(form_fields["field-" + str(idx)].value_data.bounding_box, a.value.bounding_box) if read_results: self.assertTextContentTransformCorrect( - form_fields["field-"+str(idx)].value_datafield_elements, + form_fields["field-"+str(idx)].value_data.field_elements, a.value.elements, read_results ) @@ -285,7 +285,7 @@ def assertFormFieldTransformCorrect(self, receipt_field, actual_field, read_resu self.assertEqual(receipt_field.confidence, actual_field.confidence if actual_field.confidence is not None else 1.0) if read_results: self.assertTextContentTransformCorrect( - receipt_field.value_datafield_elements, + receipt_field.value_data.field_elements, actual_field.elements, read_results ) @@ -314,7 +314,7 @@ def assertTablesTransformCorrect(self, layout, actual_layout, read_results=None, self.assertEqual(cell.is_header, actual_cell.is_header if actual_cell.is_header is not None else False) self.assertEqual(cell.is_footer, actual_cell.is_footer if actual_cell.is_footer is not None else False) self.assertBoundingBoxTransformCorrect(cell.bounding_box, actual_cell.bounding_box) - self.assertTextContentTransformCorrect(cellfield_elements, actual_cell.elements, read_results) + self.assertTextContentTransformCorrect(cell.field_elements, actual_cell.elements, read_results) def assertReceiptItemsHasValues(self, items, page_number, include_field_elements): for item in items: @@ -329,13 +329,13 @@ def assertReceiptItemsHasValues(self, items, page_number, include_field_elements self.assertIsNotNone(item.value.get("TotalPrice").value_data.text) if include_field_elements: - self.assertTextContentHasValues(item.value.get("Name").value_datafield_elements, page_number) - self.assertTextContentHasValues(item.value.get("Name").value_datafield_elements, page_number) - self.assertTextContentHasValues(item.value.get("Name").value_datafield_elements, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_data.field_elements, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_data.field_elements, page_number) + self.assertTextContentHasValues(item.value.get("Name").value_data.field_elements, page_number) else: - self.assertIsNone(item.value.get("Name").value_datafield_elements) - self.assertIsNone(item.value.get("Name").value_datafield_elements) - self.assertIsNone(item.value.get("Name").value_datafield_elements) + self.assertIsNone(item.value.get("Name").value_data.field_elements) + self.assertIsNone(item.value.get("Name").value_data.field_elements) + self.assertIsNone(item.value.get("Name").value_data.field_elements) def assertBoundingBoxHasPoints(self, box): if box is None: @@ -376,7 +376,7 @@ def assertFormPagesHasValues(self, pages): self.assertIsNotNone(cell.row_span) self.assertIsNotNone(cell.column_span) self.assertBoundingBoxHasPoints(cell.bounding_box) - self.assertTextContentHasValues(cellfield_elements, page.page_number) + self.assertTextContentHasValues(cell.field_elements, page.page_number) def assertFormWordHasValues(self, word, page_number): self.assertIsNotNone(word.confidence) From 289c0c36b4b0dd43b258e66175d8f9f38e912951 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Tue, 30 Jun 2020 16:35:48 -0700 Subject: [PATCH 07/12] one more fix --- .../azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8c2b5bf1dc08..d0f76da3bdd5 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -257,7 +257,7 @@ class FieldData(FormContent): def __init__(self, **kwargs): super(FieldData, self).__init__(**kwargs) - self.field_element = kwargs.get("field_element", None) + self.field_elements = kwargs.get("field_elements", None) @classmethod def _from_generated(cls, field, read_result): From fcefe4e4cfbbaae3e897acff4bf56ca800293ac7 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Tue, 30 Jun 2020 17:38:50 -0700 Subject: [PATCH 08/12] fix --- .../azure/ai/formrecognizer/_models.py | 6 +++--- .../azure-ai-formrecognizer/tests/test_repr.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) 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 d0f76da3bdd5..d8415a0e14e9 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -291,7 +291,7 @@ def _from_generated_unlabeled(cls, field, page, read_result): def __repr__(self): return "FieldData(page_number={}, text={}, bounding_box={}, field_elements={})".format( - self.page_number, self.text, self.bounding_box, repr(self.field_element) + self.page_number, self.text, self.bounding_box, repr(self.field_elements) )[:1024] @@ -488,7 +488,7 @@ def __init__(self, **kwargs): self.confidence = kwargs.get("confidence", None) self.is_header = kwargs.get("is_header", False) self.is_footer = kwargs.get("is_footer", False) - self.field_element = kwargs.get("field_element", None) + self.field_elements = kwargs.get("field_elements", None) @classmethod def _from_generated(cls, cell, page, read_result): @@ -515,7 +515,7 @@ def __repr__(self): return "FormTableCell(text={}, row_index={}, column_index={}, row_span={}, column_span={}, " \ "bounding_box={}, confidence={}, is_header={}, is_footer={}, page_number={}, field_elements={})".format( self.text, self.row_index, self.column_index, self.row_span, self.column_span, self.bounding_box, - self.confidence, self.is_header, self.is_footer, self.page_number, repr(self.field_element) + self.confidence, self.is_header, self.is_footer, self.page_number, repr(self.field_elements) )[:1024] diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py index 71a544977c5a..cc3c914e33b8 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_repr.py @@ -44,10 +44,10 @@ def form_line(bounding_box, form_word): def form_table_cell(bounding_box, form_word): model = _models.FormTableCell( text="Cell", row_index=3, column_index=4, row_span=2, column_span=3, bounding_box=bounding_box[0], - confidence=0.7, is_header=True, is_footer=False, page_number=3, field_element=[form_word[0]] + confidence=0.7, is_header=True, is_footer=False, page_number=3, field_elements=[form_word[0]] ) model_repr = "FormTableCell(text=Cell, row_index=3, column_index=4, row_span=2, column_span=3, bounding_box={}, confidence=0.7, " \ - "is_header=True, is_footer=False, page_number=3, field_element=[{}])".format(bounding_box[1], form_word[1])[:1024] + "is_header=True, is_footer=False, page_number=3, field_elements=[{}])".format(bounding_box[1], form_word[1])[:1024] assert repr(model) == model_repr return model, model_repr @@ -60,8 +60,8 @@ def form_table(form_table_cell): @pytest.fixture def field_text(bounding_box, form_word, form_line): - model = _models.FieldData(page_number=1, text="This is text.", bounding_box=bounding_box[0], field_element=[form_word[0], form_line[0]]) - model_repr = "FieldData(page_number=1, text=This is text., bounding_box={}, field_element=[{}, {}])".format(bounding_box[1], form_word[1], form_line[1])[:1024] + model = _models.FieldData(page_number=1, text="This is text.", bounding_box=bounding_box[0], field_elements=[form_word[0], form_line[0]]) + model_repr = "FieldData(page_number=1, text=This is text., bounding_box={}, field_elements=[{}, {}])".format(bounding_box[1], form_word[1], form_line[1])[:1024] assert repr(model) == model_repr return model, model_repr From 8324c26b260840ca35cee696da96fd448fd7b42c Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 1 Jul 2020 10:48:44 -0700 Subject: [PATCH 09/12] FormContent -> FormElement --- .../azure-ai-formrecognizer/CHANGELOG.md | 1 + .../azure/ai/formrecognizer/__init__.py | 4 ++-- .../azure/ai/formrecognizer/_models.py | 12 ++++++------ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index 6a0c06b87aa4..7d6db0bcb6d5 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -9,6 +9,7 @@ - `requested_on` renamed to `training_started_on` and `completed_on` renamed to `training_completed_on` on `CustomFormModel` and `CustomFormModelInfo` - `FieldText` has been renamed to `FieldData` +- `FormContent` has been renamed to `FormElement` - Parameter `include_text_content` has been renamed to `include_field_elements` - `text_content` has been renamed to `field_elements` diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py index d56dd83a2e93..81f78c10f742 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/__init__.py @@ -9,7 +9,7 @@ from ._form_training_client import FormTrainingClient from ._models import ( - FormContent, + FormElement, LengthUnit, TrainingStatus, CustomFormModelStatus, @@ -41,7 +41,7 @@ 'TrainingStatus', 'CustomFormModelStatus', 'FormContentType', - 'FormContent', + 'FormElement', 'FormTable', 'FormTableCell', 'TrainingDocumentInfo', 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 d8415a0e14e9..02e580019891 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -138,8 +138,8 @@ def __new__(cls, first_page_number, last_page_number): return super(FormPageRange, cls).__new__(cls, first_page_number, last_page_number) -class FormContent(object): - """Base type which includes properties for text. +class FormElement(object): + """Base type which includes properties for a form element. :ivar str text: The text content of the line. :ivar list[~azure.ai.formrecognizer.Point] bounding_box: @@ -235,7 +235,7 @@ def __repr__(self): )[:1024] -class FieldData(FormContent): +class FieldData(FormElement): """Represents the text that is part of a form field. This includes the location of the text in the form and a collection of the elements that make up the text. @@ -349,7 +349,7 @@ def __repr__(self): )[:1024] -class FormLine(FormContent): +class FormLine(FormElement): """An object representing an extracted line of text. :ivar str text: The text content of the line. @@ -388,7 +388,7 @@ def __repr__(self): )[:1024] -class FormWord(FormContent): +class FormWord(FormElement): """Represents a word recognized from the input document. :ivar str text: The text content of the word. @@ -452,7 +452,7 @@ def __repr__(self): )[:1024] -class FormTableCell(FormContent): +class FormTableCell(FormElement): """Represents a cell contained in a table recognized from the input document. :ivar str text: Text content of the cell. From d259acc037195731557981670d2ed96581fc517e Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 1 Jul 2020 14:01:59 -0700 Subject: [PATCH 10/12] review feedback --- sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md | 5 +++-- .../azure/ai/formrecognizer/_form_recognizer_client.py | 8 ++++---- .../formrecognizer/aio/_form_recognizer_client_async.py | 8 ++++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md index 7d6db0bcb6d5..f3a3bb466a2c 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md +++ b/sdk/formrecognizer/azure-ai-formrecognizer/CHANGELOG.md @@ -10,8 +10,9 @@ and `CustomFormModelInfo` - `FieldText` has been renamed to `FieldData` - `FormContent` has been renamed to `FormElement` -- Parameter `include_text_content` has been renamed to `include_field_elements` -- `text_content` has been renamed to `field_elements` +- Parameter `include_text_content` has been renamed to `include_field_elements` for +`begin_recognize_receipts`, `begin_recognize_receipts_from_url`, `begin_recognize_custom_forms`, and `begin_recognize_custom_forms_from_url` +- `text_content` has been renamed to `field_elements` on `FieldData` and `FormTableCell` **Fixes and improvements** diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py index a574b2909bf6..6e926be83108 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_form_recognizer_client.py @@ -94,7 +94,7 @@ def begin_recognize_receipts(self, receipt, **kwargs): Currently only supports US sales receipts. :type receipt: bytes or IO[bytes] :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -152,7 +152,7 @@ def begin_recognize_receipts_from_url(self, receipt_url, **kwargs): of one of the supported formats: JPEG, PNG, PDF and TIFF. Currently only supports US sales receipts. :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :keyword str continuation_token: A continuation token to restart a poller from a saved state. @@ -280,7 +280,7 @@ def begin_recognize_custom_forms(self, model_id, form, **kwargs): :param form: JPEG, PNG, PDF and TIFF type file stream or bytes. :type form: bytes or IO[bytes] :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -345,7 +345,7 @@ def begin_recognize_custom_forms_from_url(self, model_id, form_url, **kwargs): :param str form_url: The url of the form to analyze. The input must be a valid, encoded url of one of the supported formats: JPEG, PNG, PDF and TIFF. :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :keyword str continuation_token: A continuation token to restart a poller from a saved state. diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py index de74a45fbe26..870adf9fa30a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/aio/_form_recognizer_client_async.py @@ -102,7 +102,7 @@ async def begin_recognize_receipts( Currently only supports US sales receipts. :type receipt: bytes or IO[bytes] :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -166,7 +166,7 @@ async def begin_recognize_receipts_from_url( of one of the supported formats: JPEG, PNG, PDF and TIFF. Currently only supports US sales receipts. :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :keyword str continuation_token: A continuation token to restart a poller from a saved state. @@ -308,7 +308,7 @@ async def begin_recognize_custom_forms( :param form: JPEG, PNG, PDF and TIFF type file stream or bytes. :type form: bytes or IO[bytes] :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword content_type: Media type of the body sent to the API. Content-type is auto-detected, but can be overridden by passing this keyword argument. For options, see :class:`~azure.ai.formrecognizer.FormContentType`. @@ -382,7 +382,7 @@ async def begin_recognize_custom_forms_from_url( :param str form_url: The url of the form to analyze. The input must be a valid, encoded url of one of the supported formats: JPEG, PNG, PDF and TIFF. :keyword bool include_field_elements: - Whether or not to include text elements such as lines and words in addition to form fields. + Whether or not to include field elements such as lines and words in addition to form fields. :keyword int polling_interval: Waiting time between two polls for LRO operations if no Retry-After header is present. Defaults to 5 seconds. :keyword str continuation_token: A continuation token to restart a poller from a saved state. From 5acbd9d5d86d1548c3d13fda640e0930cb00e9ff Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 1 Jul 2020 15:28:33 -0700 Subject: [PATCH 11/12] update docstring --- .../azure/ai/formrecognizer/_models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 02e580019891..dad5dc34a63b 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -189,9 +189,9 @@ class FormField(object): """Represents a field recognized in an input form. :ivar ~azure.ai.formrecognizer.FieldData label_data: - Contains the text, bounding box, and text content of the field label. + Contains the text, bounding box, and field elements of the field label. :ivar ~azure.ai.formrecognizer.FieldData value_data: - Contains the text, bounding box, and text content of the field value. + Contains the text, bounding box, and field elements of the field value. :ivar str name: The unique name of the field or label. :ivar value: The value for the recognized field. Possible types include: 'string', From 64d1b1b2206776f2cf849f85f45713e6701e6085 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 1 Jul 2020 15:29:53 -0700 Subject: [PATCH 12/12] wording --- .../azure/ai/formrecognizer/_models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 dad5dc34a63b..1a8fa595e169 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -189,9 +189,9 @@ class FormField(object): """Represents a field recognized in an input form. :ivar ~azure.ai.formrecognizer.FieldData label_data: - Contains the text, bounding box, and field elements of the field label. + 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 of the field value. + 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. Possible types include: 'string',