dynamsoft-capture-vision-bundle 3.2.5000__cp313-cp313-win_amd64.whl → 3.4.1000__cp313-cp313-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dynamsoft_capture_vision_bundle/ConfusableChars.data +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftBarcodeReaderx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftCaptureVisionRouterx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftCodeParserDedicatorx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftCodeParserx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftCorex64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftDocumentNormalizerx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftIdentityUtilityx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftImageProcessingx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftLabelRecognizerx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftLicensex64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftNeuralNetworkx64.dll +0 -0
- dynamsoft_capture_vision_bundle/DynamsoftUtilityx64.dll +0 -0
- dynamsoft_capture_vision_bundle/Models/Code128Decoder.data +0 -0
- dynamsoft_capture_vision_bundle/Models/Code39ITFDecoder.data +0 -0
- dynamsoft_capture_vision_bundle/Models/DataMatrixQRCodeDeblur.data +0 -0
- dynamsoft_capture_vision_bundle/Models/DataMatrixQRCodeLocalization.data +0 -0
- dynamsoft_capture_vision_bundle/Models/EAN13Decoder.data +0 -0
- dynamsoft_capture_vision_bundle/Models/LetterCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/LowercaseCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/MRZCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/MRZLocalization.data +0 -0
- dynamsoft_capture_vision_bundle/Models/MRZTextLineRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/NumberCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/NumberLetterCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/NumberLowercaseCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/NumberUppercaseCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/OneDDeblur.data +0 -0
- dynamsoft_capture_vision_bundle/Models/OneDLocalization.data +0 -0
- dynamsoft_capture_vision_bundle/Models/PDF417Deblur.data +0 -0
- dynamsoft_capture_vision_bundle/Models/PDF417Localization.data +0 -0
- dynamsoft_capture_vision_bundle/Models/UppercaseCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/Models/VINCharRecognition.data +0 -0
- dynamsoft_capture_vision_bundle/OverlappingChars.data +0 -0
- dynamsoft_capture_vision_bundle/ParserResources/AADHAAR.data +0 -0
- dynamsoft_capture_vision_bundle/ParserResources/AAMVA_DL_ID.data +1 -0
- dynamsoft_capture_vision_bundle/ParserResources/GS1_AI.data +66 -0
- dynamsoft_capture_vision_bundle/ParserResources/MRTD.data +1 -0
- dynamsoft_capture_vision_bundle/ParserResources/SOUTH_AFRICA_DL.data +1 -0
- dynamsoft_capture_vision_bundle/ParserResources/VIN.data +0 -0
- dynamsoft_capture_vision_bundle/Templates/MRZScanner.json +125 -16
- dynamsoft_capture_vision_bundle/_DynamsoftBarcodeReader.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftCaptureVisionRouter.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftCodeParser.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftCodeParserDedicator.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftCore.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftDocumentNormalizer.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftIdentityUtility.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftImageProcessing.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftLabelRecognizer.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftLicense.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/_DynamsoftUtility.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/__init__.py +2 -2
- dynamsoft_capture_vision_bundle/core.py +72 -3
- dynamsoft_capture_vision_bundle/cvr.py +21 -11
- dynamsoft_capture_vision_bundle/dbr.py +72 -3
- dynamsoft_capture_vision_bundle/dcp.py +2 -2
- dynamsoft_capture_vision_bundle/dcpd.py +2 -2
- dynamsoft_capture_vision_bundle/ddn.py +2 -2
- dynamsoft_capture_vision_bundle/dip.py +2 -2
- dynamsoft_capture_vision_bundle/dlr.py +68 -2
- dynamsoft_capture_vision_bundle/id_utility.py +98 -0
- dynamsoft_capture_vision_bundle/license.py +2 -2
- dynamsoft_capture_vision_bundle/utility.py +35 -5
- {dynamsoft_capture_vision_bundle-3.2.5000.dist-info → dynamsoft_capture_vision_bundle-3.4.1000.dist-info}/METADATA +5 -3
- dynamsoft_capture_vision_bundle-3.4.1000.dist-info/RECORD +75 -0
- {dynamsoft_capture_vision_bundle-3.2.5000.dist-info → dynamsoft_capture_vision_bundle-3.4.1000.dist-info}/WHEEL +1 -1
- {dynamsoft_capture_vision_bundle-3.2.5000.dist-info → dynamsoft_capture_vision_bundle-3.4.1000.dist-info}/top_level.txt +1 -1
- dynamsoft_capture_vision_bundle/ParserResources/AADHAAR.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/AADHAAR_Map.txt +0 -3
- dynamsoft_capture_vision_bundle/ParserResources/AAMVA_DL_ID.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/AAMVA_DL_ID_WITH_MAG_STRIPE.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/AAMVA_Map.txt +0 -77
- dynamsoft_capture_vision_bundle/ParserResources/GS1_AI.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/GS1_AI_Map.txt +0 -643
- dynamsoft_capture_vision_bundle/ParserResources/MRTD_Map.txt +0 -255
- dynamsoft_capture_vision_bundle/ParserResources/MRTD_TD1_ID.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/MRTD_TD2_FRENCH_ID.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/MRTD_TD2_ID.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/MRTD_TD2_VISA.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/MRTD_TD3_PASSPORT.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/MRTD_TD3_VISA.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/SOUTH_AFRICA_DL.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/SOUTH_AFRICA_DL_Map.txt +0 -3
- dynamsoft_capture_vision_bundle/ParserResources/VIN.dcpres +0 -1
- dynamsoft_capture_vision_bundle/ParserResources/VIN_Map.txt +0 -150
- dynamsoft_capture_vision_bundle/_DynamsoftNeuralNetwork.cp313-win_amd64.pyd +0 -0
- dynamsoft_capture_vision_bundle/dnn.py +0 -24
- dynamsoft_capture_vision_bundle-3.2.5000.dist-info/RECORD +0 -82
- {dynamsoft_capture_vision_bundle-3.2.5000.dist-info → dynamsoft_capture_vision_bundle-3.4.1000.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = "4.0.30.
|
|
1
|
+
__version__ = "4.0.30.7449"
|
|
2
2
|
|
|
3
3
|
if __package__ or "." in __name__:
|
|
4
4
|
from .core import *
|
|
@@ -306,7 +306,7 @@ class LabelRecognizerModule:
|
|
|
306
306
|
Returns:
|
|
307
307
|
A string representing the version of the label recognizer module.
|
|
308
308
|
"""
|
|
309
|
-
return __version__ + " (
|
|
309
|
+
return __version__ + " (Algorithm " + _DynamsoftLabelRecognizer.CLabelRecognizerModule_GetVersion() + ")"
|
|
310
310
|
|
|
311
311
|
def __init__(self):
|
|
312
312
|
_DynamsoftLabelRecognizer.Class_init(
|
|
@@ -723,6 +723,72 @@ class LocalizedTextLinesUnit(IntermediateResultUnit):
|
|
|
723
723
|
"""
|
|
724
724
|
return _DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_SetLocalizedTextLine(self, index, element, matrix_to_original_image)
|
|
725
725
|
|
|
726
|
+
def get_auxiliary_region_elements_count(self) -> int:
|
|
727
|
+
"""
|
|
728
|
+
Gets the count of auxiliary region elements in the unit.
|
|
729
|
+
|
|
730
|
+
Returns:
|
|
731
|
+
Returns the number of auxiliary region elements.
|
|
732
|
+
"""
|
|
733
|
+
return _DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_GetAuxiliaryRegionElementsCount(self)
|
|
734
|
+
|
|
735
|
+
def get_auxiliary_region_element(self, index: int) -> AuxiliaryRegionElement:
|
|
736
|
+
"""
|
|
737
|
+
Gets the auxiliary region element at the specified index.
|
|
738
|
+
|
|
739
|
+
Args:
|
|
740
|
+
index (int): The zero-based index of the auxiliary region element to retrieve.
|
|
741
|
+
|
|
742
|
+
Returns:
|
|
743
|
+
Returns a pointer to the CAuxiliaryRegionElement object, or NULL if the index is out of range.
|
|
744
|
+
"""
|
|
745
|
+
return _DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_GetAuxiliaryRegionElement(self, index)
|
|
746
|
+
|
|
747
|
+
def set_auxiliary_region_element(self, index: int, element: AuxiliaryRegionElement, matrix_to_original_image: List[float] = IDENTITY_MATRIX) -> int:
|
|
748
|
+
"""
|
|
749
|
+
Sets or replaces the auxiliary region element at the specified index.
|
|
750
|
+
|
|
751
|
+
Args:
|
|
752
|
+
index (int): The zero-based index where the element should be set.
|
|
753
|
+
element (CAuxiliaryRegionElement): The auxiliary region element to set.
|
|
754
|
+
matrix_to_original_image (List[float], optional): The matrix to original image. Defaults to IDENTITY_MATRIX.
|
|
755
|
+
|
|
756
|
+
Returns:
|
|
757
|
+
Returns 0 if successful, otherwise returns a negative value.
|
|
758
|
+
"""
|
|
759
|
+
return _DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_SetAuxiliaryRegionElement(self, index, element, matrix_to_original_image)
|
|
760
|
+
|
|
761
|
+
def add_auxiliary_region_element(self, element: AuxiliaryRegionElement, matrix_to_original_image: List[float] = IDENTITY_MATRIX) -> int:
|
|
762
|
+
"""
|
|
763
|
+
Adds a new auxiliary region element to this unit.
|
|
764
|
+
|
|
765
|
+
Args:
|
|
766
|
+
element (AuxiliaryRegionElement): The auxiliary region element to add.
|
|
767
|
+
matrix_to_original_image (List[float], optional): The matrix to original image. Defaults to IDENTITY_MATRIX.
|
|
768
|
+
|
|
769
|
+
Returns:
|
|
770
|
+
Returns 0 if successful, otherwise returns a negative value.
|
|
771
|
+
"""
|
|
772
|
+
return _DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_AddAuxiliaryRegionElement(self, element, matrix_to_original_image)
|
|
773
|
+
|
|
774
|
+
def remove_auxiliary_region_element(self, index: int) -> int:
|
|
775
|
+
"""
|
|
776
|
+
Removes the auxiliary region element at the specified index.
|
|
777
|
+
|
|
778
|
+
Args:
|
|
779
|
+
index (int): The zero-based index of the auxiliary region element to remove.
|
|
780
|
+
|
|
781
|
+
Returns:
|
|
782
|
+
Returns 0 if successful, otherwise returns a negative value.
|
|
783
|
+
"""
|
|
784
|
+
return _DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_RemoveAuxiliaryRegionElement(self, index)
|
|
785
|
+
|
|
786
|
+
def remove_all_auxiliary_region_elements(self):
|
|
787
|
+
"""
|
|
788
|
+
Removes all auxiliary region elements from this unit.
|
|
789
|
+
"""
|
|
790
|
+
return _DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_RemoveAllAuxiliaryRegionElements(self)
|
|
791
|
+
|
|
726
792
|
_DynamsoftLabelRecognizer.CLocalizedTextLinesUnit_register(LocalizedTextLinesUnit)
|
|
727
793
|
class RecognizedTextLinesUnit(IntermediateResultUnit):
|
|
728
794
|
"""
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
__version__ = "1.0.10.7449"
|
|
2
|
+
|
|
3
|
+
if __package__ or "." in __name__:
|
|
4
|
+
from .cvr import *
|
|
5
|
+
else:
|
|
6
|
+
from cvr import *
|
|
7
|
+
|
|
8
|
+
if __package__ or "." in __name__:
|
|
9
|
+
from .core import *
|
|
10
|
+
else:
|
|
11
|
+
from core import *
|
|
12
|
+
|
|
13
|
+
if __package__ or "." in __name__:
|
|
14
|
+
from . import _DynamsoftIdentityUtility
|
|
15
|
+
else:
|
|
16
|
+
import _DynamsoftIdentityUtility
|
|
17
|
+
from typing import Tuple
|
|
18
|
+
class IdentityUtilityModule:
|
|
19
|
+
"""
|
|
20
|
+
The IdentityUtilityModule class provides common functions of the identity utility module.
|
|
21
|
+
|
|
22
|
+
Methods:
|
|
23
|
+
get_version() -> str: Returns the version of the identity utility module.
|
|
24
|
+
"""
|
|
25
|
+
_thisown = property(
|
|
26
|
+
lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
@staticmethod
|
|
30
|
+
def get_version() -> str:
|
|
31
|
+
"""
|
|
32
|
+
Returns the version of the identity utility module.
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
A string representing the version of the identity utility module.
|
|
36
|
+
"""
|
|
37
|
+
return __version__ + " (Algorithm " + _DynamsoftIdentityUtility.CIdentityUtilityModule_GetVersion() + ")"
|
|
38
|
+
|
|
39
|
+
def __init__(self):
|
|
40
|
+
_DynamsoftIdentityUtility.Class_init(
|
|
41
|
+
self, _DynamsoftIdentityUtility.new_CIdentityUtilityModule()
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
__destroy__ = _DynamsoftIdentityUtility.delete_CIdentityUtilityModule
|
|
45
|
+
|
|
46
|
+
_DynamsoftIdentityUtility.CIdentityUtilityModule_register(IdentityUtilityModule)
|
|
47
|
+
|
|
48
|
+
class IdentityProcessor:
|
|
49
|
+
"""
|
|
50
|
+
The IdentityProcessor class provides functions to process identity documents, such as locating portrait zones with higher precision.
|
|
51
|
+
|
|
52
|
+
Methods:
|
|
53
|
+
find_portrait_zone(
|
|
54
|
+
self,
|
|
55
|
+
scaled_colour_img_unit: ScaledColourImageUnit,
|
|
56
|
+
localized_text_lines_unit: LocalizedTextLinesUnit,
|
|
57
|
+
recognized_text_lines_unit: RecognizedTextLinesUnit,
|
|
58
|
+
detected_quads_unit: DetectedQuadsUnit,
|
|
59
|
+
deskewed_image_unit: DeskewedImageUnit
|
|
60
|
+
) -> Tuple[int, Quadrilateral]: Finds the location of the portrait zone on an identity document.
|
|
61
|
+
"""
|
|
62
|
+
_thisown = property(
|
|
63
|
+
lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def __init__(self):
|
|
67
|
+
_DynamsoftIdentityUtility.Class_init(
|
|
68
|
+
self, _DynamsoftIdentityUtility.new_CIdentityProcessor()
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
__destroy__ = _DynamsoftIdentityUtility.delete_CIdentityProcessor
|
|
72
|
+
|
|
73
|
+
def find_portrait_zone(
|
|
74
|
+
self,
|
|
75
|
+
scaled_colour_img_unit:'ScaledColourImageUnit',
|
|
76
|
+
localized_text_lines_unit:'LocalizedTextLinesUnit',
|
|
77
|
+
recognized_text_lines_unit: 'RecognizedTextLinesUnit',
|
|
78
|
+
detected_quads_unit:'DetectedQuadsUnit',
|
|
79
|
+
deskewed_image_unit:'DeskewedImageUnit'
|
|
80
|
+
) -> Tuple[int, 'Quadrilateral']:
|
|
81
|
+
"""
|
|
82
|
+
Finds the location of the portrait zone on an identity document.
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
scaled_colour_img_unit(ScaledColourImageUnit): The scaled colour image unit containing the source image.
|
|
86
|
+
localized_text_lines_unit(LocalizedTextLinesUnit): The localized text lines unit containing MRZ/text regions.
|
|
87
|
+
recognized_text_lines_unit(RecognizedTextLinesUnit): The recognized text lines unit for document type identification.
|
|
88
|
+
detected_quads_unit(DetectedQuadsUnit): The detected quads unit containing document boundaries.
|
|
89
|
+
deskewed_image_unit(DeskewedImageUnit): The deskewed image unit for coordinate transformation.
|
|
90
|
+
|
|
91
|
+
Returns:
|
|
92
|
+
error_code(int): Returns 0 if successful, otherwise returns an error code.
|
|
93
|
+
portrait_zone(Quadrilateral): The output quadrilateral representing the portrait zone location. Returns None if not found.
|
|
94
|
+
"""
|
|
95
|
+
return _DynamsoftIdentityUtility.CIdentityProcessor_FindPortraitZone(
|
|
96
|
+
self, scaled_colour_img_unit, localized_text_lines_unit, recognized_text_lines_unit, detected_quads_unit, deskewed_image_unit
|
|
97
|
+
)
|
|
98
|
+
_DynamsoftIdentityUtility.CIdentityProcessor_register(IdentityProcessor)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = "4.0.30.
|
|
1
|
+
__version__ = "4.0.30.7449"
|
|
2
2
|
|
|
3
3
|
if __package__ or "." in __name__:
|
|
4
4
|
from . import _DynamsoftLicense
|
|
@@ -133,7 +133,7 @@ class LicenseModule:
|
|
|
133
133
|
Returns:
|
|
134
134
|
A string representing the version of the Dynamsoft License module.
|
|
135
135
|
"""
|
|
136
|
-
return __version__ + " (
|
|
136
|
+
return __version__ + " (Algorithm " + _DynamsoftLicense.CLicenseModule_GetVersion() + ")"
|
|
137
137
|
|
|
138
138
|
def __init__(self):
|
|
139
139
|
_DynamsoftLicense.Class_init(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = "2.0.40.
|
|
1
|
+
__version__ = "2.0.40.7449"
|
|
2
2
|
|
|
3
3
|
if __package__ or "." in __name__:
|
|
4
4
|
from .cvr import *
|
|
@@ -44,7 +44,7 @@ class UtilityModule:
|
|
|
44
44
|
Returns:
|
|
45
45
|
A string representing the version of the utility module.
|
|
46
46
|
"""
|
|
47
|
-
return __version__ + " (
|
|
47
|
+
return __version__ + " (Algorithm " + _DynamsoftUtility.CUtilityModule_GetVersion() + ")"
|
|
48
48
|
|
|
49
49
|
def __init__(self):
|
|
50
50
|
_DynamsoftUtility.Class_init(
|
|
@@ -219,6 +219,30 @@ class MultiFrameResultCrossFilter(CapturedResultFilter):
|
|
|
219
219
|
self, type
|
|
220
220
|
)
|
|
221
221
|
|
|
222
|
+
def set_result_cross_verification_criteria(self, result_item_types: int, frame_window: int, min_consistent_frames: int) -> None:
|
|
223
|
+
"""
|
|
224
|
+
This function allows customization of the multi-frame verification parameters,
|
|
225
|
+
controlling how many frames are analyzed and how many consistent results are required.
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
result_item_types (int): A bitwise OR combination of one or more values from the EnumCapturedResultItemType enumeration.
|
|
229
|
+
frame_window (int): The number of frames to consider for cross-verification.
|
|
230
|
+
min_consistent_frames (int): The minimum number of frames that must contain consistent results for verification to succeed.
|
|
231
|
+
"""
|
|
232
|
+
return _DynamsoftUtility.CMultiFrameResultCrossFilter_SetResultCrossVerificationCriteria(self, result_item_types, frame_window, min_consistent_frames)
|
|
233
|
+
|
|
234
|
+
def get_result_cross_verification_criteria(self, result_item_type: EnumCapturedResultItemType) -> Tuple[int, int]:
|
|
235
|
+
"""
|
|
236
|
+
Gets the cross-verification criteria for a specified result item type.
|
|
237
|
+
|
|
238
|
+
Args:
|
|
239
|
+
result_item_type (int): The result item type to query (CapturedResultItemType value).
|
|
240
|
+
|
|
241
|
+
Returns:
|
|
242
|
+
A tuple containing the frame window size and the minimum consistent frames.
|
|
243
|
+
"""
|
|
244
|
+
return _DynamsoftUtility.CMultiFrameResultCrossFilter_GetResultCrossVerificationCriteria(self, result_item_type)
|
|
245
|
+
|
|
222
246
|
_DynamsoftUtility.CMultiFrameResultCrossFilter_register(MultiFrameResultCrossFilter)
|
|
223
247
|
|
|
224
248
|
class ProactiveImageSourceAdapter(ImageSourceAdapter, ABC):
|
|
@@ -594,13 +618,19 @@ class ImageIO:
|
|
|
594
618
|
elif format == EnumImagePixelFormat.IPF_BGR_888:
|
|
595
619
|
arr = np.frombuffer(image_bytes, dtype=np.uint8).reshape((height, width, 3))
|
|
596
620
|
arr = arr[:, :, ::-1]
|
|
621
|
+
elif format == EnumImagePixelFormat.IPF_GRAYSCALED \
|
|
622
|
+
or format == EnumImagePixelFormat.IPF_BINARY \
|
|
623
|
+
or format == EnumImagePixelFormat.IPF_BINARYINVERTED \
|
|
624
|
+
or format == EnumImagePixelFormat.IPF_BINARY_8 \
|
|
625
|
+
or format == EnumImagePixelFormat.IPF_BINARY_8_INVERTED:
|
|
626
|
+
arr = np.frombuffer(image_bytes, dtype=np.uint8).reshape((height, width))
|
|
597
627
|
else:
|
|
598
628
|
err = EnumErrorCode.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH
|
|
599
629
|
if __package__ or "." in __name__:
|
|
600
630
|
from . import _DynamsoftCore
|
|
601
631
|
else:
|
|
602
632
|
import _DynamsoftCore
|
|
603
|
-
err_str = _DynamsoftCore.DC_GetErrorString()
|
|
633
|
+
err_str = _DynamsoftCore.DC_GetErrorString(err)
|
|
604
634
|
arr = None
|
|
605
635
|
return err, err_str, arr
|
|
606
636
|
|
|
@@ -785,14 +815,14 @@ class ImageProcessor:
|
|
|
785
815
|
"""
|
|
786
816
|
return _DynamsoftUtility.CImageProcessor_ConvertToBinaryGlobal(self, image_data, threshold, invert)
|
|
787
817
|
|
|
788
|
-
def convert_to_binary_local(self, image_data: ImageData, block_size: int = 0, compensation: int =
|
|
818
|
+
def convert_to_binary_local(self, image_data: ImageData, block_size: int = 0, compensation: int = 10, invert: bool = False) ->ImageData:
|
|
789
819
|
"""
|
|
790
820
|
Converts a grayscale image to binary image using local (adaptive) binarization.
|
|
791
821
|
|
|
792
822
|
Args:
|
|
793
823
|
image_data (ImageData): The image data to be converted.
|
|
794
824
|
block_size (int): Size of the block for local binarization (default is 0).
|
|
795
|
-
compensation (int): Adjustment value to modify the threshold (default is
|
|
825
|
+
compensation (int): Adjustment value to modify the threshold (default is 10).
|
|
796
826
|
invert (bool): If true, invert the binary image (black becomes white and white becomes black).
|
|
797
827
|
|
|
798
828
|
Returns:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dynamsoft_capture_vision_bundle
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4.1000
|
|
4
4
|
Summary: Dynamsoft Capture Vision Bundle
|
|
5
5
|
Home-page: https://www.dynamsoft.com/capture-vision/docs/core/introduction/?utm_source=pypi
|
|
6
6
|
Author: Dynamsoft
|
|
@@ -15,7 +15,7 @@ Dynamsoft Capture Vision Bundle for Python
|
|
|
15
15
|
|version| |python| |pypi|
|
|
16
16
|
|
|
17
17
|
.. |version| image:: https://img.shields.io/pypi/v/dynamsoft_capture_vision_bundle?color=orange
|
|
18
|
-
.. |python| image:: https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue
|
|
18
|
+
.. |python| image:: https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue
|
|
19
19
|
.. |pypi| image:: https://img.shields.io/pypi/dm/dynamsoft_capture_vision_bundle
|
|
20
20
|
|
|
21
21
|
|
|
@@ -41,7 +41,7 @@ is an aggregating SDK of a series of specific functional products including:
|
|
|
41
41
|
Version
|
|
42
42
|
-------
|
|
43
43
|
|
|
44
|
-
- 3.
|
|
44
|
+
- 3.4.1000
|
|
45
45
|
|
|
46
46
|
Supported Platforms
|
|
47
47
|
-------------------
|
|
@@ -54,6 +54,8 @@ Supported Platforms
|
|
|
54
54
|
|
|
55
55
|
Supported Python Versions
|
|
56
56
|
-------------------------
|
|
57
|
+
- Python3.14
|
|
58
|
+
|
|
57
59
|
- Python3.13
|
|
58
60
|
|
|
59
61
|
- Python3.12
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
dynamsoft_capture_vision_bundle/ConfusableChars.data,sha256=AyENw2eN72fiMDmjoDToU8z3Nuk1YjxYc_Q7yAmlQFg,5577
|
|
2
|
+
dynamsoft_capture_vision_bundle/DynamicPdfx64.dll,sha256=6x0JwiwVXfAbzDjvr1E56DEL9svZnVpVoBBtKLNXsuY,4714416
|
|
3
|
+
dynamsoft_capture_vision_bundle/DynamsoftBarcodeReaderx64.dll,sha256=HurFCv7sKD6T9ZyiZ9JEL7uitUYhMXTJ_xeDJg_GcxE,6782024
|
|
4
|
+
dynamsoft_capture_vision_bundle/DynamsoftCaptureVisionRouterx64.dll,sha256=mR6E9K9A_Bs3KbAsHYh-r2OPv93KQgUUTbDAMU1oJrc,771656
|
|
5
|
+
dynamsoft_capture_vision_bundle/DynamsoftCodeParserDedicatorx64.dll,sha256=xuxROfEUwlTj3xrgVMJ-E0XjhzGLV5Bg6dE5Sq1k6RA,1583176
|
|
6
|
+
dynamsoft_capture_vision_bundle/DynamsoftCodeParserx64.dll,sha256=bCn-J8VOHYLNzpIOO8b18HRgOF5_fAtu_klb8W1xZnk,2090568
|
|
7
|
+
dynamsoft_capture_vision_bundle/DynamsoftCorex64.dll,sha256=grFOzVkgEvkIC1zO2N2MYmuNvfWftXVqcsrpbhsR9XE,1023048
|
|
8
|
+
dynamsoft_capture_vision_bundle/DynamsoftDocumentNormalizerx64.dll,sha256=wC9VbuQkcEgrEHa-bz5O5SGb6qkCtflLbXNjyrMZL8s,1882696
|
|
9
|
+
dynamsoft_capture_vision_bundle/DynamsoftIdentityUtilityx64.dll,sha256=HSrzuZEGn7AiOFrqFhCh1IEgDkns2bS_-jmyi02w0Kg,226376
|
|
10
|
+
dynamsoft_capture_vision_bundle/DynamsoftImageProcessingx64.dll,sha256=aeQTURQJaiuglwFhUaLbrlK_I8roLcC1VFf8mzcc1Pw,7160392
|
|
11
|
+
dynamsoft_capture_vision_bundle/DynamsoftLabelRecognizerx64.dll,sha256=PNuRbqT_F1Bfk8-QfeY6qBznUfUkX80tP1jz_ZXyNfM,2654792
|
|
12
|
+
dynamsoft_capture_vision_bundle/DynamsoftLicensex64.dll,sha256=OyY9mPONinzZBoc_G-XnX-vnk1E7E2JjAal-GPmW5nM,2970184
|
|
13
|
+
dynamsoft_capture_vision_bundle/DynamsoftNeuralNetworkx64.dll,sha256=w6DENyoLTdMwCcwrcr2vNH_GprhXUkaNId_x7vMHJpw,3660360
|
|
14
|
+
dynamsoft_capture_vision_bundle/DynamsoftUtilityx64.dll,sha256=h_Egf14z8IH-CgeLkXgNSJl6r3GlKe01LwWOD0QS7CA,621128
|
|
15
|
+
dynamsoft_capture_vision_bundle/OverlappingChars.data,sha256=8vqVIUItLm0CISjifIOwSoNzJtn5Z54OKfhEs4dGeNM,486901
|
|
16
|
+
dynamsoft_capture_vision_bundle/_DynamsoftBarcodeReader.cp313-win_amd64.pyd,sha256=HA4vfCvHF1jaSpfPYkW6-akcMLdMVrQNKWhW_5hnXBc,278528
|
|
17
|
+
dynamsoft_capture_vision_bundle/_DynamsoftCaptureVisionRouter.cp313-win_amd64.pyd,sha256=KYwBSKUnfRfJy8naO2Fpoxjj986U15TvenvNvYpmWxo,295424
|
|
18
|
+
dynamsoft_capture_vision_bundle/_DynamsoftCodeParser.cp313-win_amd64.pyd,sha256=2w8g4b4yVR0s7gmT-NdHbLkHXFqg_vKeYYUFJVJQsZE,57856
|
|
19
|
+
dynamsoft_capture_vision_bundle/_DynamsoftCodeParserDedicator.cp313-win_amd64.pyd,sha256=2VbgQhssi7exGCsZefnCcDxSqEx4ntZPIQkAw03pcGo,10752
|
|
20
|
+
dynamsoft_capture_vision_bundle/_DynamsoftCore.cp313-win_amd64.pyd,sha256=b3HDl2etBKg2IxOaeM0YMC17tFgBEycoTY0-P8zQ7Rs,340992
|
|
21
|
+
dynamsoft_capture_vision_bundle/_DynamsoftDocumentNormalizer.cp313-win_amd64.pyd,sha256=Mglmam1nbOgK-euGOfqXPoSwglLoDkmhJbnyzgpi-Z8,147968
|
|
22
|
+
dynamsoft_capture_vision_bundle/_DynamsoftIdentityUtility.cp313-win_amd64.pyd,sha256=vw2kWwjep7HChjlfXqW58NHOOaKqQQ4KFkngKs9GC-8,38912
|
|
23
|
+
dynamsoft_capture_vision_bundle/_DynamsoftImageProcessing.cp313-win_amd64.pyd,sha256=r8C1LHdeIpJLETgb8rIwiN67WnqG53JMc6P2x2ZT5eE,10752
|
|
24
|
+
dynamsoft_capture_vision_bundle/_DynamsoftLabelRecognizer.cp313-win_amd64.pyd,sha256=W92ZBRqGKPL5k6XROeZH6pp2i-Y6pKqYQ8zlioEB3BE,161792
|
|
25
|
+
dynamsoft_capture_vision_bundle/_DynamsoftLicense.cp313-win_amd64.pyd,sha256=U0Y2fPAYPt2GMDiPrU8hurM8jvyLknH5ZjYPYIWYVTc,38400
|
|
26
|
+
dynamsoft_capture_vision_bundle/_DynamsoftUtility.cp313-win_amd64.pyd,sha256=5cKYCEuKpatES7VY6kfCd5CHqkE9ugOzHVZoFc-7mKU,146944
|
|
27
|
+
dynamsoft_capture_vision_bundle/__init__.py,sha256=6P_yhhs6GX5FylB6q-pB4hocjN6b0HjctKqkxptNumE,265
|
|
28
|
+
dynamsoft_capture_vision_bundle/core.py,sha256=BzbudSXCBWcpaPzt1D-GkaP9YRtqWfmi_8RuXopGf70,115070
|
|
29
|
+
dynamsoft_capture_vision_bundle/cvr.py,sha256=7B77LPILF3urWua6NXB3EnY58L1mmH1j8Mx6ARKVvgc,66889
|
|
30
|
+
dynamsoft_capture_vision_bundle/dbr.py,sha256=08_mhWtVu89ITPnmyxoRKTEod2bM9ze5ujHA2V8oQLc,59015
|
|
31
|
+
dynamsoft_capture_vision_bundle/dcp.py,sha256=-dT77PygBzwVg0Ns23dNdqYjhIX3DfCLjP65Yg0E4Ms,7298
|
|
32
|
+
dynamsoft_capture_vision_bundle/dcpd.py,sha256=BYjX56Ns1G14JRd48W4GdM5rpoIjNEFqg_L34RrFPRY,694
|
|
33
|
+
dynamsoft_capture_vision_bundle/ddn.py,sha256=4AUY0VCJi32u_aHDukh_CvnGqFxTXRbIg3BaJlm6Vtw,43590
|
|
34
|
+
dynamsoft_capture_vision_bundle/dip.py,sha256=PjJdWN1K7QwuEXSN38Y-roIvsOtR-0Pln490L9ml7Nc,765
|
|
35
|
+
dynamsoft_capture_vision_bundle/dlr.py,sha256=N8t-u_GgkqD6-cB3619XhWt3pJ3uWN-O0s77s2260nA,48100
|
|
36
|
+
dynamsoft_capture_vision_bundle/id_utility.py,sha256=gU5mjY1SfQbjC4JZnNXfl2HeWe7FjNNjwcCCBwkKQ10,4017
|
|
37
|
+
dynamsoft_capture_vision_bundle/license.py,sha256=zu6u_8TGCQo6cS_-DENM_WV5VTtghB5o1shRgb8mYYs,5423
|
|
38
|
+
dynamsoft_capture_vision_bundle/utility.py,sha256=nhCs1GRgjGNcjqBBH0tbTFk2P9PDgXJL6JCMtF5TtBU,39059
|
|
39
|
+
dynamsoft_capture_vision_bundle/Models/Code128Decoder.data,sha256=InKC24_9EKSJBk4WRQOT-3GECqAdpPe4oNLWKA1vLv8,649136
|
|
40
|
+
dynamsoft_capture_vision_bundle/Models/Code39ITFDecoder.data,sha256=8U4ST1zYMAsAmytQYBoBgF30lzd7MRjIARsQr0ehis4,1264984
|
|
41
|
+
dynamsoft_capture_vision_bundle/Models/DataMatrixQRCodeDeblur.data,sha256=8btAhGj_cduSzI0muXQv5zgGeEM9UbC9TPD7e9OmY3Y,1755183
|
|
42
|
+
dynamsoft_capture_vision_bundle/Models/DataMatrixQRCodeLocalization.data,sha256=HrU0ZwYxqponmY5eIjtv6sMk_UnrWtflQ7p-Ok_0RmM,998425
|
|
43
|
+
dynamsoft_capture_vision_bundle/Models/EAN13Decoder.data,sha256=LvOyzH0UMEAFEZXsE0_N3kllxF4V-Yg9pKU3SXpi9LE,652211
|
|
44
|
+
dynamsoft_capture_vision_bundle/Models/LetterCharRecognition.data,sha256=QAVT8Ji8xSA14L3qbjliWnJUMSCheQ4f8lqwXF60nF8,2717366
|
|
45
|
+
dynamsoft_capture_vision_bundle/Models/LowercaseCharRecognition.data,sha256=b7aP9yuKgR3_G4MmPgeOPKbrOymu1S1K5y0wTshHwIk,2665164
|
|
46
|
+
dynamsoft_capture_vision_bundle/Models/MRZCharRecognition.data,sha256=uqg9szVjCeOWkKUKgggrB13DRxExF28SDR2wd0duRAo,168230
|
|
47
|
+
dynamsoft_capture_vision_bundle/Models/MRZLocalization.data,sha256=S8dh1zwOgWElFXelTeJ1aR9KA7Iy_7UELKtCj2yk6B4,998165
|
|
48
|
+
dynamsoft_capture_vision_bundle/Models/MRZTextLineRecognition.data,sha256=X3UIaaJ6vt0RndxAgjNbvBR5euwB25pfkkhq95LQqeQ,1819591
|
|
49
|
+
dynamsoft_capture_vision_bundle/Models/NumberCharRecognition.data,sha256=shrknKj2hSWGglX7VuXVaUfZIGWYMW4xB1ZrwW4mpVA,2633030
|
|
50
|
+
dynamsoft_capture_vision_bundle/Models/NumberLetterCharRecognition.data,sha256=6h7zn1NAqIztiNsO95610PodngjtcqY6xJxeE91ngfI,2739470
|
|
51
|
+
dynamsoft_capture_vision_bundle/Models/NumberLowercaseCharRecognition.data,sha256=CwMKHbruXtzh5rMPyl-R4dCVpwMEGh5A62yVlyKqVvM,2685256
|
|
52
|
+
dynamsoft_capture_vision_bundle/Models/NumberUppercaseCharRecognition.data,sha256=_qqlHUupFsZuQXvURmlgzo2giWMojCX_VYg1ACDWpCg,2685256
|
|
53
|
+
dynamsoft_capture_vision_bundle/Models/OneDDeblur.data,sha256=uNM2NFdLZKgV16xqCj_KeR1CbLTaNua-1gLw8F7dPcQ,1758189
|
|
54
|
+
dynamsoft_capture_vision_bundle/Models/OneDLocalization.data,sha256=WNOEheKpD6pwBzIodlHgoiQ2r7p1QQqKWKrgFM3hBv4,1121723
|
|
55
|
+
dynamsoft_capture_vision_bundle/Models/PDF417Deblur.data,sha256=61f190r6fEUe1uLY0yrJnUIVCo_q4NAdaW0zNVQNyxs,1804020
|
|
56
|
+
dynamsoft_capture_vision_bundle/Models/PDF417Localization.data,sha256=BWDn9dHzzsawU-BfZZ6iKiUE7sqGJXlURATE1gmTddY,998076
|
|
57
|
+
dynamsoft_capture_vision_bundle/Models/UppercaseCharRecognition.data,sha256=k8bqUPAe8-FMwu5LoAt1XIfiSG7fxuX031XHg853xCc,2665164
|
|
58
|
+
dynamsoft_capture_vision_bundle/Models/VINCharRecognition.data,sha256=RWyc8K6Xb86a6N8PrPGi2TZx83lP9B1WZHZ_S0Oyl7Y,2685232
|
|
59
|
+
dynamsoft_capture_vision_bundle/ParserResources/AADHAAR.data,sha256=GL1-dlPb6lKpIUKUOw7__x02I2WAL4ZTb_wuWv0PWD8,8192
|
|
60
|
+
dynamsoft_capture_vision_bundle/ParserResources/AAMVA_DL_ID.data,sha256=gYGPyFlVI_zbbkrEeHx9wUN9uizj5XDFs8lFlPvuLO8,184127
|
|
61
|
+
dynamsoft_capture_vision_bundle/ParserResources/GS1_AI.data,sha256=gUWywDgX1k8lloxWeW5P7cxccHZmFRg0Kcs_alVoJ9A,708279
|
|
62
|
+
dynamsoft_capture_vision_bundle/ParserResources/MRTD.data,sha256=rtjDWWP-ivWynUgHf3nF4bSLPgW1bfMJQqbt0PLIA1I,193869
|
|
63
|
+
dynamsoft_capture_vision_bundle/ParserResources/SOUTH_AFRICA_DL.data,sha256=2ziVERq2zQftl2uVdzg6iZiAPRnm-Krowyh34MtNK5Q,5788
|
|
64
|
+
dynamsoft_capture_vision_bundle/ParserResources/VIN.data,sha256=EuAZT1aJibsdeqO0RhduPBasH_Ay5BhN2I7j7R35EGc,15555
|
|
65
|
+
dynamsoft_capture_vision_bundle/Templates/DBR-PresetTemplates.json,sha256=bT2DUzGzvoLBlLgLAlWZnF0snwsEkDxQwncfLgRk3PM,18927
|
|
66
|
+
dynamsoft_capture_vision_bundle/Templates/DDN-PresetTemplates.json,sha256=LN8Nerh7GqKpBV75kOthvhG5gSpThNq36LUNnvMutKk,11142
|
|
67
|
+
dynamsoft_capture_vision_bundle/Templates/DLR-PresetTemplates.json,sha256=-5sJ4KMWeaW_uRyRehyqvA4t6HOKybTHsk14DBSGF-8,15636
|
|
68
|
+
dynamsoft_capture_vision_bundle/Templates/DriverLicenseScanner.json,sha256=f8pSppRsN7YyAxGgt6L8tr9gKmPOVUMrvikXFjGKi7E,2830
|
|
69
|
+
dynamsoft_capture_vision_bundle/Templates/MRZScanner.json,sha256=08_oAx8xt-updNC7XxJ3Yn7pZ7wxCm2V-aom6Q7_QNk,20738
|
|
70
|
+
dynamsoft_capture_vision_bundle/Templates/VINScanner.json,sha256=1T85fLqFvDgRuiEnBcdBiQ-fhdUHt1X5i9KqSluChbk,9456
|
|
71
|
+
dynamsoft_capture_vision_bundle-3.4.1000.dist-info/licenses/LICENSE.txt,sha256=F0zanq492cE0SFBfXJnfpF0l26IKDIVk2_6B0tDleYA,54
|
|
72
|
+
dynamsoft_capture_vision_bundle-3.4.1000.dist-info/METADATA,sha256=j52_MqO9QJMoJpRF9NonykK1y8RVMnQA5gsgdva-ae4,2933
|
|
73
|
+
dynamsoft_capture_vision_bundle-3.4.1000.dist-info/WHEEL,sha256=-WvvtQtdhM1F5HMi-4hSXLQ_1Tg6qJRWO1HnLNr4mCU,102
|
|
74
|
+
dynamsoft_capture_vision_bundle-3.4.1000.dist-info/top_level.txt,sha256=qdPZRqgWDXkRTMWEMuolZiwhmUSnYQmxf7LgX-BnAjc,295
|
|
75
|
+
dynamsoft_capture_vision_bundle-3.4.1000.dist-info/RECORD,,
|
|
@@ -4,9 +4,9 @@ _DynamsoftCodeParser
|
|
|
4
4
|
_DynamsoftCodeParserDedicator
|
|
5
5
|
_DynamsoftCore
|
|
6
6
|
_DynamsoftDocumentNormalizer
|
|
7
|
+
_DynamsoftIdentityUtility
|
|
7
8
|
_DynamsoftImageProcessing
|
|
8
9
|
_DynamsoftLabelRecognizer
|
|
9
10
|
_DynamsoftLicense
|
|
10
|
-
_DynamsoftNeuralNetwork
|
|
11
11
|
_DynamsoftUtility
|
|
12
12
|
dynamsoft_capture_vision_bundle
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
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
|