Perspec 1.0: The Document Scanner That Actually Gets Corners Right

After nine years of development, Adrian Sieber releases Perspec 1.0, a desktop app for correcting perspective in photos of documents and receipts. Unlike mobile scanner apps that force JPEG output, Perspec saves clean PNGs, avoiding compression artifacts. Its unique corner-detection algorithm handles wrinkled and curved documents better than traditional edge-detection methods. The app also offers smart binarization that removes shadows before thresholding, producing crisp black-and-white scans.
Just because it can detect the document correctly in the preview video feed doesn't mean it will detect it correctly in the final photo.
- speerer
Exciting! I needed this last week, and now here it is. Thanks.
I share the annoyance about phone detection previees over-promising. But I'm pleased this comes with perspective correction and lighting correction together.
- giancarlostoro
Be fully aware it is AGPL licensed before you try to use any of this code for something "at work" without realizing it. That said, looks neat!
- dmwood
Crashes on launch
macOS: macos-26_arm version installs (with intervention to permit running), but crashes on launch.
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------
Process: perspec [94673]
Path: /Users/USER//Perspec.app/Contents/Resources/perspec
Identifier: perspec
Version: ???
Code Type: ARM-64 (Native)
Role: Unspecified
Parent Process: Exited process [94672]
Coalition: com.adriansieber.Perspec [86355]
Responsible Process: Perspec [94671]
User ID: 501
Date/Time: 2026-08-04 12:50:37.5848 -0600
Launch Time: 2026-08-04 12:50:37.5821 -0600
Hardware Model: Mac13,1
OS Version: macOS 26.6 (25G72)
Release Type: User
Crash Reporter Key: 9FD40ACB-279F-0F79-41E1-8B4D3B663EA7
Incident Identifier: 207F9047-B786-4C8C-8263-BA9C4DB370EB
Time Awake Since Boot: 320000 seconds
System Integrity Protection: enabled
Triggered by Thread: 0
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace DYLD, Code 1, Library missing
Library not loaded: /opt/homebrew//libwebp.7.dylib
Referenced from: <47F30FA1-4AB9-310F-8988-5CABFEF76F5E> /Users/USER//Perspec.app/Contents/Resources/perspec
Reason: tried: '/opt/homebrew//libwebp.7.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew//libwebp.7.dylib' (no such fil […]