Release Notes for C++ Edition - v2.x
2.4.10 (07/23/2024)
New
- Added a new parameter
MinQuadrilateralAreaRatioto define the minimum targeting document area. The parameter is available via both the parameter template and theSimplifiedDocumentNormalizerSettings. - Added a new parameter
ExpectedDocumentsCountto define the expected document count for detection. The parameter is available via both the parameter template and theSimplifiedDocumentNormalizerSettings. - Added a new function
Cloneto the classCCapturedResultItem. - Added a new function
AddItemto the classCCapturedResult. - Add a new charge way,
TimeSliceCount.
Changed
- Changed the maximum length of the
nameparameter to 255 for theSetDeviceFriendlyNamemethod. If the length exceeds 255, it will be truncated. - Changed the default value of the
waitForThreadExitparameter totruefor theStopCapturingmethod.
Fixed
- Fixed a bug where
CaptureVisionRouter.StartCapturingwould erroneously halt the fetching process when its status was running, leading to an unnecessary stop and restart of the fetching operation. - Fixed a bug where
CDirectoryFetcherwould prematurely read an image before verifying if the buffer was full, resulting in potential loss of the image that did not make it into the buffer upon callingStopFetching.
2.2.10 (03/01/2024)
Improved
- Security update for
DynamsoftDocumentNormalizerlibrary and other corresponding libraries. - Supported multiple instances of the class
CCaptureVisionRouter. - Improved the usage count logic of the concurrent license mode.
- Improved the experience of local cache usage when failing to connect the license server. The renewal of the local cache is optimized as well.
New
- Added new error codes:
EC_RESULT_TYPE_MISMATCH_IRREPLACEABLEEC_LICENSE_CACHE_USED
- Added a virtual destructor to the interface
CImageSourceErrorListenerto prevent memory leaks. - Added a new function
GetDetectedQuadsResultto theCCapturedResultclass to get all the result items with the typeCRIT_DETECTED_QUAD. - Added a new function
GetNormalizedImagesResultto theCCapturedResultclass to get all the result items with the typeCRIT_NORMALIZED_IMAGE. - Added new virtual destructors to the following interfaces to prevent memory leaks.
Changed
- Changed the internal logic of the function
SetResultUnitTypesOnlyForInputofObservationParameters. The function only takes effect when the callback of the specified result unit is implemented.
Fixed
- Fixed a crash bug of the Replace method of the
IntermediateResultUnitclass. The method will return the error codeEC_RESULT_TYPE_MISMATCH_IRREPLACEABLEwhen the result type is mismatched. - Fixed a bug where error messages are not output when parsing the parameter templates.
- Fixed a bug where the capture might be blocked due to the network latency.
- Fixed a bug where the
DetectAndNormalizeDocumenttask might be approved without a valid license. - Fixed the bugs of usage count.
- Count twice for a single PDF417 barcode when a code parser task is implemented on the result.
- The barcode decoding result might not be uploaded timely.
- The usage count of text line recognition might be double counted when the intermediate results are output.
- The document boundary detection result might be miscounted.
- Patchcode might be counted even if there is no Patchcode license item.
2.2.0 (01/16/2024)
Highlights
- Introduced the capability for users to influence the image processing process by altering intermediate results. Users can now clone, edit, and substitute intermediate result units within the callback function of each type. Subsequent operations will then proceed based on the updated unit.
- Introduced a feature for multi-condition filtering across products. Users can now specify filtering criteria for the task results of a
TargetROIDefby implementing anOutputTaskSettingbased on the task results of varying products from descendantTargetROIDefobjects. - Enhanced the
Offsetparameter inTargetROIDef. Users now have the capability to meticulously customize components of the coordinate system, including the origin, X-axis, and Y-axis, for precise offset calculation.
Changelogs
New
- Updated the template system
- Added
StringLengthRangeforTextDetectionMode. - Added
ReferenceTaskNameArrayunderLocation.ReferenceObjectFilterto filter the reference objects generated by the task name. - Added the support of the
OutputTaskSettingdefinition. The following subparameters are available inOutputTaskSettingobject:OutputConditionTaskResultArrayTargetROIDefNameTaskSettingNameArrayBackwardReferenceOutputReferenceTaskNameArrayReferenceResultTypeArrayOperator
- Offset parameter is optimized.
- Added
ReferenceObjectTypeto specify whether the reference object is an atomic object or the whole image. - Added
ReferenceXAxis&ReferenceYAxisto define the X & Y axis. - Modified
FirstPoint,SecondPoint,ThirdPoint&FourthPoint. You can specify whether the X or Y coordinate of the point is measured by percentage. - Deprecated
ReferenceObjectSizeType.
- Added
- Added
- The following classes are migrated from
DynamsoftCoremodule to theDynamsoftCaptureVisionRoutermodule:CIntermediateResultReceiverCapturedResultReceiverCapturedResultFilterCIntermediateResultManager
- Added a new class back method
OnShortLinesUnitReceivedto theCIntermediateResultReceiverclass. - Added a new class
CAbstractIntermediateResultReceiver. It is the super class of theCIntermediateResultReceiver. - Added methods
PauseCapturingandResumeCapturing. Two newCapturedStatemembers,CS_PAUSEDandCS_RESUMED, are added as well. - Added a new property
documentSettingsto structSimplifiedCaptureVisionSettings. The corresponding structSimplifiedDocumentNormalizerSettingsis added to theDynamsoftDocumentNormalizermodule to store thedocumentSettings. - Added the following methods to the
CObservationParametersclass to specify theinput onlyresult unit.SetResultUnitTypesOnlyForInputGetResultUnitTypesOnlyForInputIsResultUnitTypeOnlyForInput
- Added the following methods to the
CRegionObjectElementclass to support the intermediate result modification.SetLocationCloneRetainRelease
- Added a new method
Replaceto theCIntermediateResultUnitclass to support the replacement of intermediate result units. - Added
SetImageDatamethods to the following classes:CColourImageUnitCScaledDownColourImageUnitCGrayscaleImageUnitCTransformedGrayscaleImageUnitCEnhancedGrayscaleImageUnitCBinaryImageUnitCTextureRemovedGrayscaleImageUnitCTextureRemovedBinaryImageUnitCTextRemovedBinaryImageUnit
- Added new methods to the
CPredetectedRegionsUnitclass to add, remove or set the predetected regions. - Added new methods to the
CLineSegmentsUnitclass to add, remove or set the line segments. - Added new methods to the
CTextZonesUnitclass to add, remove or set the text zones. Added a new classCTextZoneto store the information of a single text zone. - Added a new method
SetContoursto theCContourUnitclass. - Added new methods to the
CTextureDetectionResultUnitclass to set the X & Y spacing. - Added a new intermediate result unit,
CShortLinesUnit, to output the detected short lines. The corresponding enumeration memberIRUT_SHORT_LINESis added to theIntermediateResultUnitType. - Added the following methods to the
CCapturedResultItemclassGetTargetROIDefNameGetTaskNameRetainRelease
- Added the following new error codes
EC_IMAGE_SIZE_NOT_MATCHEC_IMAGE_PIXEL_FORMAT_NOT_MATCHEC_SECTION_LEVEL_RESULT_IRREPLACEABLEEC_AXIS_DEFINITION_INCORRECTEC_TEXT_LINE_GROUP_LAYOUT_CONFLICTEC_TEXT_LINE_GROUP_REGEX_CONFLICT
- Added the following methods to the
CCapturedResultclass.- A new override constructor.
RetainRelease
- Updated
CImageDataclass- Change the return value of
GetBytesLengthfrom int to unsigned long long. - Added a new constructor.
- Change the return value of
- Added a new supported image pixel format, binary 8 inverted. The corresponding enumeration member is added to the
ImagePixelFormat. - Added return value for the
Retainmethod of theCIntermediateResultUnitclass. The method will return the pointer of the currentCIntermediateResultUnit. - Added new methods to the
CLongLinesUnitclass to add, set or remove the line segments of the unit. - Added new methods to the
CCornersUnitclass to add, set or remove the corners of the unit. - Added new methods to the
CCandidateQuadEdgesUnitclass to add, set or remove the candidate quad edges of the unit. - Added new methods to the
CDetectedQuadsUnitclass to add, set or remove the detected quad elements of the unit. - Added new methods to the
CNormalizedImagesUnitclass to set or remove the normalized image element of the unit. - Added the following methods to the
CNormalizedImagesResultclass.- A new constructor
RetainRelease
- Added the following methods to the
CDetectedQuadsResultclass.- A new constructor
RetainRelease
- Added
SimplifiedDocumentNormalizerSettingsstruct to configure basic settings of document processing. - Added the following methods to the
CDocumentNormalizerModuleclass to create the corresponding elements:CreateNormalizedImageElementCreateDetectedQuadElement
- Added a new enumeration
ImageColourModeto specify the colour mode of the normalized image. - Added a new method
CreatePredetectedRegionElementto theCImageProcessingModuleclass to create the predetected region element.
Fixed
- Fixed a bug where the internal table boundaries were recognized as the document boundaries.
- Fixed a crash bug that might happen when triggering the
SetNextImageToReturnmethod of theImageSourceAdapterclass.
Break Changes
- Changed the logic of the
StopCapturingmethod.CaptureResultReceiverwill not receive results afterStopCapturingis triggered withwaitForRemainingTasksfalse.- Support stop capturing after the
PauseCapturingmethod is triggered.
- Changed the logic of the
capturedResultItemTypessetting ofSimplifiedCaptureVisionSettings:- If the result item types don’t match the specified template, the method UpdateSettings will return the error code
EC_PARAMETER_VALUE_INVALIDwith the message “The captured result item types do not match the task configurations in the template”. - Based on the
capturedResultItemTypessetting, the irrelevant tasks will be removed from the template. - The
capturedResultItemTypesshould include at least one of theCRIT_BARCODE,CRIT_TEXT_LINE,CRIT_DETECTED_QUAD,CRIT_NORMALIZED_IMAGE. Otherwise, the methodUpdateSettingswill return the error codeEC_PARAMETER_VALUE_INVALIDwith the message “ The captured result item types should contain at least one task result type “.
- If the result item types don’t match the specified template, the method UpdateSettings will return the error code
- Refactored the
CContourclass. Please view API reference -CContourclass for more information. - The destructor functions of the following classes are changed to protected:
CCandidateQuadEdgesUnitCCornersUnitCDetectedQuadElementCDetectedQuadsUnitCLongLinesUnitCNormalizedImageElementCNormalizedImageUnitCNormalizedImagesResultCDetectedQuadsResult
- Change the compiler option of the runtime library of Windows DLLs from MD to MT.
- The
DeepNeuralNetworkmodule is separated from theDynamsoftImageProcessingmodule.
2.0.20 (10/26/2023)
New
- Added the following preset templates:
- PT_READ_BARCODES_SPEED_FIRST
- PT_READ_BARCODES_READ_RATE_FIRST
- PT_READ_BARCODES_BALANCED
- PT_READ_SINGLE_BARCODE
- PT_READ_DENSE_BARCODES
- PT_READ_DISTANT__BARCODES
- PT_RECOGNIZE_NUMBERS
- PT_RECOGNIZE_LETTERS
- PT_RECOGNIZE_NUMBERS_AND_LETTERS
- PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS
- PT_RECOGNIZE_UPPERCASE_LETTERS
- Added parameter
PagetoImageSourceobject. - Added a new method
SetPagesto the classCDirectoryFetcherand classCFileFetcher. - Added
CImageSourceErrorListenerto receive the errors from an image source. - Added method
SetErrorListenerto classCImageSourceAdapterto add theCImageSourceErrorListener. - Added a new parameter
minImageCaptureIntervalwhich can be set via the structSimplifiedCaptureVisionSettingsor theCaptureVisionTemplateobject of a JSON template file. - Added “UNKNOWN” as a supported value of the
TextDetectionMode.Directionparameter. Changed the default value ofDirectionto “UNKNOWN”. - Added the following error codes:
- EC_FILE_ALREADY_EXISTS
- EC_CREATE_FILE_FAILED
- EC_IMGAE_DATA_INVALID
Improved
- The class
CDirectoryFetcherandCFileFetcherwill be able to return error codes viaCImageSourceErrorListener - Updated the error codes of the method
SaveToFileof the classCImageManager. - Optimize the logic to support calling
CIntermediateResultManager.AddResultReceiverandCIntermediateResultManager.RemoveResultReceiverafter StartCapturing. - Added ability to output all templates via methods
OutputSettingsandOutputSettingsToFileby specifying “*” for the parametertemplateName.
Fixed
- Small fixes and tweaks.
Changed
- Changed the upper limit to the
DuplicateForgetTime, which is 3 minutes. - Changed the timing of
OnOriginalImageResultReceivedso that it is triggered immediately after receiving the image. - Changed the constructors of the following classes from public to protected.
- CImageTag
- CCapturedResultReceiver
- CCapturedResultFilter
- CImageSourceAdapter
- CProactiveImageSourceAdapter
- CIntermediateResultUnit
- CIntermediateResultReceiver
- Remove const modifiers of all callback methods of class
CCapturedResultReceiverand classCIntermediateResultReceiver.
2.0.10(08/08/2023)
Fixed
-
Fixed crash bugs that happen in rare cases.
-
Fixed a bug where the local license is not successfully updated in some case.
Improved
- Improved the implementation of the StopCapturing method to prevent deadlock when invoked in the management thread.
New
-
Added a new class
CVector4in the core module. -
Added new methods
SetTransformMatrixandGetTransformMatrixto the classCIntermediateResultUnit. EnumerationTransformMatrixTypeis also added to support users specifying the type of the target matrix. -
Added enumeration
RasterDataSourceto specify the raster data source when reading PDF files. The previous enumerationTargetTypeis removed. The attributeTargetType typeof ClassCPDFReadingParameteris replaced byRasterDataSource rasterDataSource. -
Added
CRIT_NORMALIZED_IMAGEto the available result types of result cross-verification. -
Added method
GetContoursto the classCContourUnitto get all theCContourobjects contained in the unit and their hierarchies.
Changed
-
Changed the parameters and the return value of the method
GetLongLineof CLongLinesUnit class. The method will require anindexvalue as the parameter and return aCLineSegmentobject as the return value. -
Changed the structure of class
CPoint. -
Renamed method
GetRawImagetoGetOriginalImage. -
Renamed method
GetSourceImageHashIdtoGetOriginalImageHashId. This change applies to the following classes:-
CIntermediateResultUnit -
CCapturedResult -
CDecodedBarcodesResult -
CRecognizedTextLinesResult -
CNormalizedImagesResult -
CDetectedQuadsResult -
CParsedResult
-
-
Renamed method
GetSourceImageTagtoGetOriginalImageTag. This change applies to the following classes:-
CIntermediateResultUnit -
CCapturedResult -
CDecodedBarcodesResult -
CRecognizedTextLinesResult -
CNormalizedImagesResult -
CDetectedQuadsResult -
CParsedResult
-
-
Renamed methods
GetCounttoGetItemsCount. This change applies to the following classes:-
CCapturedResult -
CDecodedBarcodesResult -
CRecognizedTextLinesResult -
CNormalizedImagesResult -
CDetectedQuadsResult -
CParsedResult
-
-
Renamed an enumeration member of
CapturedResultItemTypefromCRIT_RAW_IMAGEtoCRIT_ORIGINAL_IMAGE. -
Renamed a method of
CapturedResultReceiverfromOnRawImageResultReceivedtoOnOriginalImageResultReceived. -
Renamed a method of
CapturedResultFilterfromOnRawImageResultReceivedtoOnOriginalImageResultReceived. -
Renamed the class
CRawImageResultItemtoCOriginalImageResultItem. -
Renamed an enumeration member of
BufferOverflowProtectionModefromBOPM_APPENDtoBOPM_UPDATE. -
The following methods are renamed:
-
Renamed
EnableResultVerificationtoEnableResultCrossVerification. -
Renamed
isResultVerificationEnabletoisResultCrossVerificationEnabled. -
Renamed
EnableDuplicateFiltertoEnableResultDeduplication. -
Renamed
isDuplicateFilterEnabledtoisResultDeduplicationEnabled.
-
-
Renamed parameter
CornerAngleRangeArraytoCornerAngleRange. The range of the sub parameterMinValueis restricted to [0,90] and the range ofMaxValueis restricted to [90,180].
Removed
-
Removed methods
SetLocalToSourceImageTransformMatrixandGetLocalToSourceImageTransformMatrixfrom classCIntermediateResultUnit. -
Removed methods
SetRotationTransformMatrixandGetRotationTransformMatrixfrom classCIntermediateResultUnit. -
Removed methods
GetCountandGetContourfrom classCContourUnit. Use the methodGetContoursinstead.
2.0.0 (07/04/2023)
Highlights
DynamsoftDocumentNormalizer SDK has been revamped to integrate with DynamsoftCaptureVision (DCV) architecture, which is newly established to aggregate the features of functional products powered by Dynamsoft. The features are designed to be pluggable, customizable and interactable. In addition, the functional products share the computation so that their processing speed is much higher than working individually.
DynamsoftCaptureVisionarchitecture consists of:ImageSourceAdapter(ISA), the standard input interface for you to convert image data from different sources into the standard input image data. In addition,ISAincorporates an image buffer management system that allows instant access to the buffered image data.CaptureVisionRouter (CVR), an engine for you to update templates, retrieve images fromISA, coordinate corresponding functional products and dispatch the results to the receivers.- Functional products that perform image processing, content understanding and semantic processing. The functional products are pluggable and passively called by CVR when they are required.
- Result receiver interfaces. You can implement
CapturedResultReceiver (CRR)to receive theCapturedResultsthat output when the processing on an image is finalized. You can also implementIntermediateResultReceiver (IRR)to get timely results from different stages of the workflow.
- The parameter template system has been comprehensively upgraded.
- Multiple algorithm task settings are available. You can define barcode decoding, label recognizing, document scanning and semantic processing tasks in one template file.
- Extended the feature of the ROI system. By configuring the
target ROIparameters, you can not only specify anROIon the original image but also define the dependencies of the algorithm tasks. This feature enables you to customize the workflow when processing complex scenarios. - The image processing parameters are separated from the task parameters so that the template settings become more clear and concise.
- The
intermediate resultsystem has been improved.- Achieved the
intermediate resultsharing between different functional products. The results that have the same image source and processing parameters are directly reused, which speeds up the image processing workflow. You don’t need to add any additional code to enable theintermediate resultsharing. The library can recognize all the reusable results automatically based on the template file you uploaded. - The readability and interactivity of the
intermediate resultsare enhanced.IntermediateResultReceiverallows you to receive up to 27 different types ofIntermediate results. You can clearly read which stage of the algorithm each result is output from. In addition,IntermediateResultManagerallows you to intervene in the workflows by modifying theintermediate results.
- Achieved the