Skip to content

Commit 83e53ce

Browse files
Merge pull request #58 from regulaforensics/BE-331-containerList-example
[BE-331] Add external models, container_list example
2 parents 64d09e6 + 5f94cad commit 83e53ce

File tree

14 files changed

+959
-12
lines changed

14 files changed

+959
-12
lines changed

.openapi-generator/FILES

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ regula/documentreader/webclient/gen/models/document_types_candidates.py
4040
regula/documentreader/webclient/gen/models/document_types_candidates_list.py
4141
regula/documentreader/webclient/gen/models/document_types_candidates_result.py
4242
regula/documentreader/webclient/gen/models/document_types_candidates_result_all_of.py
43+
regula/documentreader/webclient/gen/models/encrypted_rcl_result.py
44+
regula/documentreader/webclient/gen/models/encrypted_rcl_result_all_of.py
4345
regula/documentreader/webclient/gen/models/fdsid_list.py
4446
regula/documentreader/webclient/gen/models/fiber_result.py
4547
regula/documentreader/webclient/gen/models/fiber_result_all_of.py
@@ -66,6 +68,8 @@ regula/documentreader/webclient/gen/models/images_result_all_of.py
6668
regula/documentreader/webclient/gen/models/lcid.py
6769
regula/documentreader/webclient/gen/models/lexical_analysis_result.py
6870
regula/documentreader/webclient/gen/models/lexical_analysis_result_all_of.py
71+
regula/documentreader/webclient/gen/models/license_result.py
72+
regula/documentreader/webclient/gen/models/license_result_all_of.py
6973
regula/documentreader/webclient/gen/models/light.py
7074
regula/documentreader/webclient/gen/models/list_verified_fields.py
7175
regula/documentreader/webclient/gen/models/log_level.py

example/encrypted-rcl.txt

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

example/example-rcl.py

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import os
2+
3+
from regula.documentreader.webclient import *
4+
from regula.documentreader.webclient.ext.models.recognition_request import LicenseRequest, EncryptedRCLRequest
5+
6+
host = os.getenv("API_BASE_PATH", "https://api.regulaforensics.com")
7+
regula_license = os.getenv("TEST_LICENSE", None) # optional, used here only for smoke test purposes
8+
9+
# read optional local license file
10+
if os.path.isfile('regula.license') and os.access('regula.license', os.R_OK):
11+
with open("regula.license", "rb") as f:
12+
print("Found local license file. Using it for performing request...")
13+
regula_license = f.read()
14+
15+
with open("license.txt", "r") as f:
16+
license_ = f.read()
17+
18+
with open("encrypted-rcl.txt", "r") as f:
19+
encrypted_rcl = f.read()
20+
21+
with DocumentReaderApi(host) as api:
22+
api.license = regula_license
23+
24+
params = ProcessParams(
25+
scenario=Scenario.FULL_PROCESS,
26+
result_type_output=[
27+
# actual results
28+
Result.STATUS, Result.AUTHENTICITY, Result.TEXT, Result.IMAGES,
29+
Result.DOCUMENT_TYPE, Result.DOCUMENT_TYPE_CANDIDATES, Result.IMAGE_QUALITY,
30+
Result.DOCUMENT_POSITION,
31+
# legacy results
32+
Result.MRZ_TEXT, Result.VISUAL_TEXT, Result.BARCODE_TEXT, Result.RFID_TEXT,
33+
Result.VISUAL_GRAPHICS, Result.BARCODE_GRAPHICS, Result.RFID_GRAPHICS,
34+
Result.LEXICAL_ANALYSIS
35+
]
36+
)
37+
request = RecognitionRequest(
38+
process_params=params,
39+
container_list=ContainerList([
40+
LicenseRequest(license_),
41+
EncryptedRCLRequest(encrypted_rcl)
42+
])
43+
)
44+
response = api.process(request)
45+
46+
# status examples
47+
response_status = response.status
48+
doc_overall_status = "valid" if response_status.overall_status == CheckResult.OK else "not valid"
49+
50+
# text fields example
51+
doc_number_field = response.text.get_field(TextFieldType.DOCUMENT_NUMBER)
52+
doc_number_field_by_name = response.text.get_field_by_name("Document Number")
53+
54+
doc_number_mrz = doc_number_field.get_value()
55+
doc_number_visual = doc_number_field.get_value(Source.VISUAL)
56+
doc_number_visual_validity = doc_number_field.source_validity(Source.VISUAL)
57+
doc_number_mrz_validity = doc_number_field.source_validity(Source.MRZ)
58+
doc_number_mrz_visual_matching = doc_number_field.cross_source_comparison(Source.MRZ, Source.VISUAL)
59+
60+
doc_authenticity = response.authenticity()
61+
62+
doc_ir_b900 = doc_authenticity.ir_b900_checks \
63+
if doc_authenticity is not None else None
64+
# if FULL_PROCESS then auth is None
65+
66+
doc_ir_b900_blank = doc_ir_b900.checks_by_element(SecurityFeatureType.BLANK) \
67+
if doc_authenticity is not None else None
68+
69+
doc_image_pattern = doc_authenticity.image_pattern_checks \
70+
if doc_authenticity is not None else None
71+
72+
doc_image_pattern_blank = doc_image_pattern.checks_by_element(SecurityFeatureType.BLANK) \
73+
if doc_authenticity is not None else None
74+
75+
# images fields example
76+
document_image = response.images.get_field(GraphicFieldType.DOCUMENT_FRONT).get_value()
77+
portrait_from_visual = response.images.get_field(GraphicFieldType.PORTRAIT).get_value(Source.VISUAL)
78+
with open('portrait.jpg', 'wb') as f:
79+
f.write(portrait_from_visual)
80+
with open('document-image.jpg', 'wb') as f:
81+
f.write(document_image)
82+
83+
print("""
84+
---------------------------------------------------------------------------
85+
Web API version: {ping_version}
86+
---------------------------------------------------------------------------
87+
Document Overall Status: {doc_overall_status}
88+
Document Number Visual: {doc_number_visual}
89+
Document Number MRZ: {doc_number_mrz}
90+
Validity Of Document Number Visual: {doc_number_visual_validity}
91+
Validity Of Document Number MRZ: {doc_number_mrz_validity}
92+
MRZ-Visual values comparison: {doc_number_mrz_visual_matching}
93+
---------------------------------------------------------------------------
94+
""".format(
95+
ping_version=api.ping().version,
96+
doc_overall_status=doc_overall_status, doc_number_visual=doc_number_visual,
97+
doc_number_mrz=doc_number_mrz, doc_number_visual_validity=doc_number_mrz_validity,
98+
doc_number_mrz_validity=doc_number_mrz_validity, doc_number_mrz_visual_matching=doc_number_mrz_visual_matching,
99+
))

example/license.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AAEAAK/WKOtEs17ikF4B/IKdpwmj9p0KTx2OSFFdNba1eoDT5+8tDMeZEM4ucNYB3zqKknTIxH/7zTNpQtFLtzZlwmtWEgwfLLSdFdWTA63AI7RjRxD9gr2ci++l32k7iJvUnLy1XAMM6sEhij4Ui3s+MpObMhu6/EJWe9y/57uFB4Jzdwx34D9VAS1wj9O6MliCqKs9sIZNwohaddcg8sVYHKd76VqVvrZKN5HcW7nSjWoDDXWsLA3LW6INaU3SuWJJkDD1EqE6lvjWjKlxwe7B5h77csirRjI58HCXrbXL1g84n1FZ3uTgw7KfISxlQ+i99Zj9TbhSEiGPfnZFvk6LHARUBAAAAAAAECcDDWmiV6FtvHfS/mQmG7iPG16AxSAM1CZkciHkBeXKD+P3qYfPPKvOoC+VmgsKy3+YtFZbNtdrzWILttCv9PDHshglkIaC5qIwJCJUwmj7o2LHMtLyVVzLq15v3JULQ89HGa0Mgcjoo4Rporb/ARsRq5f9YaEamP6i2zmc88Fa4a4pxl3bBI3pDlu6qZ2SGRyysrkh19PUf3wNigE5i1kK7CMqi5TuUkuoyboog+bypE5CV8peAnrhcH0O8PzoDz0R8U3K+cy/BuyeP6eZ/0J8mk4QgVcaYDGRIeKPYWtvhdRa2j3ybItNfA2S2piTL6Mf9fEli5mpifBTNNGoZuzwEWxUH0vmco/zAFkH8dmkRQGSe9u8WjbgQHhIUIQ0aifGSJEbNocc/3kQsRTBhMT1By8C2cSJ20A0OnyY9nmWx9vpAeuCdMkTNOjAP/AZuZNZtmmRmBsoXpsAP+TOZ1hbimumcw/QSVUhKDVdLbIH03g45byy8Db1xe2uohSY65p9pRqIzgEMoCs/Is5ga+2jRxNlfGwer2AKxhWpxjqnGQJt9Asr9LI7IfCxrJnzBHxsH4a8iEZaSZXIhgwy6NhwIALVhRnohljzs/LBo2gpEVugBIdWHdbS/juGma8vGstWEj1yDpPBuavlj8/+lRpt8OVPZG99hMvaph50D3Q1hwlsxPw2Nz/8hQlP7PQ1JmzYULpVsnL2jPjpMdvjGOsyf3Niv4FakLHGyLpUb8GErzQpF4hCTyJyhAMCR2E6dBMT8E95BGSV8tEo5LzYK4nfSYJk8LDGVU4dvtxrLhbLeLr9OmNigVImKDKrZrIQLOJtCcb4q3V8HDQ5XeGsJ2pPRHDOJL7RjUEEbhb0w8ewTpJdDec2BUvZXMTwVLk4CED8mZwMssO6HEcnjy2JqVHU47sVwhpfKJIT+9deAzybEkTi+Mibs4MLBcaO6iaoQsaORvk87ERwXe4F/5JUz0uMoSoEbIPrR4s+MakfFsEDNSOBEl5LCmM2BvIFkqoVnzV5Ft+1mLhvYNgnkrwntnCf0Nt81ragY83Jumvs3QvSBw7M4WW1ANlKJfrGfgwwroISK0Ma5mXc40oKUIb7Jmgp+uwxr+Nka3DNBGG3qUUI/lM3N4ZkmPAOTbNwVHv+TDo62nFaCtCeaK31owNYKojWbc5Gf+FL8K34j01DzIJiUO+3wHs2pH39ePDregf8uvx/kTvvA8oqEZWMzjmYdMkV1o43/nvnlHiwl8Pyq4O2F5NX9LVxcQpw6nMPWlKe6zrluztm/gYO7h2Rt1ualZbO4DQvt8OuTwXvzxR1X9XWJ6qNZjYbMmnZp+tPpL+iO3St6sWWGEc5nelcCPOIBOoXwYo1SZxUa0ex//aiExfoaEL1aJO95ARWnKwXnVBJyEiRume5j/qFeFkwo5/XFiBt9bRluOMdWuNTOc5A25eFmuNr0n8eeE458Huyg7DiKQ==

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

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import base64
22
from typing import List, Union
33

4+
from regula.documentreader.webclient import LicenseResult, EncryptedRCLResult, ContainerList, Result
45
from regula.documentreader.webclient.gen.models import ImageData, ProcessParams
56
from regula.documentreader.webclient.gen.models.process_request import ProcessRequest
67
from regula.documentreader.webclient.gen.models.process_request_image import ProcessRequestImage
@@ -16,12 +17,60 @@ def __init__(self, image: Union[bytes, Base64String], light_index=None, page_ind
1617
super().__init__(ImageData(image), light_index, page_index)
1718

1819

20+
class LicenseRequest(LicenseResult):
21+
def __init__(self, _license: Union[bytes, Base64String],
22+
_light: int = None, _list_idx: int = None, _page_idx: int = None):
23+
if isinstance(_license, bytes):
24+
# if we need to encode
25+
__license = base64.b64encode(_license).decode("uft-8")
26+
else:
27+
__license = _license
28+
_buf_length = len(_license)
29+
_result_type = Result.LICENSE
30+
super().__init__(
31+
__license,
32+
_buf_length,
33+
_light,
34+
_list_idx,
35+
_page_idx,
36+
_result_type
37+
)
38+
39+
40+
class EncryptedRCLRequest(EncryptedRCLResult):
41+
def __init__(self, _encrypted_rcl: Union[bytes, Base64String] = None,
42+
_light: int = None, _list_idx: int = None, _page_idx: int = None):
43+
if isinstance(_encrypted_rcl, bytes):
44+
# if we need to encode
45+
__encrypted_rcl = base64.b64encode(_encrypted_rcl).decode("uft-8")
46+
else:
47+
__encrypted_rcl = _encrypted_rcl
48+
49+
_buf_length = len(_encrypted_rcl)
50+
_result_type = Result.ENCRYPTED_RCL
51+
super().__init__(
52+
__encrypted_rcl,
53+
_buf_length,
54+
_light,
55+
_list_idx,
56+
_page_idx,
57+
_result_type
58+
)
59+
60+
1961
class RecognitionRequest(ProcessRequest):
20-
def __init__(self, process_params: ProcessParams, images: List[Union[RecognitionImage, bytes, Base64String]]):
62+
def __init__(
63+
self, process_params: ProcessParams,
64+
images: List[Union[RecognitionImage, bytes, Base64String]] = None,
65+
container_list: ContainerList = None
66+
):
2167
input_images = []
22-
for image in images:
23-
if isinstance(image, (bytes, str)):
24-
input_images.append(RecognitionImage(image))
25-
else:
26-
input_images.append(image)
27-
super().__init__(process_params, input_images, ProcessSystemInfo())
68+
if images:
69+
for image in images:
70+
if isinstance(image, (bytes, str)):
71+
input_images.append(RecognitionImage(image))
72+
else:
73+
input_images.append(image)
74+
super().__init__(process_params, list=input_images, system_info=ProcessSystemInfo())
75+
if container_list:
76+
super().__init__(process_params, container_list=container_list, system_info=ProcessSystemInfo())

regula/documentreader/webclient/gen/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
from regula.documentreader.webclient.gen.models.document_types_candidates_list import DocumentTypesCandidatesList
5959
from regula.documentreader.webclient.gen.models.document_types_candidates_result import DocumentTypesCandidatesResult
6060
from regula.documentreader.webclient.gen.models.document_types_candidates_result_all_of import DocumentTypesCandidatesResultAllOf
61+
from regula.documentreader.webclient.gen.models.encrypted_rcl_result import EncryptedRCLResult
62+
from regula.documentreader.webclient.gen.models.encrypted_rcl_result_all_of import EncryptedRCLResultAllOf
6163
from regula.documentreader.webclient.gen.models.fdsid_list import FDSIDList
6264
from regula.documentreader.webclient.gen.models.fiber_result import FiberResult
6365
from regula.documentreader.webclient.gen.models.fiber_result_all_of import FiberResultAllOf
@@ -84,6 +86,8 @@
8486
from regula.documentreader.webclient.gen.models.lcid import LCID
8587
from regula.documentreader.webclient.gen.models.lexical_analysis_result import LexicalAnalysisResult
8688
from regula.documentreader.webclient.gen.models.lexical_analysis_result_all_of import LexicalAnalysisResultAllOf
89+
from regula.documentreader.webclient.gen.models.license_result import LicenseResult
90+
from regula.documentreader.webclient.gen.models.license_result_all_of import LicenseResultAllOf
8791
from regula.documentreader.webclient.gen.models.light import Light
8892
from regula.documentreader.webclient.gen.models.list_verified_fields import ListVerifiedFields
8993
from regula.documentreader.webclient.gen.models.log_level import LogLevel

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
from regula.documentreader.webclient.gen.models.document_types_candidates_list import DocumentTypesCandidatesList
4343
from regula.documentreader.webclient.gen.models.document_types_candidates_result import DocumentTypesCandidatesResult
4444
from regula.documentreader.webclient.gen.models.document_types_candidates_result_all_of import DocumentTypesCandidatesResultAllOf
45+
from regula.documentreader.webclient.gen.models.encrypted_rcl_result import EncryptedRCLResult
46+
from regula.documentreader.webclient.gen.models.encrypted_rcl_result_all_of import EncryptedRCLResultAllOf
4547
from regula.documentreader.webclient.gen.models.fdsid_list import FDSIDList
4648
from regula.documentreader.webclient.gen.models.fiber_result import FiberResult
4749
from regula.documentreader.webclient.gen.models.fiber_result_all_of import FiberResultAllOf
@@ -68,6 +70,8 @@
6870
from regula.documentreader.webclient.gen.models.lcid import LCID
6971
from regula.documentreader.webclient.gen.models.lexical_analysis_result import LexicalAnalysisResult
7072
from regula.documentreader.webclient.gen.models.lexical_analysis_result_all_of import LexicalAnalysisResultAllOf
73+
from regula.documentreader.webclient.gen.models.license_result import LicenseResult
74+
from regula.documentreader.webclient.gen.models.license_result_all_of import LicenseResultAllOf
7175
from regula.documentreader.webclient.gen.models.light import Light
7276
from regula.documentreader.webclient.gen.models.list_verified_fields import ListVerifiedFields
7377
from regula.documentreader.webclient.gen.models.log_level import LogLevel

0 commit comments

Comments
 (0)