Skip to content

Commit a66fe53

Browse files
committed
Redo add images module
1 parent 805ea03 commit a66fe53

File tree

7 files changed

+71
-15
lines changed

7 files changed

+71
-15
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
.idea
2+
example/portraitFromVisual.jpg
3+
example/normalizedInputImage.jpg
24

35

46
# Byte-compiled / optimized / DLL files

example/example.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
from regula.documentreader.webclient.ext.api import DocumentReaderApi
44
from regula.documentreader.webclient.ext.models import RecognitionRequest
5-
from regula.documentreader.webclient.gen import ProcessParams, Scenario, Result, TextFieldType, Source, \
6-
CheckResult
5+
from regula.documentreader.webclient.gen.models import ProcessParams, Scenario, Result, TextFieldType, Source, \
6+
CheckResult, GraphicFieldType
77

88
host = os.getenv("API_BASE_PATH", "http://localhost:8080")
99
license = os.getenv("TEST_LICENSE", None) # optional, used here only for smoke test purposes
@@ -16,7 +16,7 @@
1616

1717
params = ProcessParams(
1818
scenario=Scenario.FULL_PROCESS,
19-
result_type_output=[Result.STATUS, Result.TEXT, Result.IMAGES]
19+
result_type_output=[Result.RAW_IMAGE, Result.STATUS, Result.TEXT, Result.IMAGES]
2020
)
2121
request = RecognitionRequest(process_params=params, images=[input_image])
2222
response = api.process(request)
@@ -33,7 +33,15 @@
3333
doc_number_mrz_validity = doc_number_field.source_validity(Source.MRZ)
3434
doc_number_mrz_visual_matching = doc_number_field.cross_source_comparison(Source.MRZ, Source.VISUAL)
3535

36-
response_images = response.images
36+
# images fields example
37+
normalized_input_image = response.images.normalized_input_image()
38+
portrait_Field = response.images.get_field(GraphicFieldType.PORTRAIT)
39+
portrait_From_Visual = portrait_Field.get_value(Source.VISUAL)
40+
with open('portraitFromVisual.jpg', 'wb') as f: f.write(portrait_From_Visual)
41+
with open('normalizedInputImage.jpg', 'wb') as f: f.write(normalized_input_image)
42+
43+
# low-lvl(original) response
44+
response.low_lvl_response
3745

3846
print("""
3947
---------------------------------------------------------------------------
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,2 @@
11
from regula.documentreader.webclient.ext.api.document_reader_api import DocumentReaderApi
22

3-
from regula.documentreader.webclient.ext.models.raw_result_item import RawResultItem
4-
from regula.documentreader.webclient.ext.models.recognition_request import RecognitionImage
5-
from regula.documentreader.webclient.ext.models.recognition_request import RecognitionRequest
6-
from regula.documentreader.webclient.ext.models.recognition_response import RecognitionResponse
7-
from regula.documentreader.webclient.ext.models.text import Text
8-
from regula.documentreader.webclient.ext.models.text_field import TextField

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

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from regula.documentreader.webclient.ext.models.images import Images, ImagesField
12
from regula.documentreader.webclient.ext.models.raw_result_item import RawResultItem
23
from regula.documentreader.webclient.ext.models.recognition_request import RecognitionImage
34
from regula.documentreader.webclient.ext.models.recognition_request import RecognitionRequest
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import base64
2+
from typing import Optional, List
3+
4+
from regula.documentreader.webclient.gen.models import Images as GenImages, ImagesField as GetImagesField, Source
5+
6+
7+
class ImagesField(GetImagesField):
8+
9+
def get_value(self, source: str = None, original=False) -> Optional[bytes]:
10+
field_value = None
11+
if not source:
12+
field_value = self.get_value(Source.RFID)
13+
if not field_value: field_value = self.get_value(Source.VISUAL)
14+
if not field_value: field_value = self.get_value(Source.BARCODE)
15+
else:
16+
for v in self.value_list:
17+
if v.source == source:
18+
field_value = v
19+
20+
if not field_value:
21+
return None
22+
23+
if original:
24+
return base64.b64decode(field_value.original_value)
25+
return base64.b64decode(field_value.value)
26+
27+
28+
class Images(GenImages):
29+
_normalized_input_images_results = None
30+
31+
def get_field(self, field_type: int) -> Optional[ImagesField]:
32+
for field in self.field_list:
33+
if field.field_type == field_type:
34+
return field
35+
return None
36+
37+
def normalized_input_image(self) -> Optional[bytes]:
38+
images = self.normalized_input_images()
39+
if not images:
40+
return None
41+
return images.pop()
42+
43+
def normalized_input_images(self) -> Optional[List[bytes]]:
44+
if self._normalized_input_images_results:
45+
return [base64.b64decode(image.raw_image_container.image)
46+
for image in self._normalized_input_images_results]
47+
return None

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

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
from typing import Optional
1+
from typing import Optional, List
22

3+
from regula.documentreader.webclient.ext.models.images import Images
34
from regula.documentreader.webclient.ext.models.text import Text
45
from regula.documentreader.webclient.gen import ResultItem
5-
from regula.documentreader.webclient.gen.models.images import Images
66
from regula.documentreader.webclient.gen.models.process_response import ProcessResponse
77
from regula.documentreader.webclient.gen.models.result import Result
88
from regula.documentreader.webclient.gen.models.status import Status
@@ -11,7 +11,7 @@
1111
class RecognitionResponse:
1212

1313
def __init__(self, process_response: ProcessResponse):
14-
self.__process_response = process_response
14+
self.low_lvl_response = process_response
1515

1616
@property
1717
def text(self) -> Optional[Text]:
@@ -31,11 +31,15 @@ def status(self) -> Optional[Status]:
3131
def images(self) -> Optional[Images]:
3232
result = self.result_by_type(Result.IMAGES)
3333
if result:
34+
result.images._normalized_input_images_results = self.results_by_type(Result.RAW_IMAGE)
3435
return result.images
3536
return None
3637

3738
def result_by_type(self, result_type) -> Optional[ResultItem]:
38-
for i in self.__process_response.container_list.list:
39+
for i in self.low_lvl_response.container_list.list:
3940
if i.result_type == result_type:
4041
return i
4142
return None
43+
44+
def results_by_type(self, result_type) -> List[ResultItem]:
45+
return [r for r in self.low_lvl_response.container_list.list if r.result_type == result_type]

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Optional, List
22

33
from regula.documentreader.webclient.ext.models.text_field import TextField
4-
from regula.documentreader.webclient.gen.models.text import Text as GenText
4+
from regula.documentreader.webclient.gen.models import Text as GenText
55

66

77
class Text(GenText):

0 commit comments

Comments
 (0)