Skip to content

Commit a41a8db

Browse files
update to v3.0.2000
1 parent f98ca51 commit a41a8db

File tree

6 files changed

+1019
-123
lines changed

6 files changed

+1019
-123
lines changed

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ License Notice
22

33
This folder contains code samples ("Sample Code") for use with Dynamsoft Capture Vision, a commercial software development kit licensed by Dynamsoft. The Sample Code may be modified and included in your end user software under the terms of the Dynamsoft Software License Agreement   https://www.dynamsoft.com/company/license-agreement/ ("Commercial License"). Except as expressly stated in the Commercial License, no other rights are granted in the Sample Code. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
44

5-
Copyright © 2003–2024 Dynamsoft. All rights reserved.
5+
Copyright © 2003–2025 Dynamsoft. All rights reserved.

Samples/document_scanner.py

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,29 @@
2525
if not os.path.exists(image_path):
2626
print("The image path does not exist.")
2727
continue
28-
result = cvr.capture(image_path, EnumPresetTemplate.PT_DETECT_AND_NORMALIZE_DOCUMENT)
29-
if result.get_error_code() != EnumErrorCode.EC_OK:
30-
print("Error:", result.get_error_code(), result.get_error_string())
31-
normalized_images_result = result.get_normalized_images_result()
32-
if normalized_images_result is None or len(normalized_images_result.get_items()) == 0:
33-
print("No normalized documents.")
28+
result_array = cvr.capture_multi_pages(image_path, EnumPresetTemplate.PT_DETECT_AND_NORMALIZE_DOCUMENT)
29+
results = result_array.get_results()
30+
if results is None or len(results) == 0:
31+
print("No document found.")
3432
else:
35-
items = normalized_images_result.get_items()
36-
print("Normalized", len(items), "documents.")
37-
for index,item in enumerate(normalized_images_result.get_items()):
38-
out_path = "normalizedResult_" + str(index) + ".png"
39-
image_manager = ImageManager()
40-
image = item.get_image_data()
41-
if image != None:
42-
errorCode, errorMsg = image_manager.save_to_file(image, out_path)
43-
if errorCode == 0:
44-
print("Document " + str(index) + " file: " + out_path)
33+
for i, result in enumerate(results):
34+
if result.get_error_code() == EnumErrorCode.EC_UNSUPPORTED_JSON_KEY_WARNING:
35+
print("Warning:", result.get_error_code(), result.get_error_string())
36+
elif result.get_error_code() != EnumErrorCode.EC_OK:
37+
print("Error:", result.get_error_code(), result.get_error_string())
38+
processed_document_result = result.get_processed_document_result()
39+
if processed_document_result is None or len(processed_document_result.get_deskewed_image_result_items()) == 0:
40+
print("Page-"+str(i+1), "No document found.")
41+
else:
42+
items = processed_document_result.get_deskewed_image_result_items()
43+
print("Page-"+str(i+1), "Deskewed", len(items), "documents.")
44+
for index,item in enumerate(items):
45+
out_path = "Page_"+str(i+1)+"_deskewedResult_" + str(index) + ".png"
46+
image_io = ImageIO()
47+
image = item.get_image_data()
48+
if image != None:
49+
errorCode, errorMsg = image_io.save_to_file(image, out_path)
50+
if errorCode == 0:
51+
print("Document " + str(index) + " file: " + out_path)
52+
print()
4553
input("Press Enter to quit...")

Samples/driver_license_scanner.py

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,42 @@ def __init__(self, item: ParsedResultItem):
1818
self.code_type = item.get_code_type()
1919
if self.code_type != "AAMVA_DL_ID" and self.code_type != "AAMVA_DL_ID_WITH_MAG_STRIPE" and self.code_type != "SOUTH_AFRICA_DL":
2020
return
21-
if item.get_field_value("licenseNumber") != None and item.get_field_validation_status("licenseNumber") != EnumValidationStatus.VS_FAILED:
21+
if item.get_field_value("licenseNumber") != None and item.get_field_validation_status("licenseNumber") != EnumValidationStatus.VS_FAILED:
2222
self.license_number = item.get_field_value("licenseNumber")
23-
23+
2424
if item.get_field_value("AAMVAVersionNumber") != None and item.get_field_validation_status("AAMVAVersionNumber") != EnumValidationStatus.VS_FAILED:
2525
self.version_number = item.get_field_value("AAMVAVersionNumber")
26-
26+
2727
if item.get_field_value("vehicleClass") != None and item.get_field_validation_status("vehicleClass") != EnumValidationStatus.VS_FAILED:
2828
self.vehicle_class = item.get_field_value("vehicleClass")
29-
29+
3030
if item.get_field_value("lastName") != None and item.get_field_validation_status("lastName") != EnumValidationStatus.VS_FAILED:
3131
self.last_name = item.get_field_value("lastName")
32-
32+
3333
if item.get_field_value("surName") != None and item.get_field_validation_status("surName") != EnumValidationStatus.VS_FAILED:
3434
self.last_name = item.get_field_value("surName")
35-
35+
3636
if item.get_field_value("givenName") != None and item.get_field_validation_status("givenName") != EnumValidationStatus.VS_FAILED:
3737
self.given_name = item.get_field_value("givenName")
38-
38+
3939
if item.get_field_value("fullName") != None and item.get_field_validation_status("fullName") != EnumValidationStatus.VS_FAILED:
4040
self.full_name = item.get_field_value("fullName")
41-
41+
4242
if item.get_field_value("sex") != None and item.get_field_validation_status("sex") != EnumValidationStatus.VS_FAILED:
4343
self.gender = item.get_field_value("sex")
44-
44+
4545
if item.get_field_value("gender") != None and item.get_field_validation_status("gender") != EnumValidationStatus.VS_FAILED:
4646
self.gender = item.get_field_value("gender")
47-
47+
4848
if item.get_field_value("birthDate") != None and item.get_field_validation_status("birthDate") != EnumValidationStatus.VS_FAILED:
4949
self.birth_date = item.get_field_value("birthDate")
50-
50+
5151
if item.get_field_value("issuedDate") != None and item.get_field_validation_status("issuedDate") != EnumValidationStatus.VS_FAILED:
5252
self.issued_date = item.get_field_value("issuedDate")
53-
53+
5454
if item.get_field_value("expirationDate") != None and item.get_field_validation_status("expirationDate") != EnumValidationStatus.VS_FAILED:
5555
self.expiration_date = item.get_field_value("expirationDate")
56-
56+
5757
if self.full_name is None:
5858
self.full_name = (self.last_name or "") +((' ' + self.given_name) if self.last_name and self.given_name else (self.given_name or ''))
5959

@@ -75,7 +75,7 @@ def print_results(result: ParsedResult) -> None:
7575
tag = result.get_original_image_tag()
7676
if isinstance(tag, FileImageTag):
7777
print("File:", tag.get_file_path())
78-
if result.get_error_code() != EnumErrorCode.EC_OK:
78+
if result.get_error_code() != EnumErrorCode.EC_OK and result.get_error_code()!= EnumErrorCode.EC_UNSUPPORTED_JSON_KEY_WARNING:
7979
print("Error:", result.get_error_string())
8080
else:
8181
items = result.get_items()
@@ -85,7 +85,7 @@ def print_results(result: ParsedResult) -> None:
8585
print(dlResult.to_string())
8686

8787
if __name__ == '__main__':
88-
88+
8989
print("**********************************************************")
9090
print("Welcome to Dynamsoft Capture Vision - DriverLicense Sample")
9191
print("**********************************************************")
@@ -103,7 +103,7 @@ def print_results(result: ParsedResult) -> None:
103103
">> Input your image full path:\n"
104104
">> 'Enter' for sample image or 'Q'/'q' to quit\n"
105105
).strip('\'"')
106-
106+
107107
if image_path.lower() == "q":
108108
sys.exit(0)
109109

@@ -113,13 +113,21 @@ def print_results(result: ParsedResult) -> None:
113113
if not os.path.exists(image_path):
114114
print("The image path does not exist.")
115115
continue
116-
result = cvr_instance.capture(image_path, "ReadDriversLicense")
117-
if result.get_error_code() != EnumErrorCode.EC_OK:
118-
print("Error:", result.get_error_code(), result.get_error_string())
116+
result_array = cvr_instance.capture_multi_pages(image_path, "ReadDriversLicense")
117+
results = result_array.get_results()
118+
if results is None or len(results) == 0:
119+
print("No results.")
119120
else:
120-
parsed_result = result.get_parsed_result()
121-
if parsed_result is None or len(parsed_result.get_items()) == 0:
122-
print("No parsed results.")
123-
else:
124-
print_results(parsed_result)
121+
for i, result in enumerate(results):
122+
if result.get_error_code() == EnumErrorCode.EC_UNSUPPORTED_JSON_KEY_WARNING:
123+
print("Warning:", result.get_error_code(), result.get_error_string())
124+
elif result.get_error_code() != EnumErrorCode.EC_OK:
125+
print("Error:", result.get_error_code(), result.get_error_string())
126+
parsed_result = result.get_parsed_result()
127+
128+
if parsed_result is None or len(parsed_result.get_items()) == 0:
129+
print("Page-"+str(i+1), "No parsed results.")
130+
else:
131+
print_results(parsed_result)
132+
print()
125133
input("Press Enter to quit...")

Samples/mrz_scanner.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def __init__(self, item: ParsedResultItem):
3636
if item.get_field_validation_status("line3") == EnumValidationStatus.VS_FAILED:
3737
line += ", Validation Failed"
3838
self.raw_text.append(line)
39-
39+
4040
if item.get_field_value("nationality") != None and item.get_field_validation_status("nationality") != EnumValidationStatus.VS_FAILED:
4141
self.nationality = item.get_field_value("nationality")
4242
if item.get_field_value("issuingState") != None and item.get_field_validation_status("issuingState") != EnumValidationStatus.VS_FAILED:
@@ -70,8 +70,8 @@ def print_results(result: ParsedResult) -> None:
7070
tag = result.get_original_image_tag()
7171
if isinstance(tag, FileImageTag):
7272
print("File:", tag.get_file_path())
73-
if result.get_error_code() != EnumErrorCode.EC_OK:
74-
print("Error:", result.get_error_string())
73+
if result.get_error_code() != EnumErrorCode.EC_OK and result.get_error_code()!= EnumErrorCode.EC_UNSUPPORTED_JSON_KEY_WARNING:
74+
print("Error:", result.get_error_string())
7575
else:
7676
items = result.get_items()
7777
print("Parsed", len(items), "MRZ Zones.")
@@ -80,7 +80,7 @@ def print_results(result: ParsedResult) -> None:
8080
print(mrz_result.to_string())
8181

8282
if __name__ == '__main__':
83-
83+
8484
print("**********************************************************")
8585
print("Welcome to Dynamsoft Capture Vision - MRZ Sample")
8686
print("**********************************************************")
@@ -108,13 +108,21 @@ def print_results(result: ParsedResult) -> None:
108108
if not os.path.exists(image_path):
109109
print("The image path does not exist.")
110110
continue
111-
result = cvr_instance.capture(image_path, "ReadPassportAndId")
112-
if result.get_error_code() != EnumErrorCode.EC_OK:
113-
print("Error:", result.get_error_code(), result.get_error_string())
111+
result_array = cvr_instance.capture_multi_pages(image_path, "ReadPassportAndId")
112+
results = result_array.get_results()
113+
if results is None or len(results) == 0:
114+
print("No results.")
114115
else:
115-
parsed_result = result.get_parsed_result()
116-
if parsed_result is None or len(parsed_result.get_items()) == 0:
117-
print("No parsed results.")
118-
else:
119-
print_results(parsed_result)
116+
for i, result in enumerate(results):
117+
if result.get_error_code() == EnumErrorCode.EC_UNSUPPORTED_JSON_KEY_WARNING:
118+
print("Warning:", result.get_error_code(), result.get_error_string())
119+
elif result.get_error_code() != EnumErrorCode.EC_OK:
120+
print("Error:", result.get_error_code(), result.get_error_string())
121+
parsed_result = result.get_parsed_result()
122+
123+
if parsed_result is None or len(parsed_result.get_items()) == 0:
124+
print("Page-"+str(i+1), "No parsed results.")
125+
else:
126+
print_results(parsed_result)
127+
print()
120128
input("Press Enter to quit...")

Samples/vin_scanner.py

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,21 @@ def __init__(self, item: ParsedResultItem):
2020
if(item.get_field_validation_status("vinString")==EnumValidationStatus.VS_FAILED):
2121
self.vin_string += ", Validation Failed"
2222

23-
if item.get_field_value("WMI") != None and item.get_field_validation_status("WMI") != EnumValidationStatus.VS_FAILED:
23+
if item.get_field_value("WMI") != None and item.get_field_validation_status("WMI") != EnumValidationStatus.VS_FAILED:
2424
self.wmi = item.get_field_value("WMI")
25-
25+
2626
if item.get_field_value("region") != None and item.get_field_validation_status("region") != EnumValidationStatus.VS_FAILED:
2727
self.region = item.get_field_value("region")
28-
28+
2929
if item.get_field_value("VDS") != None and item.get_field_validation_status("VDS") != EnumValidationStatus.VS_FAILED:
3030
self.vds = item.get_field_value("VDS")
31-
31+
3232
if item.get_field_value("VIS") != None and item.get_field_validation_status("VIS") != EnumValidationStatus.VS_FAILED:
3333
self.vis = item.get_field_value("VIS")
34-
34+
3535
if item.get_field_value("modelYear") != None and item.get_field_validation_status("modelYear") != EnumValidationStatus.VS_FAILED:
3636
self.model_year = item.get_field_value("modelYear")
37-
37+
3838
if item.get_field_value("plantCode") != None and item.get_field_validation_status("plantCode") != EnumValidationStatus.VS_FAILED:
3939
self.plant_code = item.get_field_value("plantCode")
4040

@@ -52,8 +52,8 @@ def print_results(result: ParsedResult) -> None:
5252
tag = result.get_original_image_tag()
5353
if isinstance(tag, FileImageTag):
5454
print("File:", tag.get_file_path())
55-
if result.get_error_code() != EnumErrorCode.EC_OK:
56-
print("Error:", result.get_error_string())
55+
if result.get_error_code() != EnumErrorCode.EC_OK and result.get_error_code()!= EnumErrorCode.EC_UNSUPPORTED_JSON_KEY_WARNING:
56+
print("Error:", result.get_error_string())
5757
else:
5858
items = result.get_items()
5959
print("Parsed", len(items), "VIN codes.")
@@ -62,7 +62,7 @@ def print_results(result: ParsedResult) -> None:
6262
print(vin_result.to_string())
6363

6464
if __name__ == '__main__':
65-
65+
6666
print("**********************************************************")
6767
print("Welcome to Dynamsoft Capture Vision - VIN Sample")
6868
print("**********************************************************")
@@ -80,7 +80,7 @@ def print_results(result: ParsedResult) -> None:
8080
if image_path == "":
8181
print("Invalid path.")
8282
continue
83-
83+
8484
if image_path.lower() == "q":
8585
sys.exit(0)
8686

@@ -99,13 +99,21 @@ def print_results(result: ParsedResult) -> None:
9999
except ValueError:
100100
continue
101101

102-
result = cvr_instance.capture(image_path, template_name)
103-
if result.get_error_code() != EnumErrorCode.EC_OK:
104-
print("Error:", result.get_error_code(), result.get_error_string())
102+
result_array = cvr_instance.capture_multi_pages(image_path, template_name)
103+
results = result_array.get_results()
104+
if results is None or len(results) == 0:
105+
print("No results.")
105106
else:
106-
parsed_result = result.get_parsed_result()
107-
if parsed_result is None or len(parsed_result.get_items()) == 0:
108-
print("No parsed results.")
109-
else:
110-
print_results(parsed_result)
107+
for i, result in enumerate(results):
108+
if result.get_error_code() == EnumErrorCode.EC_UNSUPPORTED_JSON_KEY_WARNING:
109+
print("Warning:", result.get_error_code(), result.get_error_string())
110+
elif result.get_error_code() != EnumErrorCode.EC_OK:
111+
print("Error:", result.get_error_code(), result.get_error_string())
112+
parsed_result = result.get_parsed_result()
113+
114+
if parsed_result is None or len(parsed_result.get_items()) == 0:
115+
print("Page-"+str(i+1), "No parsed results.")
116+
else:
117+
print_results(parsed_result)
118+
print()
111119
input("Press Enter to quit...")

0 commit comments

Comments
 (0)