Separators
Mark values like dates and headings as separators to create expandable sections in your list.
Instead of leaving a long list as a flat pile of values, you can break it into sections by sprinkling headings through it. In QCR Scanner that job belongs to separator rules: a value that matches a given pattern (a date, say, or a section heading) enters the list as an expandable section header rather than an ordinary entry. Every value added beneath it is collected into that section, and you can tap the header to fold the section open or closed.
This page explains what a separator does, how to add a separator rule, how expandable sections behave in the list, and how separators differ from validation rules.
What a separator is and what it does
When you collect data in the field, entries usually arrive in groups: one day’s readings, one shelf’s serial numbers, one batch’s codes. Keeping them all in a single long list works, but it gets hard to follow by eye. That is where separators come in.
A separator turns a scanned or voice-entered value into a section header instead of a record. Typical uses are:
- Date headings — the date scanned at the start of each new day groups that day’s entries into their own section.
- Section / group headings — a shelf name, a room number, or a batch code turns the entries beneath it into a logical group.
- Visual dividers — they let you see at a glance where one group ends and the next begins in a long list.
A value marked as a separator still stays in your list and is included in exports; the difference is that it appears as an expandable heading and gathers the entries that follow it into its own section.
Tip: Separators never delete or change your data; they only decide how it is grouped in the list. Making a value a separator does not stop it from being an entry — it just moves that entry into a section-header role.
Adding a separator rule
Separator rules, like validation rules, are regex-based. When a value is about to be added, QCR Scanner checks whether it matches your separator pattern; if it does, the value is inserted as a section header rather than as a normal entry.
A typical flow looks like this:
- Open the separator rules section in Settings.
- Add a new rule and write the regex pattern it should match.
- Save the rule; from then on, any value matching that pattern is treated as a separator.
For example, to catch day headings you might use a pattern that matches dates in dd.mm.yyyy form:
^\d{2}\.\d{2}\.\d{4}$
When a value matching this pattern (for example 21.06.2026) is scanned or spoken, it is added not as a plain entry but as a section header under which the following entries are collected.
Note: Regex patterns give you a lot of flexibility, but they need to be written carefully. QCR Scanner applies ReDoS protection against overly long or self-overlapping patterns and inputs, and rejects them. Keep your rule tight — for instance, anchor it with
^at the start and$at the end to target the full value — so you do not accidentally turn unintended values into separators.
If writing regex by hand is awkward, you do not have to build the pattern yourself: see the AI rule generator for turning plain language into a rule.
How expandable sections behave in the list
When a value is added as a separator, the list opens a new section starting at that heading. The behavior is:
- The separator appears as a section header and collects the entries that follow it under its own title.
- When a new separator is scanned, a new section begins; every entry added until the next separator goes into that new section.
- Tapping the expandable header lets you fold the section open or closed, which helps keep the screen tidy by collapsing groups you are not working on in a long list.
This turns a single long list into a structured one you can read date by date or group by group. Separators don’t just organize the list visually — they stay marked through export, too.
When you export to CSV, each entry carries a flag for whether it is a separator; the same information is sent in the webhook body as the isSeparator field:
{
"action": "add",
"listName": "Field-21June",
"item": {
"value": "21.06.2026",
"isQR": false,
"source": "ocr",
"createdAt": "2026-06-21T09:00:00Z",
"isSeparator": true
},
"timestamp": "2026-06-21T09:00:00Z"
}
So when you send your data to another system, the information about which rows are headings and which are records is preserved. For export and sync details, see CSV export and webhook sync.
How this relates to and differs from validation rules
Separator rules and validation rules look similar at first — both are regex-based and both check whether a value matches a pattern — but they do different jobs:
| Validation rule | Separator rule | |
|---|---|---|
| Purpose | Decides whether a value is added to the list | Makes an added value a section header |
| When it doesn’t match | The value is rejected and never enters the list | The value enters as a normal entry |
| When it matches | The value is considered valid and added | The value becomes an expandable section header |
| Role in the list | A quality filter (it strains out noise) | Organization / grouping (it builds sections) |
In short, validation rules are the gatekeeper: only values that match every active rule enter the list. Separator rules decide how the values that do enter are organized. The two work together: a value first passes validation, and then, if it matches a separator pattern, it settles in as a section header.
Tip: If you want only clean date or heading values to become separators, design the relevant validation rule and the separator rule together. That way noisy OCR results are filtered out and valid headings are turned into sections automatically.
If you want to lift valid pieces out of noisy OCR text automatically, take a look at Smart Extract, which works alongside separators and validation.
Next steps
- Validation rules — use regex to decide which values enter the list
- Lists — create multiple lists and switch between them automatically with triggers
- Smart Extract — automatically lift valid values out of noisy OCR text
- CSV export — export your sectioned list with separator information intact
Made by ReviseTouch.