To unwarp photos that were taken at odd angles you need to do some image processing. The mathematics aren't particularly difficult, it's a homography transform in most cases (rectangles). The problem is robustly detecting the page.
Dropbox has some nice write-ups on this: https://blogs.dropbox.com/tech/2016/08/fast-document-rectifi...