# Synthetic corpus QA — 2026-08-27

Product: MIKA De-ID Local 0.2.1  
Copyright holder: NPO NT / НПО НТ  
Corpus classification: **CONFIRMED FULLY SYNTHETIC**  
Release boundary: **LOCAL / SYNTHETIC DATA ONLY**

## Scope

The corpus owner explicitly confirmed that all supplied documents and registry values are synthetic and contain no data from real patients. The corpus itself, its registry, OCR text, detected values, source filenames, document hashes, private mapping, per-document analysis, and machine preannotations are not part of the public source release.

This run is a technical smoke test of local loading, rendering, Russian and English OCR, barcode scanning, rules, privacy-safe reporting, and machine-preannotation export. It is not a clinical or privacy performance claim.

## Intake

- 100 valid, unencrypted PDF documents
- 453 pages
- 212,426,048 total PDF bytes
- 1 XLSX registry with 100 data rows and 20 columns
- Neutral processing filenames: `document-0001.pdf` through `document-0100.pdf`
- Original archive SHA-256: `366664e8c50661a0f8577b86f028bb0ed8eb6ef1014a0cd70b655db90e6b8d74`

The registry contains 100 populated synthetic names and 100 populated birth dates. A privacy-safe local map linked all 100 neutral PDFs to registry rows: 99 by unique internal-number containment in the original synthetic archive filename and 1 by the only remaining document/row pair. The latter is explicitly marked as an inference.

## Batch result

| Metric | Result |
|---|---:|
| Successful documents | 100 / 100 |
| Failed documents | 0 |
| Pages | 453 |
| Machine findings | 2,161 |
| Proposed redactions | 841 |
| Human date decisions | 1,320 |
| Pages with at least one finding | 422 / 453 (93.2%) |
| Elevated manual-review pages | 51 |
| OCR pages below the internal confidence threshold | 50 |
| OCR pages without a confidence value | 1 |
| Elapsed time with two workers | 762.427 seconds |
| Throughput | 35.65 pages/minute |

## Finding distribution

| Category | Regions | Documents with at least one region |
|---|---:|---:|
| event_date | 1,320 | 100 |
| person_name | 293 | 71 |
| snils | 159 | 79 |
| barcode | 139 | 54 |
| phone | 116 | 50 |
| email | 65 | 38 |
| address | 45 | 28 |
| medical_record_id | 12 | 8 |
| insurance_policy | 9 | 7 |
| birth_date | 3 | 3 |

Document coverage only means that at least one candidate of the category exists. It does not show whether every instance was detected. In particular, many synthetic birth dates may currently be represented by the broader `event_date` review category because the `birth_date` rule requires reliable field-label context.

## Privacy properties of the run

- OCR text was not exported by the batch runner.
- Detected source values were not exported.
- Original filenames were not exported.
- Per-document source hashes were not exported.
- Per-document JSON reports and the summary were written with mode 600 inside a mode-700 local directory.
- No corpus file, registry value, analysis record, or preannotation is committed to this repository.

## Machine preannotations

The exporter generated 100 annotation JSON files with 2,161 normalized regions. Every annotation is marked `MACHINE_PREANNOTATION_NOT_GROUND_TRUTH`; every page has `page_reviewed=false`; every region has `human_reviewed=false`. Annotation notes do not repeat detected values.

The preannotations are starter material for human reviewers. They cannot be used as truth labels without page-by-page correction, independent review of critical categories, and adjudication.

## Exploratory registry-value cross-check

A separate local check compared the exact synthetic name and birth-date value from the linked registry row with OCR lines. It exported only booleans and counts, not the registry values or OCR text.

| Strict exact-value check | Documents |
|---|---:|
| Synthetic name recognized by OCR | 1 / 100 |
| Synthetic birth date recognized by OCR | 5 / 100 |
| Name classified as `person_name` | 1 / 100 |
| Birth date classified as `birth_date` | 3 / 100 |

These low figures are a blocking investigation signal for annotation and OCR review, not a formal miss rate. The registry establishes a synthetic case association but does not independently prove that each registry value is visibly printed in the linked PDF. Exact matching also fails after a single OCR character error. The result therefore cannot be called recall, but it reinforces the requirement for page-level ground truth and manual review before any pilot.

## Metric boundary

Corpus recall and precision were not computed because the supplied corpus does not yet have independent coordinate-level ground-truth annotations. The number of machine findings, the percentage of pages with findings, OCR confidence, document-category coverage, and strict registry-value matches must not be relabelled as recall, precision, anonymity, or patient-safety evidence.

The separate 13/13 synthetic fixture result remains only a deterministic pipeline regression test on one deliberately constructed document.

## Required next validation work

1. Review all 453 pages, including the 31 pages without machine findings.
2. Confirm, reject, or redraw every machine region.
3. Add all missed regions, with special attention to names, birth dates, handwriting, signatures, faces, stamps, barcodes, and indirect identifiers.
4. Have a second reviewer independently check all critical categories.
5. Adjudicate disagreements and lock ground truth.
6. Split by synthetic person/case into calibration and locked-validation sets.
7. Compute true positives, false negatives, false positives, recall, precision, document miss rate, and clinically meaningful over-redaction per category.
8. Treat any missed direct identifier in locked validation as a release blocker.

Until those steps and the legal, privacy, security, packaging, and controlled-pilot gates are complete, real patient documents remain out of scope.
