Skip to content

Commit

Permalink
image qa result type
Browse files Browse the repository at this point in the history
Co-authored-by: Hleb Albau <[email protected]>
  • Loading branch information
dangost and hleb-albau authored Mar 31, 2021
1 parent ef3ff15 commit 9398edb
Show file tree
Hide file tree
Showing 15 changed files with 1,340 additions and 91 deletions.
7 changes: 7 additions & 0 deletions .openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ regula/documentreader/webclient/gen/api_client.py
regula/documentreader/webclient/gen/configuration.py
regula/documentreader/webclient/gen/exceptions.py
regula/documentreader/webclient/gen/models/__init__.py
regula/documentreader/webclient/gen/models/area_array.py
regula/documentreader/webclient/gen/models/area_container.py
regula/documentreader/webclient/gen/models/authenticity_check_list.py
regula/documentreader/webclient/gen/models/authenticity_check_result_item.py
Expand Down Expand Up @@ -48,6 +49,11 @@ regula/documentreader/webclient/gen/models/ident_result.py
regula/documentreader/webclient/gen/models/ident_result_all_of.py
regula/documentreader/webclient/gen/models/image_data.py
regula/documentreader/webclient/gen/models/image_qa.py
regula/documentreader/webclient/gen/models/image_quality_check.py
regula/documentreader/webclient/gen/models/image_quality_check_list.py
regula/documentreader/webclient/gen/models/image_quality_check_type.py
regula/documentreader/webclient/gen/models/image_quality_result.py
regula/documentreader/webclient/gen/models/image_quality_result_all_of.py
regula/documentreader/webclient/gen/models/images.py
regula/documentreader/webclient/gen/models/images_available_source.py
regula/documentreader/webclient/gen/models/images_field.py
Expand All @@ -67,6 +73,7 @@ regula/documentreader/webclient/gen/models/original_symbol.py
regula/documentreader/webclient/gen/models/photo_ident_result.py
regula/documentreader/webclient/gen/models/photo_ident_result_all_of.py
regula/documentreader/webclient/gen/models/point.py
regula/documentreader/webclient/gen/models/point_array.py
regula/documentreader/webclient/gen/models/points_container.py
regula/documentreader/webclient/gen/models/process_params.py
regula/documentreader/webclient/gen/models/process_request.py
Expand Down
192 changes: 117 additions & 75 deletions Pipfile.lock

Large diffs are not rendered by default.

22 changes: 15 additions & 7 deletions example/example.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@
api.license = regula_license

params = ProcessParams(
scenario=Scenario.FULL_AUTH,
scenario=Scenario.FULL_PROCESS,
result_type_output=[
# actual results
Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES,
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES,
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES, Result.IMAGE_QUALITY,
# legacy results
Result.MRZ_TEXT, Result.VISUAL_TEXT, Result.BARCODE_TEXT, Result.RFID_TEXT,
Result.VISUAL_GRAPHICS, Result.BARCODE_GRAPHICS, Result.RFID_GRAPHICS,
Expand Down Expand Up @@ -56,13 +56,20 @@
doc_number_mrz_validity = doc_number_field.source_validity(Source.MRZ)
doc_number_mrz_visual_matching = doc_number_field.cross_source_comparison(Source.MRZ, Source.VISUAL)

doc_authenticity = response.authenticity
doc_authenticity = response.authenticity()

doc_ir_b900 = doc_authenticity.ir_b900_checks
doc_ir_b900_blank = doc_ir_b900.checks_by_element(SecurityFeatureType.BLANK)
doc_ir_b900 = doc_authenticity.ir_b900_checks \
if doc_authenticity is not None else None
# if FULL_PROCESS then auth is None

doc_image_pattern = doc_authenticity.image_pattern_checks
doc_image_pattern_blank = doc_image_pattern.checks_by_element(SecurityFeatureType.BLANK)
doc_ir_b900_blank = doc_ir_b900.checks_by_element(SecurityFeatureType.BLANK) \
if doc_authenticity is not None else None

doc_image_pattern = doc_authenticity.image_pattern_checks \
if doc_authenticity is not None else None

doc_image_pattern_blank = doc_image_pattern.checks_by_element(SecurityFeatureType.BLANK) \
if doc_authenticity is not None else None

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

doc_image_quality = response.image_quality_checks()
print("""
---------------------------------------------------------------------------
Document Overall Status: {doc_overall_status}
Expand Down
27 changes: 19 additions & 8 deletions regula/documentreader/webclient/ext/models/recognition_response.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import Optional, List

from regula.documentreader.webclient import ImageQualityCheckList
from regula.documentreader.webclient.ext.models.authenticity.authenticity_check_list import AuthenticityCheckList
from regula.documentreader.webclient.ext.models.images import Images
from regula.documentreader.webclient.ext.models.text import Text
Expand Down Expand Up @@ -35,17 +35,28 @@ def images(self) -> Optional[Images]:
return result.images
return None

@property
def authenticity(self) -> Optional[AuthenticityCheckList]:
result = self.result_by_type(Result.AUTHENTICITY)
def authenticity(self, page_idx=0) -> Optional[AuthenticityCheckList]:
result = self.pageable_result_by_type(Result.AUTHENTICITY, page_idx)
if result:
return result.authenticity_check_list
return None

def result_by_type(self, result_type) -> Optional[ResultItem]:
for i in self.low_lvl_response.container_list.list:
if i.result_type == result_type:
return i
def image_quality_checks(self, page_idx=0) -> Optional[ImageQualityCheckList]:
result = self.pageable_result_by_type(Result.IMAGE_QUALITY, page_idx)
return result.image_quality_check_list if result is not None else None

def pageable_result_by_type(self, result_type: int, page_idx: int) -> Optional[ResultItem]:
container_list = self.low_lvl_response.container_list.list
for response in container_list:
if response.result_type == result_type and response.page_idx == page_idx:
return response
return None

def result_by_type(self, result_type: int) -> Optional[ResultItem]:
container_list = self.low_lvl_response.container_list.list
for response in container_list:
if response.result_type == result_type:
return response
return None

def results_by_type(self, result_type) -> List[ResultItem]:
Expand Down
7 changes: 7 additions & 0 deletions regula/documentreader/webclient/gen/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from regula.documentreader.webclient.gen.exceptions import ApiAttributeError
from regula.documentreader.webclient.gen.exceptions import ApiException
# import models into sdk package
from regula.documentreader.webclient.gen.models.area_array import AreaArray
from regula.documentreader.webclient.gen.models.area_container import AreaContainer
from regula.documentreader.webclient.gen.models.authenticity_check_list import AuthenticityCheckList
from regula.documentreader.webclient.gen.models.authenticity_check_result import AuthenticityCheckResult
Expand Down Expand Up @@ -66,6 +67,11 @@
from regula.documentreader.webclient.gen.models.ident_result_all_of import IdentResultAllOf
from regula.documentreader.webclient.gen.models.image_data import ImageData
from regula.documentreader.webclient.gen.models.image_qa import ImageQA
from regula.documentreader.webclient.gen.models.image_quality_check import ImageQualityCheck
from regula.documentreader.webclient.gen.models.image_quality_check_list import ImageQualityCheckList
from regula.documentreader.webclient.gen.models.image_quality_check_type import ImageQualityCheckType
from regula.documentreader.webclient.gen.models.image_quality_result import ImageQualityResult
from regula.documentreader.webclient.gen.models.image_quality_result_all_of import ImageQualityResultAllOf
from regula.documentreader.webclient.gen.models.images import Images
from regula.documentreader.webclient.gen.models.images_available_source import ImagesAvailableSource
from regula.documentreader.webclient.gen.models.images_field import ImagesField
Expand All @@ -85,6 +91,7 @@
from regula.documentreader.webclient.gen.models.photo_ident_result import PhotoIdentResult
from regula.documentreader.webclient.gen.models.photo_ident_result_all_of import PhotoIdentResultAllOf
from regula.documentreader.webclient.gen.models.point import Point
from regula.documentreader.webclient.gen.models.point_array import PointArray
from regula.documentreader.webclient.gen.models.points_container import PointsContainer
from regula.documentreader.webclient.gen.models.process_params import ProcessParams
from regula.documentreader.webclient.gen.models.process_request import ProcessRequest
Expand Down
7 changes: 7 additions & 0 deletions regula/documentreader/webclient/gen/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from __future__ import absolute_import

# import models into model package
from regula.documentreader.webclient.gen.models.area_array import AreaArray
from regula.documentreader.webclient.gen.models.area_container import AreaContainer
from regula.documentreader.webclient.gen.models.authenticity_check_list import AuthenticityCheckList
from regula.documentreader.webclient.gen.models.authenticity_check_result import AuthenticityCheckResult
Expand Down Expand Up @@ -50,6 +51,11 @@
from regula.documentreader.webclient.gen.models.ident_result_all_of import IdentResultAllOf
from regula.documentreader.webclient.gen.models.image_data import ImageData
from regula.documentreader.webclient.gen.models.image_qa import ImageQA
from regula.documentreader.webclient.gen.models.image_quality_check import ImageQualityCheck
from regula.documentreader.webclient.gen.models.image_quality_check_list import ImageQualityCheckList
from regula.documentreader.webclient.gen.models.image_quality_check_type import ImageQualityCheckType
from regula.documentreader.webclient.gen.models.image_quality_result import ImageQualityResult
from regula.documentreader.webclient.gen.models.image_quality_result_all_of import ImageQualityResultAllOf
from regula.documentreader.webclient.gen.models.images import Images
from regula.documentreader.webclient.gen.models.images_available_source import ImagesAvailableSource
from regula.documentreader.webclient.gen.models.images_field import ImagesField
Expand All @@ -69,6 +75,7 @@
from regula.documentreader.webclient.gen.models.photo_ident_result import PhotoIdentResult
from regula.documentreader.webclient.gen.models.photo_ident_result_all_of import PhotoIdentResultAllOf
from regula.documentreader.webclient.gen.models.point import Point
from regula.documentreader.webclient.gen.models.point_array import PointArray
from regula.documentreader.webclient.gen.models.points_container import PointsContainer
from regula.documentreader.webclient.gen.models.process_params import ProcessParams
from regula.documentreader.webclient.gen.models.process_request import ProcessRequest
Expand Down
145 changes: 145 additions & 0 deletions regula/documentreader/webclient/gen/models/area_array.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# coding: utf-8

"""
Generated by: https://openapi-generator.tech
"""

import pprint
import re # noqa: F401

import six

from regula.documentreader.webclient.gen.configuration import Configuration
# this line was added to enable pycharm type hinting
from regula.documentreader.webclient.gen.models import *


"""
"""
class AreaArray(object):
"""NOTE: This class is auto generated by OpenAPI Generator.
Ref: https://openapi-generator.tech
Do not edit the class manually.
"""

"""
Attributes:
openapi_types (dict): The key is attribute name
and the value is attribute type.
attribute_map (dict): The key is attribute name
and the value is json key in definition.
"""
openapi_types = {
'list': 'list[RectangleCoordinates]',
'points': 'PointArray'
}

attribute_map = {
'list': 'List',
'points': 'Points'
}

def __init__(self, list=None, points=None, local_vars_configuration=None): # noqa: E501
"""AreaArray - a model defined in OpenAPI""" # noqa: E501
if local_vars_configuration is None:
local_vars_configuration = Configuration()
self.local_vars_configuration = local_vars_configuration

self._list = None
self._points = None
self.discriminator = None

if list is not None:
self.list = list
if points is not None:
self.points = points

@property
def list(self):
"""Gets the list of this AreaArray. # noqa: E501
:return: The list of this AreaArray. # noqa: E501
:rtype: list[RectangleCoordinates]
"""
return self._list

@list.setter
def list(self, list):
"""Sets the list of this AreaArray.
:param list: The list of this AreaArray. # noqa: E501
:type list: list[RectangleCoordinates]
"""

self._list = list

@property
def points(self):
"""Gets the points of this AreaArray. # noqa: E501
:return: The points of this AreaArray. # noqa: E501
:rtype: PointArray
"""
return self._points

@points.setter
def points(self, points):
"""Sets the points of this AreaArray.
:param points: The points of this AreaArray. # noqa: E501
:type points: PointArray
"""

self._points = points

def to_dict(self):
"""Returns the model properties as a dict"""
result = {}

for attr, _ in six.iteritems(self.openapi_types):
value = getattr(self, attr)
if isinstance(value, list):
result[attr] = list(map(
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
value
))
elif hasattr(value, "to_dict"):
result[attr] = value.to_dict()
elif isinstance(value, dict):
result[attr] = dict(map(
lambda item: (item[0], item[1].to_dict())
if hasattr(item[1], "to_dict") else item,
value.items()
))
else:
result[attr] = value

return result

def to_str(self):
"""Returns the string representation of the model"""
return pprint.pformat(self.to_dict())

def __repr__(self):
"""For `print` and `pprint`"""
return self.to_str()

def __eq__(self, other):
"""Returns true if both objects are equal"""
if not isinstance(other, AreaArray):
return False

return self.to_dict() == other.to_dict()

def __ne__(self, other):
"""Returns true if both objects are not equal"""
if not isinstance(other, AreaArray):
return True

return self.to_dict() != other.to_dict()
Loading

0 comments on commit 9398edb

Please sign in to comment.