def assertFormFieldTransformCorrect(self, receipt_field, actual_field, read_results=None): if actual_field is None: return field_type = actual_field.type self.assertEqual(adjust_value_type(field_type), receipt_field.value_type) if field_type == "string": self.assertEqual(receipt_field.value, actual_field.value_string) if field_type == "number": self.assertEqual(receipt_field.value, actual_field.value_number) if field_type == "integer": self.assertEqual(receipt_field.value, actual_field.value_integer) if field_type == "date": self.assertEqual(receipt_field.value, actual_field.value_date) if field_type == "phoneNumber": self.assertEqual(receipt_field.value, actual_field.value_phone_number) if field_type == "time": self.assertEqual(receipt_field.value, actual_field.value_time) self.assertBoundingBoxTransformCorrect(receipt_field.value_data.bounding_box, actual_field.bounding_box) self.assertEqual(receipt_field.value_data.text, actual_field.text) self.assertEqual(receipt_field.confidence, actual_field.confidence if actual_field.confidence is not None else 1.0) if read_results: self.assertFieldElementsTransFormCorrect( receipt_field.value_data.field_elements, actual_field.elements, read_results )
def assertLabeledFormFieldDictTransformCorrect(self, form_fields, actual_fields, read_results=None): if actual_fields is None: return b = form_fields for label, a in actual_fields.items(): self.assertEqual(label, b[label].name) self.assertEqual(a.confidence, b[label].confidence if a.confidence is not None else 1.0) self.assertBoundingBoxTransformCorrect(b[label].value_data.bounding_box, a.bounding_box) self.assertEqual(a.text, b[label].value_data.text) field_type = a.type self.assertEqual(adjust_value_type(field_type), b[label].value_type) if field_type == "string": self.assertEqual(b[label].value, a.value_string) if field_type == "number": self.assertEqual(b[label].value, a.value_number) if field_type == "integer": self.assertEqual(b[label].value, a.value_integer) if field_type == "date": self.assertEqual(b[label].value, a.value_date) if field_type == "phoneNumber": self.assertEqual(b[label].value, a.value_phone_number) if field_type == "time": self.assertEqual(b[label].value, a.value_time) if read_results: self.assertFieldElementsTransFormCorrect( b[label].value_data.field_elements, a.elements, read_results )
def assertDocumentFieldsTransformCorrect(self, document_fields, generated_fields): if generated_fields is None: return for label, expected in generated_fields.items(): if expected is None: # None value occurs with labeled tables and empty cells continue field_type = expected.type assert adjust_value_type( field_type) == document_fields[label].value_type assert expected.confidence == document_fields[label].confidence # In the case of content for a signature type field we get '' in expected.content # vs. None for document_fields[label].content assert (expected.content == document_fields[label].content) or ( expected.content == '' and not document_fields[label].content) self.assertDocumentFieldValueTransformCorrect( document_fields[label], expected) for span, expected_span in zip(document_fields[label].spans or [], expected.spans or []): self.assertSpanTransformCorrect(span, expected_span) self.assertBoundingRegionsTransformCorrect( document_fields[label].bounding_regions, expected.bounding_regions)
def assertFormFieldsTransformCorrect(self, form_fields, generated_fields, read_results=None): if generated_fields is None: return for label, expected in generated_fields.items(): field_type = expected.type self.assertEqual(adjust_value_type(field_type), form_fields[label].value_type) self.assertEqual(label, form_fields[label].name) self.assertEqual(adjust_confidence(expected.confidence), form_fields[label].confidence) self.assertFormFieldValueTransformCorrect(form_fields[label], expected, read_results)
def assertFormFieldsTransformCorrect(self, form_fields, generated_fields, read_results=None): if generated_fields is None: return for label, expected in generated_fields.items(): if expected is None: # None value occurs with labeled tables and empty cells continue field_type = expected.type self.assertEqual(adjust_value_type(field_type), form_fields[label].value_type) self.assertEqual(label, form_fields[label].name) self.assertEqual(adjust_confidence(expected.confidence), form_fields[label].confidence) self.assertFormFieldValueTransformCorrect(form_fields[label], expected, read_results)
def _assertFormFieldTransformCorrectHelper(self, receipt_field, actual_field, read_results=None): field_type = actual_field.type self.assertEqual(adjust_value_type(field_type), receipt_field.value_type) if field_type == "string": self.assertEqual(receipt_field.value, actual_field.value_string) elif field_type == "number": self.assertEqual(receipt_field.value, actual_field.value_number) elif field_type == "integer": self.assertEqual(receipt_field.value, actual_field.value_integer) elif field_type == "date": self.assertEqual(receipt_field.value, actual_field.value_date) elif field_type == "phoneNumber": self.assertEqual(receipt_field.value, actual_field.value_phone_number) elif field_type == "time": self.assertEqual(receipt_field.value, actual_field.value_time) elif field_type == "object": self.assertLabeledFormFieldDictTransformCorrect( receipt_field.value, actual_field.value_object) else: raise ValueError('field type {} not valid'.format(field_type)) self.assertBoundingBoxTransformCorrect( receipt_field.value_data.bounding_box, actual_field.bounding_box) self.assertEqual(receipt_field.value_data.text, actual_field.text) self.assertEqual( receipt_field.confidence, actual_field.confidence if actual_field.confidence is not None else 1.0) if read_results: self.assertFieldElementsTransFormCorrect( receipt_field.value_data.field_elements, actual_field.elements, read_results)