Skip to content

Commit 805ea03

Browse files
committed
Redo add text module
1 parent b4f1ec8 commit 805ea03

File tree

4 files changed

+45
-48
lines changed

4 files changed

+45
-48
lines changed

example/example.py

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,38 @@
11
import os
22

33
from regula.documentreader.webclient.ext.api import DocumentReaderApi
4-
from regula.documentreader.webclient.ext.models import RecognitionImage, RecognitionRequest
5-
from regula.documentreader.webclient.gen import ProcessParams, Scenario, Result, Light, TextFieldType, Source, \
4+
from regula.documentreader.webclient.ext.models import RecognitionRequest
5+
from regula.documentreader.webclient.gen import ProcessParams, Scenario, Result, TextFieldType, Source, \
66
CheckResult
77

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

1111
with open("australia_passport.jpg", "rb") as f:
12-
image_payload = f.read()
12+
input_image = f.read()
1313

1414
with DocumentReaderApi(host) as api:
15-
api.license = license
16-
17-
process_params = ProcessParams(Scenario.FULL_PROCESS, [Result.STATUS, Result.TEXT, Result.IMAGES, 6])
18-
process_images = [RecognitionImage(image_payload, Light.WHITE)]
19-
request = RecognitionRequest(process_params, process_images)
15+
api.license = license # used here only for smoke test purposes, most of clients will attach license on server side
2016

17+
params = ProcessParams(
18+
scenario=Scenario.FULL_PROCESS,
19+
result_type_output=[Result.STATUS, Result.TEXT, Result.IMAGES]
20+
)
21+
request = RecognitionRequest(process_params=params, images=[input_image])
2122
response = api.process(request)
22-
response.result_by_type(Result.IMAGES)
23-
24-
response_text = response.text
25-
26-
doc_number_field = response_text.get_field(TextFieldType.DOCUMENT_NUMBER)
27-
28-
doc_number_visual = doc_number_field.get_value(Source.VISUAL)
29-
doc_number_mrz = doc_number_field.get_value(Source.MRZ)
30-
31-
doc_number_visual_validity = doc_number_field.get_validity(Source.VISUAL)
32-
doc_number_mrz_validity = doc_number_field.get_validity(Source.MRZ)
33-
34-
doc_number_mrz_visual_matching = doc_number_field.get_comparison(Source.MRZ, Source.VISUAL)
3523

24+
# status examples
3625
response_status = response.status
3726
doc_overall_status = "valid" if response_status.overall_status == CheckResult.OK else "not valid"
3827

28+
# text fields example
29+
doc_number_field = response.text.get_field(TextFieldType.DOCUMENT_NUMBER)
30+
doc_number_visual = doc_number_field.get_value()
31+
doc_number_mrz = doc_number_field.get_value(Source.MRZ)
32+
doc_number_visual_validity = doc_number_field.source_validity(Source.VISUAL)
33+
doc_number_mrz_validity = doc_number_field.source_validity(Source.MRZ)
34+
doc_number_mrz_visual_matching = doc_number_field.cross_source_comparison(Source.MRZ, Source.VISUAL)
35+
3936
response_images = response.images
4037

4138
print("""
Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
import base64
2+
from typing import List, Union
23

3-
from regula.documentreader.webclient.gen.models.image_data import ImageData
4+
from regula.documentreader.webclient.gen.models import ImageData, ProcessParams
45
from regula.documentreader.webclient.gen.models.process_request import ProcessRequest
56
from regula.documentreader.webclient.gen.models.process_request_image import ProcessRequestImage
67
from regula.documentreader.webclient.gen.models.process_system_info import ProcessSystemInfo
78

8-
9-
class RecognitionRequest(ProcessRequest):
10-
def __init__(self, process_params, images):
11-
super().__init__(process_params, images, ProcessSystemInfo())
9+
Base64String = str
1210

1311

1412
class RecognitionImage(ProcessRequestImage):
15-
def __init__(self, image: bytes, light_index=None, page_index=0):
16-
image_base64 = base64.b64encode(image).decode("utf-8")
17-
super().__init__(ImageData(image_base64), light_index, page_index)
13+
def __init__(self, image: Union[bytes, Base64String], light_index=None, page_index=None):
14+
if isinstance(image, bytes):
15+
image = base64.b64encode(image).decode("utf-8")
16+
super().__init__(ImageData(image), light_index, page_index)
17+
18+
19+
class RecognitionRequest(ProcessRequest):
20+
def __init__(self, process_params: ProcessParams, images: List[Union[RecognitionImage, bytes, Base64String]]):
21+
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())

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

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,13 @@
66

77
class Text(GenText):
88

9-
def get_field(self, field_type: int, lcid=0) -> Optional[TextField]:
9+
def get_field(self, field_type: int, lcid: int = None) -> Optional[TextField]:
1010
for field in self.field_list:
11-
if field.field_type == field_type and field.lcid == lcid:
11+
if field.field_type == field_type and (not lcid or field.lcid == lcid):
1212
return field
1313
return None
1414

15-
def get_field_value(self, field_type: int, lcid=0) -> Optional[str]:
16-
field = self.get_field(field_type, lcid)
17-
if field:
18-
return "todo"
19-
return None
20-
21-
@property
15+
@GenText.field_list.getter
2216
def field_list(self) -> List[TextField]:
2317
# fix type hinting
2418
return super().field_list
25-
26-
@field_list.setter
27-
def field_list(self, field_list: List[TextField]):
28-
if self.local_vars_configuration.client_side_validation and field_list is None:
29-
raise ValueError("Invalid value for `field_list`, must not be `None`")
30-
self._field_list = field_list

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
class TextField(GenTextField):
88

9-
def get_value(self, source: str, original=False) -> Optional[str]:
9+
def get_value(self, source: str = None, original=False) -> Optional[str]:
10+
if not source:
11+
return self.value
1012
for i in self.value_list:
1113
if i.source == source:
1214
if original:
@@ -15,13 +17,13 @@ def get_value(self, source: str, original=False) -> Optional[str]:
1517
return i.value
1618
return None
1719

18-
def get_validity(self, source) -> CheckResult:
20+
def source_validity(self, source: str) -> CheckResult:
1921
for i in self.validity_list:
2022
if i.source == source:
2123
return i.status
2224
return CheckResult.WAS_NOT_DONE
2325

24-
def get_comparison(self, one, other) -> CheckResult:
26+
def cross_source_comparison(self, one: str, other: str) -> CheckResult:
2527
for i in self.comparison_list:
2628
a = i.source_left == one and i.source_right == other
2729
b = i.source_right == one and i.source_left == other

0 commit comments

Comments
 (0)