Release Scan Tools v0.1.0

This commit is contained in:
2026-09-01 14:34:51 +02:00
commit 75cd6a6195
64 changed files with 11626 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
# Architecture
The React workbench owns an in-memory ordered list of source `File` objects and
serializable page settings. No page content enters local storage. Each source is
decoded with `createImageBitmap`; its dimensions and byte size are checked before
it joins the workspace.
The renderer downscales exceptionally large source rasters to a 24-megapixel
working ceiling. A projective map sends every destination pixel through the four
selected source corners and samples it bilinearly. A bounded pixel pass applies
brightness, contrast, perceptual grayscale and optional Otsu/manual threshold.
Canvas rotation handles quarter turns and the final ±5 degree deskew. Preview,
OCR and export call the same renderer with different disclosed pixel budgets, so
the preview semantics match the downloaded result.
Deskew estimation downsamples to at most 420 pixels on the long edge, tests
half-degree candidates from 5 to +5, and scores the horizontal projection of
dark pixels. It declines to invent an angle when insufficient foreground exists.
PDF export dynamically loads jsPDF, renders pages sequentially, JPEG-encodes
each bounded page, and fits it into the selected physical page. OCR dynamically
loads Tesseract.js only after user confirmation. Its worker, three LSTM-only
runtime variants and English integer trained data are copied from pinned npm
packages to same-origin release assets. Tesseract's persistent model cache is
disabled, one in-memory worker is reused and can be terminated, and no fallback
CDN path is used.