Skip to content

Commit 16c619e

Browse files
Merge pull request #205 from regulaforensics/fix/SP-22413
SP-22413 - Fix authenticity
2 parents 04c0c1a + da6a23e commit 16c619e

31 files changed

+289
-99
lines changed

.openapi-generator/FILES

+1
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ regula/documentreader/webclient/gen/models/out_data.py
135135
regula/documentreader/webclient/gen/models/out_data_transaction_images_field_value.py
136136
regula/documentreader/webclient/gen/models/p_array_field.py
137137
regula/documentreader/webclient/gen/models/parsed_data.py
138+
regula/documentreader/webclient/gen/models/parsing_error_codes.py
138139
regula/documentreader/webclient/gen/models/parsing_notification_codes.py
139140
regula/documentreader/webclient/gen/models/per_document_config.py
140141
regula/documentreader/webclient/gen/models/photo_ident_item.py

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ with open("australia_passport.jpg", "rb") as f:
3939

4040
with DocumentReaderApi(host='http://localhost:8080') as api:
4141
params = ProcessParams(
42-
scenario=Scenario.FULL_PROCESS,
42+
scenario=Scenario.FULLPROCESS,
4343
result_type_output=[Result.DOCUMENT_IMAGE, Result.STATUS, Result.TEXT, Result.IMAGES]
4444
)
4545
request = RecognitionRequest(process_params=params, images=[input_image])

example/example.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@
6363
# if FULL_PROCESS then auth is None
6464

6565
doc_ir_b900_blank = doc_ir_b900.checks_by_element(SecurityFeatureType.BLANK) \
66-
if doc_authenticity is not None else None
66+
if doc_ir_b900 is not None else None
6767

6868
doc_image_pattern = doc_authenticity.image_pattern_checks \
6969
if doc_authenticity is not None else None
7070

7171
doc_image_pattern_blank = doc_image_pattern.checks_by_element(SecurityFeatureType.BLANK) \
72-
if doc_authenticity is not None else None
72+
if doc_image_pattern is not None else None
7373

7474
# images fields example
7575
document_image = response.images.get_field(GraphicFieldType.DOCUMENT_FRONT).get_value()

regula/documentreader/webclient/ext/models/authenticity/authenticity_check_list.py

+45-15
Original file line numberDiff line numberDiff line change
@@ -14,77 +14,107 @@ class AuthenticityCheckList(GenAuthenticityCheckList):
1414
@property
1515
def uv_luminescence_checks(self) -> Optional[SecurityFeatureChecks]:
1616
result = self.__result_by_type(AuthenticityResultType.UV_LUMINESCENCE)
17-
return SecurityFeatureChecks.from_dict(result.to_dict())
17+
if result:
18+
return SecurityFeatureChecks.from_json(result.to_json())
19+
return None
1820

1921
@property
2022
def ir_b900_checks(self) -> Optional[SecurityFeatureChecks]:
2123
result = self.__result_by_type(AuthenticityResultType.IR_B900)
22-
return SecurityFeatureChecks.from_dict(result.to_dict())
24+
if result:
25+
return SecurityFeatureChecks.from_json(result.to_json())
26+
return None
2327

2428
@property
2529
def image_pattern_checks(self) -> Optional[IdentChecks]:
2630
result = self.__result_by_type(AuthenticityResultType.IMAGE_PATTERN)
27-
return IdentChecks.from_dict(result.to_dict())
31+
if result:
32+
return IdentChecks.from_json(result.to_json())
33+
return None
2834

2935
@property
3036
def axial_protection_checks(self) -> Optional[SecurityFeatureChecks]:
3137
result = self.__result_by_type(AuthenticityResultType.AXIAL_PROTECTION)
32-
return SecurityFeatureChecks.from_dict(result.to_dict())
38+
if result:
39+
return SecurityFeatureChecks.from_json(result.to_json())
40+
return None
3341

3442
@property
3543
def uv_fiber_checks(self) -> Optional[FiberChecks]:
3644
result = self.__result_by_type(AuthenticityResultType.UV_FIBERS)
37-
return FiberChecks.from_dict(result.to_dict())
45+
if result:
46+
return FiberChecks.from_json(result.to_json())
47+
return None
3848

3949
@property
4050
def ir_visibility_checks(self) -> Optional[IdentChecks]:
4151
result = self.__result_by_type(AuthenticityResultType.IR_VISIBILITY)
42-
return IdentChecks.from_dict(result.to_dict())
52+
if result:
53+
return IdentChecks.from_json(result.to_json())
54+
return None
4355

4456
@property
4557
def ocr_security_text_checks(self) -> Optional[OCRSecurityTextChecks]:
4658
result = self.__result_by_type(AuthenticityResultType.OCR_SECURITY_TEXT)
47-
return OCRSecurityTextChecks.from_dict(result.to_dict())
59+
if result:
60+
return OCRSecurityTextChecks.from_json(result.to_json())
61+
return None
4862

4963
@property
5064
def ipi_checks(self) -> Optional[ImageIdentChecks]:
5165
result = self.__result_by_type(AuthenticityResultType.IPI)
52-
return ImageIdentChecks.from_dict(result.to_dict())
66+
if result:
67+
return ImageIdentChecks.from_json(result.to_json())
68+
return None
5369

5470
@property
5571
def embed_image_checks(self) -> Optional[SecurityFeatureChecks]:
5672
result = self.__result_by_type(AuthenticityResultType.PHOTO_EMBED_TYPE)
57-
return SecurityFeatureChecks.from_dict(result.to_dict())
73+
if result:
74+
return SecurityFeatureChecks.from_json(result.to_json())
75+
return None
5876

5977
@property
6078
def holograms_checks(self) -> Optional[SecurityFeatureChecks]:
6179
result = self.__result_by_type(AuthenticityResultType.HOLOGRAMS)
62-
return SecurityFeatureChecks.from_dict(result.to_dict())
80+
if result:
81+
return SecurityFeatureChecks.from_json(result.to_json())
82+
return None
6383

6484
@property
6585
def photo_area_checks(self) -> Optional[SecurityFeatureChecks]:
6686
result = self.__result_by_type(AuthenticityResultType.PHOTO_AREA)
67-
return SecurityFeatureChecks.from_dict(result.to_dict())
87+
if result:
88+
return SecurityFeatureChecks.from_json(result.to_json())
89+
return None
6890

6991
@property
7092
def portrait_comparison_checks(self) -> Optional[IdentChecks]:
7193
result = self.__result_by_type(AuthenticityResultType.PORTRAIT_COMPARISON)
72-
return IdentChecks.from_dict(result.to_dict())
94+
if result:
95+
return IdentChecks.from_json(result.to_json())
96+
return None
7397

7498
@property
7599
def barcode_format_checks(self) -> Optional[SecurityFeatureChecks]:
76100
result = self.__result_by_type(AuthenticityResultType.BARCODE_FORMAT_CHECK)
77-
return SecurityFeatureChecks.from_dict(result.to_dict())
101+
if result:
102+
return SecurityFeatureChecks.from_json(result.to_json())
103+
return None
78104

79105
@property
80106
def kinegram_checks(self) -> Optional[IdentChecks]:
81107
result = self.__result_by_type(AuthenticityResultType.KINEGRAM)
82-
return IdentChecks.from_dict(result.to_dict())
108+
if result:
109+
return IdentChecks.from_json(result.to_json())
110+
return None
83111

84112
@property
85113
def letter_screen_checks(self) -> Optional[IdentChecks]:
86114
result = self.__result_by_type(AuthenticityResultType.LETTER_SCREEN)
87-
return IdentChecks.from_dict(result.to_dict())
115+
if result:
116+
return IdentChecks.from_json(result.to_json())
117+
return None
88118

89119
def __result_by_type(self, authenticity_type: int) -> Optional[AuthenticityCheckResult]:
90120
for result in self.list:
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from typing import List
1+
from typing import List, cast
22

33
from regula.documentreader.webclient.gen.models import FiberResult, AuthenticityCheckResult
44

55

66
class FiberChecks(AuthenticityCheckResult):
77

88
@property
9-
def list(self) -> List[FiberResult]:
10-
# noinspection PyTypeChecker
11-
return super().list
9+
def checks_list(self) -> List[FiberResult]:
10+
fiber_list: List[FiberResult] = cast(List[FiberResult], self.list)
11+
return fiber_list
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
from typing import List
1+
from typing import List, cast
22

33
from regula.documentreader.webclient.gen.models import AuthenticityCheckResult, IdentResult
44

55

66
class IdentChecks(AuthenticityCheckResult):
77

88
@property
9-
def list(self) -> List[IdentResult]:
10-
# noinspection PyTypeChecker
11-
return self.list
9+
def checks_list(self) -> List[IdentResult]:
10+
ident_list: List[IdentResult] = cast(List[IdentResult], self.list)
11+
return ident_list
1212

1313
# element_type is SecurityFeatureType
1414
def checks_by_element(self, element_type: int) -> List[IdentResult]:
15-
return [check for check in self.list if check.element_type == element_type]
15+
return [check for check in self.checks_list if check.element_type == element_type]
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from typing import List
1+
from typing import List, cast
22

33
from regula.documentreader.webclient.gen.models import AuthenticityCheckResult, PhotoIdentResult
44

55

66
class ImageIdentChecks(AuthenticityCheckResult):
77

88
@property
9-
def list(self) -> List[PhotoIdentResult]:
10-
# noinspection PyTypeChecker
11-
return self.list
9+
def checks_list(self) -> List[PhotoIdentResult]:
10+
image_ident_list: List[PhotoIdentResult] = cast(List[PhotoIdentResult], self.list)
11+
return image_ident_list
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from typing import List
1+
from typing import List, cast
22

33
from regula.documentreader.webclient.gen.models import AuthenticityCheckResult, OCRSecurityTextResult
44

55

66
class OCRSecurityTextChecks(AuthenticityCheckResult):
77

88
@property
9-
def list(self) -> List[OCRSecurityTextResult]:
10-
# noinspection PyTypeChecker
11-
return self.list
9+
def checks_list(self) -> List[OCRSecurityTextResult]:
10+
ocr_security_text_list: List[OCRSecurityTextResult] = cast(List[OCRSecurityTextResult], self.list)
11+
return ocr_security_text_list
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
from typing import List, Optional
1+
from typing import List, cast
22

33
from regula.documentreader.webclient.gen.models import AuthenticityCheckResult, SecurityFeatureResult
44

55

66
class SecurityFeatureChecks(AuthenticityCheckResult):
77

88
@property
9-
def list(self) -> List[SecurityFeatureResult]:
10-
# noinspection PyTypeChecker
11-
return self.list
9+
def checks_list(self) -> List[SecurityFeatureResult]:
10+
security_feature_list: List[SecurityFeatureResult] = cast(List[SecurityFeatureResult], self.list)
11+
return security_feature_list
1212

1313
# element_type is SecurityFeatureType
1414
def checks_by_element(self, element_type: int) -> List[SecurityFeatureResult]:
15-
return [check for check in self.list if check.element_type == element_type]
15+
return [check for check in self.checks_list if check.element_type == element_type]

regula/documentreader/webclient/ext/models/images.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ class Images(GenImages):
3333
def get_field(self, field_type: int) -> Optional[ImagesField]:
3434
for field in self.field_list:
3535
if field.field_type == field_type:
36-
return ImagesField.from_dict(field.to_dict())
36+
return ImagesField.from_json(field.to_json())
3737
return None
3838

3939
def get_fields(self, field_type: int) -> List[ImagesField]:
40-
return [ImagesField.from_dict(field.to_dict()) for field in self.field_list if field.field_type == field_type]
40+
return [ImagesField.from_json(field.to_json()) for field in self.field_list if field.field_type == field_type]

regula/documentreader/webclient/ext/models/recognition_response.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def __init__(self, process_response: ProcessResponse):
2020
def text(self) -> Optional[Text]:
2121
result = self.result_by_type(Result.TEXT)
2222
if result:
23-
return Text.from_dict(result.text.to_dict())
23+
return Text.from_json(result.text.to_json())
2424
return None
2525

2626
@property
@@ -34,13 +34,13 @@ def status(self) -> Optional[Status]:
3434
def images(self) -> Optional[Images]:
3535
result = self.result_by_type(Result.IMAGES)
3636
if result:
37-
return Images.from_dict(result.images.to_dict())
37+
return Images.from_json(result.images.to_json())
3838
return None
3939

4040
def authenticity(self, page_idx=0) -> Optional[AuthenticityCheckList]:
4141
result = self.pageable_result_by_type(Result.AUTHENTICITY, page_idx)
4242
if result:
43-
return AuthenticityCheckList.from_dict(result.authenticity_check_list.to_dict())
43+
return AuthenticityCheckList.from_json(result.authenticity_check_list.to_json())
4444
return None
4545

4646
def image_quality_checks(self, page_idx=0) -> Optional[ImageQualityCheckList]:

regula/documentreader/webclient/ext/models/text.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ def get_field(self, field_type: int, lcid: int = None) -> Optional[TextField]:
1111
for field in self.field_list:
1212
if field.field_type == field_type:
1313
if lcid is not None and field.lcid == lcid:
14-
return TextField.from_dict(field.to_dict())
14+
return TextField.from_json(field.to_json())
1515
elif lcid is None and field.lcid == LCID.LATIN:
16-
return TextField.from_dict(field.to_dict())
16+
return TextField.from_json(field.to_json())
1717
elif lcid is None and result is None:
1818
result = field
19-
return TextField.from_dict(result.to_dict())
19+
return TextField.from_json(result.to_json())
2020

2121
def get_field_value(self, field_type: int, lcid: int = None) -> Optional[str]:
2222
field = self.get_field(field_type, lcid)
@@ -27,12 +27,12 @@ def get_field_by_name(self, field_name: str, lcid: int = None) -> Optional[TextF
2727
for field in self.field_list:
2828
if field.field_name == field_name:
2929
if lcid is not None and field.lcid == lcid:
30-
return TextField.from_dict(field.to_dict())
30+
return TextField.from_json(field.to_json())
3131
elif lcid is None and field.lcid == LCID.LATIN:
32-
return TextField.from_dict(field.to_dict())
32+
return TextField.from_json(field.to_json())
3333
elif lcid is None and result is None:
3434
result = field
35-
return TextField.from_dict(result.to_dict())
35+
return TextField.from_json(result.to_json())
3636

3737
def get_field_value_by_name(self, field_name: str, lcid: int = None) -> Optional[str]:
3838
field = self.get_field_by_name(field_name, lcid)

regula/documentreader/webclient/gen/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
from regula.documentreader.webclient.gen.models.out_data_transaction_images_field_value import OutDataTransactionImagesFieldValue
151151
from regula.documentreader.webclient.gen.models.p_array_field import PArrayField
152152
from regula.documentreader.webclient.gen.models.parsed_data import ParsedData
153+
from regula.documentreader.webclient.gen.models.parsing_error_codes import ParsingErrorCodes
153154
from regula.documentreader.webclient.gen.models.parsing_notification_codes import ParsingNotificationCodes
154155
from regula.documentreader.webclient.gen.models.per_document_config import PerDocumentConfig
155156
from regula.documentreader.webclient.gen.models.photo_ident_item import PhotoIdentItem

regula/documentreader/webclient/gen/models/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@
131131
from regula.documentreader.webclient.gen.models.out_data_transaction_images_field_value import OutDataTransactionImagesFieldValue
132132
from regula.documentreader.webclient.gen.models.p_array_field import PArrayField
133133
from regula.documentreader.webclient.gen.models.parsed_data import ParsedData
134+
from regula.documentreader.webclient.gen.models.parsing_error_codes import ParsingErrorCodes
134135
from regula.documentreader.webclient.gen.models.parsing_notification_codes import ParsingNotificationCodes
135136
from regula.documentreader.webclient.gen.models.per_document_config import PerDocumentConfig
136137
from regula.documentreader.webclient.gen.models.photo_ident_item import PhotoIdentItem

0 commit comments

Comments
 (0)