Enterprise protection, measured on real work

Developed using 57,349 real business files and 114,570 scanned pages. Measured on 3,396 documents and 6,754 pages held out from model training, multilingual in Latin and non-Latin scripts, labelled under human supervision with legal expertise. Snapshot of 26 October 2026; the full report with its method annex is the PDF.

3,396Documents held out from training
98.3%Personal values fully protected
14.5 minCPU batch, 3,396 documents
57,349real business files in the development archive
114,570scanned pages processed by OCR
3,396benchmark documents held out from model training
98.3%labelled personal values fully protected on CPU

CPU core pipeline: 3,396 documents in 14.5 minutes. Median latency: 0.36 s per document. Over-masking: 3.8% of masked characters. Benchmark and training documents are multilingual, in Latin and non-Latin scripts, and the benchmark was held out from model training; labelling was conducted under human supervision with legal expertise. OCR and optional semantic processing are measured separately.

One workload. Nine systems.

The same 3,396 real business documents and 6,754 pages, the same extracted text and the same written policy for every system, in one configuration each. Protection: higher is better. Over-masking: lower is better.

System / publisherPersonal data protectedOver-maskingMeasured environmentElapsed
Salus coreParamosoft / Multi-model platform98.3%3.8%Local CPU32-vCPU server / no GPU14.5 min
GPT-5.6 SolOpenAI / Frontier LLM / Released 9 Jul 202696.58%0.9%Hosted APIOpenAI API / cloud≈38 min
Claude Sonnet 5.5Anthropic / Frontier LLM / Released 28 Sep 202694.21%0.1%Hosted APIAnthropic Batch API / cloud≈16 min
Gemma 4 31B31B parametersGoogle DeepMind / Open-weight LLM / Released 31 Mar 202693.33%0.7%Self-hosted GPU1× H100 80 GB / FP871.9 min
Qwen3.8-27B27B parametersAlibaba Qwen / Open-weight LLM / Released 14 Aug 202692.65%0.7%Self-hosted GPU1× H100 80 GB / FP884.3 min
Llama 3.3 70B70B parametersMeta / Open-weight LLM / Released 6 Dec 202484.23%2.2%Self-hosted GPU2× H100 80 GB / FP838.1 min
GLiNER-PII≈0.3B parametersurchade / Open-source PII model58.88%17.1%Local CPUSame 32-vCPU server31.5 min
Presidio 2.2.365Microsoft-origin / Open-source platform49.66%63.8%Local CPUSame 32-vCPU server1.2 min
OpenAI Privacy Filter1.5B total / 50M active parametersOpenAI / Open-weight PII model34.18%23.7%Local CPUSame 32-vCPU server42.1 min

About +1.7 percentage points more personal-data protection than the closest comparator, GPT-5.6 Sol. Salus finished ahead of every tested LLM in these run configurations. All four CPU systems used the same 32-vCPU server; the text core needed no GPU. Elapsed times include each run's concurrency and API or batch boundaries and are not a matched-hardware latency test. Release dates identify model launches, not evaluation dates.

Category results

Each score is the share of required occurrences whose letters and digits were fully protected; the predicted type and exact span boundaries need not match. Scores are occurrence-weighted.

CategoryValuesScoreProtected
Person32,5610.988698.86%
Organisation31,8370.968696.86%
National ID6,2740.991499.14%
Date of birth5,7310.989598.95%
Address2,9320.953395.33%
Passport2,4870.982398.23%
Nationality2,4620.953395.33%
Place of birth2,0920.992499.24%
Bank account1,7430.946194.61%
Phone1,4900.977997.79%
IBAN1,4790.986598.65%
Tax ID1,0420.987598.75%
Customer number6210.971097.10%
Location6190.980698.06%
E-mail4100.973297.32%
Licence plate1230.975697.56%
IP address491.0000100.00%
Social security (SGK)351.0000100.00%
Driving licence141.0000100.00%
Credit card131.0000100.00%
UETS41.0000100.00%
Website (URL)11.0000100.00%
Personal data (excluding organisations)62,2900.98398.3%
All values (including organisations)94,1270.978197.81%

The benchmark contains 94,127 required values; excluding 31,837 organisation occurrences leaves 62,290 personal-data values. One catch-all category, Other identifiers (108 values, score 0.4352), is included in both aggregates but not shown as a row; it holds personal identifiers that fit no named category and is a rule-coverage item for the next release. Small categories describe this sample and do not establish universal format coverage. Customer-number formats can be adjusted on request through deployment-specific rules.

How the benchmark was built and measured

A summary of the two-page method annex in the report.

Source archive and families

57,349 real business files, including legal, financial and administrative records, multilingual in Latin and non-Latin scripts; the 114,570 scanned pages were transcribed once by the Salus vision-language reader. Every file belongs to a family by case code or source folder, about 2,000 families; training, validation and test sets are split by family hash, never by file, and the benchmark's families are excluded from training.

Leakage control and one extraction

Pages whose normalised text equals a benchmark page are removed from training, and every training export is checked for near-duplicate pages; a failing export is not used. Office files are read from their native text and scans by the vision-language reader; the identical files are given to every compared system.

Written policy, two passes, adjudication

22 required categories plus neutral classes, with explicit rulings; the policy was written with legal expertise. Each page is labelled in two independent passes, blind to each other, under human supervision with legal expertise; agreement on required spans before adjudication was F1 0.948 on the core set and 0.929 on the held-out additions. Every disagreement is adjudicated against the page image; more than 6,000 were resolved this way.

Scoring

A required value counts as protected only when none of its letters or digits remain visible. Over-masking is unnecessary masking as a share of all masked characters, one definition for all nine systems; its complement, 96.2% for Salus, is masking precision at character level, not entity-type precision.

Comparator protocol

Language models received the text in fixed character windows with the written policy and returned the values to mask as structured JSON; hosted models through their published APIs, open-weight models at temperature 0 in FP8 on H100 hardware, specialist CPU tools on the same 32-vCPU server in their published default configurations. Versions and release dates were verified against primary sources.

Training regime and verification

Salus-specific models are trained only on real business documents from the training families, labelled under the same policy. Each model has one job; inference is deterministic: fixed weights, pinned thresholds, no sampling. Candidate checkpoints are scored on this benchmark before any replaces the release. Every figure carries its snapshot date; portable verifiers recompute the arithmetic and record SHA-256 hashes of the source files. Model families, parameter counts and serving software are not disclosed.

What this benchmark is not. It is not a blind test: the core set was used during pipeline development for rule development and configuration selection, while excluded from model training. It carries no confidence intervals, and small categories describe this sample only. OCR transcription accuracy, downstream task usefulness and the optional Semantic Layer are separate evaluations.

The full report

Seven pages: the comparison, all category results, workload statistics, and the two-page method annex on corpus construction, labelling, scoring, comparator protocol, training regime and verification. The PDF arrives by email; the link is valid for seven days. Snapshot of 26 October 2026.

Get the Benchmark Report (PDF) by email

Get the PDF by email

Enter your work email and we send a download link, valid for seven days. We use the address to send the link and to follow up once about the document. No newsletter.

Sent. The link is in your inbox and is valid for seven days.