Пример #1
0
    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
            )
Пример #2
0
    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
                )
Пример #3
0
    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)
Пример #4
0
    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)
Пример #6
0
    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)