Camscan is a software for scanning documents using a camera connected to your computer, like your webcam. It is fully implemented in Python, and mainly leverages OpenCV for the document detection algorithm, and CustomTkinter for the graphical user interface.
The functionality of the software includes, but is not limited to:
- Computer-vision algorithm capable of identifying, and extracting contents of documents found through the camera
- Ability to process two-sided documents (like books) and extract the left and right pages as a separate images
- A fully fledged graphical user interface (no requirement of coding, setting values in config files, or using the terminal)
- Post-processing functions of captured images, like sharpening and black and white threshold
- Ability to re-order or remove images after capture
- Ability to export captures:
- As separate files to a directory with a wide range of formats like
.png
,.jpg
, and many others. - As a concatenated
.pdf
file containing all the captures.
- As separate files to a directory with a wide range of formats like
You can find the latest available pre-build standalone executables for this software available at the releases section in ths repo. Simply download the version for your platform and run it.
- For Windows, download
camscan-windows.exe
file and run it by double-clicking it - For Linux, download
camscan-linux
. Then open a terminal and navigate to the file. Make it executable withchmod +x camscan-linux
, then run it with./camscan-linux
You can also run the camera scanner application as a Python module using your own environment:
conda create -n camscan python=3.11
conda activate camscan
pip install -r requirements.txt
python -m app.app
Build the software as a standalone application using
# If you are building on Windows
pyinstaller --onefile --name camscan-windows app/app.py
# If you are building on Linux
pyinstaller --onefile --name camscan-linux app/app.py
and then find the resulting executable file in dist/camscan-windows.exe
for Windows, or dist/camscan-linux
for Linux.