Release Notes - C++ 3.x
3.4.10 (07/23/2024)
Highlights
- Added a new algorithm stage
IRUT_RAW_TEXT_LINES
. Corresponding APIs are added to obtain the intermediate result of this stage.
Changelogs
New
- Added a new parameter CharSet to the
CharacterModel
object to include or exclude characters for recognition. - Added a new algorithm stage
IRUT_RAW_TEXT_LINES
. Corresponding APIs are added to obtain the intermediate result of this stage.- Class
CRawTextLinesUnit
- Class
CRawTextLine
- Enumeration
RawTextLineStatus
- Class
- Added the following intermediate result altering functions to the class
CRecognizedTextLinesUnit
.- Added function
RemoveRecognizedTextLine
- Added function
AddRecognizedTextLine
- Added function
SetRecognizedTextLine(index,element,matrixToOriginalImage)
- Added function
- Added a new function
CreateRawTextLine
to the classCLabelRecognizerModule
. - Added a new function
GetRawText
to the classCRecognizedTextLineELement
. - Added a new function
GetRawText
to the classCTextLineResultItem
. - Added a new function
AddItem
to the classCRecognizedTextLinesResult
. - Added a new function
SetLocation
to the classCTextLineResultItem
. - Added a new enumeration member
IRUT_RAW_TEXT_LINES
to theIntermediateResultUnitType
. - Added a new function
Clone
to the classCCapturedResultItem
. - Added a new callback function
OnRawTextLinesReceived
to the classCIntermediateResultReceiver
. - Added a new function
AddItem
to the classCCapturedResult
. - Updated the function
StopCapturing
. Changed the default value of parameterwaitForRemaingTasks
fromfalse
totrue
. - Add a new charge way,
TimeSliceCount
.
Changed
- Changed the maximum length of the
name
parameter to 255 for theSetDeviceFriendlyName
method. If the length exceeds 255, it will be truncated. - Changed the default value of the
waitForThreadExit
parameter totrue
for theStopCapturing
method.
Fixed
- Fixed a bug where
CaptureVisionRouter.StartCapturing
would 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
CDirectoryFetcher
would 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
.
Deprecated
- Deprecated function
SetRecognizedTextLine(element,matrixToOriginalImage)
of the classCRecognizedTextLinesUnit
.
3.2.30 (05/13/2024)
Fixed
- Fixed a bug where the DynamsoftNeuralNetwork module failed to load due to a path error.
- Fixed a bug where users would not receive proper error messages when attempting to configure
SimplifiedLabelRecognizerSettings
with an incorrectCharacterModel
. - Fixed a bug where the characters might not be correctly excluded when they are configured in the filter file.
3.2.20 (04/07/2024)
Highlights
- Added confusable character distinguishing: this feature enhances the library’s ability to distinguish between common confusable character sets including {0, o, O}, {1, I, l}, and {5, s, S}, across popular fonts like Arial, Times New Roman, and Verdana, etc.
- Supported confusable character set customization: leveraging the new caching mechanism in the
CaptureVisionRouter (CVR)
module, the library now enables users to customize confusable character sets to meet the needs of specific scenarios.
Changelogs
Improved
- Improved the speed of
TextLineGroup
detection by optimizing internal logic.
New
- Added new APIs for users to obtain the cached character items and the character clusters:
- A new class
CBufferedCharacterItemSet
to represent a collection of buffered character items and cluster information. - A new class
CBufferedCharacterItem
to represent a basic item of the buffered characters with its image and features information. - A new class
CCharacterCluster
to represent a character cluster generated from the collected buffered character items. - Added a new class
CBufferedItemsManager
to manage the buffered character items. - Added a new method
GetBufferedItemsManger
to get an object ofCBufferedItemsManager
.
- A new class
- Added new
LabelRecognizerTaskSettings
parameters.- Added
ConfusableCharactersPath
to define the path of the resource files that store the confusable characters’ information. - Added
ClusterSamplesCountThreshold
to specify the lowest required sample count for clustering.
- Added
- Added new
TextLineSpecification
parameters.- Added
ConfusableCharactersCorrection
to define which confusable characters you are going to distinguish. You can also specify the font type of the characters. - Added
ExpectedGroupCount
to define the count ofTextLineGroups
that might exist on the image.
- Added
- Added a new method
GetSpecificationName
to theCTextLineResultItem
class to get the name of theTextLineSpecification
object that generated thisCTextLineResultItem
. - Added a new method
GetSpecificationName
to theCRecognizedTextLineElement
class to get the name of theTextLineSpecification
object that generated thisCRecognizedTextLineElement
. - Added a new error code
EC_PDF_LIBRARY_LOAD_FAILED
.
3.2.10 (03/01/2024)
Improved
- Security update for
DynamsoftLabelRecognizer
library and other corresponding libraries. - Supported multiple instances of the class
CCaptureVisionRouter
. - Supported the filter configuration of the characters that are not recognized by the Deep Neural Network via the
Filter.txt
file. - 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_IRREPLACEABLE
EC_LICENSE_CACHE_USED
- Added a virtual destructor to the interface
CImageSourceErrorListener
to prevent memory leaks. - Added a new function
GetRecognizedTextLinesResult
to theCCapturedResult
class to get all the result items with the typeCRIT_TEXT_LINE
. - Added new virtual destructors to the following interfaces to prevent memory leaks.
Changed
- Changed the internal logic of the function
SetResultUnitTypesOnlyForInput
ofObservationParameters
. 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
IntermediateResultUnit
class. The method will return the error codeEC_RESULT_TYPE_MISMATCH_IRREPLACEABLE
when the result type is mismatched. - Fixed a bug where error messages are not output when parsing the parameter templates.
- Fixed a bug where multiple results were output from the same text area.
- Fixed a bug where the capture might be blocked due to the network latency.
- Fixed a bug where the
DetectAndNormalizeDocument
task 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.
3.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
TargetROIDef
by implementing anOutputTaskSetting
based on the task results of varying products from descendantTargetROIDef
objects. - Enhanced the
Offset
parameter 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. - Introduced a feature for grouping text lines. A text line group consists of spatially adjacent lines of text. Through the
TextLineSpecification
parameters, users can now do two things:- Put text lines in groups and also define the spatial relationship between different groups;
- Specify whether to concatenate text line results within a group, how to do the concatenation and whether to output the concatenated result.
Changelogs
New
- Updated the template system
- Added
StringLengthRange
for TextDetectionMode. - Added
ReferenceTaskNameArray
underLocation.ReferenceObjectFilter
to filter the reference objects generated by the task name. - Added the support of the
OutputTaskSetting
definition. The following subparameters are available inOutputTaskSetting
object:OutputCondition
TaskResultArray
TargetROIDefName
TaskSettingNameArray
BackwardReferenceOutput
ReferenceTaskNameArray
ReferenceResultTypeArray
Operator
- Updated
TextLineSpecification
to support text line group definition. Added the following subparameters:OutputResults
ConcatResults
ConcatSeparator
ConcatStringLengthRange
ConcatStringRegExPattern
ReferenceGroupName
TextLinesCount
SubGroups
- Offset parameter is optimized.
- Added
ReferenceObjectType
to specify whether the reference object is an atomic object or the whole image. - Added
ReferenceXAxis
&ReferenceYAxis
to 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
ReferenceObjectSize
Type.
- Added
- Added
- The following classes are migrated from
DynamsoftCore
module to theDynamsoftCaptureVisionRouter
module:CIntermediateResultReceiver
CapturedResultReceiver
CapturedResultFilter
CIntermediateResultManager
- Added a new class back method
OnShortLinesUnitReceived
to theCIntermediateResultReceiver
class. - Added a new class
CAbstractIntermediateResultReceiver
. It is the super class of theCIntermediateResultReceiver
. - Added methods
PauseCapturing
andResumeCapturing
. Two newCapturedState
members,CS_PAUSED
andCS_RESUMED
, are added as well. - Added a new property
documentSettings
to structSimplifiedCaptureVisionSettings
. The corresponding structSimplifiedDocumentNormalizerSettings
is added to theDynamsoftDocumentNormalizer
module to store thedocumentSettings
. - Added the following methods to the
CObservationParameters
class to specify theinput only
result unit.SetResultUnitTypesOnlyForInput
GetResultUnitTypesOnlyForInput
IsResultUnitTypeOnlyForInput
- Added the following methods to the
CRegionObjectElement
class to support the intermediate result modification.SetLocation
Clone
Retain
Release
- Added a new method
Replace
to theCIntermediateResultUnit
class to support the replacement of intermediate result units. - Added
SetImageData
methods to the following classes:CCapturedResult
CCapturedResultItem
CRegionObjectElement
CIntermediateResultUnit
CLocalizedTextLineElement
CLocalizedTextLinesUnit
CRecognizedTextLineElement
CRecognizedTextLinesUnit
CRecognizedTextLinesResult
- Added new methods to the
CPredetectedRegionsUnit
class to add, remove or set the predetected regions. - Added new methods to the
CLineSegmentsUnit
class to add, remove or set the line segments. - Added new methods to the
CTextZonesUnit
class to add, remove or set the text zones. Added a new classCTextZone
to store the information of a single text zone. - Added a new method
SetContours
to theCContourUnit
class. - Added new methods to the
CTextureDetectionResultUnit
class to set the X & Y spacing. - Added a new intermediate result unit,
CShortLinesUnit
, to output the detected short lines. The corresponding enumeration memberIRUT_SHORT_LINES
is added to theIntermediateResultUnitType
. - Added the following methods to the
CCapturedResultItem
classGetTargetROIDefName
GetTaskName
Retain
Release
- Added the following new error codes
EC_IMAGE_SIZE_NOT_MATCH
EC_IMAGE_PIXEL_FORMAT_NOT_MATCH
EC_SECTION_LEVEL_RESULT_IRREPLACEABLE
EC_AXIS_DEFINITION_INCORRECT
EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT
EC_TEXT_LINE_GROUP_REGEX_CONFLICT
- Added the following methods to the
CCapturedResult
class.- A new override constructor.
Retain
Release
- Updated
CImageData
class- Change the return value of
GetBytesLength
from 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
Retain
method of theCIntermediateResultUnit
class. The method will return the pointer of the currentCIntermediateResultUnit
. - Added a new method
CreatePredetectedRegionElement
to theCImageProcessingModule
class to create the predetected region element. - Added new methods to the
CLocalizedTextLinesUnit
class to add, set or remove the localized text line elements. - Added new methods to the
CRecognizedTextLinesUnit
class to add, set or remove the recognized text line elements. - Added the following methods to the
CRecognizedTextLineElement
class- A new constructor (the old one is removed)
SetText
- Added a new constructor to the
CTextLineResultItem
class to replace the previous one. - Added the following methods to the
CrecognizedTextLinesResult
class.- A new constructor
Retain
Release
- Added the following methods to the
CLabelRecognizerModule
class to create the corresponding elements.CreateRecognizedTextLineElement
CreateLocalizedTextLineElement
Fixed
- Fixed a crash bug that might happen when triggering the
SetNextImageToReturn
method of theImageSourceAdapter
class.
Break Changes
- Changed the logic of the
StopCapturing
method.CaptureResultReceiver
will not receive results afterStopCapturing
is triggered withwaitForRemainingTasks
false.- Support stop capturing after the
PauseCapturing
method is triggered.
- Changed the logic of the
capturedResultItemTypes
setting ofSimplifiedCaptureVisionSettings
:- If the result item types don’t match the specified template, the method
UpdateSettings
will return the error codeEC_PARAMETER_VALUE_INVALID
with the message “The captured result item types do not match the task configurations in the template”. - Based on the
capturedResultItemTypes
setting, the irrelevant tasks will be removed from the template. - The
capturedResultItemTypes
should include at least one of theCRIT_BARCODE
,CRIT_TEXT_LINE
,CRIT_DETECTED_QUAD
,CRIT_NORMALIZED_IMAGE
. Otherwise, the methodUpdateSettings
will return the error codeEC_PARAMETER_VALUE_INVALID
with 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
- Refactored the
CContour
class. Please view API reference -CContour
class for more information. - The destructor functions of the following classes are changed to protected:
CCandidateQuadEdgesUnit
CCornersUnit
CDetectedQuadElement
CDetectedQuadsUnit
CLongLinesUnit
CNormalizedImageElement
CNormalizedImageUnit
CNormalizedImagesResult
CDetectedQuadsResult
- Change the compiler option of the runtime library of Windows DLLs from MD to MT.
- The
DeepNeuralNetwork
module is separated from theDynamsoftImageProcessing
module.
3.0.30 (02/01/2024)
New
- Added internal logic to obtain resources based on the specified template.
Fixed
- Small fixes and tweaks in the license module.
3.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
Page
toImageSource
object. - Added a new method
SetPages
to the classCDirectoryFetcher
and classCFileFetcher
. - Added a new parameter
scaleDownThreshold
to the structSimplifiedLabelRecognizerSettings
. - Added
CImageSourceErrorListener
to receive the errors from an image source. - Added method
SetErrorListener
to classCImageSourceAdapter
to add theCImageSourceErrorListener
. - Added a new parameter
minImageCaptureInterval
which can be set via the structSimplifiedCaptureVisionSettings
or theCaptureVisionTemplate
object of a JSON template file. - Added “UNKNOWN” as a supported value of the
TextDetectionMode.Direction
parameter. Changed the default value ofDirection
to “UNKNOWN”. - Added the following error codes:
- EC_FILE_ALREADY_EXISTS
- EC_CREATE_FILE_FAILED
- EC_IMGAE_DATA_INVALID
Improved
- The class
CDirectoryFetcher
andCFileFetcher
will be able to return error codes viaCImageSourceErrorListener
- Updated the error codes of the method
SaveToFile
of the classCImageManager
. - Optimize the logic to support calling
CIntermediateResultManager.AddResultReceiver
andCIntermediateResultManager.RemoveResultReceiver
after StartCapturing. - Added ability to output all templates via methods
OutputSettings
andOutputSettingsToFile
by 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
OnOriginalImageResultReceived
so 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
CCapturedResultReceiver
and classCIntermediateResultReceiver
.
3.0.10 (08/08/2023)
New
-
Added a new class
CVector4
in the core module. -
Added new methods
SetTransformMatrix
andGetTransformMatrix
to the classCIntermediateResultUnit
. EnumerationTransformMatrixType
is also added to support users specifying the type of the target matrix. -
Added enumeration
RasterDataSource
to specify the raster data source when reading PDF files. The previous enumerationTargetType
is removed. The attributeTargetType type
of ClassCPDFReadingParameter
is replaced byRasterDataSource rasterDataSource
. -
Added method
GetContours
to theCContourUnit
class to get all theCContour
objects contained in the unit and their hierarchies.
Improved
- Improved the implementation of the
StopCapturing
method to prevent deadlock when invoked in the management thread.
Fixed
-
Fixed crash bugs that happen in rare cases.
-
Fixed a bug where the local license is not successfully updated when initialing the license again.
Changed
-
Changed the parameters and the return value of the method
GetLineSegment
of CLineSegmentsUnit class. The method will require anindex
value as the parameter and return aCLineSegment
object as the return value. -
Changed the structure of class
CPoint
. -
Renamed method
GetRawImage
toGetOriginalImage
. -
Renamed method
GetSourceImageHashId
toGetOriginalImageHashId
. This change applies to the following classes:-
CIntermediateResultUnit
-
CCapturedResult
-
CRecognizedTextLinesResult
-
-
Renamed method
GetSourceImageTag
toGetOriginalImageTag
. This change applies to the following classes:-
CIntermediateResultUnit
-
CCapturedResult
-
CRecognizedTextLinesResult
-
-
Renamed methods
GetCount
toGetItemsCount
. This change applies to the following classes:-
CCapturedResult
-
CRecognizedTextLinesResult
-
-
Renamed an enumeration member of
CapturedResultItemType
fromCRIT_RAW_IMAGE
toCRIT_ORIGINAL_IMAGE
. -
Renamed a method of
CapturedResultReceiver
fromOnRawImageResultReceived
toOnOriginalImageResultReceived
. -
Renamed a method of
CapturedResultFilter
fromOnRawImageResultReceived
toOnOriginalImageResultReceived
. -
Renamed the class
CRawImageResultItem
toCOriginalImageResultItem
. -
Renamed an enumeration member of
BufferOverflowProtectionMode
fromBOPM_APPEND
toBOPM_UPDATE
. -
The following methods are renamed:
-
Renamed
EnableResultVerification
toEnableResultCrossVerification
. -
Renamed
isResultVerificationEnable
toisResultCrossVerificationEnabled
. -
Renamed
EnableDuplicateFilter
toEnableResultDeduplication
. -
Renamed
isDuplicateFilterEnabled
toisResultDeduplicationEnabled
.
-
-
Renamed parameter
CornerAngleRangeArray
toCornerAngleRange
. The range of the sub parameterMinValue
is restricted to [0,90] and the range ofMaxValue
is restricted to [90,180].
Removed
-
Removed
Set/GetLocalToSourceImageTransformMatrix
methods fromCIntermediateResultUnit
class. -
Removed
Set/GetRotationTransformMatrix
methods fromCIntermediateResultUnit
class. -
Removed methods
GetCount
andGetContour
from CContourUnit class. Use the methodGetContours
instead.
3.0.0 (07/04/2023)
DynamsoftLabelRecognizer
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.
DynamsoftCaptureVision
architecture 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,ISA
incorporates 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 theCapturedResults
that 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 ROI
parameters, you can not only specify anROI
on 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 result
system has been improved.- Achieved the
intermediate result
sharing 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 result
sharing. The library can recognize all the reusable results automatically based on the template file you uploaded. - The readability and interactivity of the
intermediate results
are enhanced.IntermediateResultReceiver
allows 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,IntermediateResultManager
allows you to intervene in the workflows by modifying theintermediate results
.
- Achieved the