P→MPDFMDSystem documentation
Measured evidence (outdated · September 2026)Open converter ↗

Incident archive · 11 September 2026

Recognition incidents: what failed and how it happened

This page consolidates the requested investigations into the current recognition bugs. It separates provider readings from PDFMD decisions, identifies the responsible stage, and keeps unresolved causes visibly unresolved. English recognition remains blocked; no candidate described here is deployed.

Report status: investigation complete, repair incompleteRecognition changes in this report: none

User-requested incidents remain on this website

Standing rule. When the owner explicitly requests a report about a bug or incident, the investigation must be retained as a durable page under /system/evidence. The original route remains live; later findings update or extend the archive without erasing the prior incident record. The task report links the page and its publication evidence.

This archive is therefore not a temporary progress note. Each entry records the observable symptom, source and output comparison, responsible stage, evidence boundary, decision, and residual risk. A report may document a failure without implying that the capability passed or that a fix was released.

Several different failure mechanisms were being mixed together

The same bad output can contain several causes. The retained comparisons show that these incidents do not all belong to OCR, and they cannot be repaired safely with one global threshold or an automatic provider switch.

Observed bugWhere it enteredFinding
of Tomsa. → ofTomsa.
CONTROL / → CONTROL/
Our emission pathRaw OCR already had separate provider words. The old separator rule relied on positive box gaps and did not use the provider’s documented word identity when boxes overlapped. A local candidate restores three spaces, but is not deployed.
4. and 7) → 1.Our list emitterRaw OCR is correct. _emit_lists deliberately canonicalizes every top-level numeric marker to 1.. This is a confirmed deterministic source-marker rewrite.
45. → 4., 37. split, footer 8 omittedProvider/readiness pathThe omissions are already present in retained raw OCR or its page coverage. They are not introduced by Markdown rendering. The exact contribution of source raster, render settings, page segmentation, and provider remains to be isolated.
11 source paragraphs → 44 output blocks; a/b/c have no parent listLayout semanticsThe pipeline preserves physical OCR lines and visible order but does not produce the source-validated logical paragraph/list graph for this case. The list excerpt has eight ordered blocks but zero of three expected parent links.
Six bold spans and four italic spans omittedStyle evidenceNo exact style assertions reached the emitted canonical or human output in the measured excerpt. The renderer cannot render a style fact that the raster style stage did not assert.
Bottom line. One local product fix is verified; the broader recognition gate is still failed. A valid PDFMD envelope or a passing transport validator does not prove source fidelity.

From pixels to the final wrong text

Figure 1 · Recognition path and failure locations
1 · Source PDFpixels, native text, geometry, visual styles
↓
2 · PDFium render and OCRtokens, boxes, confidence, provider paragraph/line/word IDs
↓
3 · Refinement and reconciliationmay change token text or token cardinality; unsafe overlap caused the historical duplicate
↓
4 · Layout and semantic draftmust infer paragraphs, list membership, notes, and style assertions
↓
5 · PDFMD emitter and Markdown viewmust conserve text, markers, evidence, order, and asserted styles

The final output is only as faithful as every boundary. A later stage can introduce a defect even when an earlier stage was correct.

1

Correct provider words were joined downstream

The baseline had a correct raw reading for of Tomsa. and CONTROL /. Their boxes overlapped, so geometry-only spacing emitted no separator. The retained candidate adds a guarded same-run, same-page, same-line, consecutive-provider-word rule and independently verifies the three-page local result.

2

A source label was rewritten by policy, not misread

The source-marker control preserves 4. and 7) in raw OCR, but the list emitter chooses 1. for top-level numeric items. This is an application policy defect with a direct code location, not an uncertain OCR interpretation.

3

Some characters never reached the semantic draft

For 45., 37., and the footer number, the retained raw provider output is already incomplete or split. The downstream emitter cannot restore a character it was never given. The next investigation must compare source pixels, raw provider output, render configuration, and alternate readings without treating a different engine as a measured fix.

4

Physical lines were not enough to prove logical structure

The measured list case produced 12 provider groups for eight source blocks. The candidate recovered eight ordered output blocks, but emitted no list-item nodes and no parent links. This is a semantic layout failure: visible order survived while paragraph/list identity did not.

5

Style facts were absent before rendering

The source contains meaningful bold and italic spans. The measured candidate recorded zero style assertions for the excerpt and emitted zero human italic spans. This locates the immediate failure before Markdown rendering, in raster style detection or its association with OCR tokens; the exact detector sub-cause remains open.

Who was responsible for each part?

StageResponsibilityFinding
PDFium and TesseractProviderSupplied raw text, boxes, scores, and grouping. Some digit omissions and punctuation substitutions are visible at this boundary. Provider output is evidence, not source truth.
High-resolution refinementOur integrationThe retained on the → on onthe incident combined a wider provider token with a one-token replacement. The full technical trace is retained in the separate incident report.
Layout and semantic draftOur recognizerMust convert physical observations into logical paragraphs, lists, parent links, notes, and style assertions. The current evidence shows missing relations and style facts.
PDFMD emitterOur output codeMust conserve the source spelling and evidence. It is directly responsible for the numeric marker rewrite and was responsible for the geometry-only word joins fixed in the isolated candidate.
Evaluation and release gatesOur processEarlier checks accepted valid transport and sampled or normalized comparisons that did not expose all exact source failures. The current gate now requires whole-output, independent source comparison and explicit residual risk.

What is fixed, what is next, and what is still blocked?

Retained local correction

The provider-boundary candidate restores three spaces across three complete pages with byte-identical raw TSV and no new reviewed errors. It remains isolated and is not deployed.

Next isolated defect

Unit 32 traces literal source-marker representation through the draft, emitter, and visible human rendering. Its initial preparation authorizes zero provider calls and requires exact numerals, delimiters, order, text, and evidence.

Required broader proof

Rerun the full triggering document and independent source comparisons after any output-affecting change. Keep provider omissions, paragraph assembly, list relations, and style recovery as separately measured capabilities.

Release decision

Do not deploy or call English recognition accepted until the whole-output source gate passes, including markers, characters, paragraphs, structure, styles, and residual-risk review.

Not a provider-switch recommendation. The retained RapidOCR comparison did not improve the local list case and introduced different errors. The safer next step is to repair and measure the project-owned invariants while keeping provider behavior separately observable.

Follow the retained records

Evidence status: retained and reviewablePublic report: no recognizer code release