Changelog#
All notable changes to pagescan will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]#
Planned for 0.1.0#
New ML pipeline: YOLO11n document detector → HQ-SAM ViT-B box-prompted segmentation → quad fit. Replaces the legacy SA24 + LCNet + DeepLabV3 chain (kept as fallback).
Over-crop guard on the ML path (regression fix; the conservative path already had one).
Real benchmark suite measuring detection IoU, corner pixel error, OCR word-error rate, and end-to-end visual quality against
docscanand the OpenCV contour scanner.Cascade weights mirrored to Hugging Face Hub at
7rplus/pagescan-weights; auto-downloaded on first use viahuggingface_hub. No more Google Drive dependency.Sphinx documentation site (pydata-sphinx-theme + MyST markdown) covering install, quickstart, architecture, full
ScanConfigreference, benchmark methodology, troubleshooting, and autodoc-generated API reference. Auto-deploys to GitHub Pages on push tomain.examples/quickstart.ipynb— runnable end-to-end notebook covering single scan, batch, custom config, debug visualisation, and the optional ML cascade path.CI: ruff + mypy on Python 3.12; pytest matrix on Python 3.9–3.13 (
.github/workflows/ci.yml).Release workflow: stable tags publish to PyPI, RC tags (
vX.Y.Z-rc.N) stage to TestPyPI; both flows auto-attach the sdist + wheel to a GitHub Release.Type-checked end-to-end with mypy (non-strict;
strict = trueis a v0.2 follow-up).scan()return now includes amethodfield:"cascade","legacy", or"conservative"— tells you which detection path actually produced the corners.New top-level exports:
PRESET_A4_300,PRESET_LETTER_300,PRESET_FAST,PRESET_RAW(previously only reachable viapagescan.config).
Removed in 0.1.0 (relative to 0.0.x)#
Dead-code paths in
edges.py(trim_edges,find_precise_edges,find_receipt_bounds).
[0.0.1] — internal#
Initial private prototype. SA24 + LCNet + DeepLabV3 corner-detection chain, edge fallback, perspective transform, A4 PDF output, document-orientation heuristics. Not released to PyPI.