Rendered at 09:21:24 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
speerer 15 hours ago [-]
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.
dmwood 14 hours ago [-]
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
/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 file), '/opt/homebrew//libwebp.7.dylib' (no such file)
(terminated at launch; ignore backtrace)
Dyld Error Message:
1
adius 14 hours ago [-]
Thanks for the report. I'm looking into it!
adius 14 hours ago [-]
Fixed this on main.
The macOS build linked against Homebrew's libwebp by absolute path but never bundled it, so it only ran on machines that happened to have it installed. The build now copies all non-system dylibs into the app and rewrites the install names, and fails if any absolute reference survives.
giancarlostoro 14 hours ago [-]
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!
Gualdrapo 14 hours ago [-]
Last time I used Gimp it had a plugin that let you correct perspective, wonder how they both compare
OutOfHere 14 hours ago [-]
It is nagware:
> Before an image is saved, a "Buy License" banner is shown for 10 seconds.
nerdsniper 14 hours ago [-]
That seems pretty reasonable! It's also AGPL licensed and the source code is available on GitHub. 20 minutes with an LLM would likely yield you a nagware-free version if you value your time at less than $21/hour. Otherwise it costs just $7 to pay Adrian for their good work!
OutOfHere 14 hours ago [-]
Why, when I could use an AI to both detect the corners and write+run a completely free ad-hoc script to fix the perspective.
cvadict 5 hours ago [-]
meh, every single license key ever issued is stored in the binary.... also you can just compile your own copy from scratch.
-or- just pay the author the $7 or whatevs if you use it.
OutOfHere 3 hours ago [-]
> just pay the author the $7
It's not about the $7. I can even pay $20. It's about the principle of being against nagware. If the author had asked for a donation in a non-obstructive way, that would've worked.
virtualritz 11 hours ago [-]
I build a tool like this with Claude in 2hs, uses Rust with OpenCV crate, egui GUI, PDF output.
Basically it steps through a folder with images, finds corners, user presses Space if ok, or adjusts corner if not (about 1 in 20 pages has a corner wrong).
Undistort, contrast correct based on histogram, etc. happens automatically.
On the last page pressing Space creates a PDF.
My brother and I were digitizing medical bills for our mother and everything we tried to do this with out there was meh, cost money or both! It seems as soon as you need PDF anything it's $$$.
This is a throwaway tool as we're now more and more getting bills as digital files anyway.
My only input was specs, otherwise it's "vibe coded" if you want.
But consider that the Rust crate ecosystem is mature and my prof. background is computer graphics.
Oh, and I have an image manipulation crate that I wrote for work (closed source for now, unfortunately) that has corner pin with area filtering as a primitive.
I was just surprised how possible this is now.
This was earlier this year (Opus 4.8 was just out) and while we were photographing the pages with our smartphones Claude wrote the tool.
whateveracct 12 hours ago [-]
haskell :)
esafak 13 hours ago [-]
The Google Camera app already does this (much). I look into this problem during a receipt scanning project. If you want development ideas look up "metric rectification" and 'manifold dewarping'; e.g. https://openaccess.thecvf.com/content/WACV2025/papers/Hertle...
stronglikedan 13 hours ago [-]
Samsung Galaxy camera as well. Just hit "scan" when it pops up and you get the same results.
adius 13 hours ago [-]
The "Initial Motivation" section in the article explains why existing mobile apps aren't good enough.
I share the annoyance about phone detection previees over-promising. But I'm pleased this comes with perspective correction and lighting correction together.
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 file), '/opt/homebrew//libwebp.7.dylib' (no such file) (terminated at launch; ignore backtrace)Dyld Error Message: 1
> Before an image is saved, a "Buy License" banner is shown for 10 seconds.
-or- just pay the author the $7 or whatevs if you use it.
It's not about the $7. I can even pay $20. It's about the principle of being against nagware. If the author had asked for a donation in a non-obstructive way, that would've worked.
Basically it steps through a folder with images, finds corners, user presses Space if ok, or adjusts corner if not (about 1 in 20 pages has a corner wrong). Undistort, contrast correct based on histogram, etc. happens automatically.
On the last page pressing Space creates a PDF.
My brother and I were digitizing medical bills for our mother and everything we tried to do this with out there was meh, cost money or both! It seems as soon as you need PDF anything it's $$$.
This is a throwaway tool as we're now more and more getting bills as digital files anyway.
My only input was specs, otherwise it's "vibe coded" if you want.
But consider that the Rust crate ecosystem is mature and my prof. background is computer graphics.
Oh, and I have an image manipulation crate that I wrote for work (closed source for now, unfortunately) that has corner pin with area filtering as a primitive.
I was just surprised how possible this is now.
This was earlier this year (Opus 4.8 was just out) and while we were photographing the pages with our smartphones Claude wrote the tool.