63 lines
2.8 KiB
Markdown
63 lines
2.8 KiB
Markdown
# Scan Tools
|
||
|
||
Correct photographed document pages, assemble them, optionally recognize
|
||
English text, and export images or PDFs without sending content away. Scan
|
||
Tools is a local-first module in the add·ideas Toolbox.
|
||
|
||
## v0.1.0 capabilities
|
||
|
||
- Add up to 24 browser-decodable PNG, JPEG or WebP images through a file or
|
||
camera-enabled picker
|
||
- Drag four document corners to apply an actual projective correction; handles
|
||
also support keyboard movement
|
||
- Rotate in quarter turns, adjust deskew manually, or estimate a text-line
|
||
correction within ±5 degrees
|
||
- Tune brightness and contrast, retain colour, convert to grayscale, or create
|
||
black-and-white pages using Otsu or a manual threshold
|
||
- Preserve the previous preview until its debounced replacement is ready
|
||
- Reorder pages with drag and drop, remove them without touching source files,
|
||
and export the selected page as PNG or JPEG
|
||
- Assemble every corrected page into A4, US Letter, or source-sized image-only
|
||
PDFs with a configurable margin
|
||
- Run optional English OCR using a bundled integer model and same-origin
|
||
Tesseract.js WebAssembly runtime; edit and download recognized text
|
||
- Work at nested paths, install as an offline PWA, use the shared system/light/
|
||
dark themes, and perform no remote content request
|
||
|
||
## Honest scope and limits
|
||
|
||
This first release does not automatically detect page corners, remove fingers
|
||
or shadows, process input PDFs, recognize handwriting reliably, or create a
|
||
searchable invisible PDF text layer. OCR confidence is engine evidence, not an
|
||
accuracy guarantee. Perspective correction is high-quality bilinear resampling;
|
||
each new render is lossy unless exported as PNG.
|
||
|
||
There are explicit limits of 24 pages, 32 MiB and 80 decoded megapixels per
|
||
source image, 24 megapixels for a working source raster, 1.2 megapixels for an
|
||
interactive preview, 10 megapixels per exported page, and 4 megapixels for OCR.
|
||
Optional OCR loads only after confirmation and may use roughly 100–300 MiB of
|
||
transient memory. The bundled model is English only.
|
||
|
||
Files, decoded pixels, correction settings and OCR text live in memory. The
|
||
same-origin OCR files are included in the release rather than downloaded from a
|
||
CDN. Nothing is uploaded, but an exported image or PDF naturally contains the
|
||
visible page and an exported text file contains the recognized text.
|
||
|
||
## Development
|
||
|
||
```sh
|
||
npm ci
|
||
npm run check
|
||
npm run test:browser
|
||
```
|
||
|
||
`npm run release:artifact` produces a deterministic ZIP and SHA-256 sidecar.
|
||
The build copies pinned OCR assets from installed npm packages into the static
|
||
release; generated `public/ocr/` content is not source-controlled.
|
||
|
||
## License
|
||
|
||
GPL-3.0-or-later. See [LICENSE](LICENSE). Tesseract.js is Apache-2.0, the
|
||
English trained data package is MIT, and jsPDF is MIT; release artifacts include
|
||
the complete generated runtime licence inventory.
|