From 316ce0bfbc1afc94e101aaae515f1ee34a1a32c2 Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 11 Nov 2020 12:54:25 -0800 Subject: [PATCH 1/2] revert setting business card ContactNames page number now that service returns this value --- .../ai/formrecognizer/_form_recognizer_client.py | 12 ++++-------- .../azure/ai/formrecognizer/_helpers.py | 12 ------------ .../azure/ai/formrecognizer/_models.py | 14 +++++--------- .../azure/ai/formrecognizer/_response_handlers.py | 4 ++-- .../aio/_form_recognizer_client_async.py | 12 ++++-------- 5 files changed, 15 insertions(+), 39 deletions(-) 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 70f42d41c3bb..e1dfb728936f 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 @@ -65,9 +65,9 @@ class FormRecognizerClient(FormRecognizerClientBase): :caption: Creating the FormRecognizerClient with a token credential. """ - def _prebuilt_callback(self, raw_response, _, headers, **kwargs): # pylint: disable=unused-argument + def _prebuilt_callback(self, raw_response, _, headers): # pylint: disable=unused-argument analyze_result = self._deserialize(self._generated_models.AnalyzeOperationResult, raw_response) - return prepare_prebuilt_models(analyze_result, **kwargs) + return prepare_prebuilt_models(analyze_result) @distributed_trace def begin_recognize_receipts(self, receipt, **kwargs): @@ -247,9 +247,7 @@ def begin_recognize_business_cards( file_stream=business_card, content_type=content_type, include_text_details=include_field_elements, - cls=kwargs.pop("cls", lambda pipeline_response, _, response_headers: self._prebuilt_callback( - pipeline_response, _, response_headers, business_card=True - )), + cls=kwargs.pop("cls", self._prebuilt_callback), polling=True, **kwargs ) @@ -298,9 +296,7 @@ def begin_recognize_business_cards_from_url( return self._client.begin_analyze_business_card_async( # type: ignore file_stream={"source": business_card_url}, include_text_details=include_field_elements, - cls=kwargs.pop("cls", lambda pipeline_response, _, response_headers: self._prebuilt_callback( - pipeline_response, _, response_headers, business_card=True - )), + cls=kwargs.pop("cls", self._prebuilt_callback), polling=True, **kwargs ) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_helpers.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_helpers.py index 49698130e0fa..188f2a7ea14a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_helpers.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_helpers.py @@ -86,18 +86,6 @@ def adjust_text_angle(text_angle): return text_angle -def adjust_page_number(value): - """Adjusts the page number on the business card field - `ContactNames` to be set to the page number value found on `FirstName` - """ - for val in value.value_array: - if val.value_object.get("FirstName", None) and val.value_object.get("LastName", None): - if val.value_object["FirstName"].page == val.value_object["LastName"].page: - page_number = val.value_object["FirstName"].page - val.page = page_number - return value - - def get_authentication_policy(credential): authentication_policy = None if credential is None: 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 f54bebb42034..fde8f1293fcd 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -11,7 +11,6 @@ from ._helpers import ( adjust_value_type, adjust_confidence, - adjust_page_number, get_element ) @@ -36,7 +35,7 @@ def resolve_element(element, read_result): raise ValueError("Failed to parse element reference.") -def get_field_value(field, value, read_result, **kwargs): # pylint: disable=too-many-return-statements +def get_field_value(field, value, read_result): # pylint: disable=too-many-return-statements if value is None: return value if value.type == "string": @@ -52,16 +51,13 @@ def get_field_value(field, value, read_result, **kwargs): # pylint: disable=too if value.type == "time": return value.value_time if value.type == "array": - # business cards pre-built model doesn't return a page number for the `ContactNames` field - if "business_card" in kwargs and field == "ContactNames": - value = adjust_page_number(value) return [ - FormField._from_generated(field, value, read_result, **kwargs) + FormField._from_generated(field, value, read_result) for value in value.value_array ] if value.type == "object": return { - key: FormField._from_generated(key, value, read_result, **kwargs) + key: FormField._from_generated(key, value, read_result) for key, value in value.value_object.items() } if value.type == "selectionMark": @@ -251,12 +247,12 @@ def __init__(self, **kwargs): self.confidence = kwargs.get("confidence", None) @classmethod - def _from_generated(cls, field, value, read_result, **kwargs): + def _from_generated(cls, field, value, read_result): return cls( value_type=adjust_value_type(value.type) if value else None, label_data=None, # not returned with receipt/supervised value_data=FieldData._from_generated(value, read_result), - value=get_field_value(field, value, read_result, **kwargs), + value=get_field_value(field, value, read_result), name=field, confidence=adjust_confidence(value.confidence) if value else None, ) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py index bb2e7d29605a..93dbf2203358 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_response_handlers.py @@ -20,7 +20,7 @@ ) -def prepare_prebuilt_models(response, **kwargs): +def prepare_prebuilt_models(response): prebuilt_models = [] read_result = response.analyze_result.read_results document_result = response.analyze_result.document_results @@ -36,7 +36,7 @@ def prepare_prebuilt_models(response, **kwargs): pages=form_page[page.page_range[0]-1:page.page_range[1]], form_type=page.doc_type, fields={ - key: FormField._from_generated(key, value, read_result, **kwargs) + key: FormField._from_generated(key, value, read_result) for key, value in page.fields.items() } if page.fields else None, form_type_confidence=doc_type_confidence, 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 d4ed15600153..0fe5d6fced55 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 @@ -62,9 +62,9 @@ class FormRecognizerClient(FormRecognizerClientBaseAsync): :caption: Creating the FormRecognizerClient with a token credential. """ - def _prebuilt_callback(self, raw_response, _, headers, **kwargs): # pylint: disable=unused-argument + def _prebuilt_callback(self, raw_response, _, headers): # pylint: disable=unused-argument analyze_result = self._deserialize(self._generated_models.AnalyzeOperationResult, raw_response) - return prepare_prebuilt_models(analyze_result, **kwargs) + return prepare_prebuilt_models(analyze_result) @distributed_trace_async async def begin_recognize_receipts( @@ -250,9 +250,7 @@ async def begin_recognize_business_cards( file_stream=business_card, content_type=content_type, include_text_details=include_field_elements, - cls=kwargs.pop("cls", lambda pipeline_response, _, response_headers: self._prebuilt_callback( - pipeline_response, _, response_headers, business_card=True - )), + cls=kwargs.pop("cls", self._prebuilt_callback), polling=True, **kwargs ) @@ -299,9 +297,7 @@ async def begin_recognize_business_cards_from_url( return await self._client.begin_analyze_business_card_async( # type: ignore file_stream={"source": business_card_url}, include_text_details=include_field_elements, - cls=kwargs.pop("cls", lambda pipeline_response, _, response_headers: self._prebuilt_callback( - pipeline_response, _, response_headers, business_card=True - )), + cls=kwargs.pop("cls", self._prebuilt_callback), polling=True, **kwargs ) From c0003af02485ce303b2b511dcb08c3f9ada8cfae Mon Sep 17 00:00:00 2001 From: Krista Pratico Date: Wed, 11 Nov 2020 15:28:31 -0800 Subject: [PATCH 2/2] remove workaround in tests --- .../azure-ai-formrecognizer/tests/test_business_card.py | 6 +++--- .../tests/test_business_card_async.py | 6 +++--- .../tests/test_business_card_from_url.py | 6 +++--- .../tests/test_business_card_from_url_async.py | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card.py index 72b8fc31a8e5..e7e5a077e0d5 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card.py @@ -140,7 +140,7 @@ def test_business_card_stream_transform_png(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -177,7 +177,7 @@ def test_business_card_stream_transform_jpg(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -215,7 +215,7 @@ def test_business_card_stream_multipage_transform_pdf(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_async.py index 2a6c8b0d66a9..ecb85b55e64c 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_async.py @@ -154,7 +154,7 @@ async def test_business_card_stream_transform_png(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -191,7 +191,7 @@ async def test_business_card_stream_transform_jpg(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -230,7 +230,7 @@ async def test_business_card_stream_multipage_transform_pdf(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url.py index 161f662b9ff2..8c7c9a79ed4f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url.py @@ -80,7 +80,7 @@ def test_business_card_url_transform_png(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -114,7 +114,7 @@ def test_business_card_url_transform_jpg(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -149,7 +149,7 @@ def test_business_card_url_multipage_transform_pdf(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url_async.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url_async.py index 6c4be91bfffc..eb093499311a 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url_async.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_business_card_from_url_async.py @@ -89,7 +89,7 @@ async def test_business_card_url_transform_png(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -124,7 +124,7 @@ async def test_business_card_url_transform_jpg(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card) @@ -160,7 +160,7 @@ async def test_business_card_url_multipage_transform_pdf(self, client): def callback(raw_response, _, headers): analyze_result = client._deserialize(AnalyzeOperationResult, raw_response) - extracted_business_card = prepare_prebuilt_models(analyze_result, business_card=True) + extracted_business_card = prepare_prebuilt_models(analyze_result) responses.append(analyze_result) responses.append(extracted_business_card)