Re-extraction is not refresh: it is re-synthesis under the same constraints
TLDR: "Re-extract" sounds like refreshing a view, but it is actually re-synthesizing content from a document under a pipeline's assumptions. When the document does not satisfy those assumptions, the honest re-extract is to keep the current page and say why, not to produce a worse page.
The position
Re-extraction buttons should be guarded by pipeline ownership. If the pipeline that would re-run the page cannot read its substrate, the button should keep the current result and explain, instead of replacing good content with degraded content.
What the industry does and why
Most tools implement re-extraction as "re-run the extractor." It is the simplest contract: parameters changed, call the function again, swap the output. It works when there is one extractor and one substrate model. Refreshing a re-rendered page, regenerating a thumbnail, rebuilding a layout: all of these are true re-runs, and the metaphor holds.
Why it fails for this problem class
Document extraction is not rendering. A document does not have one true rendering; it has interpretations, each produced by a pipeline with substrate assumptions. A vector pipeline needs text items and segments. An OCR pipeline needs pixels. A scanned page has pixels and almost no vectors. Re-running the vector pipeline on it does not refine the OCR result. It reinterprets the page with a model that cannot see most of its content, and the reinterpretation is worse.
The failure is invisible by default. Nothing throws. The page just comes back with fewer images. The user phrase that surfaces it: "it says an image was extracted, but the HTML does not show it."
The better approach
Treat re-extraction as "re-assert the best available result under the current parameters." For a page the local pipeline owns, that means a real re-synthesis. For a page another engine owns, that means the current page, plus an explanation. The distinction is a per-page producer flag, set once during pre-flight, consulted at the entry point.
What you give up
The universal affordance. Some users will click re-extract on an OCR page and get a toast instead of a rebuild. That is the correct trade: the parameters they changed do not apply to the OCR engine anyway, so a rebuild would be a worse page for nothing. What is preserved is trust: the button never destroys content again.
When the common pattern is right
Re-run is the right contract when the pipeline is idempotent over the document, meaning the same inputs always produce a result at least as good as the last one. Rendering, layout, thumbnails: yes. Extraction with substrate assumptions: only when the page satisfies them. If your extraction pipeline has more than one engine, your re-extract button is already in the second category. Guard it.