8.5 Filter
8.5.1 Overview and Basic Principle
Filters allow you to precisely define which PDF files should be processed by a profile. If no filter criteria are defined, all PDF files in the monitored folders will be processed.
How Filters Work
For each new PDF file, the program checks: 1. Does the file meet all defined filter criteria? 2. If yes: The file is processed 3. If no: The file is skipped (status: “No Match” if not processed by any profile due to filters)
The Filter Tabs
The filter settings are divided into the following tabs:
| Tab |
Description |
| File Properties |
Filters by file name, path, size, date |
| PDF Data |
Filters by PDF metadata, content, attachments, and barcodes |
| Extracted Data |
Filters by the results of the extraction rules |
| Temp. OCR Support |
Temporary text recognition for files without a text layer (e.g. scans) |
| Results Preview |
Shows filter results for example files |
| Overlap Check |
Checks for conflicts with other profiles |
8.5.2 Tab: File Properties
Here you filter by properties of the file itself.
Path Contains / Does Not Contain
Filters by the storage location of the file.
Example: To process only files from the “Invoices” subfolder: - Path contains: Invoices
The check always refers to the current storage location: If a file is moved by one profile during processing, subsequent profiles of the same pass already see the new folder.
File Name Contains / Does Not Contain
Filters by the name of the PDF file.
Examples: - File name contains: Invoice - Processes all files with “Invoice” in the name - File name does not contain: DRAFT - Ignores files with “DRAFT” in the name
Scope of the File Name Check
Next to the two fields, the “Scope” selection determines which name is checked when a file is renamed during processing (e.g., by the “Rename file” task):
| Selection |
Meaning |
| original file name |
The name under which the file was picked up is always checked. Renaming by a previously applied profile does not change the filter result. |
| also after renaming |
The current name is checked. Since the filter criteria are evaluated before the start of each profile, subsequent profiles of the same pass thereby react to renaming performed by previous profiles. |
Newly created profiles use “original file name”; older existing profiles use “also after renaming” for compatibility reasons, unless the selection has been changed.
Use case “renaming as a done marker”: If one of your profiles marks fully processed files with the prefix @, for example, the entry <BeginOfRegex>^@<EndOfRegex> in the “does not contain:” field with the scope “also after renaming” in the other profiles of the same folder ensures that the file is no longer processed by any further profile after renaming - even if that profile’s filter criteria would still have matched when the file was picked up.
Note: The scope selection only determines which name is checked - not how often it is checked. Whether a profile additionally re-evaluates its filter criteria before each individual task is controlled by the separate option “Revalidate filter before each task” (section 8.2.10). Be careful when combining them: If a profile itself renames the file in a way that matches its own exclusion with the scope “also after renaming”, the remaining tasks of that profile are aborted when the option is enabled. For the done-marker pattern, the option should therefore remain disabled.
Even more robust than renaming, by the way, is moving fully processed files to a folder that is not monitored: The input folder then stays small, and no exclusion filters are needed at all.
File Size
Filters by the size of the file. Available comparison operators: - Less than - Greater than - Between
Units: Bytes (B), Kilobytes (KB), Megabytes (MB)
Use Case: Route very large files (e.g., > 50 MB) to a separate profile for compression.
Creation Date / Modification Date
Filters by the file date. Available options: - Between: Specify two fixed dates - Older than: X days/weeks/months/years - Newer than: X days/weeks/months/years
Use Case: Only process files created in the last 7 days.
8.5.3 Tab: PDF Data
Here you filter by contents and properties of the PDF file itself.
PDF files can contain metadata set by the creator program.
| Filter |
Description |
| Author contains / does not contain |
The author of the document |
| Title contains / does not contain |
The document title |
| Subject contains / does not contain |
The subject |
| Keywords contain / do not contain |
Stored keywords |
| Creator contains / does not contain |
The creation program |
| Producer contains / does not contain |
The conversion program |
Tip: You can view the metadata of a PDF file in the document properties (right-click > Properties in many PDF viewers).
Use Case: A scanner stores its name as “Creator”. This allows you to process files from different scanners differently.
Document Text Contains / Does Not Contain
Searches the entire text of the PDF document.
Examples: - Document text contains: Invoice - Only PDFs with the word “Invoice” - Document text contains: Mustermann GmbH - Only PDFs from this sender
Page Range: Optionally, you can restrict the search area to specific pages: - All pages (default) - First page only - Last page only - Page range (e.g., “1-3”)
Page Count
Filters by the number of pages. Comparison operators: - Less than - Greater than - Between
Use Case: Process single-page documents differently than multi-page ones.
Character Count
Filters by the number of characters in the document.
Use Case: Route PDFs without text (character count = 0) to OCR processing.
PDF Attachments
Some PDF files contain embedded attachments.
Attachment Count: Filters by the number of embedded attachments. Comparison operators: - Less than - Greater than - Between
Attachment Name Contains / Does Not Contain: Filters by the name of embedded attachments.
Example: ZUGFeRD invoices often contain an attachment named factur-x.xml: - Attachment name contains: factur-x.xml
Use Case: Process PDFs with attachments (e.g., ZUGFeRD invoices) separately.
Barcode
Filters by barcode contents in the PDF.
| Option |
Description |
| PDF must contain barcode |
Only PDFs with at least one barcode |
| PDF must not contain barcode |
Only PDFs without barcodes |
| Barcode value contains |
Filters by barcode content |
| Barcode value does not contain |
Excludes certain barcode values |
Supported Barcode Types: - 1D Codes: Code128, Code39, EAN-13, EAN-8, UPC-A, ITF, Codabar - 2D Codes: QR Code, DataMatrix, PDF417, Aztec
Tip: Barcode detection uses machine learning for higher accuracy. You can enable or disable this option in Program Options under Processing.
On this tab, you use the results of your extraction rules (page “Data extraction”) as filter criteria. For example, you can process only invoices from a specific supplier, route amounts above a certain limit differently, or skip files for which no invoice number was found.
A separate section with the rule name as heading is displayed for each extraction rule.
Use the upper drop-down list to specify whether the extraction itself should be checked:
| Option |
Description |
| Extraction: not evaluated |
The extraction status is not checked (default) |
| Extraction: must yield a value |
The file is only processed if the rule successfully extracts a value |
| Extraction: must not yield a value |
The file is only processed if the rule does NOT yield a value |
Use case: Files for which no invoice number was recognized should not be filed automatically but remain for manual review - select “must yield a value”.
Value Comparison
In addition (or instead), you can compare the extracted value. The available comparisons depend on the data type of the rule:
| Data type |
Comparisons |
| Text (including queries) |
contains / does not contain - with the full filter syntax including AND/OR operators, regular expressions, number ranges, and dynamic lists |
| Date |
Value is between two dates, is older than or newer than X days/weeks/months/years |
| Number |
Value is lower than, greater than, equal to, or between two numbers |
Examples:
- Rule “Supplier” (text) - contains:
Mustermann GmbH<OR>Schmidt AG - only documents from these suppliers are processed
- Rule “Invoice amount” (number) - Value: is greater than
500 - route high-value invoices to a separate approval folder
- Rule “Invoice date” (date) - Value: is older than
30 days - handle overdue documents separately
Note: A configured value comparison automatically requires the extraction to be successful - if the extraction fails, the criterion is considered not fulfilled.
Rules with the Same Name (Fallback Values)
Rules with the same name form a group: The result of the first successful rule counts - exactly as with the placeholders. Only one section per group appears on this tab.
Important Notes
- Scanned files without a text layer: The filter is checked BEFORE the tasks. If a rule extracts from the document text, it fails for scans without a text layer before the “Make file searchable” task can create the text. In this case, activate the Temp. OCR Support category of the profile settings (section 8.5) - or alternatively work with 2 profiles: The first profile only makes the files searchable, the second filters by the extracted data.
- Sequential numbers: Rules with the source “Sequential number” are not available as filter criteria because every filter check would increment the counter.
- Use the results preview: The criteria of this tab are also evaluated in the results preview - so you can see immediately which example files fulfill the filter.
8.5.5 Tab: Results Preview
The results preview shows you how your filter settings affect the example files.
Prerequisite
Add at least 5 representative PDF files on the Example Files tab that correspond to the typical documents to be processed.
Display
For each example file, the following is shown: - Yes - The file meets all filter criteria - No - The file does not meet at least one filter criterion (with indication of the unmet criterion)
How to Use the Preview Effectively
- Add files that should be processed (expected result: “Yes”)
- Add files that should NOT be processed (expected result: “No”)
- Check whether the results match your expectations
- Adjust filters as needed
Tip: The results preview is particularly important for complex filters with AND/OR combinations or regular expressions.
8.5.6 Tab: Overlap Check
This tab checks whether the current profile overlaps with other active profiles that monitor the same folder (or a parent or subfolder via subfolder monitoring).
How It Works
The check is based on the sample files of the profiles involved: The program applies the filter criteria of each profile to the sample files of the other profiles on a trial basis. Without stored sample files, no overlap can be detected.
Two kinds of results are reported:
| Result |
Meaning |
| Filter criteria too loose |
The sample files of another profile meet the filter criteria of this profile, but the data extraction fails on them. Such files would cause errors during processing - the filter criteria should definitely be made stricter. |
| Duplicate processing note |
The sample files of another profile meet the filter criteria of this profile, and the data extraction succeeds as well. Such files would be processed by several profiles in succession, which can lead to duplicate output files. If this is an intended processing chain, you can ignore this note. |
Why Is This Important?
If multiple profiles process the same files: - Output files may be created twice (e.g., copies with the suffix “(1)”) - Emails may be sent multiple times - Conflicts with file operations may occur
Recommendation: Set up the filter criteria so that only one profile is responsible for each file - for example via the barcode filter (e.g., “PDF must contain a barcode” in one profile, “PDF must not contain a barcode” in the other) or an exclusion in the file name filter. Also store typical sample files for each profile so that the check is meaningful.
8.5.7 AND/OR Logic
When entering multiple terms in a filter field, you can combine them with logical operators.
AND Combination
All terms must be present.
Syntax: <AND> or <UND>
Example: Invoice<AND>Mustermann - Matches: “Invoice to Mustermann GmbH” - Does not match: “Invoice to Schmidt GmbH”
OR Combination
At least one of the terms must be present.
Syntax: <OR> or <ODER>
Example: Invoice<OR>Bill<OR>Receipt - Matches any PDF containing “Invoice”, “Bill”, or “Receipt”
Combinations
You can combine AND and OR. The rule is: AND separates expressions, OR is evaluated within segments.
Example: Invoice<AND>2024<OR>Bill<AND>2024
For clarification, think of <AND> as a line break:
Invoice
<AND>
2024<OR>Bill
<AND>
2024
This means: (Invoice) AND (2024 OR Bill) AND (2024)
Result: - Matches if: Text contains “Invoice” AND (“2024” OR “Bill”) AND “2024” - Matches “Invoice dated 15.12.2024” (contains Invoice, 2024, 2024) - Matches “Invoice Bill 2024” (contains Invoice, Bill, 2024) - Does not match “Invoice dated 15.12.2023” (does not contain “2024”)
Tip: Always test complex filters with the results preview to ensure the desired result is achieved.
8.5.8 Regular Expressions
For advanced filtering, regular expressions (Regex) are available.
Syntax
Enclose the regular expression with: <BeginOfRegex>PATTERN<EndOfRegex>
Examples
| Regex |
Description |
Matches |
<BeginOfRegex>INV-\d{5}<EndOfRegex> |
Invoice number with 5 digits |
INV-12345, INV-00001 |
<BeginOfRegex>^Invoice<EndOfRegex> |
Starts with “Invoice” |
“Invoice No. 123” |
<BeginOfRegex>\d{2}\.\d{2}\.\d{4}<EndOfRegex> |
Date in format DD.MM.YYYY |
15.12.2024 |
<BeginOfRegex>€\s*\d+[,\.]\d{2}<EndOfRegex> |
Euro amount |
€ 123.45 or €99.00 |
Commonly Used Regex Elements
| Element |
Meaning |
\d |
A digit (0-9) |
\d{5} |
Exactly 5 digits |
\d+ |
One or more digits |
\s |
A whitespace |
\s* |
Any number of whitespaces (including none) |
^ |
Beginning of line/text |
$ |
End of line/text |
. |
Any character |
.* |
Any number of any characters |
[A-Z] |
An uppercase letter |
[a-zA-Z] |
A letter (upper or lowercase) |
Tip: Test your regular expressions on websites like regex101.com before using them in the filter.
8.5.9 Number Ranges
With the syntax <NumberRange{MIN,MAX}> you can filter by number ranges.
Syntax
<NumberRange{Minimum,Maximum}>
Examples
| Filter |
Description |
<NumberRange{1,99}> |
Numbers from 1 to 99 |
<NumberRange{2020,2025}> |
Years from 2020 to 2025 |
<NumberRange{100,999}> |
Three-digit numbers |
Use Case
Filter for documents with specific customer numbers: - Document text contains: Customer number: <NumberRange{5100000,5200000}>
This matches all PDFs containing a customer number between 5100000 and 5200000.
8.5.10 Dynamic Filter Lists
With dynamic lists, you can make filters flexible without having to change the profile.
How It Works
- Create a new list under Extras > Program Options > Dynamic Lists
- Add the desired entries (e.g., client names, project numbers)
- Use the list in the filter with the syntax:
<EntryFromList{ListName}>
Syntax
<EntryFromList{Name of List}>
Example
You have a list “Important Customers” with the following entries: - Mustermann GmbH - Schmidt AG - Meyer & Co
Filter: Document text contains: <EntryFromList{Important Customers}>
The program automatically checks whether any of the list entries appears in the document.
Advantages
- Flexibility: New entries can be added to the list at any time
- Central Management: One list can be used in multiple profiles
- Clarity: Long lists don’t need to be in the filter itself
Tip: Lists can also be imported from external sources such as Excel files or databases.
8.5.11 Practical Tips
Build Filters Step by Step
Start with a simple filter and expand it gradually: 1. First filter only by file name 2. Then add text filter 3. Add more complex conditions
Don’t Filter Too Restrictively
Overly strict filters can cause files to be missed: - Watch for different spellings (Invoice/INVOICE) - Consider typos in source documents - Use OR combinations for variants
Case Sensitivity
Normal text search does not distinguish between uppercase and lowercase - “Invoice”, “INVOICE”, and “invoice” are treated equally.
Note: Regular expressions by default distinguish between uppercase and lowercase. Use the flag (?i) for case-insensitive regex search:
<BeginOfRegex>(?i)invoice<EndOfRegex> finds “Invoice”, “INVOICE”, “invoice”, etc.
Multiple Profiles Instead of Complex Filters
Sometimes it’s easier to create multiple profiles with simple filters than one profile with very complex filters.
Example: Instead of a complex filter for different document types: - Profile 1: Invoices (Filter: Document text contains “Invoice”) - Profile 2: Delivery Notes (Filter: Document text contains “Delivery Note”) - Profile 3: Orders (Filter: Document text contains “Order”)