Skip to content

Commit 9398edb

Browse files
dangosthleb-albau
andauthored
image qa result type
Co-authored-by: Hleb Albau <hleb.albau@gmail.com>
1 parent ef3ff15 commit 9398edb

File tree

15 files changed

+1340
-91
lines changed

15 files changed

+1340
-91
lines changed

.openapi-generator/FILES

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ regula/documentreader/webclient/gen/api_client.py
88
regula/documentreader/webclient/gen/configuration.py
99
regula/documentreader/webclient/gen/exceptions.py
1010
regula/documentreader/webclient/gen/models/__init__.py
11+
regula/documentreader/webclient/gen/models/area_array.py
1112
regula/documentreader/webclient/gen/models/area_container.py
1213
regula/documentreader/webclient/gen/models/authenticity_check_list.py
1314
regula/documentreader/webclient/gen/models/authenticity_check_result_item.py
@@ -48,6 +49,11 @@ regula/documentreader/webclient/gen/models/ident_result.py
4849
regula/documentreader/webclient/gen/models/ident_result_all_of.py
4950
regula/documentreader/webclient/gen/models/image_data.py
5051
regula/documentreader/webclient/gen/models/image_qa.py
52+
regula/documentreader/webclient/gen/models/image_quality_check.py
53+
regula/documentreader/webclient/gen/models/image_quality_check_list.py
54+
regula/documentreader/webclient/gen/models/image_quality_check_type.py
55+
regula/documentreader/webclient/gen/models/image_quality_result.py
56+
regula/documentreader/webclient/gen/models/image_quality_result_all_of.py
5157
regula/documentreader/webclient/gen/models/images.py
5258
regula/documentreader/webclient/gen/models/images_available_source.py
5359
regula/documentreader/webclient/gen/models/images_field.py
@@ -67,6 +73,7 @@ regula/documentreader/webclient/gen/models/original_symbol.py
6773
regula/documentreader/webclient/gen/models/photo_ident_result.py
6874
regula/documentreader/webclient/gen/models/photo_ident_result_all_of.py
6975
regula/documentreader/webclient/gen/models/point.py
76+
regula/documentreader/webclient/gen/models/point_array.py
7077
regula/documentreader/webclient/gen/models/points_container.py
7178
regula/documentreader/webclient/gen/models/process_params.py
7279
regula/documentreader/webclient/gen/models/process_request.py

Pipfile.lock

Lines changed: 117 additions & 75 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/example.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
api.license = regula_license
2525

2626
params = ProcessParams(
27-
scenario=Scenario.FULL_AUTH,
27+
scenario=Scenario.FULL_PROCESS,
2828
result_type_output=[
2929
# actual results
3030
Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES,
31-
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES,
31+
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES, Result.IMAGE_QUALITY,
3232
# legacy results
3333
Result.MRZ_TEXT, Result.VISUAL_TEXT, Result.BARCODE_TEXT, Result.RFID_TEXT,
3434
Result.VISUAL_GRAPHICS, Result.BARCODE_GRAPHICS, Result.RFID_GRAPHICS,
@@ -56,13 +56,20 @@
5656
doc_number_mrz_validity = doc_number_field.source_validity(Source.MRZ)
5757
doc_number_mrz_visual_matching = doc_number_field.cross_source_comparison(Source.MRZ, Source.VISUAL)
5858

59-
doc_authenticity = response.authenticity
59+
doc_authenticity = response.authenticity()
6060

61-
doc_ir_b900 = doc_authenticity.ir_b900_checks
62-
doc_ir_b900_blank = doc_ir_b900.checks_by_element(SecurityFeatureType.BLANK)
61+
doc_ir_b900 = doc_authenticity.ir_b900_checks \
62+
if doc_authenticity is not None else None
63+
# if FULL_PROCESS then auth is None
6364

64-
doc_image_pattern = doc_authenticity.image_pattern_checks
65-
doc_image_pattern_blank = doc_image_pattern.checks_by_element(SecurityFeatureType.BLANK)
65+
doc_ir_b900_blank = doc_ir_b900.checks_by_element(SecurityFeatureType.BLANK) \
66+
if doc_authenticity is not None else None
67+
68+
doc_image_pattern = doc_authenticity.image_pattern_checks \
69+
if doc_authenticity is not None else None
70+
71+
doc_image_pattern_blank = doc_image_pattern.checks_by_element(SecurityFeatureType.BLANK) \
72+
if doc_authenticity is not None else None
6673

6774
# images fields example
6875
document_image = response.images.get_field(GraphicFieldType.DOCUMENT_FRONT).get_value()
@@ -72,6 +79,7 @@
7279
with open('document-image.jpg', 'wb') as f:
7380
f.write(document_image)
7481

82+
doc_image_quality = response.image_quality_checks()
7583
print("""
7684
---------------------------------------------------------------------------
7785
Document Overall Status: {doc_overall_status}

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

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from typing import Optional, List
2-
2+
from regula.documentreader.webclient import ImageQualityCheckList
33
from regula.documentreader.webclient.ext.models.authenticity.authenticity_check_list import AuthenticityCheckList
44
from regula.documentreader.webclient.ext.models.images import Images
55
from regula.documentreader.webclient.ext.models.text import Text
@@ -35,17 +35,28 @@ def images(self) -> Optional[Images]:
3535
return result.images
3636
return None
3737

38-
@property
39-
def authenticity(self) -> Optional[AuthenticityCheckList]:
40-
result = self.result_by_type(Result.AUTHENTICITY)
38+
def authenticity(self, page_idx=0) -> Optional[AuthenticityCheckList]:
39+
result = self.pageable_result_by_type(Result.AUTHENTICITY, page_idx)
4140
if result:
4241
return result.authenticity_check_list
4342
return None
4443

45-
def result_by_type(self, result_type) -> Optional[ResultItem]:
46-
for i in self.low_lvl_response.container_list.list:
47-
if i.result_type == result_type:
48-
return i
44+
def image_quality_checks(self, page_idx=0) -> Optional[ImageQualityCheckList]:
45+
result = self.pageable_result_by_type(Result.IMAGE_QUALITY, page_idx)
46+
return result.image_quality_check_list if result is not None else None
47+
48+
def pageable_result_by_type(self, result_type: int, page_idx: int) -> Optional[ResultItem]:
49+
container_list = self.low_lvl_response.container_list.list
50+
for response in container_list:
51+
if response.result_type == result_type and response.page_idx == page_idx:
52+
return response
53+
return None
54+
55+
def result_by_type(self, result_type: int) -> Optional[ResultItem]:
56+
container_list = self.low_lvl_response.container_list.list
57+
for response in container_list:
58+
if response.result_type == result_type:
59+
return response
4960
return None
5061

5162
def results_by_type(self, result_type) -> List[ResultItem]:

regula/documentreader/webclient/gen/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from regula.documentreader.webclient.gen.exceptions import ApiAttributeError
2525
from regula.documentreader.webclient.gen.exceptions import ApiException
2626
# import models into sdk package
27+
from regula.documentreader.webclient.gen.models.area_array import AreaArray
2728
from regula.documentreader.webclient.gen.models.area_container import AreaContainer
2829
from regula.documentreader.webclient.gen.models.authenticity_check_list import AuthenticityCheckList
2930
from regula.documentreader.webclient.gen.models.authenticity_check_result import AuthenticityCheckResult
@@ -66,6 +67,11 @@
6667
from regula.documentreader.webclient.gen.models.ident_result_all_of import IdentResultAllOf
6768
from regula.documentreader.webclient.gen.models.image_data import ImageData
6869
from regula.documentreader.webclient.gen.models.image_qa import ImageQA
70+
from regula.documentreader.webclient.gen.models.image_quality_check import ImageQualityCheck
71+
from regula.documentreader.webclient.gen.models.image_quality_check_list import ImageQualityCheckList
72+
from regula.documentreader.webclient.gen.models.image_quality_check_type import ImageQualityCheckType
73+
from regula.documentreader.webclient.gen.models.image_quality_result import ImageQualityResult
74+
from regula.documentreader.webclient.gen.models.image_quality_result_all_of import ImageQualityResultAllOf
6975
from regula.documentreader.webclient.gen.models.images import Images
7076
from regula.documentreader.webclient.gen.models.images_available_source import ImagesAvailableSource
7177
from regula.documentreader.webclient.gen.models.images_field import ImagesField
@@ -85,6 +91,7 @@
8591
from regula.documentreader.webclient.gen.models.photo_ident_result import PhotoIdentResult
8692
from regula.documentreader.webclient.gen.models.photo_ident_result_all_of import PhotoIdentResultAllOf
8793
from regula.documentreader.webclient.gen.models.point import Point
94+
from regula.documentreader.webclient.gen.models.point_array import PointArray
8895
from regula.documentreader.webclient.gen.models.points_container import PointsContainer
8996
from regula.documentreader.webclient.gen.models.process_params import ProcessParams
9097
from regula.documentreader.webclient.gen.models.process_request import ProcessRequest

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from __future__ import absolute_import
99

1010
# import models into model package
11+
from regula.documentreader.webclient.gen.models.area_array import AreaArray
1112
from regula.documentreader.webclient.gen.models.area_container import AreaContainer
1213
from regula.documentreader.webclient.gen.models.authenticity_check_list import AuthenticityCheckList
1314
from regula.documentreader.webclient.gen.models.authenticity_check_result import AuthenticityCheckResult
@@ -50,6 +51,11 @@
5051
from regula.documentreader.webclient.gen.models.ident_result_all_of import IdentResultAllOf
5152
from regula.documentreader.webclient.gen.models.image_data import ImageData
5253
from regula.documentreader.webclient.gen.models.image_qa import ImageQA
54+
from regula.documentreader.webclient.gen.models.image_quality_check import ImageQualityCheck
55+
from regula.documentreader.webclient.gen.models.image_quality_check_list import ImageQualityCheckList
56+
from regula.documentreader.webclient.gen.models.image_quality_check_type import ImageQualityCheckType
57+
from regula.documentreader.webclient.gen.models.image_quality_result import ImageQualityResult
58+
from regula.documentreader.webclient.gen.models.image_quality_result_all_of import ImageQualityResultAllOf
5359
from regula.documentreader.webclient.gen.models.images import Images
5460
from regula.documentreader.webclient.gen.models.images_available_source import ImagesAvailableSource
5561
from regula.documentreader.webclient.gen.models.images_field import ImagesField
@@ -69,6 +75,7 @@
6975
from regula.documentreader.webclient.gen.models.photo_ident_result import PhotoIdentResult
7076
from regula.documentreader.webclient.gen.models.photo_ident_result_all_of import PhotoIdentResultAllOf
7177
from regula.documentreader.webclient.gen.models.point import Point
78+
from regula.documentreader.webclient.gen.models.point_array import PointArray
7279
from regula.documentreader.webclient.gen.models.points_container import PointsContainer
7380
from regula.documentreader.webclient.gen.models.process_params import ProcessParams
7481
from regula.documentreader.webclient.gen.models.process_request import ProcessRequest
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# coding: utf-8
2+
3+
"""
4+
Generated by: https://openapi-generator.tech
5+
"""
6+
7+
import pprint
8+
import re # noqa: F401
9+
10+
import six
11+
12+
from regula.documentreader.webclient.gen.configuration import Configuration
13+
# this line was added to enable pycharm type hinting
14+
from regula.documentreader.webclient.gen.models import *
15+
16+
17+
"""
18+
19+
"""
20+
class AreaArray(object):
21+
"""NOTE: This class is auto generated by OpenAPI Generator.
22+
Ref: https://openapi-generator.tech
23+
24+
Do not edit the class manually.
25+
"""
26+
27+
"""
28+
Attributes:
29+
openapi_types (dict): The key is attribute name
30+
and the value is attribute type.
31+
attribute_map (dict): The key is attribute name
32+
and the value is json key in definition.
33+
"""
34+
openapi_types = {
35+
'list': 'list[RectangleCoordinates]',
36+
'points': 'PointArray'
37+
}
38+
39+
attribute_map = {
40+
'list': 'List',
41+
'points': 'Points'
42+
}
43+
44+
def __init__(self, list=None, points=None, local_vars_configuration=None): # noqa: E501
45+
"""AreaArray - a model defined in OpenAPI""" # noqa: E501
46+
if local_vars_configuration is None:
47+
local_vars_configuration = Configuration()
48+
self.local_vars_configuration = local_vars_configuration
49+
50+
self._list = None
51+
self._points = None
52+
self.discriminator = None
53+
54+
if list is not None:
55+
self.list = list
56+
if points is not None:
57+
self.points = points
58+
59+
@property
60+
def list(self):
61+
"""Gets the list of this AreaArray. # noqa: E501
62+
63+
64+
:return: The list of this AreaArray. # noqa: E501
65+
:rtype: list[RectangleCoordinates]
66+
"""
67+
return self._list
68+
69+
@list.setter
70+
def list(self, list):
71+
"""Sets the list of this AreaArray.
72+
73+
74+
:param list: The list of this AreaArray. # noqa: E501
75+
:type list: list[RectangleCoordinates]
76+
"""
77+
78+
self._list = list
79+
80+
@property
81+
def points(self):
82+
"""Gets the points of this AreaArray. # noqa: E501
83+
84+
85+
:return: The points of this AreaArray. # noqa: E501
86+
:rtype: PointArray
87+
"""
88+
return self._points
89+
90+
@points.setter
91+
def points(self, points):
92+
"""Sets the points of this AreaArray.
93+
94+
95+
:param points: The points of this AreaArray. # noqa: E501
96+
:type points: PointArray
97+
"""
98+
99+
self._points = points
100+
101+
def to_dict(self):
102+
"""Returns the model properties as a dict"""
103+
result = {}
104+
105+
for attr, _ in six.iteritems(self.openapi_types):
106+
value = getattr(self, attr)
107+
if isinstance(value, list):
108+
result[attr] = list(map(
109+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
110+
value
111+
))
112+
elif hasattr(value, "to_dict"):
113+
result[attr] = value.to_dict()
114+
elif isinstance(value, dict):
115+
result[attr] = dict(map(
116+
lambda item: (item[0], item[1].to_dict())
117+
if hasattr(item[1], "to_dict") else item,
118+
value.items()
119+
))
120+
else:
121+
result[attr] = value
122+
123+
return result
124+
125+
def to_str(self):
126+
"""Returns the string representation of the model"""
127+
return pprint.pformat(self.to_dict())
128+
129+
def __repr__(self):
130+
"""For `print` and `pprint`"""
131+
return self.to_str()
132+
133+
def __eq__(self, other):
134+
"""Returns true if both objects are equal"""
135+
if not isinstance(other, AreaArray):
136+
return False
137+
138+
return self.to_dict() == other.to_dict()
139+
140+
def __ne__(self, other):
141+
"""Returns true if both objects are not equal"""
142+
if not isinstance(other, AreaArray):
143+
return True
144+
145+
return self.to_dict() != other.to_dict()

0 commit comments

Comments
 (0)