Selector Specification
JSON Selector Structure
There are a lot of different selectors types. The set of properties for the selector depends on its type.
Common Fields in Selector Descriptor
property | type | required | description |
---|---|---|---|
selectorType | enum | The selector type which is used to determine the set of other properties. |
Possible values | Available in user mode | Notes |
---|---|---|
paragraph | Paragraph selector | |
boundary | Search area | Used in Custom |
relativeBoundary | Relative boundary selector | |
dynamicCrop | Crop selector | |
reject | Filter selector | Used in negative conditions |
selectorBench | Filter selector | Used in positive conditions |
@Deprecated | ||
@Deprecated | ||
fontColor | Font color selector | |
@Deprecated | ||
font | Font selector | |
align | Align selector | |
regExp | Regular expression selector | |
pattern | Pattern finder selector | |
iban | IBAN selector | |
price | Price selector | |
date | Date selector | |
vat | VAT selector | |
integer | Integer selector | |
time | Time selector | |
line | Line selector | |
tableCluster | Table selector | Used when Cluster algorithm is selected |
table | Table selector | Used when Auto algorithm is selected |
tableFreq | ||
pick | Pick by index selector | |
page | Search area | Used in Page and Custom |
image | Image selector | |
barcode | Barcode selector | |
groupByTb | Grouping selector |
Selector descriptors
Paragraph Selector
Paragraph Selector Descriptor
property | type | required | description | Available parameters in user mode | Template schema version |
---|---|---|---|---|---|
lineSpacing | enum | Defines line spacing coefficient. Possible values:
| Possible values: Normal Large Huge | ||
string | @Deprecated use paragraphNames instead. Defines paragraph name. | [1.0.0,1.2.0) | |||
paragraphNames | List<String> | Defines list of paragraph names. | [1.2.0,) | ||
runningText | boolean | Affecting the recognition result view. If false the resulted recognized paragraph would contain lines joined by new line character. If true then lines would be joined by single space character. | [1.1.1,) | ||
excludeParagraphName | boolean | Affecting recognition result view. If true paragraph name would be excluded from resulted recognized paragraph. If false paragraph name would be included in resulted recognized paragraph | [1.2.0,) | ||
Min Paragraph Selector Example |
Click to expand json
{
"selectorType":"paragraph",
"lineSpacing":"LARGE"
}
Full Paragraph Selector Example
Click to expand json
{
"selectorType": "paragraph",
"lineSpacing": "NORMAL",
"paragraphNames": [
"My Paragraph",
"Second paragraph"
],
"runningText": true,
"excludeParagraphName": false
}
Boundary Selector
Boundary Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
topUsed | boolean | Defines whether the top boundary shall be used. | ||
bottomUsed | boolean | Defines whether the bottom boundary shall be used. | ||
leftUsed | boolean | Defines whether the left boundary shall be used. | ||
rightUsed | boolean | Defines whether the right boundary shall be used. | ||
area | Rectangle | Defines the location of boundary selector. |
At least one of the properties topUsed
, bottomUsed
, leftUsed
, rightUsed
shall be true. If all of them are false, then exception will be thrown.
Boundary Selector Example
Click to expand json
{
"selectorType": "boundary",
"topUsed": true,
"bottomUsed": false,
"leftUsed": true,
"rightUsed": true,
"area": {
"left": 11.0,
"right": 111.0,
"top": 111.0,
"bottom": 11.0
}
}
Relative Boundary Selector
Relative Boundary Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
side | enum | Defines the side for relation. Possible values:
Default value: | Possible values: Left Right Top Bottom | |
Min Relative Boundary Selector Example |
Click to expand json
{
"selectorType": "relativeBoundary"
}
Full Relative Boundary Selector Example
Click to expand json
{
"selectorType": "relativeBoundary",
"side": "RIGHT"
}
Crop Selector
Crop Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
cropVertically | enum | Determines which way relative to crop area vertical crop will be performed. Possible values:
| ||
areaIndex | integer | Defines which area to take as the beginning of crop. Non-zero. 1-based. negative values means counting from the end. Default: 1. | ||
areaSelectors | list<Selector> | Internal selectors used to search for cropArea. The list should be present and not empty. |
Min Crop Selector Example
Click to expand json
{
"selectorType": "dynamicCrop",
"cropVertically": "BEFORE",
"areaSelectors": [
{
"selectorType" : "anySelector"
},
{
"selectorType" : "anySelector1"
},
]
}
Full Crop Selector Example
Click to expand json
{
"selectorType": "dynamicCrop",
"cropVertically": "BEFORE",
"areaIndex": 1,
"areaSelectors": [
{
"selectorType" : "anySelector"
},
{
"selectorType" : "anySelector1"
},
]
}
Reject Selector
Reject Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
rejectBy | list<Selector> | Internal selectors used to define data for reject. The list should be present and not empty. |
Reject Selector Example
Click to expand json
{
"selectorType": "reject",
"rejectBy": [
{
"selectorType" : "anySelector"
},
{
"selectorType" : "anySelector1"
},
]
}
SelectorBench Selector
SelectorBench Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
subType | String | SubType of selector bench. | ||
selectors | list<Selector> | Internal selectors of selector bench. The list is optional. If it is null or empty, then selector bench does not affect recognition. |
Min SelectorBench Selector Example
Click to expand json
{
"selectorType": "selectorBench",
}
Full SelectorBench Selector Example
Click to expand json
{
"selectorType": "selectorBench",
"subType": "filter",
"selectors": [
{
"selectorType" : "anySelector"
},
{
"selectorType" : "anySelector"
},
{
"selectorType" : "anySelector"
}
]
}
Font Selectors
Font Selector Descriptor
property | type | required | description | Available parameters in user mode | Template schema version |
---|---|---|---|---|---|
FontFamily | @Deprecated use family instead. The font family descriptor to select. | [1.0.0, 1.4.0) | |||
FontSize | @Deprecated use size instead. The font size descriptor to select | [1.0.0, 1.4.0) | |||
FontStyle | @Deprecated use fontStyles instead. The font style descriptor to select | [1.0.0, 1.4.0) | |||
family | String | Font name to select | [1.4.0,) | ||
size | One of: StaticType RangeType | The font size interval with double values. Static interval means selection of precise font size. Range interval means selection of font size in range. | [1.4.0,) | ||
fontStyles | list<enum> | The font styles list to select. Possible values in list:
|
Possible values in list: Normal Bold Italic Bold italic | [1.4.0,) |
From template schema version 1.4.0 at least one of the properties family
, size
, fontStyles
should be present.
Min Font Selector Example with family
Click to expand json
{
"selectorType": "font",
"family": "Calibri"
}
Min Font Selector Example with static size
Click to expand json
{
"selectorType": "font",
"size": {
"structureType": "static",
"value": "10.0"
}
}
Min Font Selector Example with range size
Click to expand json
{
"selectorType": "font",
"size": {
"structureType": "range",
"min": "9.3",
"max": "15.3",
}
}
Min Font Selector Example with font styles
Click to expand json
{
"selectorType": "font",
"fontStyles": ["AUTO", "NORMAL", "BOLD_ITALIC"]
}
Full Font Selector Example
Click to expand json
{
"selectorType": "font",
"family": "Times",
"size": {
"structureType": "static",
"value": "12.3"
},
"styles": [
"NORMAL",
"BOLD_ITALIC"
]
}
FontColor Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
color | string (rgb format) | The font color. If missing, then auto-evaluated into font color from reference PDF. The format is |
The format is | |
tolerance | double | Comparison tolerance. Default value: 0. | ||
Min FontColor Selector Example |
Click to expand json
{
"selectorType": "fontColor",
"color": "#ffffff"
}
Full FontColor Selector Example
Click to expand json
{
"selectorType": "fontColor",
"color": "#ffffff",
"tolerance": 5.1
}
FontFamily Selector Descriptor
@Deprecated Use Font Selector with setting family instead.
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
fontName | string | The font name. |
FontFamily Selector Example
Click to expand json
{
"selectorType": "fontFamily",
"fontName": "Times"
}
FontSize Selector Descriptor
@Deprecated Use Font Selector with setting size instead.
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
size | One of: StaticType RangeType | The font size interval with double values. Static interval means selection of precise font size. Range interval means selection of font size in range. If missing, then Static interval would be evaluated from reference PDF. |
FontSize with Static Interval Selector Example
Click to expand json
{
"selectorType": "fontSize",
"size": {
"structureType": "static",
"value": "12.3"
}
}
FontSize with Range Interval Selector Example
Click to expand json
{
"selectorType": "fontSize",
"size": {
"structureType": "range",
"min": "9.3",
"max": "15.3",
}
}
FontStyle Selector Descriptor
@Deprecated Use Font Selector with setting styles instead.
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
styles | list<enum> | The font styles list to select. Possible values in list:
|
Possible values in list: Normal Bold Italic Bold italic | |
Min FontStyle Selector Example |
Click to expand json
{
"selectorType": "fontStyle"
}
Full FontStyle Selector Example
Click to expand json
{
"selectorType": "fontStyle",
"styles": ["AUTO", "NORMAL", "BOLD_ITALIC"]
}
Align Selector
Align Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
alignFilter | enum | Defines which align to use. Possible values:
| ||
left | double | Defines left align boundary. | ||
right | double | Defines right align boundary. |
Align Selector Example
Click to expand json
{
"selectorType": "align",
"alignFilter": "RIGHT",
"left": 11.3,
"right": 222.3
}
RegExp Based Selector Descriptors
RegExp Selector Descriptor
Selector for extracting text suitable for specified patterns.
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
patterns | list<string> | Defines list of patterns to match. The list shall not be empty. | ||
selectLine | integer | Defines the line index to select. Shall be less or equal to patterns list size and more or equal to 1. Default: patterns size. | ||
checkLocation | boolean | Defines whether the check location should be applied. If Default: false. | ||
leftThreshold | double | Defines the location left threshold for check location functionality. Default: 0 | ||
rightThreshold | double | Defines the location right threshold for check location functionality. Default: 0 | ||
Min RegExp Selector Example |
Click to expand json
{
"selectorType": "regExp",
"patterns": ["Account number", "\d+"]
}
Full RegExp Selector Example
Click to expand json
{
"selectorType": "regExp",
"patterns": ["Account number", "\d+", "@@date"],
"selectLine": 2,
"checkLocation": true,
"leftThreshold": 2.1,
"rightThreshold": 3.1
}
Pattern Selector Descriptor
property | type | required | description | Available parameters in user mode | Template schema version |
---|---|---|---|---|---|
string | @Deprecated use prefixes instead. Defines pattern prefix. Default: no prefix, i.e. empty string. | [1.0.0, 1.2.0) | |||
string | @Deprecated use suffixes instead. Defines pattern suffix. Default: no suffix, i.e. empty string. | [1.0.0, 1.2.0) | |||
prefixes | List<String> | Defines pattern prefix list. Default: no prefixes, i.e empty list. | [1.2.0,) | ||
suffixes | List<String> | Defines pattern suffix list. Default: no suffixes, i.e empty list. | [1.2.0,) | ||
innerBasePattern | One of: Integer Selector IBAN Selector Price Selector VAT Selector Time Selector Date Selector | Defines pattern middle part if needed. | |||
Min Pattern Selector Example |
Click to expand json
{
"selectorType": "pattern"
}
Full Pattern Selector Example
Click to expand json
{
"selectorType": "pattern",
"prefixes": [
"Expected IBAN: ",
"Expected DATE: "
],
"suffixes": [
" is valid.",
" empty."
],
"innerBasePattern": {
"selectorType": "iban",
"evaluatedPattern": "(?<iban>[A-Z]{2}\d{2}\s\*(\d{4}\s\*)+(\d{1,4}))"
}
}
Simple Pattern Based Selectors
The simple Pattern based selectors are:
- iban
- price
- vat
- time
- integer
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
evaluatedPattern | string | Defines the pattern to use. | Auto-generated using select tool |
IBAN Selector Example
Click to expand json
{
"selectorType": "iban",
"evaluatedPattern": "(?<iban>[A-Z]{2}\d{2}\s\*(\d{4}\s\*)+(\d{1,4}))"
}
Price Selector Example
Click to expand json
{
"selectorType": "price",
"evaluatedPattern": "(?<price>\d{1,3}(,\d{3})\*(\.\d{1,2})?)\s\*\$"
}
VAT Selector Example
Click to expand json
{
"selectorType": "vat",
"evaluatedPattern": "AT\s\*U[0-9]{8}"
}
Time Selector Example
Click to expand json
{
"selectorType": "time",
"evaluatedPattern": "(?<{1}>(1[012]|[1-9]){0}[0-5][0-9](\s)?(?i)(am|pm|a.m.|p.m.|AM|PM|A.M.|P.M.))"
}
Integer Selector Example
Click to expand json
{
"selectorType": "integer",
"evaluatedPattern": "\d+"
}
Date Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
pattern | string | The user-friendly date pattern, which can be additionally set. | ||
evaluatedPattern | string | Evaluated pattern to be used in processing. | Auto-evaluated in the Editor from the document selection or based on | |
Min Date Selector Example |
Click to expand json
{
"selectorType": "date",
"evaluatedPattern": "(?:[1-9]|0[1-9]|[1-2][0-9]|3[0-1])-(?:[1-9]|0[1-9]|1[0-2])-\d{4}"
}
Full Date Selector Example
Click to expand json
{
"selectorType": "date",
"pattern": "dd-MM-yyyy",
"evaluatedPattern": "(?:[1-9]|0[1-9]|[1-2][0-9]|3[0-1])-(?:[1-9]|0[1-9]|1[0-2])-\d{4}"
}
Line Selector
Line Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
charSpacing | enum | Defines line spacing coefficient. Possible values:
| Possible values: Normal Large Huge | |
Line Selector Example |
Click to expand json
{
"selectorType": "line",
"charSpacing": "NORMAL"
}
Cluster Table Selector
Cluster Table Selector Descriptor
property | type | required | description |
---|---|---|---|
headers | list<string> | Defines headers of the table to match. | |
determiningColumn | integer | Defines the determining column for cluster algorithm. | |
row | One of: StaticType RangeType | Specified single row or an interval of rows for match. Static and Range type's values expected to be strings with integer value. If missing range from first row to last will be used. | |
column | One of: StaticType RangeType NamedType | Specified single column or an interval of columns for match. Static and Range type's values expected to be strings with integer value. NamedType matches the column by its name. If missing range from first row to last will be used. If missing range from first column to last will be used. | |
format | enum | Defines the specified headers format. Possible values:
Default value: | |
additionalColumnBorders | list<double> | Array of coordinates indicating where additional borders will be drawn to define tables. |
Min Cluster Table Selector Example
Click to expand json
{
"selectorType": "tableCluster",
"headers": ["header 1", "header 2"],
"determiningColumn": 0
}
Full Cluster Table Selector Example
Click to expand json
{
"selectorType": "tableCluster",
"headers": ["header 1", "header 2"],
"determiningColumn": 2,
"row": {
"structureType": "range",
"min": "1",
"max": "10"
},
"column": {
"structureType": "range",
"min": "1",
"max": "2"
},
"additionalColumnBorders": [
12,
34.3,
58,
290.45,
305.2
],
"format": "REGEXP"
}
Table Selector
Table Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
headers | list<string> | Defines headers of the table to match. | ||
determiningColumn | integer | Defines the determining column for cluster algorithm. | ||
row | One of: StaticType RangeType | Specified single row or an interval of rows for match. Static and Range type's values expected to be strings with integer value. If missing range from first row to last will be used. | ||
column | One of: StaticType RangeType NamedType | Specified single column or an interval of columns for match. Static and Range type's values expected to be strings with integer value. NamedType matches the column by its name. If missing range from first column to last will be used. | ||
format | enum | Defines the specified headers format. Possible values:
Default value: | Available as toggle button "Allow regular expressions". Possible values: OFF, ON | |
additionalColumnBorders | list<double> | Array of coordinates indicating where additional borders will be drawn to define tables. |
Min Table Selector Example
Click to expand json
{
"selectorType": "table",
"headers": ["header 1", "header 2"],
"determiningColumn": 2,
}
Full Table Selector Example
Click to expand json
{
"selectorType": "table",
"headers": ["header 1", "header 2"],
"determiningColumn": 2,
"row": {
"structureType": "range",
"min": "1",
"max": "10"
},
"column": {
"structureType": "range",
"min": "1",
"max": "2"
},
"format": "REGEXP",
"additionalColumnBorders": [
12,
34.3,
58,
290.45,
305.2
]
}
Frequency Table Selector
Frequency Table Selector Descriptor
property | type | required | description |
---|---|---|---|
frequencyArea | Rectangle | Defines the rectangle for frequency algorithm. | |
row | One of: StaticType RangeType | Specified single row or an interval of rows for match. Static and Range type's values expected to be strings with integer value. If missing range from first row to last will be used. | |
column | One of: StaticType RangeType NamedType | Specified single column or an interval of columns for match. Static and Range type's values expected to be strings with integer value. NamedType matches the column by its name. If missing range from first column to last will be used. |
Min Frequency Table Selector Example
Click to expand json
{
"selectorType": "tableFreq",
"frequencyArea": {
"left": 11,
"right": 111,
"top": 111,
"bottom": 11
}
}
Full Frequency Table Selector Example
Click to expand json
{
"selectorType": "tableFreq",
"frequencyArea": {
"left": 11,
"right": 111,
"top": 111,
"bottom": 11
},
"row": {
"structureType": "range",
"min": "1",
"max": "10"
},
"column": {
"structureType": "range",
"min": "1",
"max": "2"
}
}
Picker Selector
Picker Selector Descriptor
property | type | required | description | Available parameters in user mode | Template schema version |
---|---|---|---|---|---|
One of: StaticType RangeType | @Deprecated use indexes instead. Specified range for match. Static and Range type's values expected to be strings with integer value. | [1.0.0-1.3.0) | |||
indexes | List<RangeGroup> | List of range groups specifying elements to select. The element would be selected if it's index matches at least one range in the list. Empty list leads to no elements to be selected. | [1.3.0,) | ||
groupType | enum | Defines grouping type. Possible values:
Default value: | Possible values: Leave Unchanged Character Line Paragraph | ||
Min Picker Selector Example |
Click to expand json
{
"selectorType": "pick",
"indexes": []
}
Full Picker Selector Example
Click to expand json
{
"selectorType": "pick",
"indexes": [
{
"start": 2,
"end": -30,
"segmentSize": 3,
"segmentGap": 2
},
{
"start": -40,
"end": 55,
"segmentSize": 11,
"segmentGap": 1
}
],
"groupType": "LINE"
}
Page Selector
Page Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
pageNumber | One of: StaticType RangeType | Specified pages for match. Static and Range type's values expected to be strings with integer value. For range interval both values shall be present and non-zero. | ||
Full Page Selector With Single Page Example |
Click to expand json
{
"selectorType": "page",
"pageNumber": {
"structureType": "static",
"value": "1"
}
}
Full Page Selector With Page Range Example
Click to expand json
{
"selectorType": "page",
"pageNumber": {
"structureType": "range",
"min": "1",
"max": "10"
}
}
Image Selector
Image Selector Descriptor
property | type | required | description | Available parameters in user mode | Template schema version |
---|---|---|---|---|---|
One of: StaticType RangeType | @Deprecated use indexes instead. Specified range for match. Static and Range type's values expected to be strings with integer value. Indexes can't be zero. | [1.0.0-1.3.0) | |||
indexes | List<RangeGroup> | List of range groups specifying images to select. The image would be selected if it's index matches at least one range in the list. Empty list leads to no images to be selected. | [1.3.0,) | ||
width | One of: StaticType RangeType | Specifies image width to match. The values in static type and range type mast be either an empty string (indicating that no limit on minimum/maximum), or an integer with optional suffix one of pt, in, cm, mm. Examples: "", "5", "5pt", "5in", "5cm", "5mm". If suffix is missing, then the default "pt" would be used. | |||
height | One of: StaticType RangeType | Specifies image height to match. The values in static type and range type mast be either an empty string (indicating that no limit on minimum/maximum), or an integer with optional suffix one of pt, in, cm, mm. Examples: "", "5", "5pt", "5in", "5cm", "5mm". If suffix is missing, then the default "pt" would be used. |
Image Selector Example
Click to expand json
{
"selectorType": "image",
"indexes": [
{
"start": 2,
"end": -30,
"segmentSize": 3,
"segmentGap": 2
},
{
"start": -40,
"end": 55,
"segmentSize": 11,
"segmentGap": 1
}
],
"width": {
"structureType": "range",
"min": "",
"max": "10cm"
},
"height": {
"structureType": "range",
"min": "1pt",
"max": ""
}
}
Barcode Selector
Barcode Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
format | enum | Defines barcode format to match. Possible values: - ALL - ALL_1D - ALL_2D - AZTEC - CODABAR - CODE_39 - CODE_93 - CODE_128 - DATA_MATRIX - EAN_8 - EAN_13 - ITF - PDF_417 - QR - RSS_14 - RSS_EXPANDED - UPC_A - UPC_E | Possible values: - All - All 1D - All 2D - Aztec - Codabar - Code39 - Code93 - Code128 - DataMatrix - EAN8 - EAN13 - ITF - PDF417 - QR - RSS-14 - RSS-Expanded - UPC-A - UPC-E | |
barcodeLocation | Rectangle | Defines the location of barcode selector. |
Barcode Selector Example
Click to expand json
{
"selectorType": "barcode",
"format": "ALL",
"barcodeLocation": {
"left": 11.0,
"right": 111.0,
"top": 111.0,
"bottom": 11.0
}
}
Group Selector
Group Selector Descriptor
property | type | required | description | Available parameters in user mode |
---|---|---|---|---|
parentName | string | Defines the string id for matching data fields with group selector. | ||
Group Selector Example |
Click to expand json
{
"selectorType": "groupByTb",
"parentName": "My ID"
}
Complex JSON Structures
Common Fields in Complex JSON Structures Descriptor
property | type | required | description |
---|---|---|---|
structureType | enum | The structure type which is used to determine the set of other properties. Possible values: - static - range - named |
Static Type Descriptor
property | type | required | description |
---|---|---|---|
value | string | Fixed value. | |
Static Type Example |
Click to expand json
{
"structureType": "static",
"value": "15"
}
Range Type Descriptor
property | type | required | description |
---|---|---|---|
min | string | Min interval value. Missing value means no minimum. | |
max | string | Max interval value. Missing value means no maximum. | |
Full FontSize with Static Interval Selector Example |
Click to expand json
{
"structureType": "range",
"min": "9.3",
"max": "15.3"
}
Named Type Descriptor
property | type | required | description |
---|---|---|---|
name | string | Name value. | |
Full FontColor Selector Example |
Click to expand json
{
"structureType": "named",
"name": "Custom name"
}
Other Inner Structures
RangeGroup Descriptor
property | type | required | description |
---|---|---|---|
start | int | Range group start index. Non zero. 1-based. negative values means counting from the end Default: 1. | |
end | int | Range group end index. Non zero. 1-based. negative values means counting from the end Default: -1. | |
segmentSize | int | Segment size. Specifies the amount of elements to pick up before the gape. Should be positive. Default value: 1. | |
segmentGap | int | Segment gap. Specifies the amount of elements to skip before the next picked group segment. Should be non negative. Default value: 0. | |
Minimum example is a range group with all defaults. This means that all indexes are picked up. |
Min RangeGroup Example
Click to expand json
{
}
Maximum example below uses all fields. For 1-based indexes in range [1,20] it will pick up indexes 2,3,4,7,8,9,12,13,14 , i.e. taking [start,end] range, splitting it into ranges of segmentSize + segmentGap and picking first segmentSize elements from each range.
Max RangeGroup Example
Click to expand json
{
"start": 2,
"end": 15,
"segmentSize": 3,
"segmentGap": 2
}